ArtUp Export documentation
In short: open ArtUp Export in a space, pick what to export and a format, and download a zip with one Markdown file per page, the page tree as folders and the attachments next to their pages. Keep the zip's export-manifest.json: next time, an update export contains only what changed.
1. Install
- A Confluence administrator installs ArtUp Export from the Atlassian Marketplace (Apps → Explore more apps).
- Sites with up to 10 users use it free; larger sites start a trial or a subscription in Manage apps.
- No configuration is needed. Every user who can read a space can export what they can see in it.
2. Export a space
- In a space, open ArtUp Export in the space sidebar (apps section).
- What to export: Whole space, Page and children or One page. For the last two, type a page title to pick the page.
- Format: Generic Markdown, Hugo, Docusaurus or MkDocs — see Presets.
- Mode: Full export, or Update previous export — see Update.
- Check the Output preview on the right: the files the export will write and the front-matter of the first page.
- Click Export N pages. Progress goes through four stages: scan, pages, attachments, pack. Keep the tab open until the download starts — the export runs in your browser.
When it finishes, the zip downloads and the result screen shows the number of pages and attachments, the size, the time and the warnings. Download again saves the same zip once more.
3. Export a page or a branch from the page menu
- On any page, open ••• (More actions) → Export to Markdown.
- Choose This page or This page and its subpages (the dialog shows how many), and a format.
- More options opens page order, file names, attachments and the mode, including Update previous export. Click Export and keep the dialog open until the download starts.
4. Options
| Option | Choices | Effect |
|---|---|---|
| Page order | Stored in front-matter (default) · Numeric prefixes in file names | Front-matter writes the order key of the preset (weight or sidebar_position) in steps of 10. Prefixes put it in the name, for example 010-getting-started.md. |
| File names | ASCII, transliterated (default) · Unicode, original letters | ASCII names work in URLs, on Windows and in older tools. Accents are dropped, Cyrillic and Greek are transliterated; titles with no Latin equivalent, such as Chinese or Japanese, become page-<id>. |
| Attachments | All attachments (default) · Only those used on pages · No attachments | Which attachments are written next to their pages. |
| Skip files larger than | MB, default 50 | Larger attachments are skipped and listed as attachment-too-large. |
5. What is in the zip
export-manifest.json # ids, versions, paths, options, warnings — no page content
product-documentation/
index.md # a page with children: folder + index file
index.assets/diagram.png # that page's attachments
getting-started.md # a page without children: one file
getting-started.assets/screen.png
export-deleted.txt # update exports only: paths to remove
- Folders follow the page tree to its full depth; siblings keep the Confluence order.
- File names are slugs of the titles. When two siblings would get the same name (also when they differ only by case or accents), the page id is appended. A page keeps its file name on later exports.
- Links between exported pages and links to attachments are relative paths. Links to pages outside the export point to Confluence.
- Files carry no export time: exporting again without changes in Confluence gives byte-identical files.
6. Update an existing repository
- Run a full export once and commit the unzipped tree, for example into
docs/. - Later, open ArtUp Export in the same space (or the page dialog), choose Update previous export and drop in the previous zip or just its
export-manifest.json. - The new zip holds only new and changed pages, their attachments, the new manifest and
export-deleted.txtwith the paths of renamed, moved and deleted pages. - Put the zip next to the
docsfolder and apply it:
unzip -o <zip> -d docs && cd docs && if [ -f export-deleted.txt ]; then while IFS= read -r f; do rm -f -- "$f"; done < export-deleted.txt; rm -f export-deleted.txt; fi
The result screen shows the same command with your zip's name and a Copy button. Then review with git status and commit.
When an update becomes a full export. If the previous manifest comes from another site, space or root page, or its format options differ (preset, page order, file names), the app says so and makes a full export instead. With changed options, files that are no longer produced are listed in export-deleted.txt.
A page that was in the previous export but is not found now — deleted, or no longer visible to you — is listed for deletion, and the result screen tells you how many.
7. Front-matter reference
Every page starts with YAML front-matter. Strings are double-quoted and escaped.
| Key | Value |
|---|---|
title | Page title as in Confluence. |
confluence_id | Page id (string). |
space | Space key. |
parent_id | Parent page id; left out for a page at the top of the space. |
version | Confluence version number of the page. |
author | Display name of the last editor, read at export time; left out when the user cannot be resolved. |
updated | Time of the last edit, ISO 8601 in UTC. |
weight / sidebar_position | Position among siblings (10, 20, 30…): weight for Generic Markdown and Hugo, sidebar_position for Docusaurus, none for MkDocs (order is in .pages). |
labels | Page labels, sorted; [] when there are none. |
confluence_url | URL of the page in Confluence. |
8. Presets and site settings
| Preset | Index file | Order | Extra files | Panels (info, tip, note, warning) |
|---|---|---|---|---|
| Generic Markdown | index.md | weight | — | GitHub alerts: > [!NOTE], [!TIP], [!WARNING], [!CAUTION] |
| Hugo | _index.md | weight | — | GitHub alerts |
| Docusaurus | index.md | sidebar_position | _category_.json per folder (label, position) | :::note[Title] … ::: (note, tip, warning, danger) |
| MkDocs | index.md | in .pages | .pages per folder | !!! note "Title" with an indented body (note, tip, warning, danger) |
A plain panel macro is a blockquote in every preset. Code blocks and inline code are never escaped.
Hugo
Hugo shows the GitHub alerts as styled blocks with a blockquote render hook (layouts/_markup/render-blockquote.html that checks .Type "alert"; many themes ship one). Merged-cell tables and expand sections are HTML, and links between .md files need Hugo's link render hook:
# hugo.toml
[markup.goldmark.renderer]
unsafe = true
[markup.goldmark.renderHooks.link]
enableDefault = true
Docusaurus
The export builds with the default markdown.format: 'mdx': braces in text are escaped, void tags are self-closed (<br />), merged-cell tables use colSpan/rowSpan, and lines MDX would read as import/export or as a ::: fence are escaped. Placeholders are MDX comments: {/* confluence:NAME */}.
MkDocs
The output is written for Python-Markdown: nested lists are indented by 4 spaces, braces in text are escaped, and expand sections and merged-cell tables carry markdown="1" so md_in_html renders their content. Install the plugin and extensions and enable them:
pip install mkdocs mkdocs-awesome-pages-plugin pymdown-extensions
# mkdocs.yml
plugins:
- awesome-pages # reads the .pages files
markdown_extensions:
- admonition
- pymdownx.tasklist
- tables
- attr_list
- md_in_html
- pymdownx.superfences # code blocks inside panels and list items
- pymdownx.tilde # ~~strikethrough~~
- pymdownx.escapeall: # every \-escape, and \ + newline as a line break
hardbreak: true
If a page shows literal markers such as !!! or \, an extension from this list is missing.
9. How content is converted
- Converted: headings, paragraphs and formatting, lists and task lists, links, mentions, images, code and noformat blocks with their language, simple tables, info/tip/note/warning panels, panels, expand (as
<details>), status (as inline code), single Jira issues (as a link), anchors, children display, layouts and sections (their content is kept). - Kept as HTML: tables with merged cells or block content inside cells.
- Placeholder: macros whose output Confluence computes when the page is viewed, and macros ArtUp Export does not know. The placeholder is an HTML comment such as
<!-- confluence:toc -->(an MDX comment in Docusaurus); the body of an unknown macro is kept after it.
10. Warnings reference
Anything that could not be converted exactly is listed on the result screen with its page, and saved in warnings of export-manifest.json. Filter the list by kind. Warnings never stop an export.
| Kind (label) | What happened | What you get / what to do |
|---|---|---|
| unknown-macro Unknown macro | A macro ArtUp Export has no conversion for, usually from another app. Detail: the macro name. | A placeholder comment, followed by the macro's body if it has one. Replace it by hand if the content matters. |
| dynamic-macro Dynamic macro | A macro whose content Confluence builds when the page is viewed: table of contents, page tree, content by label, recently updated, include and excerpt include, attachments list, Jira query, and similar. | A placeholder comment. Most static site generators have their own equivalent (a generated table of contents, a section list). |
| complex-table Complex table | A table with merged cells, or with lists, code or other blocks inside cells, which Markdown tables cannot express. | The table is written as HTML. It renders in GitHub, Docusaurus and MkDocs (md_in_html); Hugo needs unsafe = true. |
| missing-attachment Missing attachment | The page shows an image or links a file that is not attached to the page (or was not exported). Detail: the file name. | The image or link is replaced by its alt text or file name. Attach the file in Confluence, or check the attachments option. |
| adf-extension Editor extension | Content added by an editor extension of the new Confluence editor that has no storage-format equivalent. Detail: the extension type. | A placeholder comment. |
| unresolved-user Unknown user | A mention of a user whose name could not be read — a deactivated or deleted account, or one hidden by privacy settings. Detail: the account id. | The mention is written as @unknown-user. |
| attachment-too-large Attachment too large | The attachment is larger than Skip files larger than. Detail: the file name. | The file is not in the zip. Raise the limit and export again if you need it. |
| convert-failed Page not converted | The page body could not be converted at all. Detail: the error message. | The page file contains only the front-matter and a confluence:convert-failed placeholder. Please send us the message — see Support. |
11. Limits
- Keep the tab open. The export runs in your browser; closing the tab or the dialog cancels it. Cancel stops it and keeps your choices.
- Size and time. In our test, a space of 1,001 pages (tree depth 6) with 200 attachments exported in about 4 minutes into a 201 MB zip; an update after a few edits took about 2 minutes. Your time depends on the site, the network and attachment sizes. The whole zip is built in browser memory, so very large attachment sets are better exported with Only those used on pages or a lower size limit.
- Previous export for updates: up to 512 MB. For a larger zip, drop the
export-manifest.jsonfrom inside it. - Pages you cannot see are not exported; in an update they are listed for deletion.
- File names are cut to 80 characters.
- One-way. ArtUp Export 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; Data Center is not supported.
12. Data handling
- Content is read with the permissions of the user who runs the export, through Confluence's API in that user's browser.
- Conversion and zip packing happen in the browser. Page content is not sent to the app's backend and is not stored by the app. The app has no external egress and carries the Runs on Atlassian designation.
- No content or personal data is stored on any server. Author names are read at export time and written only into your zip.
- The app's backend function only reports the licence status; its logs contain no page content.
- Scopes are read-only: pages, spaces, attachments, labels, hierarchy, users, search, and app storage (declared for future versions; v1 stores nothing).
See also Security and the Privacy Policy.
13. Languages and support
The app follows each user's Confluence language (26 languages) and the light or dark theme.
Questions, bug reports and feature requests: hello@artuplabs.com. Please include your site URL, what you exported (space key, page), the preset and, for a warning or error, its text from the result screen. Do not send page content beyond what is needed. Response times are on the Support page.