Skip to main content

obsidian-publish-confluence

PyPI Python Build License: WTFPL

Publish Obsidian-flavored Markdown to Confluence over Kerberos.

Versioning is derived from Git tags for releases.

Features

  • Create or update Confluence pages from Markdown.
  • Store the Confluence page URL in note frontmatter.
  • Upload attachments on both page create and update.
  • Convert Obsidian image embeds like ![[image.png]] and ![[image.png|400]].
  • Convert fenced code blocks to Confluence code macros.
  • Convert PlantUML blocks to the native Confluence plantuml macro.
  • Support --dry-run to inspect conversion and publish actions without changing Confluence.

Requirements

  • Python 3.10+
  • curl
  • kinit and klist
  • A Confluence instance that accepts Kerberos auth via curl --negotiate

Installation

pip install obsidian-publish-confluence

For local development:

python -m pip install -e .

Configuration

Set these environment variables:

  • OBSIDIAN_PUBLISH_CONFLUENCE_BASE_URL
  • OBSIDIAN_PUBLISH_CONFLUENCE_SPACE
  • OBSIDIAN_PUBLISH_CONFLUENCE_PARENT_ID

Usage

export OBSIDIAN_PUBLISH_CONFLUENCE_BASE_URL="https://confluence.example.com"
export OBSIDIAN_PUBLISH_CONFLUENCE_SPACE="DOCS"
export OBSIDIAN_PUBLISH_CONFLUENCE_PARENT_ID="123456"

obsidian-publish-confluence note.md
obsidian-publish-confluence note.md --title "Custom title"
obsidian-publish-confluence note.md --page-url "https://confluence.example.com/spaces/DOCS/pages/123456"
obsidian-publish-confluence note.md --space DEV --parent-id 987654
obsidian-publish-confluence note.md --dry-run

--dry-run converts the note, prints the intended action and attachment list, and skips Confluence API calls.

The Confluence page URL is stored in the note frontmatter as confluence_url. An explicit --page-url takes precedence and is saved to the note after a successful publish.

Kerberos

The CLI expects a valid Kerberos ticket:

kinit YOUR_LOGIN@REALM.EXAMPLE

PlantUML

PlantUML fenced blocks are converted to the native Confluence plantuml macro.

This requires a Confluence instance with a compatible plantuml macro installed.

Release versioning

The package version comes from the Git tag used for the release. For PyPI releases, create a tag like v0.1.0 before publishing a GitHub Release.

Limitations

  • Only image-style Obsidian embeds are converted to Confluence attachments.
  • Attachment names are namespaced automatically to avoid collisions between files with the same basename.
  • Numeric Obsidian image suffixes like ![[image.png|640]] become Confluence image widths.
  • Non-image wiki links stay plain text.
  • PDF embeds are not converted.
  • Auth mode is Kerberos-only.
  • If a note has no confluence_url and --page-url is not provided, a new Confluence page is created.
  • PlantUML publishing depends on the Confluence-side plantuml macro being available.

Publishing

This repository includes GitHub Actions for:

  • building distributions on push and pull request
  • publishing to PyPI on GitHub Release published

PyPI publishing is configured for Trusted Publishing.

Metadata

Release files for obsidian-publish-confluence 0.1.6

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for obsidian-publish-confluence 0.1.6
File Size Uploaded
obsidian_publish_confluence-0.1.6.tar.gz 14.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for obsidian-publish-confluence 0.1.6
File Interpreter ABI Platform
obsidian_publish_confluence-0.1.6-py3-none-any.whl Python 3 none any Details

Total release size: 26.7 kB

Release files / obsidian_publish_confluence-0.1.6.tar.gz

Download URL obsidian_publish_confluence-0.1.6.tar.gz
Size 14.9 kB
Tags Source
SHA-256 checksum
How to use checksums
ee248c148d78dbfa81e830e3bd02895070974f9b4f1215e35a24a8a2a0023e2b
BLAKE2b-256 checksum
How to use checksums
93bc22df38171eb2152f34c0dd0dd6923766d850d49c3885045293726e9cab53
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 6, 2026.

Transparency log

Release files / obsidian_publish_confluence-0.1.6-py3-none-any.whl

Download URL obsidian_publish_confluence-0.1.6-py3-none-any.whl
Size 11.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
ce17e9b4b67dff90a2a72d4bd39d940ec1293a853e12169b6669550c1e0e53c1
BLAKE2b-256 checksum
How to use checksums
96100fa729ccc33538c2dbade1c9cf7900dc53306749c04d6d230e4d7351fbf3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 6, 2026.

Transparency log

Release history Release notifications | RSS feed

0.1.11

2 release files

0.1.10

2 release files

0.1.8

2 release files

0.1.7

2 release files

This release

0.1.6 This release

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page