seoskills.sh

GEO Review

Generative Engine Optimization review: evaluate your content's visibility to AI-powered search engines — citation-worthiness, content structure, authority signals, llms.txt, entity clarity, and AI retrieval readiness.

Listed ·Updated

418 installs

Install data from skills.sh

Use this skill

Free
$ npx skills add seoskills.sh/geo-review
Basic pattern scan of SKILL.md text: no matches (checked September 30, 2026)
Repository
shiplightai/agent-skills
GitHub stars
2
License
MIT

About this skill

GEO Review is a AI Search (AEO and GEO) skill for AI agents, published in the seoskills.sh catalog. Reach for it when your work involves answer and generative engine optimization for AI Overviews, Perplexity, and ChatGPT. Install it with one command and it runs inside your own agent, so the work happens in your workflow, not a separate SEO tool.

SKILL.md

GEO Review

Evaluate how well your application and content are optimized for AI-powered search and answer engines — ChatGPT, Perplexity, Google AI Overviews, Claude, and other generative AI systems that cite web sources. Traditional SEO gets you ranked in a link list; GEO gets you cited in AI-generated answers.

When to use

Use /geo-review when:

  • Your product is discovered through AI assistants (developer tools, SaaS, APIs)
  • You want to appear in Google AI Overviews
  • Users find your product by asking AI "what's the best X for Y?"
  • You publish documentation, guides, or educational content
  • Your competitors are showing up in AI answers and you're not
  • Building thought leadership content that AI should reference
  • Launching a new product where AI-driven discovery matters

Why GEO Matters Now

  • 40% of Gen Z uses TikTok and AI chatbots instead of Google for search (Adobe 2024)
  • Google AI Overviews now appear for ~30% of search queries, pushing traditional results below the fold
  • Perplexity processes 100M+ queries/month, citing web sources in every answer
  • ChatGPT with browsing and search is becoming a primary research tool
  • AI systems don't rank links — they select and cite sources based on different signals than traditional SEO
  • Being the source an AI quotes is the new "position #1"

Standards & Frameworks Referenced

  • GEO research (Georgia Tech / Princeton / IIT Delhi, 2024) — "GEO: Generative Engine Optimization"
  • Google E-E-A-T — Experience, Expertise, Authoritativeness, Trustworthiness
  • Schema.org — Structured data for entity understanding
  • llms.txt — Emerging standard for AI crawler instructions (similar to robots.txt for LLMs)
  • Retrieval-Augmented Generation (RAG) — How AI systems fetch and cite content

Phase Overview

Phase 1: EDUCATE   → How AI search works differently from traditional search
Phase 2: SCOPE     → Identify content types, target queries, AI visibility goals
Phase 3: ANALYZE   → Content analysis + browser-based AI search validation
Phase 4: REPORT    → Findings with citation gap analysis and confidence scores
Phase 5: REMEDIATE → Fix guidance + YAML regression tests

Phase 1: Educate

How AI search is different: Traditional search engines crawl, index, and rank pages by relevance signals (backlinks, keywords, authority). AI answer engines do something fundamentally different — they retrieve content, understand it semantically, and synthesize answers by selecting the most citation-worthy sources. Your content needs to be clear, specific, authoritative, and directly answerable to be selected.

Key insight: AI systems prefer content that makes specific, verifiable claims with supporting evidence. Vague marketing copy is ignored. Concrete statements with data, comparisons, and clear structure get cited.


Phase 2: Scope

Gather context

  1. Auto-detect from codebase/content:

    • Content pages (docs, blog, landing pages, about, pricing, FAQ)
    • Existing structured data (JSON-LD, Schema.org)
    • Content management approach (static, CMS, MDX, etc.)
    • llms.txt presence
    • Sitemap and content organization
    • Author/expertise signals
    • Publication dates and freshness signals
  2. Ask the user (one at a time):

    • Product type: What does your product/site do? (needed to understand AI query context)
    • Target URL: Where is the content published?
    • Target AI queries: What questions should AI answer with your content? (e.g., "best CI/CD tool for startups", "how to implement OAuth in Node.js")
    • Competitors: Who else shows up when AI answers these queries? (optional but valuable)
    • Content goals: Documentation? Thought leadership? Product discovery? All of the above?
  3. Map content landscape:

    • Key content pages and their purpose
    • Target queries each page should satisfy
    • Current AI citation status (test a few queries in ChatGPT/Perplexity)
    • Content gaps vs competitors

