Search ondelva

SEO vs AEO vs GEO: Same HTML, Three Different Readers

The three acronyms describe three readers of the same page, and they fail in different ways. What each one is for, which robots.txt lines control which of them, and where you can actually measure them as of August 2026.

Three acronyms get sold as three disciplines. SEO for rankings, AEO for the answer box, GEO for whatever ChatGPT says about you when someone asks. The coinages have different pedigrees. GEO comes from a November 2023 academic paper, Generative Engine Optimization, which formalized engines that answer by synthesizing sources instead of listing them. AEO is a marketing coinage with no such paper behind it, which is a reason to read its definitions carefully rather than a reason to dismiss the thing it points at.

Read past the pedigrees and the three describe something real: three different readers of the same HTML. They want different things from a page, they are controlled by different switches, and they fail in different ways. Treating them as one discipline means fixing the wrong failure.

Three readers, three ways to lose

Who reads the pageWhat you winHow that paysHow you lose
SEOan indexing crawler (Googlebot, bingbot)a ranked link on a results pagea click, if you rankranking low
AEOan extractor reading that same indexa direct answer with your URL beside ita click, sometimesnot being quotable
GEOa model’s retrieval step at answer time (OAI-SearchBot, Claude-SearchBot, PerplexityBot)a sentence inside generated prosea mention, and a link if the model shows onenot being fetchable

Search engine optimization aims at a ranked list. The page sits in an index and a query pulls it back with nine competitors around it. Everything about the practice, from titles to internal links, exists to win that sort order.

Answer engine optimization aims at extraction. The engine has already decided what the question is and wants one passage that answers it, whether that lands in a featured snippet, an AI Overview, or a Copilot citation. You lose by burying the answer four paragraphs into a section titled something clever, because there is nothing short and self-contained enough to lift.

Generative engine optimization aims at retrieval during generation. A model is composing an answer and fetches pages to ground it, live. You lose by not being reachable in that moment: blocked in robots.txt, rendered client-side by JavaScript the fetcher will not run, or hidden behind a bot check. The vendors say this outright. OpenAI’s crawler documentation states that sites opted out of OAI-SearchBot “will not be shown in ChatGPT search answers,” and Anthropic’s equivalent page says blocking Claude-SearchBot “may reduce your site’s visibility and accuracy in user search results.”

One more mechanism worth knowing before optimizing for any of this: Google’s documentation describes AI Overviews and AI Mode using a “query fan-out” technique, issuing multiple related searches across subtopics to build one response. A page that answers a narrow sub-question can get pulled into an answer for a broad question it would never have ranked for. Specific beats sweeping here, which is not how SEO advice usually reads.

Most of the work is shared, and Google says so

All three readers consume the same thing: fetchable URLs with the content in the initial HTML response. A page that renders its text with client-side JavaScript is a page that only browsers and Googlebot reliably see. One canonical URL per page, a sitemap, and a robots.txt that lets the right agents in cover most of the technical surface for all three at once.

Google’s AI features and your website page, last updated 10 December 2025, is blunt about the rest:

You don’t need to create new machine readable files, AI text files, or markup to appear in these features. There’s also no special schema.org structured data that you need to add.

That sentence retires a good half of the GEO checklists in circulation, at least for Google’s surfaces. The “AI text files” it waves off include llms.txt, the proposed Markdown index of a site. OpenAI and Perplexity both publish one for their own documentation, so the convention is alive among the people who build the crawlers, but no engine has committed to reading anyone else’s. I ship one on this site because it costs a few lines of build script, and I would not spend a meeting on it.

The switches are per-bot, not per-company

This is where the three acronyms stop being interchangeable in practice. Each AI vendor runs several agents with different jobs, documented separately, and a robots.txt line that manages one does nothing about the others.

User agentJobWhat disallowing it does
GPTBottraining crawl for OpenAI modelskeeps content out of future training, nothing else
OAI-SearchBotChatGPT search indexremoves you from ChatGPT search answers
ChatGPT-Userfetches when a user askslittle; robots.txt “may not apply” to user actions
ClaudeBottraining crawl for Anthropic modelssignals exclusion from future training data
Claude-SearchBotClaude’s search indexingreduces visibility in Claude search results
Claude-Userfetches when a user asksblocks retrieval for that user’s question
PerplexityBotPerplexity search resultsdrops you from Perplexity answers; not used for training
Perplexity-Userfetches when a user askslittle; it “generally ignores robots.txt”
Google-Extendedtraining and grounding for Geminino effect on Search or AI Overviews
GooglebotGoogle Search, including AI featuresremoves you from all of it, AI and blue links alike

