SKILL.md
GEO: Optimizing for AI Search
Google's own position: optimizing for generative AI search is still SEO. GEO work is SEO fundamentals applied to AI surfaces, plus a small set of AI-specific checks. When community advice contradicts documented platform behavior, defer to the platform and note the contradiction.
The five scoring dimensions
Score each, then weight into a GEO readiness score out of 100. Read references/geo-signals.md for the full strong/weak signal lists, platform citation patterns, and the crawler table.
| Dimension | Weight | What passes |
|---|---|---|
| Citability | 25% | Self-contained answer blocks of roughly 130-170 words, direct answers in the first 40-60 words of a section, specific attributed facts, front-loaded key passages (AI engines disproportionately cite the top of the page) |
| Structural readability | 20% | Clean H1>H2>H3 hierarchy, question-based headings, 2-4 sentence paragraphs, tables and lists, FAQ format |
| Multi-modal content | 15% | Relevant images, video, charts, interactive elements with supporting structured data |
| Authority and brand signals | 20% | Named author with credentials, visible dates, recent refresh (stale pages lose citation eligibility), primary-source citations, entity presence on Wikipedia/Wikidata, mentions on YouTube, Reddit, LinkedIn |
| Technical accessibility | 20% | Server-side rendered content (AI crawlers do not execute JavaScript), AI crawlers allowed in robots.txt |
Key strategic fact: brand mentions correlate far more strongly with AI citations than backlinks do, and YouTube presence is the strongest single mention signal. Also, ChatGPT and Google AI Overviews rarely cite the same domains for the same query, so score platforms separately.
Audit workflow
- Fetch the page and robots.txt. Check which AI crawlers (GPTBot, OAI-SearchBot, ClaudeBot, PerplexityBot, and peers, full table in references/geo-signals.md) are allowed or blocked.
- Check rendering: compare raw HTML content against what the user says the page shows. Empty or thin raw HTML means client-side rendering, flag as a technical blocker.
- Score the five dimensions against the signal lists.
- Check
/llms.txt. Report presence or absence but assign it no citation weight: primary-source evidence shows major AI systems do not currently read it as a ranking input. Offer a template if the user wants one anyway. - Score per platform. Treat Google AI Overviews (ranking-correlated) and Google AI Mode (broader pool, freshness and entity weighted) as separate surfaces. ChatGPT leans on Wikipedia and its search index partners; Perplexity leans on Reddit and community sources.
- If DataForSEO MCP tools are available, verify with real data:
ai_optimization_chat_gpt_scraperfor what ChatGPT actually cites,ai_opt_llm_ment_searchandai_opt_llm_ment_top_domainsfor mention tracking. Route via claude-seo-dataforseo. - Output GEO-ANALYSIS.md: readiness score, platform breakdown, crawler access status, citability passages identified, SSR check, top 5 highest-impact changes, specific passages to rewrite.
Prioritized fixes
Quick wins: definition in the first 60 words, 130-170 word answer blocks, question-based H2s, attributed statistics, visible dates, Person schema for authors, allow key AI crawlers. Medium: author bios with entity links, SSR for key content, comparison tables, structured FAQ sections, entity presence building on Reddit and YouTube. High impact: original research and unique data, Wikipedia presence for the brand, a YouTube channel, sameAs entity linking across platforms, tools or calculators only you have.
Verification
Run curl -s <url> | grep -ci "<h2" and curl -s <url>/robots.txt | grep -iE "GPTBot|PerplexityBot|ClaudeBot|OAI-SearchBot". Expect H2 count > 0 in raw HTML (proves server-rendered structure) and no Disallow lines blocking the AI crawlers the user wants visibility with. If H2 count is 0, the page is client-rendered: fix rendering before any content optimization.
Good vs bad
Good: "Rewrite the intro into a 150-word self-contained answer: definition, the two key numbers with sources, and the recommendation. Move it above the fold." Bad: "Add llms.txt and chunk all content into AI-friendly blocks for the algorithm." llms.txt carries no citation weight, and "chunking" without citability substance is cargo culting.
Footguns
- Optimizing one Google surface and claiming both. AI Overviews and AI Mode cite different URLs for the same query most of the time. Score and report them separately.
- JavaScript-rendered "optimized" content. All the citability work is invisible if crawlers get an empty div. Verify raw HTML first, always.
- Blocking CCBot and accidentally blocking search crawlers. Blocking training crawlers is a legitimate choice, but verify the search-facing crawlers (GPTBot, OAI-SearchBot, PerplexityBot) stay allowed if the user wants AI search traffic.
- Stale content audits. A page that scores well but has not been touched in 6+ months is losing citation eligibility. Recommend a refresh cadence, not just one-time fixes.
Completion checklist
- [ ] Raw HTML rendering verified before content scoring
- [ ] robots.txt crawler access reported crawler by crawler
- [ ] All five dimensions scored with cited signals
- [ ] Platforms scored separately, including both Google surfaces
- [ ] llms.txt reported without citation weight
- [ ] Top 5 changes are specific passages and files, not themes
Any box unchecked: not done. Fix or say so.