Phase 3: Analyze

Open a browser session with new_session using record_evidence: true. Run all applicable check categories.

Category A: Content Citation-Worthiness (CITE)

Check IDCheckPrincipleMethod
CITE-01Content contains specific, verifiable claimsGEO researchScan pages for concrete statements with data/numbers
CITE-02Statistics and original data are presentGEO researchCheck for unique numbers, benchmarks, research findings
CITE-03Content directly answers target queriesRAG retrievalMatch content against target queries — does it contain direct answers?
CITE-04Claims have supporting evidence or citationsE-E-A-TCheck for source references, links, data attribution
CITE-05Content is specific (not generic/vague)GEO researchAnalyze content for specificity vs marketing fluff
CITE-06Comparison content exists (vs alternatives)AI preferenceCheck for "X vs Y" or comparison tables that AI can cite
CITE-07Content has clear, quotable summary sentencesCitation formatCheck if key paragraphs start with citable claims
CITE-08Unique perspective or data (not regurgitated)E-E-A-TAssess originality — does this add something AI can't already synthesize?
CITE-09Content demonstrates first-hand experienceE-E-A-T (Experience)Check for case studies, personal experience, real examples
CITE-10Technical accuracy and depthE-E-A-T (Expertise)Assess whether content goes beyond surface level

Browser validation: Navigate to content pages. Extract text content. Analyze for claim density, statistics, quotable statements. Compare against target queries for direct answer matching.

Category B: Content Structure for AI Retrieval (STRUCT)

Check IDCheckPrincipleMethod
STRUCT-01Clear heading hierarchy maps to questionsRAG chunkingCheck if H2/H3 headings are question-shaped or topic-clear
STRUCT-02FAQ sections with direct Q&A formatAI preferenceCheck for FAQ sections, question-answer pairs
STRUCT-03Definition/explanation paragraphs lead with the answerRetrievalCheck if paragraphs front-load the key claim (inverted pyramid)
STRUCT-04Tables and structured comparisons presentAI preferenceCheck for HTML tables with clear headers
STRUCT-05Content is chunked into digestible sections (300-500 words)RAG chunkingMeasure section lengths between headings
STRUCT-06Lists used for multi-point informationAI preferenceCheck for ordered/unordered lists for multi-step or multi-item content
STRUCT-07Code examples are complete and runnable (for technical content)Developer experienceCheck code blocks for completeness and language tags
STRUCT-08TL;DR or summary at top of long contentRetrievalCheck for executive summary or key takeaways section

Browser validation: Extract heading structure, count FAQ patterns, measure section lengths, check for tables and lists via DOM inspection.

Category C: Authority & Trust Signals (AUTH)

Check IDCheckPrincipleMethod
AUTH-01Author information present (name, bio, credentials)E-E-A-TCheck for author bylines, about sections
AUTH-02Organization/brand identity clearEntity recognitionCheck for About page, consistent branding
AUTH-03Publication and update dates visibleFreshnessCheck for date metadata on content pages
AUTH-04Sources and references citedE-E-A-TCheck for outbound links to authoritative sources
AUTH-05Testimonials/social proof presentTrustCheck for customer quotes, logos, case studies
AUTH-06Professional contact information availableTrustCheck for contact page, physical address, support channels
AUTH-07Content recency (updated within last 12 months)FreshnessCheck publish/update dates
AUTH-08Domain authority indicators (established site)E-E-A-TCheck site age, about page depth, team page

Browser validation: Navigate to content pages, about page, author pages. Extract dates, author info, citation links.

Category D: Technical AI Discoverability (TECH)

Check IDCheckPrincipleMethod
TECH-01llms.txt present at site rootAI crawler standardFetch /llms.txt, check format and content
TECH-02llms-full.txt with detailed content (if applicable)AI crawler standardFetch /llms-full.txt
TECH-03JSON-LD structured data with rich entity infoSchema.orgCheck for Organization, Product, Article, FAQ schema
TECH-04Content accessible without JavaScriptRAG crawlingDisable JS, check if content renders
TECH-05Clean, semantic HTML (not framework soup)CrawlabilityCheck for meaningful tags vs div-heavy DOM
TECH-06robots.txt allows AI crawlersDiscoverabilityCheck for GPTBot, ClaudeBot, PerplexityBot, Bingbot rules
TECH-07Sitemap includes content pages with lastmodDiscoverabilityCheck sitemap for content pages and dates
TECH-08Open Graph tags help AI understand contentSocial + AICheck OG tags for accurate content description
TECH-09API documentation is machine-readable (if applicable)Developer GEOCheck for OpenAPI spec, API reference format
TECH-10Content is not behind authentication wallsRAG accessVerify key content is publicly accessible

