Pagey McPageface is public, and it is the newest removable part of the system behind my websites. I build sites from files, publish them with GitHub Pages, and let a generator enforce the page rules before anything ships. Pagey takes those rules out of my generator and packages them as an agent skill anyone can point at a static site. It checks titles, descriptions, headings, internal links, orphaned pages, repeated copy, structured data, canonical links, and the sitemap and discovery files a machine reads first. It will not write your site or rescue a bad offer. It will tell you, page by page and with evidence, whether the pages you already have are tripping over each other. Start with the GitHub Pages foundation. Then give the finished site an inspector.
Why turn build rules into a separate tool?
A generator only sees the pages it makes. Real websites collect exceptions. Somebody adds a page by hand. A migration imports old files. A developer fixes one template and misses another. A useful page sits outside the menu because nobody remembered to link it. My own generator can be strict and still have a blind spot at the edge of its authority.
Pagey judges the finished HTML instead. It does not care whether the site came from Hugo, Jekyll, Astro, Eleventy, exported WordPress, a hand-rolled generator, or a folder somebody has maintained since the Bush administration. The output is the evidence. Use it before a launch, after a redesign, and whenever traffic slips for no obvious reason.
What does Pagey McPageface check?
The default rulebook is plain, and every threshold can be changed:
- Titles: 50 to 60 characters, long enough to name the subject and short enough to survive a results page.
- Meta descriptions: 140 to 160 characters, written for the page instead of pasted across the site.
- No separator filler: no pipes or dashes doing the work that words should do in titles and descriptions. A hyphen inside a word is fine.
- No duplicates: no two pages share a title, a description, or an H1.
- One H1: every page gets exactly one. Zero leaves the subject unstated. Three splits it.
- No dead internal links: a link to a missing page wastes the reader and the crawl.
- No orphaned pages: apart from the home page, every page needs at least one inbound link from another page.
- No repeated phrasing: pages that share too much language get flagged, and a sentence of ten words or more cannot live on two pages.
- Structured data that parses: every page carries at least one JSON-LD block, and every block parses as JSON.
- One canonical: every page states its true URL with a canonical link.
- Social meta: every page carries og:title and og:description.
- Alt text: every image carries an alt attribute.
- A sitemap that matches the tree: every sitemap entry resolves to a real page or file, and every built page is listed.
- Discovery files: robots.txt and llms.txt at the root. An IndexNow key file is detected and reported; the tool submits nothing anywhere.
- Optional forbidden terms: give Pagey an old brand, a partner mark, or any phrase your site has ruled off its pages.
None of this requires genius. It requires repetition without boredom. Humans are bad at checking page 83 against pages 1 through 82. A script is not. The agent supplies judgment around the report. The script supplies memory and arithmetic.
What about schema, sitemaps, and the answer engines?
That question deserved a build, not a paragraph of adjectives. The last six rules in the list above are new, and they cover the machine-readable layer: the part of a site that search engines and AI answer engines read before they read the prose. Structured data that parses as real JSON. A canonical on every page. The social meta every share card falls back to. Alt text on every image. A sitemap that lists what exists and nothing that does not. The discovery files, robots.txt and llms.txt, sitting at the root where crawlers and answer engines look for them. An IndexNow key file gets detected and reported, and that is all: detection only, the audit submits nothing anywhere.
That layer is what AEO, AIO, and GEO work actually stands on. The acronyms describe channels, not magic. An answer engine cannot cite schema that fails to parse, cannot trust a sitemap that lists ghosts, and reads llms.txt because the file exists to be read. Pagey verifies each piece is present and holds up. It does not promise placement in any engine's answers, and you should walk away from any tool that does.
The proof run pointed Pagey at the build output of my own site: 101 pages, every check switched on, about 1.1 seconds start to finish. It found 26 problems. Twenty were the old rulebook's known list. Six came from the new checks. Five sit on the 404 page, which carries no structured data, no canonical, and no social meta, and stays out of the sitemap. An error page is the classic deliberate exception, and the workflow says to exclude it on purpose. The sixth is a genuine catch. The sitemap's image entry names a portrait at /chris-abraham.jpg. The file on disk is christopher-abraham.jpg. The sitemap has been pointing at a picture that is not there, inside a 103-entry sitemap no human was going to proofread. The new inspector paid for itself on its first run over my own ground.
How do you use it?
Take the folder from the public repository and put it where your coding agent reads skills. Ask the agent for a whole-site audit. It reads SKILL.md, follows the six-step workflow, and runs scripts/page_audit.py. You can also run the script yourself. It needs Python 3.9 or newer and nothing else from the Python package shelf.
python3 scripts/page_audit.py path/to/site/
Point it at the built output when you have one. Built output is complete, fast, and exactly what will ship. The script can also judge named HTML files or a list of live URLs. Read the report worst first: missing pages and orphans before duplicate language, duplicate language before title polish. Fix the template or source file, never the generated HTML. Then run Pagey again. A clean exit means no problems under the selected rules. A nonzero exit means the build has homework. That exit code is why it belongs in a release pipeline, not just in a consultant’s report.
Why make the method easy to emulate?
Because the method is the asset, and methods improve when people can inspect them. My advantage was never a secret checklist locked in a drawer. It is the daily discipline around the checklist: own the domain, keep the site in files, state the rules, make the machine repeat them, and fix problems at the source. The GitHub Pages article covers the cheap foundation. Pagey adds the quality gate.
Copy the shape even if you reject my thresholds. Set the flags once and enforce your own house style. The point is not to become me. The point is to stop depending on memory, taste, and a heroic final read-through. A small site can use the same discipline as a large one when the inspector never gets tired.
What can Pagey not tell you?
Plenty. Pagey reads HTML; it does not render JavaScript. Audit the built or post-render output of a script-heavy site. In URL mode it does not crawl, so an incomplete list produces incomplete findings. It fetches no search data and cannot tell you which page deserves to rank or whether the writing deserves a reader. It catches pages colliding with each other and with the rulebook. Strategy still belongs to the owner.
What is with the name?
The name is a deliberate Boaty McBoatface homage. Then I learned that Pagey McPageface already appears as placeholder and test-page language in CMS material, which makes it better. The world’s filler page now has a second career hunting filler pages. I am keeping it.
That is the whole offer. Build the site as files you own. Publish it without renting a platform. Write the page rules down. Let an agent and a small Python script enforce them every time. Pagey McPageface is the inspector, the GitHub Pages guide is the foundation, and neither piece asks you to trust my memory. The work is sitting in public, ready to be copied, changed, and used harder than I use it myself.
Update, November 10, 2026, 7:29 PM: Hours after this post shipped, Chris asked whether the schema, sitemap, IndexNow, and llms claims could honestly be made. They could not, so they were built. Pagey now checks structured data, canonical links, social meta, image alt text, sitemap coverage, and the robots.txt and llms.txt discovery files, with IndexNow key-file detection, and every new check ships with fixture tests proving it fires on a broken site and passes on a clean one. The rulebook above, the new section on the answer engines, and the narration were updated to match. The repository carries the new build.