Every row above comes from the vendors’ own pages: OpenAI, Anthropic, Perplexity, Google. The quoted phrases about robots.txt not applying are theirs, not mine.

Three traps fall out of that table. Blocking GPTBot to protest training does not touch ChatGPT search visibility; those are separate agents with separate lines. The user-triggered fetchers are governed loosely or not at all by robots.txt, because the vendors treat a person asking a question as different from a scheduled crawl. And on Google there is no half-measure: AI Overviews ride on Googlebot, so the only way out of the AI answer without leaving Search entirely is the preview controls, nosnippet, data-nosnippet, and max-snippet. Changes propagate on the crawler’s schedule, not yours; OpenAI notes about 24 hours for a robots.txt update to take effect on its side.

Where you can actually measure each one

For SEO the panels are old news: Search Console and Bing Webmaster Tools, impressions, clicks, position. Nothing changed there.

For the AI surfaces, 2026 is the year first-party data appeared. On 3 June 2026 Google launched Search Generative AI performance reports in Search Console: impressions in AI Overviews, AI Mode, and Discover’s AI features, broken out by page, country, device, and time down to the hour. There are no clicks in it yet, and Google says it is rolling out “to a subset of websites,” so a given site may only have the aggregate numbers, where AI visibility has been folded into the Web search type all along.

Bing moved earlier and shows more. AI Performance in Bing Webmaster Tools has been in public preview since 10 February 2026 and reports when a site is cited in Copilot answers, in Bing’s AI summaries, and in some partner integrations, per URL and over time. For freshness on that surface Bing keeps recommending IndexNow, its ping-on-update protocol, which matters more once an engine is quoting your page inside an answer: a stale copy there is a wrong answer with your name on it.

GEO’s retrieval half is only visible server-side, because an answer-time fetch runs no analytics script and sends no referrer. If the site sits behind Cloudflare, AI Crawl Control is available on every plan and lists each AI crawler with request counts and a robots.txt violation tally; on the free plan it identifies crawlers by user agent string alone, which is worth remembering since a string is just a claim. Anywhere else, grep the access logs for the agent names in the table above. The vendors publish JSON lists of their crawler IP ranges for confirming that a claimed agent is real.

A newer pair of tools attacks the same question from the agent’s side instead of the server’s. Ora scans a site, runs agents against it, and grades what they managed to do; its counter shows about 59,600 sites scanned at an average rank of 42, with five percent reaching a B or better. is-agentic.com, which Ora launched with Vercel on 20 August 2026, wraps the same scanning into one 0-to-100 score and publishes the report at a stable URL with a free read-only JSON API behind it. Its essential checks are server-rendered content, correct HTTP behavior, clear document structure, and recoverable errors, while emerging formats “can earn limited bonus credit, but their absence never lowers a score.”

I ran this site through it on 26 August 2026 and got 61 out of 100: five of nine essential checks passing, six of sixteen recommended. The named gaps were concrete enough to act on the same day. No OpenAPI description, no JSON error responses, no Markdown content negotiation, no page documenting any of it, and 404s that could only speak HTML. Those took an afternoon. What I did not do was clear the rest of the list. “CLI tool available” and “function calling compatibility” are real checks that a static site of small tools and writing has no business chasing, and satisfying the API-related ones would have meant inventing an API to be scored on. That is the failure mode of every scanner rubric: it grades the site it expects rather than the site you have. The work is deciding which failed checks describe your actual readers.

Worth knowing before you quote a number back at me: a stored report only changes when someone rescans, so the public one for this domain is still the pre-fix 61.

The check nobody’s dashboard covers is the direct one. Take a question your page answers, put it to ChatGPT search, Perplexity, and Google’s AI Mode, and read which sources get cited. It is anecdotal, it does not scale, and it is still the fastest way to learn whether the answer engines can even see you, and who they quote instead.

Where to start

Not with new files or new markup; Google just told you those are not required, and nobody else has published requirements at all. Start with the two reads that take an hour. Read your robots.txt against the table above and check that every line still means what it meant when someone added it, because a Disallow aimed at training crawlers three years ago may now be silencing the search bot from the same company. Then fetch your most important page the way the answer engines do, no JavaScript, one plain GET, and look at whether the answer to the question that page targets appears in the response, early, in text short enough to quote. Those two findings will tell you which of the three readers you have actually been optimizing for, and which one has been quietly turned away.

Keep reading