← Home

Colophon

January 2, 2026

This site is published out of my Obsidian vault. I write the pages as plain Markdown in one folder, flag the ones meant to be public, and a small script copies just those into the site. Nothing else from the vault leaves it.

The site is SvelteKit with mdsvex, some simple scripts, and a pipeline towards static pages. The whole thing is the same idea as the tools I build: Own your files, keep them in plain text, and build up from there.

Here’s how it works:

How this site is built from markdown files in Obsidian to static pages on the web
  • The vault is the source. Every page is a Markdown note in a Quire project; each note carries a little frontmatter: titleslugpublish. A single note, the sitemap, holds a Navigation list that defines the site’s entire structure.
  • One script generates everything. On each commit, sync-content.ts reads the vault and does three things: it derives the structure from the sitemap (sections, the home feature, unlisted pages, the Writing stream), places each note and writes its URL slug back into it, and transforms the body so wikilinks become real URLs and image embeds become sized <img> tags.
  • The repo is a disposable snapshot. The sync emits the placed content, a nav.json menu, and copied-and-downscaled images.
  • SvelteKit prerenders it. mdsvex compiles each Markdown file into a component, every route renders to static HTML, and it’s served on git push.
  • Nothing lives outside the vault. Only published notes are copied out, and the slugs are written back into the notes, so the folder I write in stays the single source of truth.