How to structure a page a generative engine can cite
Four gates decide whether an engine can quote you: access, text, block, attribution. Each one with the test that verifies it and the engine's own documentation.
A generative engine can only cite a page that clears four gates, in this order: its crawler has to get in, the content has to exist as text, there has to be a block that still holds up once you pull it off the page, and that block has to make clear whose claim it is. Fail the first and the other three are moot. Below is each gate, the concrete test that verifies it, and the official documentation from the engine that defines it.
What does a generative engine need before it can cite you?
An engine doesn't hand you a rank. It composes an answer and hangs a handful of sources off it. To be one of them, your page has to solve four separate problems, and each one breaks on its own:
- Access. The engine's agent can make the HTTP request and receive your HTML.
- Text. The thing you want quoted is in that HTML — not only after JavaScript runs, and not inside an image.
- Block. Some passage answers a whole question and still makes sense away from the page.
- Attribution. That passage names the business instead of saying "we."
Most GEO advice addresses the third. The two we find broken most often on real sites are the first and the second.
Which bots need to be able to reach your page?
Every engine crawls with several agents that do different jobs. Blocking the wrong one is the silent failure we see most:
- OpenAI documents three:
OAI-SearchBotfor search,GPTBotfor training, andChatGPT-Userfor fetches a person triggers. The settings are independent of each other, and OpenAI warns that sites opted out ofOAI-SearchBotwill not be shown in ChatGPT search answers. It also notes its systems take roughly 24 hours to pick up arobots.txtchange. - Perplexity documents two:
PerplexityBotfor indexing andPerplexity-Userfor what a person asks for in the moment. The second, its docs say, generally ignoresrobots.txtprecisely because a user initiated the request. - Anthropic documents three:
ClaudeBotfor training,Claude-Userfor user requests, andClaude-SearchBotfor search. - Google splits two things people constantly conflate. Googlebot governs Search.
Google-Extendedhas no user agent of its own — it's arobots.txtcontrol token that decides whether your content feeds Gemini training and grounding, and Google states plainly that it does not affect your inclusion in Google Search.
That's the trap. Blocking Google-Extended leaves you untouched in Google and removes you from Gemini's grounding. It's a legitimate call. It is almost never a call — it's an inherited line nobody reread.
There's also a layer in front of robots.txt that breaks more sites than it should: the WAF or CDN. Perplexity spends half a page on how to allow its agents through Cloudflare and AWS WAF. Google puts the same point in its own AI-features guidance: make sure crawling is allowed in robots.txt and by any CDN or hosting infrastructure. From the outside, a firewall 403 looks exactly like a page that doesn't exist.
Does your content exist as text, or only after JavaScript runs?
Google documents three phases for a JavaScript app — crawling, rendering, indexing — with rendering sitting in its own queue. Google does run your JavaScript. It just runs it later.
The other engines don't document a rendering phase on their public bot pages. We're not claiming they lack one; we're saying they haven't published one, and undocumented behavior is a poor thing to bet your visibility on. Google's recommendation in that same AI-features doc is explicit: keep important content available in textual form.
The test takes ten seconds:
curl -sL -A "Mozilla/5.0 (compatible; OAI-SearchBot/1.4; +https://openai.com/searchbot)" https://yoursite.com/page | grep -i "your key sentence"
If nothing comes back, that sentence doesn't exist for an engine that doesn't render. Read view-source, not devtools — devtools shows you the executed DOM, which is the exact thing you can't assume.
What does a liftable block actually look like?
Engines don't cite pages, they cite passages. A liftable passage does five things:
- It stands alone. Cut it out of the page and it's still true and still legible.
- It names the entity inside itself. "HopperCat returns the diagnosis within 48 business hours" is quotable; "we return it within 48 business hours" isn't, because out of context nobody knows who "we" is.
- It leads with the answer. First sentence answers, the rest explains.
- It carries one claim and its source. Two facts braided into one paragraph force the engine to pick which to quote, and often the answer is neither.
- It runs 40 to 90 words. That's our rule of thumb, not an official figure: shorter says nothing, longer gets split and loses half of itself.
The classic counterexample opens with "as we saw above" or "our process" — both turn a perfectly good paragraph into unusable material the moment it leaves the page.
Does schema markup help you get cited?
This is where we have to be straight with you, because the answer changed this year and a lot of GEO content hasn't caught up.
Google says in plain language that you don't need to create machine-readable files, AI text files, or new markup to appear in AI Overviews or AI Mode, and that there's no special structured data to add. And in May 2026 it retired the FAQ rich result — the FAQPage documentation now redirects to that notice.
That doesn't make schema useless, it demotes it. It stops being a visibility tactic and settles into being entity hygiene: Organization still describes unambiguously who you are, and Google's policy still requires that structured data match the visible text on the page.
We still mark up FAQPage on this blog, and the reason is no longer the rich result. It's that writing a question section forces you to produce self-contained blocks, which is the part that actually moves.
What about the llms.txt file?
llms.txt is a proposal, currently at version 2 — not a standard the engines have adopted. Google states in that same guide that you don't need AI text files. OpenAI, on the other hand, publishes one for its own documentation.
Our position, unvarnished: it costs twenty minutes, it does no harm, and don't count it as strategy. If your llms.txt is the most citable thing you own, the problem is in the pages.
How do you verify an engine can read your page?
Four tests, from quickest to slowest:
curlwith the engine's user agent and grep for your sentence, as above. Catches WAF blocks and content that only exists after JavaScript.- Read your
robots.txtline by line against the agent names above. Google's robots guide covers how overlapping groups resolve. - URL Inspection in Search Console to see the HTML Googlebot actually received rather than the one you see. The tool is documented here.
- Grep your server logs for
OAI-SearchBot,PerplexityBotandClaude-SearchBot. If thirty days turn up none of them, you don't have a content problem.
Which structural mistakes keep you out of answers?
The ones we hit most, in order of frequency:
- The fact you want quoted lives behind a tab or an accordion filled in by JavaScript.
- The key figure exists only inside an image or a PDF.
- H2s are labels ("Services", "Our method") instead of questions, so no heading matches anything a person types.
- The copy runs on pronouns — three paragraphs of "we do this," "this lets you," "the process."
- The same spec has different values on different pages. This one happened to us: in August 2026 we found our own free diagnosis published with three incompatible specs across three surfaces of the site. An engine can't confidently quote a number that has three values, so it quotes someone else's.
That last one is the one almost nobody audits, because each page passes review on its own. You have to check the surfaces against each other, not just against the checklist.
Where should you start?
Run the curl above against your three most important pages. If your sentence doesn't show up, you know which gate you're stuck at, and nothing else matters until it's fixed.
Some context for why this matters: in the first four months of 2026, 68.01% of US Google searches ended without a single click, up from 60.45% in 2024. The answer gets consumed where it's generated, and few sources fit inside it.
If you'd rather we looked at it, the free diagnosis scores your site against 42 points in five sections and hands back the failures ranked by cost to fix — within 48 business hours, no mandatory call.