From seo-skills
Analyzes a URL's AI Overview citation footprint and recommends page-level changes to improve citability in LLM-powered search engines like AI Overview, Perplexity, and ChatGPT.
How this skill is triggered — by the user, by Claude, or both
Slash command
/seo-skills:seo-geoThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
> Example output: [examples/seo-geo-notion-share-pages-20260514/GEO.md](../../examples/seo-geo-notion-share-pages-20260514/GEO.md)
Example output: examples/seo-geo-notion-share-pages-20260514/GEO.md
For one URL, surface its AI-search citation footprint and recommend the page-level changes that would improve citability across AI Overview, Perplexity, ChatGPT, and other LLM-powered search engines. Different from the domain-level brand-vs-brand share-of-voice — this is page-level diagnosis.
WebFetch tool available.us), specific keywords to focus on (defaults: the URL's top-5 traffic-weighted keywords from SE Ranking).Validate target & preflight. See skills/seo-firecrawl/references/preflight.md for the canonical 3-stage preflight (credit balance, Firecrawl availability, Google APIs). Skill-specific notes:
(skipped — Firecrawl not installed; install via extensions/firecrawl/install.sh) notes in GEO.md rather than failing the run. Pass --no-firecrawl to skip Firecrawl even when available (saves credits).URL keyword footprint DATA_getUrlOverviewWorldwide and DATA_getDomainKeywords (URL-filtered)
AIO presence per keyword DATA_getAiOverview
AIO leaderboard per keyword DATA_getAiOverviewLeaderboard
Page passage-level audit WebFetch
Compare candidate to cited sources
Schema check mcp__firecrawl-mcp__firecrawl_scrape
html for every <script type="application/ld+json"> block. Specifically check for: Article/BlogPosting with valid author + datePublished + dateModified; FAQPage if Q&A blocks present; BreadcrumbList; mainEntityOfPage self-canonical.Schema check: skipped — Firecrawl required to parse JSON-LD blocks (WebFetch returns markdown only). into evidence/06-schema-check.md, mirror the same line in the GEO.md "Schema check" section. Don't infer from markdown — that's the bug this section closes.AI-protocol files mcp__firecrawl-mcp__firecrawl_scrape
https://{domain}/llms.txt and https://{domain}/.well-known/rsl.json (and the legacy /RSL.txt location as a fallback). Cost: 2 Firecrawl credits (one per file).evidence/07-ai-protocol-files.md and in GEO.md as a new "AI-protocol files" section. These signal the domain's stance on LLM training and citation — present-and-permissive correlates with higher AIO citation rates.AI-protocol files: skipped — Firecrawl not installed. Don't fall back to WebFetch (it would work for plain text but the integration stays uniform; runtime savings are negligible).Synthesise GEO.md
Create a folder seo-geo-{target-slug}-{YYYYMMDD}/ with:
seo-geo-{target-slug}-{YYYYMMDD}/
├── GEO.md (synthesised report + recommendations — primary deliverable)
├── 04-page-passages.md (extracted passages + citability scores — load-bearing reference editors consult)
├── 05-cited-source-comparison.md (gap vs cited sources — load-bearing reference)
└── evidence/
├── 01-url-keyword-footprint.md (URL overview + top keywords — raw step output)
├── 02-aio-by-keyword.md (AIO presence + citation per keyword)
├── 03-leaderboards.md (full leaderboards per keyword)
├── 06-schema-check.md (JSON-LD audit for GEO-relevant types — requires Firecrawl)
└── 07-ai-protocol-files.md (llms.txt + RSL status and content — requires Firecrawl)
Top-level: GEO.md + 04-page-passages.md + 05-cited-source-comparison.md. The other step files preserve raw API/scrape outputs in evidence/ for reproducibility — editors and writers don't open them in the normal flow.
GEO.md follows this shape:
# GEO Analysis: {URL}
> Snapshot dated {YYYY-MM-DD} · Country: {country} · Keywords analysed: {n}
## Citation footprint
| Keyword | AIO present | Candidate cited | Citers |
|---|---|---|---|
| {keyword 1} | ✓ | ✗ | {3 cited sources} |
| {keyword 2} | ✓ | ✓ | {includes candidate + 2 others} |
| ... |
**Citation rate: {n}/{checked} ({%}) of AIOs where candidate could appear actually cite it.**
## Where the candidate IS cited
- {keyword X} — passage cited: "{passage text}"
- ...
## Where the candidate is NOT cited (and AIO is present)
- {keyword Y} — cited sources tend to share these patterns:
- {pattern 1: short definitive answer in first 100 words}
- {pattern 2: numbered stat with date}
- {pattern 3: schema-marked Article with author bio}
- The candidate is missing: {specific gap}.
## Page passage-level audit
Top-scoring passages on the candidate (by citability score):
1. {passage at H2 "X" — score 8/10. Strong: definitive sentence, named stat. Weak: no date.}
2. ...
Lowest-scoring passages (refresh candidates):
1. {passage at H2 "Y" — score 3/10. Weak: vague generalities, no specific data.}
2. ...
## Schema check
- `Article` (or sub-type) present and valid: {✓/✗ | skipped — Firecrawl required}
- `author` populated with `@type: Person` and `url`: {✓/✗}
- `datePublished` + `dateModified` ISO 8601: {✓/✗}
- `FAQPage` for visible Q&A: {✓/✗/N-A}
- `BreadcrumbList`: {✓/✗}
## AI-protocol files
- `/llms.txt` present: {✓ status 200 / ✗ status {n} / skipped — Firecrawl required}
- `/.well-known/rsl.json` (or `/RSL.txt`) present: {✓ / ✗ / skipped}
- Stance summary: {permissive / restrictive / mixed / unknown — based on declared categories and allow/deny scope}
## Recommendations (top 5 to improve citability)
1. {Specific change — e.g., "Add a 60-word TL;DR after the H1 that directly answers '{primary keyword}' — current page buries the answer below 800 words of preamble"}
2. {Specific change}
3. {Specific change}
4. {Specific change}
5. {Specific change}
## Recommended next step
Re-run `seo-geo` on this URL in 30 days after applying the recommendations. AIO indexes update on a monthly cadence — citation changes show up there first.
seo-ai-search-share-of-voice for domain-level brand-vs-brand visibility (this skill is page-level).seo-content-audit to apply the CITE rubric to the page (which has more citation-readiness items).seo-schema to fix schema issues identified in step 7.npx claudepluginhub seranking/seo-skills --plugin seo-skillsConducts interactive GEO analysis for AI search optimization (AI Overviews, Perplexity, ChatGPT), checking citability, structure, llms.txt compliance, and crawler access via Python scripts. Auto-activates on 'GEO', 'AI search'.
Audits content for AI Overviews, ChatGPT search, Perplexity, and other AI-powered search engines. Analyzes citability, brand mentions, and AI crawler accessibility.
Optimizes content for AI search (AI Overviews, Perplexity, ChatGPT) via GEO analysis: citability scoring, llms.txt compliance, brand mentions, crawler accessibility, structural signals.