ArtUp Export documentation

ArtUp Export for Confluence Cloud · Last updated: 2026-09-29

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

  1. A Confluence administrator installs ArtUp Export from the Atlassian Marketplace (Apps → Explore more apps).
  2. Sites with up to 10 users use it free; larger sites start a trial or a subscription in Manage apps.
  3. No configuration is needed. Every user who can read a space can export what they can see in it.

2. Export a space

  1. In a space, open ArtUp Export in the space sidebar (apps section).
  2. What to export: Whole space, Page and children or One page. For the last two, type a page title to pick the page.
  3. Format: Generic Markdown, Hugo, Docusaurus or MkDocs — see Presets.
  4. Mode: Full export, or Update previous export — see Update.
  5. Check the Output preview on the right: the files the export will write and the front-matter of the first page.
  6. 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.

The export form: what to export, format, options and mode, with the output preview.
The export form in a space, with the output preview on the right.

3. Export a page or a branch from the page menu

  1. On any page, open ••• (More actions) → Export to Markdown.
  2. Choose This page or This page and its subpages (the dialog shows how many), and a format.
  3. 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

OptionChoicesEffect
Page orderStored in front-matter (default) · Numeric prefixes in file namesFront-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 namesASCII, transliterated (default) · Unicode, original lettersASCII 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>.
AttachmentsAll attachments (default) · Only those used on pages · No attachmentsWhich attachments are written next to their pages.
Skip files larger thanMB, default 50Larger 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

6. Update an existing repository

  1. Run a full export once and commit the unzipped tree, for example into docs/.
  2. 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.
  3. The new zip holds only new and changed pages, their attachments, the new manifest and export-deleted.txt with the paths of renamed, moved and deleted pages.
  4. Put the zip next to the docs folder 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.

Result of an update export with changed, unchanged and deleted counts and the apply command.
An update export: changed, unchanged and deleted pages, and the command to apply it.

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.

KeyValue
titlePage title as in Confluence.
confluence_idPage id (string).
spaceSpace key.
parent_idParent page id; left out for a page at the top of the space.
versionConfluence version number of the page.
authorDisplay name of the last editor, read at export time; left out when the user cannot be resolved.
updatedTime of the last edit, ISO 8601 in UTC.
weight / sidebar_positionPosition among siblings (10, 20, 30…): weight for Generic Markdown and Hugo, sidebar_position for Docusaurus, none for MkDocs (order is in .pages).
labelsPage labels, sorted; [] when there are none.
confluence_urlURL of the page in Confluence.

8. Presets and site settings

PresetIndex fileOrderExtra filesPanels (info, tip, note, warning)
Generic Markdownindex.mdweight—GitHub alerts: > [!NOTE], [!TIP], [!WARNING], [!CAUTION]
Hugo_index.mdweight—GitHub alerts
Docusaurusindex.mdsidebar_position_category_.json per folder (label, position):::note[Title] … ::: (note, tip, warning, danger)
MkDocsindex.mdin .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

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 happenedWhat 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.
Warnings table on the result screen.
Warnings on the result screen, with a filter by kind.

11. Limits

12. Data handling

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.