Skip to Content
Atlassian Confluenceacs2mdv1.0.xConvertir espacios

Convertir espacios

Los comandos space convert exportan un espacio completo de Confluence, con todas sus páginas, a un directorio de archivos Markdown. La jerarquía de páginas se conserva automáticamente como subdirectorios anidados.

Este es el flujo operativo principal de acs2md y la razón principal por la que la mayoría de equipos licencia el producto.

Si estás preparando una ejecución real con cliente, consulta Flujos y comandos para patrones de continuidad, archivo, migración, gobernanza y generación de corpus para IA.

Convertir por clave

acs2md space convert by-key SPACE_KEY [flags]

La clave del espacio es el identificador corto visible en la URL de Confluence: .../wiki/spaces/MYSPACE/. También aparece en la salida de acs2md space list.

Ejemplos

# Convierte al directorio de salida predeterminado acs2md space convert by-key MYSPACE # Convierte a un directorio concreto acs2md space convert by-key MYSPACE --output-dir ./docs # Construye una base de conocimiento RAG, texto plano sin imágenes acs2md space convert by-key MYSPACE \ --exclude-marks=true \ --embed-images=false \ --output-dir ./rag-knowledge-base # Incluye solo páginas publicadas actualmente acs2md space convert by-key MYSPACE --status current --output-dir ./docs # Desactiva la reescritura de enlaces internos acs2md space convert by-key MYSPACE --rewrite-links=false --output-dir ./site # Sincronización incremental: solo reconvierte páginas cambiadas y conserva archivos eliminados acs2md space convert by-key MYSPACE --incremental --output-dir ./docs # Sincronización completa: reconvierte páginas cambiadas y elimina archivos de páginas retiradas acs2md space convert by-key MYSPACE --sync --output-dir ./docs

Flags

FlagShortPredeterminadoDescripción
--output-dir-o./output/<SPACE_KEY>/Directorio donde escribir los archivos Markdown
--status-scurrentFiltra páginas por estado: current, archived, trashed, deleted, draft
--conflict-resolutionoverwriteCómo gestionar conflictos de nombres de archivo: overwrite, suffix, skip, versioned
--rewrite-linkstrueReescribe URLs internas de Confluence a rutas relativas locales
--syncfalseMantiene .convert-sync-state.json y solo reconvierte páginas cambiadas. Elimina archivos locales de páginas retiradas de Confluence. Mutuamente excluyente con --incremental.
--incrementaltrueIgual que --sync, pero conserva archivos locales de páginas retiradas. Mutuamente excluyente con --sync.
--concurrency4Páginas convertidas a la vez. Con 1 se restaura la conversión estrictamente secuencial — consulta Rendimiento.

Convertir por ID

acs2md space convert by-id SPACE_ID [flags]

Convierte un espacio identificado por su ID numérico en lugar de su clave. Usa los mismos flags que by-key.

acs2md space convert by-id 65539 --output-dir ./docs

Flags de conversión

Estos flags están disponibles tanto en by-key como en by-id y controlan como se renderiza cada página.

Contenido y metadatos

FlagShortPredeterminadoDescripción
--include-metadata-mtrueAñade un bloque YAML front matter a cada archivo (título, autor, fechas de creación/modificación)
--exclude-marks-xtrueElimina todo el formato en línea: negrita, cursiva, subrayado y colores. Usa --exclude-marks=false si quieres conservar formato enriquecido.
--include-labels-ltrueRecupera las labels de la página para el campo tags del front matter. Cuesta una llamada a la API por página.
--resolve-userstrueResuelve los IDs de autor del front matter a nombres visibles. Cuesta llamadas adicionales; con false deja los IDs de cuenta en bruto.
--link-mentionstrueEnlaza las @menciones al perfil de la persona en Confluence
--space-keyClave de espacio para las macros --ext-render-* que la necesitan. by-key ya la conoce; con by-id hay que indicarla.
--validate-strictfalseFalla la conversión ante errores de validación estricta de ADF en lugar de convertir con el mejor esfuerzo posible

