Claude SEO GEO
SEO and GEO skills that work like a specification: they audit a page, compare it with the competitors that rank, and build the fix. Rank in Google and get cited by ChatGPT, Perplexity, Gemini and Google AI Overviews.
27 skills, 13 zero-dependency scripts, every threshold either measured (with its source) or labeled as a field heuristic from 115+ real agency audits. Free and open source.
How a page skill works
Every skill that owns a page type (homepage and sales page, service, product, collection, comparison, blog article, local page, and the 21 types of the page sections skill) runs the same four phases, in the same order, with the same deliverable.
| Phase | Question | What runs | Output |
|---|
| 1. Spec | What must a page of this type contain? | The skill's specification table (stable IDs such as SVC-07) plus the 27 common requirements every page shares | The checklist |
| 2. Audit | What does the page contain today? | seo_audit.py (scores and findings) and section_audit.py (blocks present) | Every requirement marked Pass, Fail or Not verifiable |
| 3. Benchmark | What do the pages that rank, and that AI assistants cite, contain? | page_benchmark.py on your page and 3-5 competitor pages | Block x competitor table, the blocks most competitors have and you do not, the metrics where you sit below the median |
| 4. Build | What do we write, and when is it done? | The skill's wireframe, copy rules and JSON-LD templates | The page, then the scripts re-run as the acceptance test |
The finish line is measurable: no requirement left failing, or a written owner decision for each one that stays.
What the benchmark looks like
$ python3 skills/seo-geo-audit/scripts/page_benchmark.py --type homepage \
https://your-site.com/ https://rival-a.com/ https://rival-b.com/ https://rival-c.com/
| metric | your-site.com | rival-a.com | rival-b.com | rival-c.com |
| words | 847 | 1325 | 2187 | 2499 |
| seo_score | 80 | 84 | 54 | 88 |
| bold | 0 | 1 | 34 | 6 |
| money_links | 1 | 15 | 10 | 15 |
| schema | - | Organization, Person, WebSite | - | EducationalOrganization, WebSite |
...
BLOCKS half or more of the competitors have and the client does not:
- author_block (2/3) - guarantee (2/3) - contact_details (2/3)
CLIENT BELOW THE COMPETITOR MEDIAN:
- words: client 847 vs median 2187
- bold: client 0 vs median 6
Site level: crawl and decay
python3 skills/seo-internal-linking/scripts/site_crawl.py https://your-site.com --out crawl.json
python3 skills/seo-traffic-drop/scripts/content_decay.py --current last3m.csv --previous prev3m.csv --last-year ly3m.csv --crawl crawl.json
The crawl finds what no single-page audit can see (orphans, internal links pointing to redirects, cannibalization, pages buried deeper than 3 clicks). The decay finder turns three Search Console exports into a refresh queue: which pages lose traffic, why, and what to do.
What the audit measures
seo_audit.py uses the same thresholds and weights as the free Sorank Chrome extension, so the terminal and the browser agree on the same page. Per page it returns an SEO score and a GEO score out of 100 and a ranked list of findings, covering:
- Tags and head: title and meta lengths, H1 and heading tree, canonical, Open Graph, Twitter card, viewport, lang, charset, favicon, hreflang, meta refresh, robots and snippet directives.
- Content: word count, bold usage, keyword density (alert above 2.5%, stuffing above 7%), the keyword placement matrix (title, H1, H2-H6, meta, URL, intro, bold, alt), readability with sentence-length buckets and Flesch, paragraph length, question headings, statistics, definitions, quotes.
- Links: internal and external, nofollow, sponsored and ugc, empty and generic anchors, body links to the pages that sell, social profiles and placeholder links.
- Images: alt coverage, alt quality, weight, format, dimensions, lazy-loading of the first image.
- Structured data: types found, JSON-LD that fails to parse, required properties missing or empty per type.
- Templates: table of contents, author block and author page link, dates, breadcrumb, CTA links, blog hub cover images.
- Trust: income or results promises without a disclaimer, gambling topics without the legal notice, unbacked superlatives.
- Site level: robots.txt rules for AI search, user-fetch and training bots, sitemap and its 50,000 URL limit, llms.txt.
The skills
Page skills (spec, audit, benchmark, build)
| Skill | Page it owns |
|---|
| seo-content-homepage | Homepage, flagship offer or sales page, about page: 16-block order, semantic bolding, proof with numbers, objection FAQ, price, Organization, Person and Course schema |
| seo-content-service-page | Service and landing pages, city and region pages |
| seo-content-product-page | E-commerce product pages, the ChatGPT Shopping feed |
| seo-content-collection-page | Category and collection pages: the text zones, facets, pagination |
| seo-content-comparison-page | X vs Y, alternatives, best-for lists, customer segment pages |
| seo-content-comparison-hub | "Best {category}" ranking hubs and tool directories with many items: the ideal structure, section by section (order, role, content, organization), from the H1 with the exact count to the FAQ and the ItemList |
| seo-content-blog | Articles on the 12-element skeleton, plus the page templates: sticky table of contents, author box with photo and social profiles, CTA blocks, blog hub cards with covers |
| seo-local | Local pages and the Google Business Profile, reviews, citations |
| seo-page-sections | Any other page type (21 in total) and the site-level question "which pages and blocks are missing" |
Site skills
| Skill | Use it for |
|---|
| seo-geo-audit | Full site audit, 15 categories, SEO and GEO scores, a prioritized plan that hands each fix to the right skill |
| seo-audit-pdf | The audit as a client-ready PDF: fixed A4 layout, nothing cut across two pages, no dates or delays, rendered and linted by one script |
| seo-traffic-drop | Traffic or rankings fell: date the drop, locate it, run the differential diagnosis |
| seo-technical | Crawl, indexation, Core Web Vitals, JavaScript rendering, AI crawler access, migrations |
| seo-sitemap | A sitemap clean for robots and elegant for people: pretty-printed raw XML identical to xmllint --format, no stylesheet or script, sitemap index by section and language, honest lastmod |
| seo-ai-site-builders | Sites built by Lovable, Base44, Bolt, v0, Bubble and others: turn the JavaScript app into served HTML |
| seo-keyword-research | Real queries, intent mapping, cannibalization, AI prompt research |
| seo-competitor-analysis | Market analysis: asks for 5 competitors (or finds them), reads every competitor sitemap, shows the page models, topics and publishing pace you lack, ranked into a build plan |
| seo-content-data-study | Data studies, benchmarks, statistics and case study pages from your own data: anonymized by category, charts as text, downloadable dataset, embed code, Dataset schema |
| seo-internal-linking | Money-page-first linking, silos, orphan pages, anchors |
| seo-schema-markup | The structured data that still earns surfaces, ready JSON-LD templates, the markup Google retired |
Authority, AI visibility and distribution
| Skill | Use it for |
|---|
| seo-backlinks | Link building, ninja linking, digital PR, unlinked brand mentions |
| geo-visibility | How each AI engine picks sources, passage citability, the GEO score, entity consistency |
| geo-tracking | AI traffic in GA4, monthly prompt panels, share of voice |
| social-amplification | Repurpose content for YouTube, Reddit, LinkedIn and X to drive branded search and AI citations |
YouTube videos (any sector)
| Skill | Use it for |
|---|
| youtube-title | Titles found in search and clicked in the feed: patterns per video type, scored candidates, the thumbnail hook that pairs with them, native titles per language |
| youtube-description | Descriptions written from the transcript: tracked offer link, keyword-rich summary, guest and host blocks for interviews, valid chapters, ready-to-use prompts |
| youtube-thumbnail | Thumbnails readable at phone size: four production routes (video frame, AI image from a reference photo, interview template, HTML series template), tested prompt template, size checks |
The scripts
All standard-library Python 3.9+, read only, no API key, no install.
| Script | What it does |
|---|
skills/seo-geo-audit/scripts/seo_audit.py | Per page: SEO and GEO scores, ranked findings, every fact listed above; site-level robots, sitemap, llms.txt |
skills/seo-geo-audit/scripts/page_benchmark.py | Your page against 3-5 competitor pages: one table, block gaps, schema gaps, metrics below the median, and the vocabulary gap (terms and phrases half the competitors use and you never do, with the headings that carry them) |
skills/seo-internal-linking/scripts/site_crawl.py | Crawls the whole site from the homepage: orphans, click depth, weak inbound links, broken links and redirects, duplicate titles, meta and H1, thin pages, cannibalization candidates, generic anchors, stale pages, sitemap entries that should not be there |
skills/seo-traffic-drop/scripts/content_decay.py | From Search Console exports: the pages slowly losing clicks, classified as ranking loss, CTR loss, demand loss or seasonal, stale pages first, with the action for each |
skills/seo-page-sections/scripts/section_audit.py | Which blocks a page has (FAQ, breadcrumb, comparison table, reviews, guarantee, process, author...) |
skills/seo-ai-site-builders/scripts/render_check.py | What crawlers receive from a JavaScript site, by user agent, plus a soft-404 probe |
skills/seo-traffic-drop/scripts/gsc_diff.py | Locates a traffic drop in Search Console exports |
skills/seo-sitemap/scripts/sitemap_audit.py | Sitemap for robots and people: pretty-print check and formatter (--format), leftover stylesheet or script, size, segmentation, duplicates, lastmod honesty, priority and changefreq, hreflang weight, URLs per language, HTML sitemap page |
skills/seo-competitor-analysis/scripts/competitor_sitemaps.py | Every sitemap of the site and up to 5 competitors: URLs sorted into page models, publishing pace with real publication dates, page-model gap, topic gap, competitor vocabulary |