@abstractwebunit/markdown-publish
v1.0.6
Published
Publish an Obsidian/Markdown vault as a fast static site — search, link graph, canvas boards. CLI + GitHub Action.
Maintainers
Readme

Publish your vault in a couple of clicks
One click clones the starter template into your GitHub and builds the site. Drop .md files into vault/ — the site rebuilds on every commit. Prefer GitHub Pages? Use the template and enable Pages — the workflow is already inside.
Features
| Interactive link graph | Canvas boards | Instant search |
|---|---|---|
|
|
|
|
- Search in the browser (Pagefind) — no server,
Ctrl+K, works offline. - Link graph (WebGL) — global view + a local graph beside every note; smooth at 1,500+ notes.
- Canvas boards —
.canvasfiles (JSON Canvas) render as interactive boards: drag, resize, follow links. - Obsidian-flavoured Markdown —
[[wikilinks]], embeds, callouts, tags, footnotes, code highlighting, backlinks, hover previews. - SEO out of the box — per-page meta/OG/JSON-LD, sitemap, robots.txt, llms.txt, and a generated social card with your site's name.
- AI-agent ready — every site exposes WebMCP tools (
search_notes,get_note, …) so agents can query your notes. - Non-Latin URLs — Cyrillic, CJK and other scripts survive in page addresses.
- Light/dark theme, mobile layout, zero runtime dependencies — pure static output.
Use it as a CLI
npx @abstractwebunit/markdown-publish build --vault ./my-notes --out distConfigure via flags or markdown-publish.config.json:
{
"siteName": "My Notes",
"siteLang": "en",
"vaultDir": "vault",
"buildMode": "full"
}Key options: siteName, siteUrl, siteLang, siteDescription, vaultDir, buildMode (full | public — publish everything or only publish: public notes), baseHref (e.g. /repo/ for GitHub Pages project sites), home (explicit home note). Full reference: docs → Configuration.
Use it as a GitHub Action
- uses: abstractwebunit/markdown-publish@v1
with:
vault-dir: vault
base-href: "/${{ github.event.repository.name }}/"
site-url: "https://${{ github.repository_owner }}.github.io/${{ github.event.repository.name }}"A complete Pages workflow ships in templates/publish.yml; Netlify/Vercel configs in templates/.
How it works
A build-time Node parser turns the vault into a content bundle (notes, link graph, canvas models, search docs); an Angular SSG prerenders every route into static HTML. No backend, nothing to maintain — host the output anywhere.
License
MIT. Not affiliated with, endorsed by, or connected to Obsidian.MD Inc. — "Obsidian" is referenced only to describe vault compatibility; the .canvas format is the open JSON Canvas standard.
