| Platform | Python-generated static HTML |
|---|---|
| Publishing | GitHub Pages via GitHub Actions |
| Important | Source files are authoritative |
| Related | Build a personal weblog with AI |
This is a runbook for maintaining an already established static weblog. It covers the ongoing engineering and publishing tasks exposed by the site-build chronicle, the navigation and accessibility review, and the housekeeping pass. For the beginner's initial setup and pasteable agent prompts, see Build a personal weblog with AI.
Which files are authoritative?
In this weblog repository, editable sources live under src/posts/, src/wiki/, src/pages/, src/media/ and src/style.css. The Python program build.py renders them into docs/, which GitHub Pages serves. Fix source and rebuild; avoid directly editing generated HTML under docs/, as the next build will replace it.
Publishing a post without losing its history
- Create or edit a source post with title, date, categories, summary, factual sources and appropriate attribution. Preserve the original user prompt and the actual writing model in the source metadata.
- Check citations, dates, link destinations, image descriptions and page semantics. Keep private data, credentials and client details out of source control.
- On edits to a published article, add an updated date, append the new source prompt and include a visible dated change notice. Existing history remains inspectable in Git.
- Run the generator and audits. Review the resulting standalone article as well as its homepage excerpt, archives, sitemap and feeds.
- Commit source changes, merge through normal review and confirm the GitHub Pages deployment has completed successfully.
Build and regression commands
python build.py
python tools/audit.py
python tools/verify_housekeeping.py
The generator should produce no warnings, the audit should report No issues., and the regression checks should pass. GitHub Actions performs those steps in the site's actual publishing workflow. Inspect the workflow log; a successful git push does not itself confirm the deployed page is live.
Navigation and accessibility checks
Keep a prominent skip link, keyboard-visible focus state, readable text contrast in both colour themes and a comprehensible heading hierarchy. Ensure the homepage offers short descriptive excerpts that link to full articles, rather than turning the homepage into an indefinitely growing wall of complete posts. Links should have meaningful text, and images should have descriptions reflecting what they depict.
Test on a narrow viewport as well as desktop. Check menus, tables, embedded media, reduced-motion behaviour when applicable, and reflow. Automated audits find some defects but do not establish complete WCAG conformance or a real-world Lighthouse score.
Feeds, indexes and machine-readable descriptions
After publication, inspect RSS, Atom, OPML, sitemap, robots, canonical URLs, author pages and categories as appropriate. Ensure each reflects the same published post set. Drafts must remain absent from public feeds, sitemap and public index. Category or archive pages explicitly intended as noindex should remain outside the sitemap. Use schema to describe facts visible on the page; schema is not a request for search engines to certify a claim.
Google no longer supports the old public sitemap ping endpoint. Accurate lastmod timestamps for materially changed pages still help crawling. The existing .github/indexnow.py supports a changed-URL mode and a separate full-sitemap mode. The site's IndexNow workflow normally sends URLs derived from changed generated pages on a push. A full submission is a separate editorial decision. Check HTTP response and URL count after a submission.
Domain and DNS care
Keep a separate registrar, authoritative DNS, website host and mail-service inventory. Cloudflare's free DNS can manage custom domains pointing to GitHub Pages; the domain registration remains a separate paid or at-cost service depending on registrar. Before nameserver changes, preserve MX, SPF, DKIM, DMARC, other TXT verification records and relevant DNSSEC configuration. The step-by-step custom-domain tutorial is in Build a personal weblog with AI.
Routine maintenance cycle
| Frequency | Checks |
|---|---|
| Every publication | Build, metadata, article link, excerpt, alt text, feeds, sitemap, current deployment. |
| Monthly | Navigation, outdated links, redirects, security notices, unusual crawl errors and account access. |
| Quarterly | Mobile usability, accessible controls, major external links, stale references, theme contrast and structured data. |
| Before tool changes | Read handoffs and AGENTS.md, verify affected integration permissions and make a rollback plan. |
Related references: AI editorial provenance and agent handoffs for contributor controls, Model Context Protocol for external app connections, and The art of the handoff for the original explanation of continuity across agents.