Measured, Not Claimed
Six things you can change on a page to make it more legible to a machine — each one measured before and after, offline, with no model and no network. And, for each one, what the number does not prove.
Why this exists
Most of what is written about getting cited by AI answer engines is a percentage without an error bar. “+40% visibility.” From how many runs? Against what baseline? On which engine, on which day? The number usually arrives with none of that, and it cannot be checked.
So this is the smaller, duller, verifiable version. Six interventions, each isolated in a before/ and an after/ folder, each measured by a deterministic script that runs on your laptop in under a second. No API key, no network, no language model in the loop. Run it yourself and you get the same figure, byte for byte.
The six instruments
Each one isolates a different link in the chain between publishing a page and a machine being able to use it: can it be fetched, can it be read without JavaScript, can its facts be typed, can it be split cleanly, can its entities be resolved, can its claims be traced back to a source.
Can a crawler that does not execute JavaScript read your page at all?
04-technical/ssr-vs-csr-renderingwords visible in the served HTML, client-rendered vs server-rendered. Same article, ~25.3× more text.
That any engine will cite the server-rendered version. It shows mechanical visibility — a necessary condition, not a sufficient one.
Can a schema parser lift typed facts out of your page?
04-technical/structured-data-jsonldtyped facts extracted, across 17 typed entities, after adding one JSON-LD block to the same visible article.
That a language model cites you more. 37 extractable typed facts is not 37× more likely to be quoted. N = 2 artifacts: one page, two variants.
Can the crawlers reach the site, and is there a curated file for them?
04-technical/ai-crawler-accessof 8 tested AI user-agents permitted in robots.txt, plus 0 → 2,868 bytes of curated llms.txt.
That 8 allowed crawlers means being cited 8× more. And no major engine has confirmed that it reads llms.txt at all — Google states plainly that you do not need to create one.
Does your text survive being cut into fixed-size chunks?
03-content/chunk-friendly-structurechunks that stand on their own, under an 800-character recursive splitter. Identical sentences; only the structure changed.
That self-contained chunks get retrieved or quoted more. It shows they survive chunking intact, which is a precondition for being quotable, not evidence of being quoted.
Can a machine tell which real-world thing your page is talking about?
05-authority/entity-clarity-sameasnamed entities resolvable to a canonical identifier, after adding sameAs links to Wikidata and Wikipedia.
That disambiguation increases citations, or that anything downstream resolves the entity correctly. It removes ambiguity for a structured parser. N = 5 entities.
Can a parser trace each of your claims back to a source?
06-measurement/citation-anchoringclaim → source pairs a deterministic parser can lift out. Same eight claims in both documents.
That the sources are correct or authoritative — the parser checks that a linkable source sits next to the claim, not that the URL supports it. And “claim” here is operationalised as a list item; other definitions would give other numbers.
What none of this measures, and why that matters
The obvious next question is whether any of these changes makes an engine cite you more often. That question is much harder than it looks, and the reason is worth knowing before you trust anyone’s percentage — including your own.
Ask an answer engine the same question twice and it cites different sources. Work published in 2026 (arXiv:2604.07585) that repeats identical queries against live engines finds the overlap between two runs sits around a Jaccard index of 0.32 to 0.43 on the cited sources within a single day. Roughly six out of ten sources change between two identical passes with nothing altered in between.
That has a hard consequence for anyone reporting a lift. With seven runs per query — the minimum that work recommends — the 95% confidence interval on a citation rate is about ±15.8 percentage points. Not ±5. To get a half-width of ±5 points you need on the order of 139 runs per query if the rate is near 10%, and around 246 if it is near 20%, and those figures assume independence between runs, which repeated queries do not have.
That is why the six experiments above stop where they stop. They measure properties of a controlled artifact, deterministically and repeatably, because that part can be measured honestly today. The link from those properties to actual citations is an open research question, not a bullet point.
Run them yourself
Every figure on this page comes from a script in a public repository. Clone it and run any recipe; they need Python and nothing else.
git clone https://github.com/ferinazumaDEV/generative-engine-optimization-cookbook
cd generative-engine-optimization-cookbook/04-technical/ssr-vs-csr-rendering
bash reproduce.shEach recipe folder holds the un-optimised artifact, the optimised one, the measurement notes with the method and its limitations, and the script that produces the number.
- The GEO Cookbook — the six reproducible recipes.
- The GEO Handbook — the theory each recipe demonstrates, with a primary source behind every claim.
This is how I work. If you want these six measurements run against your own pages, write to me — I’ll send you the numbers, including the ones that don’t move.