/01The Skill — full SKILL.md

The complete rule book of AI search optimization.

This is the full SKILL.md shipped with best-aeo-skill v1.0.0. Every scoring weight, every recommendation, every rule traces back to a citation. Architecture, 7 sub-skills, 5 specialist agents, 33 evidence collectors, 4 scoring frameworks, 100 numbered optimization rules, confidence labeling rubric, output formats, CLI reference, and 18 cited research sources.

Version 1.0.0 License MIT Word count ~10,500 Updated 2026-05-01
v1.0.0 MIT Princeton-backed 100 rules 33 collectors 5 agents
Download SKILL.md
TL;DR

best-aeo-skill audits, fixes, and monitors your website's AI search visibility. It computes a 0–100 composite GEO Score across 4 vectors (Technical 20%, Citability 35%, Schema 20%, Entity 25%), backed by 33 evidence collectors and 100 research-validated rules. Findings are confidence-labeled (Confirmed / Likely / Hypothesis) so you never act on hallucinated issues. Run bestaeo audit --url URL for diagnosis, bestaeo fix --apply to ship.

How to invoke this skill

This skill is triggered when the user asks any of:

  • "Run a GEO/AEO audit on [URL]"
  • "How do I get cited by ChatGPT/Claude/Perplexity?"
  • "Make my site citable by AI search"
  • "Generate llms.txt for [URL]"
  • "Why is my site not showing up in AI Overviews?"
  • "Improve my AI search visibility"
  • "Fix my robots.txt for AI bots"

When invoked, it defaults to running audit on the provided URL and presenting a confidence-labeled findings list. Recommendations without confidence labels are never presented.

Architecture overview

┌────────────────────────────────────────────────────────────────────┐
│                        best-aeo-skill                              │
├────────────────────────────────────────────────────────────────────┤
│                                                                    │
│  User intent                                                       │
│     ↓                                                              │
│  CLI dispatcher (audit | fix | monitor | compare)                  │
│     ↓                                                              │
│  Orchestrator                                                      │
│     ↓                                                              │
│  ┌─────────────┬─────────────┬─────────────┬─────────────┐         │
│  │ Technical   │ Citability  │ Schema      │ Entity      │         │
│  │ agent       │ agent       │ agent       │ agent       │         │
│  └─────┬───────┴─────┬───────┴─────┬───────┴─────┬───────┘         │
│        ↓             ↓             ↓             ↓                 │
│       33 evidence collectors (parallel execution)                  │
│        ↓             ↓             ↓             ↓                 │
│  ┌───────────────────────────────────────────────────────┐         │
│  │       Composite Scorer (4-vector weighted sum)         │        │
│  │  Profile-adaptive weights · Confidence labeling        │        │
│  └────────────────────────────┬───────────────────────────┘        │
│                               ↓                                    │
│  Ranked findings + projected score impact + auto-fix paths         │
│                                                                    │
└────────────────────────────────────────────────────────────────────┘

The Composite GEO Score

A single 0–100 number computed as a weighted sum of four vectors. Default weights:

VectorDefault weightMaps toWhy
Technical Accessibility 20% robots.txt, AI bot allowance, JS rendering, CDN access Princeton: "if crawlers can't reach you, prose doesn't matter"
Content Citability 35% Statistic density, expert quotes, citations, freshness, fluency Largest weight. Princeton: +40% from stats, +41% from quotes, +115% from citations
Structured Data 20% FAQPage, Article, Organization, HowTo, Speakable, Product FAQPage = highest single-signal citation rate (empirical 41M-citation study)
Entity & Brand 25% Author credentials, KG links, NAP, ai.txt Sustained citation requires entity presence, not just one-off content quality

Score bands

BandRangeMeaningDefault action
Excellent86–100Cited frequently across all enginesMaintain freshness; monitor only
Good68–85Cited regularly; gaps to fixApply top-3 fixes
Foundation36–67Indexed but rarely citedRun full audit + apply all fixes
Critical0–35Effectively invisible to AI searchStart with Technical + Schema, then content

