Guide 01 · Evidence review
Six pieces of GEO advice the evidence does not support
Most generative engine optimisation advice was written before anyone had measured anything. Six of the most repeated recommendations either have no supporting evidence, or have been tested and failed. Here is each one, the study that bears on it, and what I do instead.
| The claim | What the evidence says | Verdict |
|---|---|---|
Publish llms.txt and the engines will read your site | Ahrefs checked 137,000 sites: 97% of published files had never been fetched by anything | No support |
| Schema markup lifts AI citations | The one controlled test found no measurable lift | No support |
| Backlinks are how you win AI search | Backlinks correlate at 0.19; brand mentions at 0.66 | Weakest signal |
| Keep URLs shallow for AI crawlers | Path depth correlates with citation at r = +0.002 | No effect |
| Build hundreds of comparison pages | Comparison answers are 2.2% of citations; listicles are 21.88% | Wrong priority |
| AI crawlers render your JavaScript | GPTBot, ClaudeBot and PerplexityBot do not execute JS | False |
Does llms.txt do anything?
On current evidence, no. Ahrefs looked at 137,000 sites that had published an llms.txt file and found that 97% of those files had never been requested by any crawler at all. Not ignored after reading — never fetched.
The proposal is reasonable in principle: a plain-text map of your site written for language models. But no major engine has committed to reading it, and the fetch logs say they do not. It costs ten minutes to publish, so I have no strong objection to it. I object to it being presented as a lever when it is a lottery ticket.
What I do instead: make sure the ordinary things a crawler actually requests — robots.txt, the XML sitemap, and the HTML itself — are correct and reachable.
Does schema markup increase AI citations?
No measurable effect has been demonstrated. The only controlled test I am aware of — adding structured data to one set of pages and not another, then measuring AI Overview presence — found no lift. The measured change was slightly negative, which is best read as noise rather than as evidence that schema hurts.
This is one study, and one study is not settled science. But it is one more study than the people recommending schema for GEO have produced. Schema has real uses: rich results in classic search, and helping any parser identify entities unambiguously. Citation lift is not currently one of them.
What I do instead: keep Organization or Person markup accurate and consistent, and spend the remaining effort on the page content, where the effect sizes are larger.
Do backlinks drive AI search visibility?
They correlate, but weakly, and they are the weakest of the three signals usually measured together:
| Signal | Correlation with AI visibility |
|---|---|
| YouTube presence | 0.74 |
| Brand mentions | 0.66 |
| Backlinks | 0.19 |
These are correlations, not causal estimates, and they run together: brands that get mentioned tend to also get linked, and tend to have video. Nobody has isolated the mechanism. What the ordering does tell you is where the cheap wins are not. If you have a fixed budget and you spend it all on link acquisition, you are buying the weakest of the three.
The plausible mechanism for mentions is straightforward: an unlinked mention of your product in a listicle, a forum thread or a review still puts your name in the text the model reads. A link is a bonus, not the payload.
What I do instead: chase mentions in places the engines demonstrably pull from, and treat links as a by-product.
Should URLs be shallow?
It makes no measurable difference. URL path depth correlates with citation at r = +0.002 — statistically indistinguishable from zero. /guides/topic/subtopic/ is not penalised against /subtopic/.
One URL property does show an effect: query strings are associated with roughly 24% fewer citations. So the practical rule is not “keep it shallow”, it is “keep it a clean path”. Organise your URLs for humans and for your own sanity, and do not contort a sensible structure to save a slash.
Are comparison pages worth building at scale?
A few are worth building. Hundreds are not. The distribution of what actually gets cited is lopsided:
| Answer shape | Share of citations |
|---|---|
| Listicles — “best X for Y” | 21.88% |
| Comparisons — “X vs Y” | 2.2% |
| Alternatives — “alternatives to X” | 0.29% |
The common advice is to generate a /vs/ page for every competitor pairing. That aims most of your effort at 2.2% of the opportunity, and thin programmatic pages are exactly the kind of page an engine has no reason to quote.
The nuance worth keeping: comparison and alternative queries convert far better than discovery queries, because someone typing “X vs Y” has already decided to buy something. Low volume, high intent. So build the handful that match real competitors you actually lose to, make them genuinely useful, and put the rest of the effort into the listicle-shaped content that carries ten times the citation share.
Do AI crawlers run JavaScript?
No. GPTBot, ClaudeBot and PerplexityBot fetch your HTML and parse it. They do not execute JavaScript. If your content is rendered client-side, they see the empty shell your server sent.
This is the single most consequential item on this list, because it is binary. Every other factor here shifts your odds. This one decides whether you are in the running at all. Googlebot does render JavaScript, so a site can rank perfectly well in classic search and be completely invisible to the engines that answer questions.
The same logic extends past JavaScript to anything that breaks the fetch: an expired TLS certificate, a WAF rule blocking unfamiliar user agents, aggressive bot protection at the CDN. None of these show up in a content audit. All of them are total.
From a terminal: curl -A "GPTBot" -I https://yoursite.com/. If you do not get a 200, nothing else on this page matters. Then fetch a real page and read the HTML — if your content is not in it, the crawler does not see it either.
What does hold up?
Five things, roughly in order of how much they are worth:
Being retrievable at all
Valid certificate, server-rendered HTML, retrieval crawlers not blocked. Binary, and more often broken than anyone expects.
Original data nobody else has
A number that only exists because you measured it is the one thing a model cannot get from a competitor’s page.
Brand mentions off your own site
0.66 correlation, and the mechanism is legible: your name appears in the text the model reads.
Freshness
Around three quarters of cited pages are under a year old. A visible, honest review date is cheap.
Structure that matches the question
Question-form headings are cited at about 18% against 8.9% for statement headings, and 44.2% of citations come from the first 30% of a page. Answer first, then explain.
How confident should you be in any of this?
Less than the numbers make it look, and I would rather say so than let precise-looking decimals do work they have not earned.
Most of the figures above are correlational, drawn from observational studies of what happens to be cited. They cannot separate cause from a common cause. The controlled schema test is a single experiment. The engines change without notice and without changelogs, so any measurement has a shelf life. And almost all published work leans toward large, already-visible brands, which is not the situation a plugin founder is in.
What survives all of that caution is the ordering, not the decimals. Retrievability before content. Original data before volume. Mentions before links. Those hold under every reading of the evidence I have seen, and they are the order I work in.
Where the evidence runs out, I say so rather than filling the gap with confidence. That is also why I publish my own baseline on the results page before I know how it turns out.
Want to know which of these is costing you?
Send me your wordpress.org slug and I will run the five prompts your buyers use, and send back what the engines actually said. Free, no call required, usually within a day. Or build the full prompt set yourself with the prompt set builder.