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

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`

Publish anywhere

Publishers are pure mechanism: pick one or several per environment, and deploys are incremental, so only changed files ever upload.

Cloudflare Pages GitHub Pages Cloudflare R2 Amazon S3 Tigris (Fly.io) GitLab & Codeberg Pages MinIO · Backblaze · Wasabi any git remote …or any command you like

News

Release notes and notes from the making of colophon. Subscribe.