Interpretation rules

  • A score below 36 always indicates a technical or schema problem, not a content problem. Fixing prose first is the wrong order.
  • A score 68–85 is the typical post-fix state for a well-built site. Reaching 86+ requires sustained content investment.
  • Scores fluctuate ±3 due to crawl variance. Treat changes within ±3 as noise.

Adaptive weights per business profile

Business profiles re-weight the four vectors:

ProfileTechnicalCitabilitySchemaEntity
Default20%35%20%25%
SaaS18%32%25%25%
E-commerce18%25%32%25%
Publisher / News15%45%20%20%
Local business18%25%22%35%
Agency / consultancy22%35%18%25%
DevTools / API docs25%30%25%20%
Academic / research18%50%12%20%

Pass --profile saas (or other) to switch.

Sub-skills reference

audit — diagnose

Compute the GEO Score. Return ranked findings with confidence labels.

bestaeo audit --url https://yoursite.com --profile saas --format markdown
  • Inputs: --url, --sitemap, --profile, --format [json|markdown|html|sarif|junit]
  • Outputs: Composite GEO Score, per-vector breakdown, ranked findings, projected score impact, recommended next sub-skill

fix-content — rewrite

Adds expert quotes (+41% citations), inserts statistics (+40% visibility), embeds source attributions (+115% citation likelihood). Idempotent. Preserves voice. Never invents facts.

bestaeo fix-content --url URL --apply

fix-schema — generate JSON-LD

Auto-creates FAQPage (highest AI citation surface), Article, Organization, HowTo, Speakable, Product, BreadcrumbList, Person schemas. Validates with Schema.org. Outputs ready-to-paste blocks or auto-injects.

bestaeo fix-schema --types faq,article,org

fix-llmstxt — AI catalog

Generates a llmstxt.org-compliant catalog: H1, summary, primary pages, optional reference. Pulls from sitemap or crawl. Anthropic honors this for ClaudeBot.

bestaeo fix-llmstxt --base-url URL

fix-robotstxt — patch robots

Adds explicit Allow: rules for 27 AI bots: GPTBot, ChatGPT-User, ClaudeBot, anthropic-ai, Claude-Web, PerplexityBot, Google-Extended, OAI-SearchBot, Applebot-Extended, CCBot, +17 more. Diff-aware.

bestaeo fix-robotstxt --url URL

compare — benchmark

Side-by-side GEO Score vs 2–5 competitors. Detects per-vector deltas; generates a delta-action list — what to ship next to leapfrog them.

bestaeo compare --you URL --them URL1,URL2

monitor — track

Stores GEO Score history; detects regressions, alerts via webhook/Slack/email. Detects content decay (3.2× citation drop after 30 days). CI/CD-ready.

bestaeo monitor --url URL --threshold 80

Specialist agents

The skill delegates to 5 specialist agents in parallel during full audits. Each owns one vector + monitor for longitudinal:

AgentOwnsEvidence collectors
Technical20%robots_check, ai_bot_access, js_render, cdn_blocking, response_codes, sitemap_check, http2_check, mobile_render, lazyload_check
Citability35%statistic_density, quote_extractor, citation_check, freshness_check, readability, passage_score, fluency_check, hedge_density, claim_verifier, rag_chunk_score
Schema20%schema_validate, faq_check, article_check, jsonld_lint, speakable_check, product_check, breadcrumb_check, video_check
Entity25%entity_extractor, author_check, knowledge_graph, nap_consistency, brand_signal, sameas_links, expertise_signals
Monitorlongitudinalall (re-runs full audit at intervals)

Evidence collectors (33 total)

Every finding traces back to one or more of these. Output is what determines confidence label.

Technical (9)

  1. robots_check — parses robots.txt; verifies User-agent rules
  2. ai_bot_access — tests fetch as GPTBot, ClaudeBot, PerplexityBot
  3. js_render — compares HTML before/after JS execution
  4. cdn_blocking — detects Cloudflare/Akamai bot challenges
  5. response_codes — 200/301/404/500 distribution
  6. sitemap_check — XML sitemap presence + freshness
  7. http2_check — HTTP/2 or HTTP/3 support
  8. mobile_render — viewport, touch targets, mobile-first
  9. lazyload_check — confirms above-fold content not lazy-loaded

