One-command install
A single curl/PowerShell line installs an isolated, self-updating CLI via uv. No virtualenv juggling.
Pages, spaces, orgs
Export a single page, a page subtree, an entire space, or every space in your Atlassian organisation.
Incremental by default
Skips unchanged pages using a lockfile. Re-runs export only what actually moved since last time.
Target presets
Pre-baked configurations for Obsidian (wiki links, Dataview, Meta Bind) and Azure DevOps wikis (sanitized filenames, attachments folder).
Macros & add-ons
Status badges, panels, page properties, draw.io, PlantUML, Mermaid, include/excerpt: all converted to portable Markdown.
Cloud & Server
Works against Confluence Cloud, the Atlassian API gateway, and on-premise Server / Data Center. API tokens, PATs, scoped tokens: all supported.
Get going in 60 seconds
Install, authenticate, export. That's the whole flow.
1. Install
- Linux
- macOS
- Windows
- pip
- uv
- Docker
# Installs an isolated, self-updating CLI via uv.
curl -LsSf uvx.sh/confluence-markdown-exporter/install.sh | sh
# Installs an isolated, self-updating CLI via uv.
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
# Install as an isolated toolβ¦
uv tool install confluence-markdown-exporter
# β¦or run it once without installing:
uvx confluence-markdown-exporter --help
# Pull and run the prebuilt image (non-interactive / CI use).
docker pull spenhouet/confluence-markdown-exporter:latest
docker run --rm spenhouet/confluence-markdown-exporter --help
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
