Note publisher

by bvn13
5
4
3
2
1
Score: 50/100

Description

Reviews

No reviews yet.

Stats

0
stars
75
downloads
0
forks
89
days
89
days
89
days
0
total PRs
0
open PRs
0
closed PRs
0
merged PRs
0
total issues
0
open issues
0
closed issues
4
commits

README file from

Github

Note publisher

Publish a single Obsidian note — together with its embedded images — to your own private GitHub repository, and get a clean, UUID-only public link that is rendered by a small worker you host yourself.

The plugin is a thin client. There is no vendor backend: the author has no access to your notes, your GitHub token, or your repository. Everything runs between your vault, your GitHub repo, and the worker you deploy.

How it works

Obsidian vault ──(GitHub API, your PAT)──▶ your private GitHub repo
                                                   │
                                                   ▼
                                    worker reads the repo and renders
                                    https://<your-worker>/v/<uuid>
  1. When you publish a note, the plugin ensures the note has a stable uuid stored in its properties (frontmatter). If absent, one is generated.
  2. It reads the note body, collects the embedded images, and rewrites the embeds to relative filenames.
  3. Using your fine-grained GitHub token, it commits the document as <root>/<uuid>/index.md plus the images into the same folder of your private repo.
  4. The public link https://<your-worker>/v/<uuid> is written back into the note's properties and copied to your clipboard.

The worker that turns <uuid> into a readable page is deployed by you. Two reference implementations are available:

Requirements

  • A private GitHub repository to hold the published documents.
  • A fine-grained Personal Access Token with Contents: Read and write scoped to that repository.
  • A deployed worker (Cloudflare or self-hosted — see the links above) that has read access to the same repository and renders the public pages.

Installation

From Community Plugins (once approved)

Settings → Community plugins → Browse → search for Note publisher → Install → Enable.

Manual

  1. Download manifest.json and main.js from the latest release.
  2. Copy them into <vault>/.obsidian/plugins/note-publisher/.
  3. Reload Obsidian and enable the plugin in Settings → Community plugins.

Configuration

Open Settings → Note publisher and fill in:

Setting Description Default
Personal Access Token (write) Fine-grained PAT with Contents: Read and write. Stored locally in this vault only. —
Owner GitHub user or organization that owns the repo. —
Repository Private repository name. —
Branch Branch to commit to. main
Root directory Path in the repo under which each document gets its own folder. docs
Worker base URL Public URL of your worker, no trailing slash. —
UUID property Note property that stores the document UUID. publish_uuid
Link property Note property that stores the public URL after publishing. public_url

Usage

Open the command palette and run one of:

  • Publish current note — uploads the note and its images to the private repo and copies the public link.
  • Unpublish current note — deletes the note's folder from the repo, so the public link goes dead. The note keeps its UUID.
  • Copy public link — copies the already-published link from the note's properties.

Privacy & network usage

For reviewers and privacy-conscious users, here is exactly what the plugin does over the network:

  • The plugin makes outbound requests to one host only: api.github.com, authenticated with your own fine-grained token, to create, list, and delete files in your private repository.
  • The plugin does not send your note content to the worker. It only builds the link string <worker>/v/<uuid>. The worker independently reads the notes from your GitHub repo — the plugin never talks to it.
  • No telemetry, no analytics, no calls to any author-controlled server.
  • Your GitHub token is stored locally in the vault (.obsidian/plugins/note-publisher/data.json) and is never committed to your repo or sent anywhere except GitHub's own API.
  • All requests use Obsidian's requestUrl, so the plugin works on desktop without CORS workarounds.

License

MIT — see LICENSE.