Citability (10)

  1. statistic_density — counts numeric claims per 100 words
  2. quote_extractor — counts and validates quoted passages
  3. citation_check — counts inline links to external sources
  4. freshness_check — extracts dateModified, computes content age
  5. readability — Flesch-Kincaid + sentence variance
  6. passage_score — passage-level extractability (chunk-readiness for RAG)
  7. fluency_check — detects awkward AI-rewrite patterns
  8. hedge_density — counts hedging language ("may", "might", "could")
  9. claim_verifier — flags factual claims without citation
  10. rag_chunk_score — 250-word chunks ready for retrieval

Schema (7)

  1. schema_validate — Schema.org compliance
  2. faq_check — FAQPage presence + structure
  3. article_check — Article required fields
  4. jsonld_lint — JSON-LD syntax validity
  5. speakable_check — Speakable Spec markup
  6. product_check — Product + AggregateRating + offers
  7. breadcrumb_check — BreadcrumbList navigation

Entity (7)

  1. entity_extractor — NER for Person, Org, Place, Product
  2. author_check — author markup + credentials
  3. knowledge_graph — sameAs links to Wikidata, Wikipedia
  4. nap_consistency — Name/Address/Phone matching across surfaces
  5. brand_signal — brand mention frequency in content
  6. sameas_links — verifies all sameAs URLs resolve
  7. expertise_signals — credentials, affiliations, bylines

4 scoring frameworks bundled

CORE-EEAT — 80-item content quality publish-gate

Adopted from aaron-he-zhu/seo-geo-claude-skills.

  • Experience (20): firsthand examples, real screenshots, original photos, dated experiences, personal voice, specific use cases, original tests, hands-on insights, primary research…
  • Expertise (20): author credentials, named contributors, technical depth, specific terminology, methodology disclosure, source code, primary research links, edge case coverage…
  • Authority (20): citing primary sources, linking to authoritative domains, credential markup, organization markup, awards, press mentions, peer-reviewed citations, .edu/.gov sources, sameAs to KG…
  • Trust (20): HTTPS, contact info, privacy policy, transparent author bio, last-updated dates, fact-check links, error corrections published, no AI-generated boilerplate…

Pass threshold: 60/80 = pass. 50–59 = revise. <50 = block.

CITE — 40-item domain authority benchmark

  • Backlinks (10): editorial inbound links, anchor diversity, follow ratio, referring domain growth, link velocity, contextual placement, .edu/.gov links
  • Authority (10): topical authority depth, content cluster coverage, internal linking density, hub-and-spoke architecture, freshness average, expert contribution
  • Brand (10): branded search volume, social mention velocity, Wikipedia entry, founder authority, podcast guest appearances, owned media
  • Trust (10): historical domain age, ownership transparency, regulatory compliance pages, third-party audits, certifications, customer logos, case studies with metrics

Princeton GEO Tactics — 9 research-validated methods

From Aggarwal et al. KDD 2024.

#MethodImpact
1Cite sources (emphasize external citations)+115% citation likelihood
2Add expert quotes (with attribution + quotation marks)+41% citation likelihood
3Add statistics (numeric claims with sources)+40% visibility
4Improve fluency (natural language, not formulaic)varies by domain
5Authority signaling (credential markup, named contributors)varies
6Easy-to-understand (Flesch-Kincaid grade 8–10)varies
7Keyword stuffingNEGATIVE — do not use
8Topic relevance (one primary topic per page)varies
9Length optimization (appropriate to topic)varies

Confidence Rubric — 3 labels

Anti-hallucination labeling. Detailed below at Confidence rubric.

The 100 Rules of AEO/GEO Optimization

Organized by category. Each rule is research-validated, traceable to a citation, and actionable.

Category A: AI Crawler Access (Rules 1–10)

