ZentimesENES
Reproducible experiments

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-rendering
Before6After152

words visible in the served HTML, client-rendered vs server-rendered. Same article, ~25.3× more text.

Does not show

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-jsonld
Before0After37

typed facts extracted, across 17 typed entities, after adding one JSON-LD block to the same visible article.

Does not show

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-access
Before0After8

of 8 tested AI user-agents permitted in robots.txt, plus 0 → 2,868 bytes of curated llms.txt.

Does not show

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-structure
Before0/5After5/5

chunks that stand on their own, under an 800-character recursive splitter. Identical sentences; only the structure changed.

Does not show

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-sameas
Before0/5After5/5

named entities resolvable to a canonical identifier, after adding sameAs links to Wikidata and Wikipedia.

Does not show

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-anchoring
Before0/8After8/8

claim → source pairs a deterministic parser can lift out. Same eight claims in both documents.

Does not show

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.sh

Each 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.

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.