$npx -y skills add zubair-trabzada/geo-seo-claude --skill geo-technicalTechnical SEO audit with GEO-specific checks — crawlability, indexability, security, performance, SSR, and AI crawler access
| 1 | # GEO Technical SEO Audit |
| 2 | |
| 3 | ## Purpose |
| 4 | |
| 5 | Technical SEO forms the foundation of both traditional search visibility and AI search citation. A technically broken site cannot be crawled, indexed, or cited by any platform. This skill audits 8 categories of technical health with specific attention to GEO requirements — most critically, **server-side rendering** (AI crawlers do not execute JavaScript) and **AI crawler access** (many sites inadvertently block AI crawlers in robots.txt). |
| 6 | |
| 7 | ## How to Use This Skill |
| 8 | |
| 9 | 1. Collect the target URL (homepage + 2-3 key inner pages) |
| 10 | 2. Fetch each page using curl/WebFetch to get raw HTML and HTTP headers |
| 11 | 3. Run through each of the 8 audit categories below |
| 12 | 4. Score each category using the rubric |
| 13 | 5. Generate GEO-TECHNICAL-AUDIT.md with results |
| 14 | |
| 15 | --- |
| 16 | |
| 17 | ## Category 1: Crawlability (15 points) |
| 18 | |
| 19 | ### 1.1 robots.txt Validity |
| 20 | - Fetch `https://[domain]/robots.txt` |
| 21 | - Check for syntactic validity: proper `User-agent`, `Allow`, `Disallow` directives |
| 22 | - Check for common errors: missing User-agent, wildcards blocking important paths, Disallow: / blocking entire site |
| 23 | - Verify XML sitemap is referenced: `Sitemap: https://[domain]/sitemap.xml` |
| 24 | |
| 25 | ### 1.2 AI Crawler Access (CRITICAL for GEO) |
| 26 | Check robots.txt for directives targeting these AI crawlers: |
| 27 | |
| 28 | | Crawler | User-Agent | Platform | |
| 29 | |---|---|---| |
| 30 | | GPTBot | GPTBot | ChatGPT / OpenAI | |
| 31 | | Google-Extended | Google-Extended | Gemini / Google AI training | |
| 32 | | Googlebot | Googlebot | Google Search + AI Overviews | |
| 33 | | Bingbot | bingbot | Bing Copilot + ChatGPT (via Bing) | |
| 34 | | PerplexityBot | PerplexityBot | Perplexity AI | |
| 35 | | ClaudeBot | ClaudeBot | Anthropic Claude | |
| 36 | | Amazonbot | Amazonbot | Alexa / Amazon AI | |
| 37 | | CCBot | CCBot | Common Crawl (used by many AI models) | |
| 38 | | FacebookBot | FacebookExternalHit | Meta AI | |
| 39 | | Bytespider | Bytespider | TikTok / ByteDance AI | |
| 40 | | Applebot-Extended | Applebot-Extended | Apple Intelligence | |
| 41 | |
| 42 | **Scoring for AI crawler access:** |
| 43 | - All major AI crawlers allowed: 5 points |
| 44 | - Some blocked but Googlebot + Bingbot allowed: 3 points |
| 45 | - GPTBot or PerplexityBot blocked: 1 point (significant GEO impact) |
| 46 | - Googlebot blocked: 0 points (fatal) |
| 47 | |
| 48 | **Important nuance**: Blocking Google-Extended does NOT block Googlebot. Google-Extended only controls AI training data usage, not search indexing. However, blocking Google-Extended may reduce presence in AI Overviews. Recommend allowing Google-Extended unless there is a specific data licensing concern. |
| 49 | |
| 50 | ### 1.3 XML Sitemaps |
| 51 | - Fetch sitemap (check robots.txt for location, or try `/sitemap.xml`, `/sitemap_index.xml`) |
| 52 | - Validate XML syntax |
| 53 | - Check for `<lastmod>` dates (should be present and accurate) |
| 54 | - Count URLs — compare to expected number of indexable pages |
| 55 | - Check for sitemap index if large site (50,000+ URLs per sitemap max) |
| 56 | - Verify all sitemap URLs return 200 status codes (sample check) |
| 57 | |
| 58 | ### 1.4 Crawl Depth |
| 59 | - Homepage = depth 0. Check that all important pages are reachable within **3 clicks** (depth 3) |
| 60 | - Pages at depth 4+ receive significantly less crawl budget and are less likely to be cited by AI |
| 61 | - Check internal linking: are key content pages linked from the homepage or main navigation? |
| 62 | |
| 63 | ### 1.5 Noindex Management |
| 64 | - Check for `<meta name="robots" content="noindex">` on pages that SHOULD be indexed |
| 65 | - Check for `X-Robots-Tag: noindex` HTTP headers |
| 66 | - Common mistakes: noindex on paginated pages, category pages, or key landing pages |
| 67 | |
| 68 | **Category Scoring:** |
| 69 | | Check | Points | |
| 70 | |---|---| |
| 71 | | robots.txt valid and complete | 3 | |
| 72 | | AI crawlers allowed | 5 | |
| 73 | | XML sitemap present and valid | 3 | |
| 74 | | Crawl depth within 3 clicks | 2 | |
| 75 | | No erroneous noindex directives | 2 | |
| 76 | |
| 77 | --- |
| 78 | |
| 79 | ## Category 2: Indexability (12 points) |
| 80 | |
| 81 | ### 2.1 Canonical Tags |
| 82 | - Every indexable page must have a `<link rel="canonical" href="...">` tag |
| 83 | - Canonical must point to itself (self-referencing) for the authoritative version |
| 84 | - Check for conflicting canonicals (canonical in HTML vs. HTTP header) |
| 85 | - Check for canonical chains (A canonicals to B, B canonicals to C — should be A to C) |
| 86 | |
| 87 | ### 2.2 Duplicate Content |
| 88 | - Check for www vs. non-www (both should resolve, one should redirect) |
| 89 | - Check for HTTP vs. HTTPS (HTTP should redirect to HTTPS) |
| 90 | - Check for trailing slash consistency (pick one pattern and redirect the other) |
| 91 | - Check for parameter-based duplicates (`?sort=price` creating duplicate pages) |
| 92 | |
| 93 | ### 2.3 Pagination |
| 94 | - If paginated content exists, check for `rel="next"` / `rel="prev"` (note: Google ignores these as of 2019, but Bing still uses them) |
| 95 | - Preferred: use `rel="canonical"` on paginated pages pointing to a view-all page or the first page |
| 96 | - Ensure paginated pages are not noindexed if they con |