Rule 1ConfirmedAllow GPTBot in robots.txt explicitly. Implicit Allow is not enough; some CDN configurations block by default.
Rule 2Allow ClaudeBot, Claude-Web, anthropic-ai, Claude-User, Claude-SearchBot — Anthropic uses multiple user-agents for different surfaces.
Rule 3Allow PerplexityBot AND Perplexity-User. Perplexity-User is for real-time user fetches; PerplexityBot is for indexing.
Rule 4Allow Google-Extended (separate from Googlebot). Without it, Bard/Gemini training and grounding signals are blocked while traditional search still indexes.
Rule 5Allow CCBot (Common Crawl). Many LLMs train on Common Crawl; blocking CCBot reduces presence in training data.
Rule 6Verify each Allow with a fetch-as-bot test. robots.txt rules don't guarantee CDN compliance.
Rule 7Cloudflare bot management can block AI bots even with robots.txt Allow. Verify in Cloudflare dashboard "AI Bots" rule.
Rule 8Akamai bot manager has separate AI bot category since Q3 2024. Verify allowance there.
Rule 9Render JavaScript server-side or use SSR/static generation. AI bots have inconsistent JS execution; pure SPA = invisible.
Rule 10Test indexability with Google Rich Results, Schema validator, AND a custom fetch-as-GPTBot to confirm.

Category B: Content Citability (Rules 11–35)

Rule 11Statistic density target: 1 numeric claim per 200 words. Below threshold, citation likelihood drops linearly. Source: Princeton KDD 2024.
Rule 12Every numeric claim must have an inline citation to a primary source. Uncited statistics are filtered out by Perplexity.
Rule 13Expert quotes target: 2–4 attributed quotations per 1000 words. Use quotation marks. Princeton: +41% citation likelihood.
Rule 14Quote attribution must include speaker name AND credential or affiliation. "Anonymous expert" patterns reduce citation rate.
Rule 15Source emphasis (bold, citation, link) increases citation likelihood by +115%. Strongest single Princeton finding.
Rule 16Freshness: content <30 days old receives 3.2× more citations than older content. Update timestamps actively, not just superficially.
Rule 17"Last updated" date must be in machine-readable format: ISO-8601 dateModified in JSON-LD AND visible in page.
Rule 18Content decay flags: declining citation despite stable rankings. Audit articles older than 90 days for refresh opportunity.
Rule 19Readability target: Flesch-Kincaid grade 8–10. Higher (academic) loses general AI citations; lower (oversimplified) loses authority.
Rule 20Sentence variance: mix short (<15 words) and medium (15–25 words). Monotonic length signals AI-generation patterns.
Rules 21–35Anti-AI-rewrite tells; hedging density < 1%; first paragraph contains primary claim; H2/H3 hierarchy; ≤80 words/paragraph; lists +14% citation rate; tables with headers; original research outperforms aggregation 3–5×; topic exclusivity per page. Full list →

Category C: Structured Data (Rules 36–55)

Rule 36Highest leverageFAQPage schema produces highest AI citation rate of any single signal. Add to every page with Q&A patterns.
Rule 37FAQPage Q&A pairs: 5–10 ideal. <3 reduces signal weight; >15 dilutes.
Rule 40Article schema required fields: headline, datePublished, dateModified, author (with Person markup), publisher.
Rule 41Article author MUST have credentials, sameAs to LinkedIn/Wikipedia/etc. Anonymous authorship reduces citation rate by 60%+.
Rule 42Organization schema required fields: name, url, logo, sameAs (Wikidata, Wikipedia, Crunchbase, LinkedIn).
Rule 46Speakable schema for AI voice surfaces (Google AI Overviews voice). Mark sentences/headings most representative of content.
Rules 38–55FAQ Q must be a real question; A must be 30–200 words; HowTo step images improve citation rate; cross-reference Author/Person markup; never duplicate schemas of same type; use @id for entity references; test in Google Rich Results AND Schema.org validator. Full list →

Category D: Entity & Brand (Rules 56–75)

Rule 56Author bios must include role, organization affiliation, years of experience, and 2+ credentials minimum.
Rule 58sameAs links from Person → LinkedIn, Twitter/X, GitHub, ORCID (academics), Wikipedia (if applicable).
Rule 60Wikidata entity (Q-number) is more achievable than Wikipedia and provides similar trust signal.
Rule 61NAP (Name/Address/Phone) consistency across all surfaces: website footer, GBP, social profiles, citations.
Rule 62Inconsistent NAP reduces local AI Overview citation by 40%+.
Rule 67llms.txt file at root. While only 0.1% AI bots fetch it currently, near-zero cost and Anthropic does honor for ClaudeBot.
Rules 57–75Author profile pages with full Person schema +20% citation; Wikipedia entry massive trust boost; press releases / podcasts / conference talks each build entity signals; ai.txt at /.well-known/; RSS/Atom feeds increase Common Crawl presence; founder/CEO entity verified profiles; original research as highest single-action authority signal. Full list →

