Introduction

Export Confluence pages to Markdown for Obsidian, Gollum, Azure DevOps, Foam, Dendron and any other Markdown-based platform.
Exports individual pages, pages with descendants, or entire Confluence spaces via the Atlassian API into clean Markdown. Skips unchanged pages by default, re-exporting only what has changed since the last run.
What's in these docs
- Installation: install and update the CLI in one command
- Usage: export pages, descendants, spaces, or organisations
- Features: supported Confluence content, macros, and add-ons
- Configuration: every option with defaults and ENV vars
- Target systems: Obsidian, Azure DevOps, …
- Troubleshooting: known issues and how to report
Get started in 60 seconds
1. Install
- Linux
- macOS
- Windows
- pip
- uv
- Docker
curl -LsSf uvx.sh/confluence-markdown-exporter/install.sh | sh
curl -LsSf uvx.sh/confluence-markdown-exporter/install.sh | sh
powershell -ExecutionPolicy ByPass -c "irm https://uvx.sh/confluence-markdown-exporter/install.ps1 | iex"
pip install confluence-markdown-exporter
uv tool install confluence-markdown-exporter
# or, one-shot run without installing:
uvx confluence-markdown-exporter --help
docker pull spenhouet/confluence-markdown-exporter:latest
docker run --rm spenhouet/confluence-markdown-exporter --help
The Docker image is intended for non-interactive / CI use; see the Docker page for config-file mounts and environment variables.
2. Authenticate
- Linux
- macOS
- Windows
- pip
- uv
- Docker
cme config edit auth.confluence
cme config edit auth.confluence
cme config edit auth.confluence
cme config edit auth.confluence
cme config edit auth.confluence
The container has no interactive menu. Generate the JSON config on a workstation first, then mount it (or pass credentials via CME_AUTH__* env vars):
# Writes ~/.config/confluence-markdown-exporter/app_data.json
cme config edit auth.confluence
Copy that app_data.json to your CI repo or secret store, then mount it on every container run (next step). See the Docker page for the env-var alternative.
3. Export
- Linux
- macOS
- Windows
- pip
- uv
- Docker
# A page, a subtree, an entire space, or every space of an org:
cme pages https://example.atlassian.net/wiki/spaces/SPACE/pages/123/Title
cme spaces https://example.atlassian.net/wiki/spaces/SPACE
cme orgs https://example.atlassian.net
# A page, a subtree, an entire space, or every space of an org:
cme pages https://example.atlassian.net/wiki/spaces/SPACE/pages/123/Title
cme spaces https://example.atlassian.net/wiki/spaces/SPACE
cme orgs https://example.atlassian.net
# A page, a subtree, an entire space, or every space of an org:
cme pages https://example.atlassian.net/wiki/spaces/SPACE/pages/123/Title
cme spaces https://example.atlassian.net/wiki/spaces/SPACE
cme orgs https://example.atlassian.net
# A page, a subtree, an entire space, or every space of an org:
cme pages https://example.atlassian.net/wiki/spaces/SPACE/pages/123/Title
cme spaces https://example.atlassian.net/wiki/spaces/SPACE
cme orgs https://example.atlassian.net
# A page, a subtree, an entire space, or every space of an org:
cme pages https://example.atlassian.net/wiki/spaces/SPACE/pages/123/Title
cme spaces https://example.atlassian.net/wiki/spaces/SPACE
cme orgs https://example.atlassian.net
docker run --rm \
-v "$PWD/app_data.json:/data/config/app_data.json:ro" \
-v "$PWD/output:/data/output" \
spenhouet/confluence-markdown-exporter \
pages https://example.atlassian.net/wiki/spaces/SPACE/pages/123/Title
Your Markdown lands in the configured export.output_path (current directory by default).