A ~120-line static-site indexer — walks your HTML, reads three <meta> tags per page, writes one index grouped by type and date. No Hugo, no build graph, no runtime. Public domain.
catalogue.py) and a Jinja2 template (catalogue.html.j2). It is the 20% of a static-site generator a hand-written site actually uses — front-matter plus a build-time index. Fork it, edit one config block, ship it. See it running on this site →Stamp each page's <head> with three keyed metas — separate keys, so there is nothing to parse:
<meta name="krons:type" content="research">
<meta name="krons:date" content="2026-07-04">
<meta name="krons:pin" content="1">
type picks the bucket, date is the page's own date (YYYY-MM-DD), pin=1 features it on the front page. Pages with no metas still appear — the scanner falls back to a directory map plus file mtime, so nothing goes missing and adoption is incremental.
uv run --python 3.14 --with jinja2 catalogue.py
Writes <web-root>/archive/index.html. A git pre-commit hook regenerates and stages it inside the same commit, so the index is never stale — no daemon, no polling. Details in the README.
Released under the Unlicense · krons.fiu.wtf