How to Publish Multi-File GitHub Markdown to Confluence Cloud Without Broken Links
Updated
Why Single-File Markdown Importers Break Repository Documentation
When engineering teams copy or import Markdown files one by one into Confluence Cloud, relative file paths like ../architecture/security-model.md or ./assets/diagram.png either point to 404 GitHub paths or break completely. Furthermore, unguarded scripts overwrite manual hotfixes made by product managers or SREs directly in Confluence.
<!-- Broken single-file import -->
<a href="../setup.md#install">Setup Guide</a>
<!-- DocBrancher Pass-2 Confluence Storage XHTML -->
<ac:link ac:anchor="install">
<ri:page ri:content-title="Setup & Provisioning Guide" ri:space-key="ENG" />
<ac:plain-text-link-body><![CDATA[Setup Guide]]></ac:plain-text-link-body>
</ac:link>
Two-Pass Tree Resolution & Read-Only Destination Preflight
Before writing a single byte to Confluence Cloud, DocBrancher runs a read-only preflight check against the destination space. The preflight plan classifies every selected Markdown file as create, update, skip (when the SHA-256 content hash matches), or conflict (when the remote Confluence page version advanced past the last synced version).
Version-Checked Human-Edit Conflict Protection
If a colleague edits a Confluence page directly in the browser (advancing the remote page from v3 to v4), DocBrancher pauses publication for that page and presents a side-by-side comparison between the remote Confluence Storage XHTML and the proposed GitHub commit.
Frequently Asked Questions
Does DocBrancher require users to paste personal Atlassian API tokens?
No. DocBrancher is architected for Atlassian Forge installation authentication and OAuth 2.0 (3LO) destination binding, and explicitly rejects raw user API token collection.
How does DocBrancher prevent duplicate attachment uploads?
Every referenced image or binary asset is fingerprinted with SHA-256 and mapped to a collision-resistant filename. Unchanged attachments are skipped during publication.