Imágenes y multimedia

FlagShortPredeterminadoDescripción
--embed-images-etrueIncrusta imágenes como URI de datos base64
--ext-embed-drawio-DtrueIncrusta diagramas de draw.io como imágenes base64
--ext-embed-roadmaptrueIncrusta diagramas de Roadmap Planner como imágenes base64
--embed-media-imagestrueIncrusta archivos multimedia de Confluence (imágenes, avatares) como URI de datos base64
--image-sidecarsfalseEscribe las imágenes en attachments/<page-id>/ y las enlaza de forma relativa, en lugar de incrustarlas en base64
--media-dimensionsfalseRenderiza el multimedia con tamaño como HTML <img> para conservar el ancho

Usa --embed-images=false para mantener las referencias de imagen como URLs externas. Esto genera archivos de salida más pequeños, pero requiere acceso a red para visualizarlos. --image-sidecars es el término medio: los bytes siguen en disco, así que la exportación sigue siendo autónoma, pero ninguna página carga una URI de datos de 100 KB en una sola línea.

Obsidian y estilo de salida

FlagPredeterminadoDescripción
--obsidianfalsePreajuste: callouts de Obsidian, anclajes de encabezado que Obsidian resuelve y archivos sidecar de imagen
--panel-stylegithubCómo se renderizan los paneles de Confluence: github (alerts), obsidian (callouts), emoji
--wikilinksfalseRenderiza las inline cards internas como [[Título de la página]]. Necesita --ext-resolve-inline-card-titles.
--inline-tagsfalseAñade las labels de la página como #tag en una línea final, además del campo tags del front matter

--obsidian es un preajuste, no un candado: una opción explícita siempre gana. Consulta Bóvedas de Obsidian para ver qué establece, una matriz de compatibilidad por función y una tabla de síntoma-solución.

Flags de extensión

FlagPredeterminadoDescripción
--ext-render-toctrueGenera una tabla de contenidos Markdown a partir de los encabezados del documento
--ext-render-recently-updatedtrueConvierte la macro recently-updated en una lista Markdown
--ext-render-listlabelstrueConvierte insignias de etiquetas
--ext-render-pagetreetrueConvierte la macro pagetree en una lista Markdown anidada
--ext-render-childrentrueConvierte la macro children en una lista Markdown plana
--ext-render-contributorstrueConvierte la macro contributors en una lista Markdown
--ext-render-page-signaturestrueConvierte tablas de firmas de Document Control
--ext-render-qc-propertiestrueConvierte las macros de propiedades y revision QC con sus valores reales
--ext-render-task-reporttrueConvierte tasks-report-macro en una tabla Markdown
--ext-render-content-reporttrueConvierte content-report-table macro en una tabla Markdown
--ext-render-cql-querytrueEjecuta la macro CQL Query y convierte sus resultados en una lista Markdown
--ext-resolve-inline-card-titlestrueResuelve enlaces de tarjetas inline a sus títulos reales de página

Cada flag --ext-render-* anterior cuesta llamadas adicionales a la API, porque la macro hay que resolverla contra Confluence en lugar de leerla del cuerpo de la página. --ext-render-listlabels y --ext-render-recently-updated necesitan además una clave de espacio: by-key ya la tiene, by-id necesita --space-key.


Rendimiento

space convert convierte 4 páginas a la vez por defecto. La conversión está limitada por la red — varias llamadas a la API por página — así que solapar unas cuantas páginas oculta la mayor parte de la latencia por página.

# Súbelo para un espacio grande en un tenant tolerante acs2md space convert by-key DEVOPS --output-dir ./docs --concurrency 8 # Restaura la conversión estrictamente secuencial acs2md space convert by-key DEVOPS --output-dir ./docs --concurrency 1

El techo útil es el límite de peticiones de tu tenant de Confluence, no el número de núcleos de CPU, y por eso el valor por defecto es deliberadamente modesto. Subirlo es seguro porque el cliente HTTP respeta la cabecera Retry-After: cuando Confluence responde a una petición limitada con 429 o 503 e indica un retardo, el cliente espera exactamente ese tiempo en lugar de adivinarlo. Es el servidor quien marca el ritmo, en vez de que el cliente lo descubra fallando.

