Pattern

Page head and metadata

What every page tells browsers, search engines, social networks, and agents: one title, one description, one card.

01

Rules

Title
“Page Topic • Niklaus Gerber” (&#8226;) in <title>, og:title, and twitter:title. The home is just “Niklaus Gerber”.
Description
One per page, 110 to 155 characters, full sentences. The same text in meta description, og:description, twitter:description, and JSON-LD; for an article also in its Thoughts row, feed.xml, and llms.txt.
Canonical
https://niklausgerber.com/…/ with a trailing slash, no www.
Share card
1200 × 630, generated per page by make-share-cards.sh (see brand/README.md, Share card).
Structured data
JSON-LD per page type: WebSite, ProfilePage, and Person (home); WebPage (content pages); CollectionPage and ItemList (Agents); MobileApplication, Offer, and FAQPage (Hirsla); Book (Unresolved); BlogPosting (articles). Every page but the home carries a BreadcrumbList; on second-level pages it ends with the current page.
Theme colour
#F5F3EF light, #121212 dark; the night page #0a0a0b.
Agents and feeds
Every public page is in sitemap.xml and llms.txt; articles are in feed.xml.
Scripts
No inline script except JSON-LD; vt.js in the head, site.js as a module.