Skip to content

Latest commit

 

History

History

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 

README.md

ai-geo

Generative Engine Optimization (GEO) auditing and remediation for Claude Code.

Version License

Optimize your web content for AI answer engines — ChatGPT, Perplexity, Claude, Gemini, Google AI Overviews, and Bing Copilot — rather than traditional search rankings.


What is GEO?

Generative Engine Optimization (GEO) is the practice of structuring web content so it is more likely to be cited, quoted, and included in answers generated by AI engines. Unlike SEO — which targets SERP position and organic traffic — GEO targets:

  • Citation probability in AI-generated answers
  • Factual extraction quality by retrieval-augmented models
  • Answer inclusion across conversational AI surfaces
  • Entity disambiguation in AI knowledge graphs
  • Markdown-first accessibility for LLM consumption

GEO is an emerging discipline. Best practices are evolving monthly as AI engines update their ranking and retrieval algorithms. This plugin flags experimental recommendations with 🧪 so you can apply judgment.


GEO vs SEO

Dimension SEO GEO
Target Search engine rankings, SERP position AI engine citations, answer inclusion
Surface Google, Bing results pages ChatGPT, Perplexity, Claude, Gemini, AI Overviews
Metrics Impressions, CTR, backlinks, keywords Citation frequency, quote accuracy, entity linking
Key files sitemap.xml, robots.txt llms.txt, llms-full.txt, robots.txt (AI bots)
Content format HTML + metadata Markdown-preferred, self-contained chunks
Rendering Crawlable HTML (JS-tolerant) Often JS-free; SSR/static critical
Structured data Article, Product, LocalBusiness FAQPage, HowTo, Person (with sameAs), DefinedTerm
Freshness Matters for some queries Matters heavily — AI engines de-prioritize stale content
E-E-A-T Ranking signal Citation-worthiness signal
Tone Keyword-optimized Conversational, question-anchored

Overlap: ~40% (technical fundamentals, structured data, HTTPS, semantic HTML, authoritativeness signals). Unique to GEO: ~60% — llms.txt protocol, AI-bot policy (training vs citation), content chunking for embedding retrieval, markdown-accessible routes, and entity sameAs disambiguation.

Use both plugins together:

  • /seo-audit from ai-seo for traditional search optimization
  • /geo-audit from this plugin for AI answer engines

Installation

From the marketplace:

/plugin install ai-geo@claude-code-plugins-dev

Or add the marketplace first if you haven't:

/plugin marketplace add charlesjones-dev/claude-code-plugins-dev
/plugin install ai-geo@claude-code-plugins-dev

Commands

Command Purpose
/geo-audit Comprehensive GEO audit. Generates a timestamped report in /docs/geo-audit/.
/geo-fix Apply safe remediations from the latest audit. Diff+confirm workflow. Supports --dry-run.
/geo-llms-txt Generate, update, or validate llms.txt and llms-full.txt.

All skills are interactive — run without arguments and answer the prompts.


Usage

Run an audit

/geo-audit

You'll be asked for audit scope (full solution or a sub-directory) and whether to commit audit reports to version control. The skill then:

  1. Detects your framework (Next.js, Nuxt, TanStack Start, Astro, SvelteKit, Remix, or vanilla HTML).
  2. Checks Context7 MCP availability for real-time documentation (recommended for GEO).
  3. Runs ten analysis categories — llms.txt compliance, AI crawler access, content structure, citation-worthiness, structured data, semantic chunking, content freshness, entity optimization, conversational alignment, technical accessibility.
  4. Writes a timestamped report to docs/geo-audit/geo-audit-YYYY-MM-DD-HHMMSS.md.
  5. Updates docs/geo-audit/README.md (index with trend indicators) and docs/geo-audit/latest.md.
  6. Prints a concise terminal summary with the top critical issues and AI crawler access summary.

Apply fixes

/geo-fix             # apply fixes interactively
/geo-fix --dry-run   # preview diffs without writing

/geo-fix reads docs/geo-audit/latest.md, classifies findings, and guides you through:

  • Safe-auto fixes — batch-confirmed once (add dateModified, migrate microdata to JSON-LD, add FAQPage wrapper to Q&A prose).
  • Intent-requiring fixes — separate prompts for training-bot and citation-bot policies before modifying robots.txt.
  • Content-requiring fixes — prompts for sameAs URLs, TL;DR copy, FAQ extraction (never fabricated).
  • Larger refactors — proposed with per-file diffs (SSR migration, paragraph restructuring, heading rewording).

Generate llms.txt

/geo-llms-txt

Interactive skill with four modes: generate, update, validate, or produce llms-full.txt. Detects your framework and places the file at the correct static-asset path (or emits a route handler for dynamic generation).


What gets audited

llms.txt Protocol Compliance

  • Presence of /llms.txt and /llms-full.txt
  • Spec compliance (H1 title, blockquote description, markdown throughout)
  • Link reachability and .md-companion preference
  • Staleness vs current content

AI Crawler Access (Training vs Citation)

  • Per-bot directives parsed from robots.txt
  • Training bots flagged separately from citation bots
  • Analysis commentary on whether the policy matches likely intent

Content Structure for AI Extraction

  • Q&A patterns with direct answers
  • Definitional opening sentences
  • Self-contained paragraphs (flags context-dependent phrasing)
  • Lists, tables, and inline statistic attribution

Citation-Worthiness Signals

  • Visible author attribution + credentials
  • E-E-A-T signals (About, Contact, Privacy, Terms)
  • Publication and last-modified dates
  • Outbound links to authoritative sources

AI-Friendly Structured Data (JSON-LD)

  • FAQPage, HowTo — heavily cited by AI engines
  • Person and Organization with sameAs for entity disambiguation
  • Article with speakable specification 🧪
  • DefinedTerm, ClaimReview, Dataset for specialized content 🧪

