AEO: get cited by AI answer engines
AEO (answer-engine optimization, also called GEO) here means one thing: getting a business named in the answer, by four engines, for the questions its customers type. The engines are ChatGPT, Claude, Perplexity and Google AI Mode / AI Overviews.
Why it matters, measured in 2026: people have not left Google, which still carries about 90% of search referrals. What is shrinking is the click: 68% of US Google searches end without one. AI assistants send a small stream of visits, about 1–4% of organic volume, that converts about as well or better. Sources are in references/evidence.md. The evidence is as of October 2026, the method as of November 2026.
"The runs behind this skill" below means the authors' monthly probes of six small sites in October and November 2026.
Start here
- A question about AEO, llms.txt, schema, crawlers, or an article's advice: answer from the rulebook below and
references/evidence.md, and cite the source. - "Do AI assistants recommend us?" Run the re-check. The first run writes the question set and the baseline.
- "Why doesn't ChatGPT (or another engine) recommend us?" Ask that engine the customer's question with personalization off, read the pages it cited, and hold them against the rulebook.
- "Can AI crawlers reach our site?" Run
scripts/access.sh(step 1 of the re-check).
The rulebook
Full evidence and sources: references/evidence.md. The short form:
- A business gets cited where a page answers the exact question in visible text and another site confirms it. In the runs behind this skill, a DJ's private-event page, repeated by two booking directories, was cited by three engines out of four. An app whose page title states its one difference was cited by three. Homepage paragraphs, JSON-LD and llms.txt were not.
- Third parties carry the answer, and their facts win, stale ones included. Engines described businesses from directory profiles, marketplace listings and a mirror of an npm page. Fixing the site does nothing for those answers until the third-party page changes. When an answer is wrong, find the page it read.
- Local "who should I hire" answers come from listings and reviews. Google AI Mode answered those questions with Business Profile cards carrying dozens to hundreds of reviews, not with websites. The lever is reviews, which only the business can collect.
- Don't:
- Spend more time on llms.txt or llms-full.txt. Google says it ignores them, no other major engine says it reads them, and 97% of the files on 137k sites got no requests in a month. Leave existing files in place.
- Add schema in the hope of AI citations. A controlled test on 1,885 pages found no uplift, and ChatGPT's and Claude's fetchers don't read JSON-LD. Keep schema for Google's entity matching and rich results.
- Pay for GEO scores, trackers or agencies before running the re-check. Setup scores did not predict citations; the re-check measures citations directly, for free.
- Block or throttle the crawlers that feed answers: OAI-SearchBot, ChatGPT-User, Claude-SearchBot, Claude-User, PerplexityBot, Perplexity-User, Googlebot, Bingbot. If one costs too much, close the expensive endpoint (an image optimizer, say) to it and keep the page HTML open. Training-only crawlers (GPTBot, ClaudeBot, Google-Extended) are a separate decision: the vendors document them as separate from search.
- Post about the business on Reddit. It is the most-cited domain overall, but self-promotion there backfires (a judgment, not a measured result).
- Do:
- Name the entity in visible text: who runs it, the legal name, the city.
- Open each page with the answer, under a heading phrased as the question a customer would type.
- Give each offer its own page. For a local business, put the city in the H1.
- Use one name that tells the brand apart, everywhere: site title, store listings, profiles, bios.
- Make third-party profiles say what the site says: directories, marketplaces, app stores, review sites, package registries.
- For a software package, keep the registry README and description current. The registry page may be what an engine reads, so a change counts only once a new version is published.
- Put the content in the HTML the server sends. No major AI crawler runs JavaScript.
- Stay in each engine's index: allow the search crawlers, submit sitemaps to Google and Bing, keep
lastmodhonest.
- Judge by the probes, not by setup scores. Three sites that scored 67, 69 and 60 on a GEO audit tool's heuristic were cited by 0, 3 and 3 engines out of four.
The monthly re-check
Run it once a month, in the same week of the month. A run costs nothing: the engines' free plans are enough. It takes about 15 minutes of browser time per pair of engines. Details: references/probes.md.
- Crawler access first. Run
bash "${CLAUDE_SKILL_DIR}/scripts/access.sh" <site URL> [more URLs](on claude.ai:scripts/access.shin this skill's folder). It reads robots.txt as each AI crawler would and requests the page with each crawler's user agent. Every answer crawler should be allowed and get 200. How to read the output:references/crawlers.md. - The question set (first run only). Write half unbranded questions (what a customer types, without the brand) and half branded (the brand by name, with its domain). One site: 3 to 6 of each. Several sites: at least one of each per site. Save them verbatim and never reword them. How to write them:
references/probes.md. - The probes. Ask every question on ChatGPT, Google AI Mode, Claude and Perplexity, one fresh chat per question, personalization off. Engine settings and what to record per cell:
references/probes.md.- With a browser tool (Claude in Chrome, for example), Claude runs them. In Claude Code, split them between two subagents, one for ChatGPT + Claude and one for Google + Perplexity, each in its own tabs; the briefs are in
references/probes.md. - Without a browser tool, give the user the questions and the engine links, and have them paste back each answer with its sources.
- Perplexity needs a signed-in account. Never sign in for the user, solve a CAPTCHA, or accept anything beyond declining non-essential cookies.
- With a browser tool (Claude in Chrome, for example), Claude runs them. In Claude Code, split them between two subagents, one for ChatGPT + Claude and one for Google + Perplexity, each in its own tabs; the briefs are in
- The numbers. AI-assistant referrals from analytics, with landing pages, for the days since the last run and the same number of days before it. Citation counts from Bing Webmaster Tools' AI Performance report, if the site is verified there. AI-crawler requests from server or CDN logs:
references/crawlers.md. - Write the record from
references/record-template.mdasaeo-recheck-YYYY-MM-DD.md, in the same shape every time, with the previous result in brackets in every cell.- In Claude Code, keep the records beside the site's code or docs (ask once where), with the question set in the same folder.
- On claude.ai, hand the record over as a file, and ask for the previous one at the start of the next run (a Project keeps them together).
- Report in plain words: what got better, what didn't, what's new, and what only the owner can do (reviews, listings, profile edits, publishing a package).
Traps
- Personalization makes rankings look better than they are. In one run, Google with personalization on called a local DJ "the top choice"; with it off, he wasn't mentioned. ChatGPT with memory on ranked him first; off, second. Read rankings only from personalization-off sessions.
- Claude may not open a site just because the question names it. Its fetch tool opens only URLs already in the conversation: in the user's message or in its own search results (Anthropic's web-fetch documentation). In November 2026 a bare domain in the question ("What is Example (example.com)?") did not count, so a branded Claude cell measures Claude's search index. Run
scripts/access.shbefore suspecting a block. - Perplexity sometimes says pages "would not load". In the runs behind this skill the failure was on its side: its user agents got 200 and no firewall rule applied. Check with
scripts/access.shbefore changing anything. - Some names mean something else. A children's brand named after a common household allergen got the allergen on Google and ChatGPT; adding "kids' character" found the brand at once. A company name shared with an unrelated firm got that firm on Claude. An indexed copy of a long-dead domain defined one company by a product it retired years ago; such copies age out slowly. Test the bare name, then a disambiguated one.
- Location changes local answers. Engines infer the city from the connection ("Since you're in ..."). Run local questions from the market the business serves, or note where the run happened.
- One cell is a sample. Answers vary from run to run. Read a pattern across cells as the finding, and never change a site because of one cell.
- Keep the questions word for word. Rewording breaks the comparison with earlier runs. A new question goes in as an extra check, with a note, never as a replacement.
- Analytics undercount AI and count bots. Gemini and Claude often strip the referrer, so their visits land in "direct": treat AI rows as a minimum. Bots land in direct and organic: a landing page with many sessions and none engaged is a bot. GA4's last two days are still being processed.
- Search Console does not split out AI Overviews or AI Mode. Google counts them in the Performance report's "Web" search type. Don't promise a report it can't produce.
- A CDN can block AI crawlers on its own. Cloudflare has blocked AI crawlers by default on new domains since July 2025, and its managed robots.txt can add
Disallow: /for several of them.scripts/access.shshows both. - Check claims about the outside world before recording them. A subagent once called a dead domain "a live legacy site"; DNS said it no longer existed.
- Third-party profiles are public. Edit a directory, marketplace, review site or registry page only at the owner's word, signed in as the owner, and change only the stale fact.
Scope
This skill is about being cited in AI answers. For a classic technical SEO audit (crawl errors, Core Web Vitals, redirects), use a dedicated SEO tool. Where such tools advise llms.txt, schema for AI, or a "GEO score", the evidence in references/evidence.md applies.