La salida es idéntica con cualquier valor. Las páginas se recogen en el orden de entrada, sin importar qué worker termine primero, así que la estructura de directorios, --rewrite-links y los totales del resumen no cambian al subir --concurrency.

Cada comando informa además de cuánto ha tardado:

✅ Sync complete! ✅ Converted: 835 ❌ Failed: 0 🔗 Links rewritten: 835 files 📂 Output: ~/tmp/docs-sec-obsidian/SEC ⏱️ Took: 2m 14s

La cifra cubre el comando completo, incluidas las llamadas a la API y las descargas de imágenes.

Un segundo Ctrl+C fuerza la salida. El primero cancela de forma limpia y deja que terminen de replegarse las páginas que ya estaban en vuelo, lo cual no es instantáneo cuando se están convirtiendo varias a la vez.


Reporte de progreso

Las conversiones largas muestran una barra de progreso en tiempo real en stderr con el título actual de la página, el porcentaje completado y el tiempo estimado restante. Esto no interfiere con la salida en stdout que pueda redirigirse a un archivo.

Esa separacion es importante para la automatizacion porque mantiene visibilidad del progreso para humanos sin corromper la salida redirigida.

Si necesitas una transcripcion limpia para CI, demos o capturas de documentación, usa el flag global --no-progress.

Ejecución observada de conversión (anonimizada)

La siguiente salida se capturo de una ejecución real en macOS contra un espacio pequeño y actual, con el nombre y la clave del espacio anonimizados:

📚 Converting space: Team Documentation (TEAMDOCS) 📂 Output directory: /tmp/acs2md-doc-sample 🔄 Mode: incremental — state file: /tmp/acs2md-doc-sample/.convert-sync-state.json 🔍 Fetching page metadata for sync... 📥 Fetched metadata for 6 pages ✅ 📋 Found 6 page(s) to convert (0 up-to-date) ✅ Sync complete! ✅ Converted: 6 ❌ Failed: 0 ✅ Up-to-date (skipped): 0 🗑️ Removed from tracking: 0 🔗 Links rewritten: 1 files 📂 Output: /tmp/acs2md-doc-sample

Una segunda ejecución contra el mismo directorio de salida produjo:

📚 Converting space: Team Documentation (TEAMDOCS) 📂 Output directory: /tmp/acs2md-doc-sample 🔄 Mode: incremental — state file: /tmp/acs2md-doc-sample/.convert-sync-state.json 🔍 Fetching page metadata for sync... 📥 Fetched metadata for 6 pages ✅ ✅ All pages are up-to-date. ✅ Sync complete! ✅ Up-to-date (skipped): 6 🗑️ Removed from tracking: 0 📂 Output: /tmp/acs2md-doc-sample

Flujos que combinan espacios y páginas

acs2md también incluye comandos a nivel de página para que los equipos combinen exportación masiva con inspección dirigida desde el mismo binario.

  • acs2md page convert by-id, by-title, by-url
  • acs2md page get by-id, by-title, by-url
  • acs2md page count nodes, page count marks y page properties

Estructura de salida

acs2md crea subdirectorios que reflejan el árbol de páginas de Confluence. Cada página se convierte en un archivo Markdown y las páginas hijas se colocan dentro de una carpeta con el nombre de su página padre.

./output/TEAMDOCS/ ├── .convert-sync-state.json ├── Team_Documentation.md └── Team_Documentation/ ├── Architecture_decisions.md ├── Change_log.md ├── Meeting_notes.md ├── Product_requirements.md └── Retrospectives.md

Los nombres de archivo se derivan de los títulos de página y los conflictos se resuelven usando la estrategia de --conflict-resolution.

Que el archivo Markdown raiz y la carpeta hija compartan el mismo título de página no es teorico; esa estructura salio directamente de una exportación real.