Browser validation: Fetch llms.txt, check robots.txt for AI bot rules, verify SSR content, inspect structured data.

Category E: Entity & Brand Clarity (ENTITY)

Check IDCheckPrincipleMethod
ENTITY-01Product/brand name is consistently usedEntity recognitionCheck name consistency across pages
ENTITY-02Clear product category declarationAI classificationCheck if content states "X is a [category]" explicitly
ENTITY-03Key features/differentiators stated clearlyAI comparisonCheck for feature lists, unique value propositions
ENTITY-04Use case descriptions are specificAI recommendationCheck for "best for [specific use case]" patterns
ENTITY-05Pricing/tier information is structuredAI recommendationCheck pricing page for clear, structured plans
ENTITY-06Integration/compatibility information presentAI recommendationCheck for "works with X" / integration pages
ENTITY-07Competitor differentiation is factualAI comparisonCheck comparison content for factual (not just marketing) claims
ENTITY-08Industry/vertical targeting is explicitAI classificationCheck if content targets specific industries/roles

Browser validation: Navigate key pages and extract product positioning, feature lists, use cases, pricing structure. Check for entity-clear statements.

Category F: AI Citation Testing (TEST)

This category is unique to GEO — it tests actual AI visibility.

Check IDCheckMethod
TEST-01Test target queries in PerplexityNavigate to perplexity.ai, search target queries, check if your site is cited
TEST-02Test target queries in ChatGPT (if browsing available)Search via ChatGPT, check citations
TEST-03Test target queries in Google (check AI Overview)Google search, check if AI Overview cites your content
TEST-04Compare citation frequency vs competitorsCount citations for you vs top competitors across queries
TEST-05Analyze what content IS being cited (from competitors)Study cited content format, structure, claims

Browser validation: Use new_session to navigate to Perplexity and Google. Search target queries. Screenshot results. Check for citations to the user's domain. This provides real-world evidence of current AI visibility.

Important: TEST category results are the ground truth — they show whether your content is actually being cited, regardless of what the other categories suggest.


Phase 4: Report

Generate a structured report saved to shiplight/reports/geo-review-{date}.md:

# GEO Review Report
**Date:** {date}
**URL:** {url}
**Product type:** {description}
**Target AI queries tested:** {list}

## Overall GEO Score: {X}/10 | Confidence: {X}%

## Score Breakdown
| Category | Score | Findings |
|----------|-------|----------|
| Citation-Worthiness (CITE) | 5/10 | 2 high, 2 medium |
| Content Structure (STRUCT) | 6/10 | 1 high, 2 medium |
| Authority Signals (AUTH) | 7/10 | 1 medium |
| Technical Discoverability (TECH) | 4/10 | 1 critical, 2 high |
| Entity Clarity (ENTITY) | 5/10 | 2 high |
| AI Citation Testing (TEST) | 3/10 | Not cited in 4/5 target queries |

