--- name: aeo-visibility description: Answer Engine Optimisation — make the site citable by ChatGPT, Claude, Perplexity, Gemini and AI Overviews. Covers answer-first content structure, llms.txt, AI crawler access, entity consistency, and auditing how the brand currently appears in AI answers. Use when the user mentions AEO, GEO, "AI search", "get cited by ChatGPT", "llms.txt", "AI crawlers", or wants visibility beyond classic search rankings. allowed-tools: Bash, Read, Grep, Glob, Edit, Write, WebFetch, WebSearch --- # AEO — being citable, not just rankable Classic SEO gets you ranked. AEO gets you **quoted**. The mechanics differ: answer engines extract self-contained claims from crawlable text, and they weight consistency of facts about an entity across the whole web. ## 1. Let the crawlers in — deliberately - `src/app/robots.ts` decides this. Answer-engine crawlers include `GPTBot`, `OAI-SearchBot`, `ChatGPT-User`, `ClaudeBot`, `Claude-SearchBot`, `PerplexityBot`, `Google-Extended`, `CCBot`, `Bytespider`. - **Ask the user before changing this.** "Be cited by AI" and "don't train on my content" are different goals with different bots: training crawlers (`GPTBot`, `ClaudeBot`, `CCBot`, `Google-Extended`) versus live search/citation crawlers (`OAI-SearchBot`, `Claude-SearchBot`, `PerplexityBot`). Blocking the training set while allowing the search set is a coherent position; blocking everything and expecting citations is not. - Verify server-side rendering: answer-engine crawlers are far less reliable at executing JavaScript than Googlebot. Anything client-rendered may be invisible to them. In this starter, content is server-rendered and animations only animate — keep it that way. - **AI crawlers get the robot form.** `src/utils/bot-ua.ts` lists them next to the search engines, so the proxy serves them the page at rest (no intro, every line of copy in the HTML). The starter's original list knew search engines and lab tools but not AI crawlers — they got the people form, where streamed copy sat in `hidden` segments. When a new AI crawler appears, add it there (one regex for the proxy and `isBot()`). - **Read the page as they do** — no JS: `curl -s -A "GPTBot/1.0" /` (and `ClaudeBot`, `PerplexityBot`). The `

` and body copy must be present and **not under a `hidden` ancestor**. On production sites built from the old starter an empty `app/loading.tsx` put the whole page inside `