Free and open source · Apache-2.0
colophon
Write it once. Own it forever. Publish anywhere.
colophon is a static site generator for bloggers. You keep a folder of plain Markdown files; colophon turns it into a fast, accessible, beautifully typeset blog with feeds, search and syndication built in, and publishes it to the host of your choice.
go install github.com/jmylchreest/colophon/cmd/colophon@latest
$ colophon init blog && cd blog ✓ scaffolded a site: config, theme, authors, a hello-world post $ colophon new post "Why I still blog" $ colophon build ✓ rendered 2 posts · feeds, sitemap, search index $ colophon publish --env production --allow-publish ✓ deployed (incremental: only changed files upload)
Markdown in. A newspaper out.
No databases, no admin panel, no lock-in. A post is a Markdown file with a little frontmatter; the published page is typeset like a broadsheet, works without JavaScript, and stays yours.
What you write
--- title: Why I still blog hero: gen:a desk by a window, morning light audio: true tags: [writing] --- The web got loud. My corner of it doesn't have to be. > [!note] > Posts are plain files. Take them > anywhere, any time.
What readers get
Why I still blog
The web got loud. My corner of it doesn't have to be.
Posts are plain files. Take them anywhere, any time.
Everything a blog should do, out of the box
colophon ships the whole publishing stack as one small binary. Each of these is built in; none of them needs a plugin, a service, or a subscription.
Markdown in
A folder of plain files, nothing more. If that folder happens to be an Obsidian vault, wikilinks, embeds and co-located images just resolve.
Typeset like print
The press theme is an editorial broadsheet: real typography, light and dark, code, maths, diagrams, callouts and pull-quotes all styled.
Feeds and the IndieWeb
RSS, Atom and JSON feeds, WebSub pings, microformats2 and webmentions: your blog is a first-class citizen of the open web.
Syndicate everywhere
POSSE built in: the canonical post lives on your domain, copies go to Bluesky and Mastodon, and a committed ledger keeps re-runs safe.
Search without a server
A static, sharded BM25 index with optional typo tolerance. Visitors search instantly; nothing phones home, nothing to host.
Posts become slide decks
Any post can project itself into a themed deck at /slides/: speaker notes, presenter mode, autocue, and it still reads with JS off.
Optional AI media
Hero images from a one-line gen: prompt and spoken readings of each post, with your own key. Cached in your repo; entirely optional.
Your readers' languages
Drop post.es.md beside post.md and colophon wires the translations together: hreflang, language chips, even per-language pronunciation for readings.
Accessible to AAA
The whole output targets WCAG 2.2 Level AAA: contrast, focus, keyboard access, and every page working before JavaScript arrives.
Your assistant writes in your voice
colophon ships agent skills for Claude Code, Codex, Gemini CLI, Cursor, Copilot and OpenCode: one command teaches your assistant to draft, edit, cross-link, tag and publish posts on your site. Personas capture your tone as a style guide backed by your actual back catalogue, so an LLM-drafted post reads like you wrote it.
Your voice, on file
# personas/default.yaml
style:
guide: |
Dry and wry; confident but
unpretentious. British spelling,
short sentences, no hype.
# plus every post you've written in
# this voice, as the exemplar corpus
# behind `colophon persona context`
$ colophon skills install ✓ claude 5 writing skills installed ✓ codex 5 writing skills installed ✓ gemini 5 writing skills installed $ # "draft a post about v2" → written in your voice, with frontmatter, tags and SEO in place
Publish anywhere
Publishers are pure mechanism: pick one or several per environment, and deploys are incremental, so only changed files ever upload.
News
Release notes and notes from the making of colophon. Subscribe.