Semantic Chunking Quality

  • Heading hierarchy creates self-contained sections
  • Paragraph length and topic sentences
  • <section> / <article> landmarks

Content Freshness Signals

  • article:modified_time Open Graph tag
  • dateModified in JSON-LD
  • Visible "Last updated" indicators

Entity Optimization

  • sameAs links to Wikipedia/Wikidata, LinkedIn, GitHub, Crunchbase, ORCID
  • Consistent entity naming
  • Disambiguation for ambiguous terms

Conversational Query Alignment

  • Question-shaped H2/H3 headings
  • Natural-language phrasing over keyword stuffing
  • Long-tail conversational patterns

Technical AI Accessibility

  • Server-side rendered or static content (not client-only)
  • Clean HTML (not deeply nested wrapper divs)
  • Proper HTTP status codes, HTTPS, fast response times

AI Crawler Reference

Training Crawlers

Bot Operator Purpose
GPTBot OpenAI Model training
ClaudeBot / anthropic-ai Anthropic Model training
Google-Extended Google Gemini training (also affects citations)
Applebot-Extended Apple Apple Intelligence training
CCBot Common Crawl Training corpus used by many
Bytespider ByteDance Training
Amazonbot Amazon Training + indexing
FacebookBot / meta-externalagent Meta Training
Omgilibot / Omgili Webz.io Training corpus

Answer / Citation Crawlers

Bot Operator Purpose
ChatGPT-User OpenAI ChatGPT browsing and citations
OAI-SearchBot OpenAI SearchGPT index
PerplexityBot Perplexity Index
Perplexity-User Perplexity Live citation fetch
Claude-Web / Claude-User Anthropic Claude browsing
Google-Extended Google Gemini citations (also training)

Common intentional pattern: block training bots, allow citation bots. Lets you be cited by AI answer engines without contributing to training data. /geo-fix prompts these preferences separately.


llms.txt primer

llms.txt is a markdown file placed at your web root (/llms.txt) that provides a concise, LLM-friendly index of your site. Proposed by Jeremy Howard in 2024 at https://llmstxt.org/. It is to LLMs what sitemap.xml is to search engines — but markdown-native and curated rather than exhaustive.

Minimal structure:

# Site Name

> One-sentence description of the site.

## Section

- [Page title](https://example.com/page.md): one-line summary.
- [Another page](https://example.com/another.md): one-line summary.

## Optional

- [Secondary resource](https://example.com/secondary.md): summary.

Rules:

  • H1 title required.
  • Blockquote description required immediately after H1.
  • H2 section headers organize the index.
  • Bulleted links with descriptive text and a one-line summary.
  • The ## Optional section (if present) is recognized as lower-priority.
  • Prefer linking to .md companion URLs when the content is available in markdown — AI engines quote markdown more accurately than extracted HTML.

llms-full.txt is a comprehensive companion file containing the full markdown content of the linked pages, suitable for direct retrieval. Use it for sites where licensing and bandwidth permit exposing full text to AI engines.


What LLMs often miss about GEO

What LLMs often do What this plugin enforces
Treat GEO as a synonym for SEO Distinct discipline with 60% non-overlap
Block all AI crawlers wholesale Prompt separately for training vs citation intent
Dismiss llms.txt as "not a standard" Recognized emerging protocol — generate and validate
Suggest HTML-only content is fine for AI Flag client-only rendering as critical; prefer markdown companions
Treat structured data as optional FAQPage, Person sameAs, dateModified are core GEO signals
Skip content-freshness checks Flag missing dateModified and article:modified_time on evergreen content
Fabricate sameAs URLs Always prompt user — never invent identity URLs
Ignore conversational phrasing Flag keyword-stuffed H2/H3 in favor of question-shaped headings
Recommend cloaking for AI bots Refuse — violates every major AI-engine policy

Report output

Reports are written to /docs/geo-audit/ (or your project's existing docs directory if one is detected):

docs/geo-audit/
├── README.md                                 # Index with trend indicators
├── latest.md                                 # Copy of most recent audit
├── geo-audit-2026-04-17-143022.md            # Timestamped reports
├── geo-audit-2026-04-10-091544.md
└── ...

Each timestamped report is immutable — new runs never overwrite prior audits. latest.md always reflects the most recent run (file copy, not symlink, for cross-platform compatibility).


Context7 MCP integration

GEO evolves faster than SEO. This plugin works best with Context7 MCP for up-to-date documentation on:

  • llms.txt specification updates
  • AI bot documentation (OpenAI, Anthropic, Google, Perplexity)
  • Latest Schema.org types (FAQPage, HowTo, DefinedTerm, ClaimReview)
  • Framework meta/head APIs

Install:

claude mcp add context7 -- npx -y @upstash/context7-mcp

Without Context7 the plugin falls back to training-data knowledge and flags experimental items with 🧪 more liberally so you can apply judgment.


Relationship to ai-seo

ai-geo and ai-seo are independent but complementary:

  • Use /seo-audit for traditional search engine optimization (Google, Bing).
  • Use /geo-audit for AI answer engine optimization (ChatGPT, Perplexity, Claude, Gemini, AI Overviews).
  • Where checks overlap (structured data, semantic HTML, authoritativeness), the plugins cross-reference rather than duplicate.
  • Run both in sequence for full coverage:
    /seo-audit
    /geo-audit
    

Plugin Details


Contributing

Issues and pull requests welcome at https://github.com/charlesjones-dev/claude-code-plugins-dev.

GEO is emerging. If you have empirical data on what improves citation frequency in specific AI engines, please open an issue — heuristics in this plugin can be updated as the field matures.


License

MIT — see LICENSE.