Category E: Multi-engine optimization (Rules 76–90)

Rule 76ChatGPT favors authoritative long-form (1500+ words), consensus-based content, with explicit attribution.
Rule 78Claude (Anthropic) rewards precise attribution and factual density. Most likely to cite multiple sources for one claim.
Rule 80Perplexity favors academic and news sources, heavy citation density, fresh content.
Rule 82Google AI Overviews lean on traditional SEO best practices PLUS direct-answer formatting.
Rule 84AI Overviews trigger on 25.11% of all Google searches in 2026. For local queries, the rate is 38%.
Rule 87Bing Copilot uses Bing's index. Bing's IndexNow protocol can ship updates within minutes.
Rule 90Multi-engine targeting requires DIFFERENT optimizations weighted differently per engine. Use the --engine flag.

Category F: Anti-patterns (Rules 91–100)

Rule 91DO NOT keyword-stuff. AI engines penalize stuffing more aggressively than Google does.
Rule 92DO NOT use AI-generated boilerplate. Detection is increasingly accurate; flagged content gets de-cited.
Rule 93DO NOT block AI bots while expecting AI citations. Some sites block GPTBot then complain about no ChatGPT visibility.
Rule 94DO NOT over-rely on llms.txt. As of 2026, only 0.1% of AI bot traffic fetches it.
Rule 95DO NOT generate FAQPage with synthetic Q&A that doesn't match real user questions.
Rule 96DO NOT publish thin content for SEO velocity. AI engines weight quality over quantity even more than Google.
Rule 97DO NOT remove or relocate URLs without 301s. Citation links break, citation history is lost.
Rule 98DO NOT hide content behind cookie banners or modals at first paint. AI bots see what's rendered initially.
Rule 99DO NOT use stock images without alt text and original captions.
Rule 100DO NOT auto-translate content with poor LLMs. Bad translations destroy citation rates in non-English markets.

View / download the full SKILL.md (40 KB) →

Confidence labeling rubric

Every finding output by this skill MUST carry exactly one label.

Confirmed

Directly observed by ≥1 evidence collector. Examples:

  • HTTP response code present in trace
  • DOM element absent in parsed HTML
  • JSON-LD parser returned syntax error
  • Author byline element not found

When in doubt about confidence: prefer Likely over Confirmed.

Likely

Strong inference from ≥2 evidence collectors that agree, OR ≥1 collector with high specificity that maps to a known anti-pattern. Examples:

  • schema_validate returned no FAQPage AND quote_extractor found Q&A patterns
  • statistic_density returned 0.2/100 AND citability_score ≤ 50
  • robots.txt allows GPTBot but CDN blocks GPTBot fetch

Hypothesis

LLM judgment, speculative recommendation, or single weak signal. Examples:

  • Tone analysis suggesting voice mismatch
  • Recommendations for future-proofing emerging engines
  • Recommendations relying on user-only-knowable context

NEVER present a Hypothesis as a fix path without flagging human review needed.

Output formats

The skill produces output in 5 formats simultaneously when requested.

Markdown (default)

Human-readable report with score, findings, and projected impact.

JSON

{
  "url": "https://example.com",
  "geoScore": 64,
  "scoreBand": "Foundation",
  "vectors": {
    "technical": 72,
    "citability": 58,
    "schema": 48,
    "entity": 78
  },
  "findings": [
    {
      "id": "F-001",
      "severity": "high",
      "confidence": "Confirmed",
      "category": "schema",
      "rule": "Rule 36",
      "message": "Missing FAQPage schema",
      "evidence": ["schema_validate", "quote_extractor"],
      "projectedImpact": 18,
      "fixCommand": "bestaeo fix-schema --types faq"
    }
  ]
}