Resolución de conflictos de salida

Cuando dos páginas del espacio generan el mismo nombre de archivo, --conflict-resolution controla el comportamiento:

ValorComportamiento
overwriteSobrescribe cualquier archivo existente (predeterminado)
suffixAñade el ID de página para desambiguar nombres de archivo duplicados
skipConserva el archivo existente y omite el duplicado
versionedCrea un directorio de salida con marca temporal para cada ejecución

Modo sync e incremental

En la versión actual documentada, acs2md space convert by-key se observo arrancando en modo incremental cuando no se pasa ni --incremental ni --sync. La herramienta rastrea versiones de página en un archivo .convert-sync-state.json dentro del directorio de salida y solo reconvierte páginas que han cambiado desde la última ejecución.

FlagComportamiento
--syncReconvierte páginas cambiadas. Elimina archivos locales de páginas retiradas de Confluence.
--incrementalReconvierte páginas cambiadas. Conserva archivos locales de páginas retiradas de Confluence. Este fue el comportamiento observado por defecto en v1.0.0.

Los dos flags son mutuamente excluyentes.

Los modos sync e incremental son ideales para pipelines de CI/CD y exportaciones programadas. En ejecuciones posteriores, solo se recuperan y convierten páginas con versiones nuevas, lo que reduce de forma notable las llamadas a la API y el tiempo de proceso.

Archivo de estado de ejemplo

El archivo de estado creado por la exportación real tenia esta forma tras anonimizarlo:

{ "last_sync_at": "2026-03-29T10:55:33.744109+02:00", "pages": { "100101": { "converted_at": "2026-03-29T10:55:31.313290+02:00", "version_created_at": "2024-01-15T09:00:00.000Z", "page_id": "100101", "title": "Team Documentation", "file_path": "/tmp/acs2md-doc-sample/Team_Documentation.md", "version_number": 3 } }, "space_id": "100001", "version": 1 }

Patrones de uso recomendados

  • Usa --sync cuando el directorio de salida deba permanecer como un espejo exacto y vivo del espacio de origen.
  • Usa --incremental cuando quieras una copia de continuidad o de archivo que conserve contenido eliminado localmente.
  • Usa --rewrite-links=false solo cuando no necesites portabilidad local.
  • Ejecuta space pages --tree antes de la primera exportación grande si necesitas validar el alcance con stakeholders.

Ejemplos prácticos

Migración completa de un espacio a un sitio estático

acs2md space convert by-key DOCS \ --include-metadata \ --output-dir ./site/docs

Base de conocimiento para IA (texto plano, sin imágenes)

acs2md space convert by-key KB \ --exclude-marks \ --embed-images=false \ --ext-render-toc=false \ --output-dir ./rag

Backup nocturno mediante CI/CD

#!/bin/bash export ACS2MD_CONFLUENCE_DOMAIN=mycompany.atlassian.net export ACS2MD_CONFLUENCE_USERNAME=$CONFLUENCE_USER export ACS2MD_CONFLUENCE_API_TOKEN=$CONFLUENCE_TOKEN acs2md space convert by-key DOCS \ --output-dir "./backup/$(date +%Y-%m-%d)" \ --log-file acs2md.log

Sincronización incremental en CI/CD

# Solo reconvierte páginas cambiadas y conserva archivos de páginas retiradas acs2md space convert by-key DOCS \ --incremental \ --output-dir ./docs # Solo reconvierte páginas cambiadas y elimina archivos de páginas retiradas acs2md space convert by-key DOCS \ --sync \ --output-dir ./docs

Exportación orientada a archivo que conserva páginas retiradas

acs2md space convert by-key DOCS \ --incremental \ --output-dir ./archive/docs

Exportación sin reescritura de enlaces

# Conserva las URLs originales de Confluence en lugar de reescribirlas a rutas locales acs2md space convert by-key MYSPACE \ --rewrite-links=false \ --output-dir ./export

Para orientación por escenarios en lugar de comandos individuales, sigue con Flujos y comandos.

Last updated on