## AI Citation Status
| Target Query | Perplexity | Google AI Overview | Cited? | Competitor Cited? |
|-------------|------------|-------------------|--------|------------------|
| "best X for Y" | Not cited | Not in overview | ❌ | CompetitorA: ✅ |
| "how to do Z" | Cited (#3 source) | Cited | ✅ | CompetitorB: ✅ |
| ... | | | | |

## Citation Gap Analysis
What competitors' cited content has that yours doesn't:
- Specific performance benchmarks (CompetitorA cites "40% faster than...")
- Comparison tables (CompetitorB has detailed feature matrices)
- Direct answer paragraphs (CompetitorA leads sections with the conclusion)

## Findings
(structured findings with evidence and priority)

Confidence Scoring

  • 90-100%: Verified via live AI search — content is/isn't cited (TEST category)
  • 70-89%: Strong structural evidence — content has/lacks citation-worthy patterns
  • 50-69%: Heuristic assessment of content quality signals
  • Below 50%: Don't report

Phase 5: Remediate

1. Fix guidance (example)

#### CITE-01: Landing page lacks specific, verifiable claims
**Impact:** AI systems skip vague marketing copy — your landing page is invisible to AI answers
**Current:** "We're the fastest platform for modern teams"
**Fix:** Add specific, citable claims:
- "Deploys complete in 47 seconds on average (based on 10,000 deployments in Q4 2025)"
- "Used by 2,300 companies including [notable names]"
- "Reduces CI/CD pipeline time by 62% compared to Jenkins (internal benchmark, Jan 2026)"
**Principle:** AI cites facts, not adjectives. Every claim should be verifiable.
#### TECH-01: No llms.txt present
**Impact:** AI crawlers have no guidance on how to understand your site
**Fix:** Create /llms.txt at site root:

# [Your Product Name]

> One-sentence description of what your product does.

## Docs
- [Getting Started](/docs/getting-started): How to set up and configure [Product]
- [API Reference](/docs/api): Complete API documentation
- [Guides](/docs/guides): Step-by-step tutorials

## Key Pages
- [Pricing](/pricing): Plans and pricing
- [Changelog](/changelog): Recent updates and releases
- [About](/about): Company and team information

Also create /llms-full.txt with expanded content for deeper AI understanding.

2. YAML regression tests

- name: tech-01-llms-txt-present
  description: Verify llms.txt exists and is properly formatted
  severity: high
  standard: llms-txt-standard
  steps:
    - URL: /llms.txt
    - VERIFY: The page loads successfully and contains structured information about the site
    - description: Assert llms.txt is present and uses markdown headings
      js: |
        const content = await page.textContent('body');
        if (!content || content.trim().length < 50) {
          throw new Error('llms.txt is missing or too short');
        }
        if (!content.includes('#')) {
          throw new Error('llms.txt should use markdown heading structure');
        }
        console.log(`llms.txt found (${content.length} chars)`);

- name: tech-06-ai-crawlers-allowed
  description: Verify robots.txt allows AI search crawlers
  severity: high
  standard: AI-Discoverability
  steps:
    - URL: /robots.txt
    - description: Assert robots.txt does not block AI crawlers
      js: |
        const content = await page.textContent('body');
        const blockedBots = ['GPTBot', 'ClaudeBot', 'PerplexityBot', 'Google-Extended'];
        const blocked = blockedBots.filter(bot => {
          const pattern = new RegExp(`User-agent:\\s*${bot}[\\s\\S]*?Disallow:\\s*/`, 'i');
          return pattern.test(content);
        });
        if (blocked.length > 0) {
          throw new Error(`AI crawlers blocked in robots.txt: ${blocked.join(', ')}`);
        }
        console.log('All major AI crawlers are allowed');
    - VERIFY: robots.txt does not block major AI search engine crawlers

- name: cite-01-specific-claims-present
  description: Verify key pages contain specific, citable claims with data
  severity: high
  standard: GEO-Citation-Worthiness
  steps:
    - URL: /
    - description: Assert the landing page has citable statistics
      js: |
        const text = await page.textContent('main') || await page.textContent('body');
        // Check for specific numbers/statistics
        const hasNumbers = /\d+[%xX]|\$[\d,.]+|\d{1,3}(,\d{3})+|\d+\s*(users|customers|companies|teams|downloads)/i.test(text);
        if (!hasNumbers) {
          throw new Error('Landing page lacks specific statistics or data points that AI can cite');
        }
        console.log('Found specific, citable claims with data');
    - VERIFY: Landing page contains specific statistics, benchmarks, or verifiable data points

Save all YAML tests to shiplight/tests/geo-review.test.yaml.


Depth Levels

  • --quick: llms.txt check + robots.txt AI crawler check + landing page claim analysis. ~2 minutes.
  • default: All content categories + 3 target query tests in Perplexity. ~10-15 minutes.
  • --thorough: All categories + full AI citation testing across multiple engines + competitor citation analysis + content gap recommendations. ~25-40 minutes.

Tips

  • The TEST category (live AI search testing) is the most valuable — it shows ground truth, not theory
  • Perplexity is the best testing ground because it always shows citations
  • llms.txt is emerging but increasingly adopted — it's low effort, high signal
  • AI systems update their knowledge at different speeds — changes may take weeks to reflect in citations
  • Focus on content that answers specific questions, not brand awareness content
  • The #1 GEO principle: AI cites facts, not adjectives — replace every vague claim with a specific one
  • Close session with close_session and use generate_html_report for evidence

Not using the CLI? Copy the SKILL.md and paste it straight into ChatGPT, Claude, or any agent.

Embed a badge

seoskills.sh listing badge