Other formats

  • HTML — Visual dashboard with interactive elements. Auto-opens in browser.
  • SARIF — Static Analysis Results Interchange Format. For GitHub Code Scanning integration.
  • JUnit — For CI/CD pipelines. Each finding as a test case; severity maps to pass/fail.

Common workflows

Workflow 1: First-time audit

bestaeo audit --url https://yoursite.com --profile saas --format markdown

Read top 3 fixes. Apply manually or via:

bestaeo fix --url https://yoursite.com --apply

Workflow 2: CI/CD gate

bestaeo audit --url $DEPLOY_URL --format junit > geo-report.xml
bestaeo monitor --url $DEPLOY_URL --threshold 80 --fail-on-drop

Workflow 3: Competitor analysis

bestaeo compare \
  --you https://yoursite.com \
  --them https://competitor1.com,https://competitor2.com \
  --format markdown

Workflow 4: Site-wide audit

bestaeo audit \
  --sitemap https://yoursite.com/sitemap.xml \
  --max-urls 100 \
  --profile publisher \
  --format html

Anti-patterns & pitfalls

  • Don't fix prose first if technical/schema is below 60. Prose rewriting is high-effort, low-leverage when foundations are missing.
  • Don't trust llms.txt as a foundational signal. 0.1% of AI bots fetch it as of 2026.
  • Don't ship synthetic FAQ content. AI engines detect mass-generated Q&A.
  • Don't auto-fix on production without backup. fix --apply should be tested on staging first.
  • Don't optimize for one engine in isolation. Optimizing only for ChatGPT loses Perplexity and Claude.
  • Don't ignore citation decay. A 90-day-old article with declining citation needs refresh, not "more backlinks".

CLI reference

Global flags

  • --profile — business profile (default, saas, ecommerce, publisher, local, agency, devtools, academic)
  • --format — output format (json, markdown, html, sarif, junit)
  • --output — write to file
  • --engine — target a specific engine (chatgpt, claude, perplexity, gemini, ai-overviews, all)
  • --verbose — full evidence dump
  • --no-color — for piping
  • --ci — CI/CD mode (machine-readable, exit codes)

Sub-commands

bestaeo audit          # diagnose
bestaeo fix            # apply fixes
bestaeo fix-content    # content rewrites only
bestaeo fix-schema     # schema generation only
bestaeo fix-llmstxt    # llms.txt only
bestaeo fix-robotstxt  # robots.txt only
bestaeo compare        # head-to-head
bestaeo monitor        # track over time
bestaeo init           # initialize config in current directory
bestaeo --version
bestaeo --help

Citations & references

This skill is built on peer-reviewed research and empirical analysis.

Primary research

  1. Aggarwal, P., Murahari, V., Rajpurohit, T., Kalyan, A., Narasimhan, K., Deshpande, A. (2024). GEO: Generative Engine Optimization. Proceedings of the 30th ACM SIGKDD Conference on Knowledge Discovery and Data Mining (KDD '24). arxiv:2311.09735 · DOI
  2. AutoGEO Authors (2026). AutoGEO: Automatic Optimization for Generative Engine Citation. International Conference on Learning Representations (ICLR 2026).
  3. C-SEO Bench Authors (2025). Conversational SEO Benchmark: Empirical Analysis of Content Manipulation Effectiveness in AI Search.

Empirical analysis

  1. 199-biotechnologies team (2025). 41M-citation corpus analysis.
  2. OtterlyAI (2026). llms.txt Adoption Study.
  3. SE Ranking (2026). llms.txt Audit of 300,000 Domains.

Open-source projects studied (predecessors)

  1. AgriciDaniel/claude-seo (5.8k ⭐)
  2. aaron-he-zhu/seo-geo-claude-skills (1.4k ⭐)
  3. Bhanunamikaze/Agentic-SEO-Skill (458 ⭐)
  4. Auriti-Labs/geo-optimizer-skill (328 ⭐)
  5. 199-biotechnologies/claude-skill-seo-geo-optimizer (28 ⭐)

best-aeo-skill v1.0.0 · MIT · 2026 · bestaeoskill.com