Hi everyone. I'm Artyom from ArtUp Labs, and I build ArtUp Export, a Marketplace app that exports Confluence pages to Markdown. Teams that keep docs in git ask how to get Confluence content there, so here is what Confluence Cloud does natively, what a do-it-yourself route looks like, and how we approached it.
What Confluence Cloud exports natively
According to Atlassian's "Export a space's content as Word, PDF, or data files", space admins can export a space or selected pages to PDF, CSV, HTML or XML (CSV, HTML and XML come as a zip), and a single page can be exported to Word. Atlassian suggests HTML for turning a space into a static website, XML for importing into Data Center and CSV for moving a space to another Cloud site. Markdown is not among the formats.
The do-it-yourself route
- HTML export plus a converter. For example
pandoc -f html -t gfm page.html -o page.md. Fine for a handful of pages; expect manual cleanup of macros, panels, attachment paths and the page tree. - REST API plus your own script. Full control, but the script then owns page order, file names, links between pages, attachments and re-running without rewriting every file.
What decides whether the result works in git
- Stable paths. The same page must land in the same file on every export, or each export becomes one huge diff.
- The tree and its order. Folders that follow the page tree, siblings in sidebar order.
- Incremental updates. Only new and changed pages, plus a list of what was renamed, moved or deleted.
How ArtUp Export handles it
Disclosure: this is my app. Open it from the space sidebar or with ••• → Export to Markdown on a page, and export a whole space, a page with its children or one page.
- Full depth, Confluence order. A page with children becomes a folder with an index file; siblings keep the sidebar order.
- Stable paths. File names are ASCII slugs of the titles (Cyrillic, Greek and accents transliterated). An unchanged space re-exports byte-identical.
- YAML front-matter with the page id, title, space, parent, version, last author, update time, labels and URL.
- Update exports. Each zip carries
export-manifest.json (ids, versions, paths; no content). Drop the previous zip in and get only new and changed pages plus export-deleted.txt. - Presets for generic Markdown, Hugo, Docusaurus and MkDocs; info, tip, note and warning panels become the generator's admonitions.
- Nothing dropped silently. Macros with no Markdown equivalent get a placeholder, and the result screen lists each one with its page.
- Runs in your browser with your Confluence permissions; page content is not sent to a vendor server.
On a test space of 1,001 pages (tree depth 6) with 200 attachments, a full export took about 4 minutes (201 MB zip), and an unchanged re-export was byte-identical.
What it does not do: it does not import Markdown into Confluence and does not push to a git server; you commit the files yourself or in CI. Confluence Cloud only.
Marketplace listing: ArtUp Export – Git-Ready Markdown Export for Confluence
Which static site generator do you publish your docs with? I'd like to know which presets to add next.
Written with help from an AI assistant.