Orchestrator โ rewrites the <head> of a static page so it ships:
A localized 7-token <meta name="keywords"> (replacing the EN leak that was identical across all 14 hreflang siblings).
An og:locale + og:locale:alternate[] block (replacing any single hard-coded <meta property="og:locale" content="en_US">).
A Twitter Card block (added if missing โ politician-dashboard*.html had none before this module landed).
A JSON-LD WebSite + WebPage + Speakable blob (added if missing).
The function is idempotent โ running it twice yields the same output as running it once. This is required because normalize-static-html-chrome.ts runs in the prebuild pipeline and may execute multiple times during dev / CI re-renders.
Title and description are preserved verbatim โ they are hand-authored per language in the source HTML, and this module is deliberately non-destructive on those fields. The Twitter Card and JSON-LD merely reference them.
Orchestrator โ rewrites the
<head>of a static page so it ships:<meta name="keywords">(replacing the EN leak that was identical across all 14 hreflang siblings).og:locale+og:locale:alternate[]block (replacing any single hard-coded<meta property="og:locale" content="en_US">).politician-dashboard*.htmlhad none before this module landed).WebSite+WebPage+ Speakable blob (added if missing).The function is idempotent โ running it twice yields the same output as running it once. This is required because
normalize-static-html-chrome.tsruns in the prebuild pipeline and may execute multiple times during dev / CI re-renders.Title and description are preserved verbatim โ they are hand-authored per language in the source HTML, and this module is deliberately non-destructive on those fields. The Twitter Card and JSON-LD merely reference them.