From thl-open
Orchestrates a GEO+SEO audit across AI citability, platform analysis, technical infrastructure, content quality, and schema markup. Outputs a GEO Score (0-100) with action plan.
How this skill is triggered — by the user, by Claude, or both
Slash command
/thl-open:geo-auditThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
This skill performs a comprehensive Generative Engine Optimization (GEO) audit of any website. GEO is the practice of optimizing web content so that AI systems (ChatGPT, Claude, Perplexity, Gemini, etc.) can discover, understand, cite, and recommend it. This audit measures how well a site performs across all GEO dimensions and produces an actionable improvement plan.
This skill performs a comprehensive Generative Engine Optimization (GEO) audit of any website. GEO is the practice of optimizing web content so that AI systems (ChatGPT, Claude, Perplexity, Gemini, etc.) can discover, understand, cite, and recommend it. This audit measures how well a site performs across all GEO dimensions and produces an actionable improvement plan.
What this composite is — and isn't. This score is a readiness measure: it reads public signals (content, schema, crawler access, off-page authority) and infers how citable and recommendable the site is. It does not query the AI engines to confirm the business is actually named in their answers. Read it as "how well-built for AI is this site," not "is this site in the answer right now." For the live outcome — actually asking ChatGPT, Claude, Perplexity and Google's AI whether they name you — run the free scan at areyoufoundbyai.com (the two are complementary: readiness here, visibility there; see
docs/THL-GEO-METHOD.md). Every dimension below carries a provenance tag; a[heuristic]tag means model judgement from signals, not a measured fact.
Traditional SEO optimizes for search engine rankings. GEO optimizes for AI citation and recommendation. Sites that score high on GEO metrics see 30-115% more visibility in AI-generated responses (Georgia Tech / Princeton / IIT Delhi 2024 study). The two disciplines overlap but have distinct requirements.
Tech Horizon Labs runs this audit as part of a three-layer method (see docs/THL-GEO-METHOD.md):
agent-readiness-scan skill (THL-original) for Cloudflare's independent isitagentready.com 0–100 score. Record both; on a re-audit, track the delta on each — the movement is the proof, not the first number.references/thl-audit-checklist.md so no dimension is silently skipped and the same facts/scores stay consistent across every section.tools/audit-report-kit (THL-original) to produce a branded client PDF + compile-checked JSON-LD for the schema fixes — instead of leaving a raw markdown file.Step 1: Fetch Homepage and Detect Business Type
Use WebFetch to retrieve the homepage at the provided URL.
Extract the following signals:
Classify the business type using these patterns:
| Business Type | Detection Signals |
|---|---|
| SaaS | Pricing page, "Sign up" / "Free trial" CTAs, app.domain.com subdomain, feature comparison tables, integration pages |
| Local Business | Physical address on homepage, Google Maps embed, "Near me" content, LocalBusiness schema, service area pages |
| E-commerce | Product listings, shopping cart, product schema, category pages, price displays, "Add to cart" buttons |
| Publisher | Blog-heavy navigation, article schema, author pages, date-based archives, RSS feeds, high content volume |
| Agency/Services | Case studies, portfolio, "Our Work" section, team page, client logos, service descriptions |
| Professional / financial services (YMYL) | Named advisers/practitioners, displayed credentials, a regulatory licence (AFSL / AR number / registration), FSG / privacy / disclaimer pages, and "your money or your life" topics (finance, legal, health). A trust-critical sub-type of Local/Agency. |
| Hybrid | Combination of above signals -- classify by dominant pattern |
Step 2: Crawl Sitemap and Internal Links
/sitemap.xml and /sitemap_index.xml.<a href> links pointing to the same domainrobots.txt directives -- do not fetch disallowed paths.Step 3: Collect Page-Level Data
For each page in the crawl set, record:
Delegate analysis to 5 specialized subagents. Each subagent operates on the collected page data and produces a category score (0-100) plus findings.
Return contract — every subagent follows it (THL): return your dimension score(s) as a number 0–100, a provenance tag ([scan] = data fetched this run · [partial-scan] · [heuristic] = judgement, no data · [unmeasured] = source unavailable → emit —, not a number), and findings each tied to the evidence that justifies it. Return the orchestrator's named dimensions directly — do not invent your own blended sub-composite or your own weights (that breaks the fixed composite formula below).
Subagent 1: AI Visibility Analysis (geo-ai-visibility)
Subagent 2: Platform Optimization (geo-platform-analysis)
Subagent 3: Technical GEO Infrastructure (geo-technical)
Subagent 4: Content E-E-A-T Quality (geo-content)
Subagent 5: Schema & Structured Data (geo-schema)
The overall GEO Score (0-100) is a weighted average of six category scores:
| Category | Weight | What It Measures |
|---|---|---|
| AI Citability | 25% | How quotable/extractable content is for AI systems |
| Brand Authority | 20% | Third-party mentions, entity recognition signals |
| Content E-E-A-T | 20% | Experience, Expertise, Authoritativeness, Trustworthiness |
| Technical GEO | 15% | AI crawler access, llms.txt, rendering, speed |
| Schema & Structured Data | 10% | Schema.org markup quality and completeness |
| Platform Optimization | 10% | Presence on platforms AI models train on and cite |
Formula:
GEO_Score = (Citability * 0.25) + (Brand * 0.20) + (EEAT * 0.20) + (Technical * 0.15) + (Schema * 0.10) + (Platform * 0.10)
| Score Range | Rating | Interpretation |
|---|---|---|
| 90-100 | Excellent | Top-tier GEO optimization; site is highly likely to be cited by AI |
| 75-89 | Good | Strong GEO foundation with room for improvement |
| 60-74 | Fair | Moderate GEO presence; significant optimization opportunities exist |
| 40-59 | Poor | Weak GEO signals; AI systems may struggle to cite or recommend |
| 0-39 | Critical | Minimal GEO optimization; site is largely invisible to AI systems |
Every issue found during the audit is classified by severity:
Generate a file called GEO-AUDIT-REPORT.md with the following structure:
# GEO Audit Report: [Site Name]
**Audit Date:** [Date]
**URL:** [URL]
**Business Type:** [Detected Type]
**Pages Analyzed:** [Count]
---
## Executive Summary
**Overall GEO Score: [X]/100 ([Rating])**
[2-3 sentence summary of the site's GEO health, biggest strengths, and most critical gaps.]
### Score Breakdown
| Category | Score | Weight | Weighted Score | Provenance |
|---|---|---|---|---|
| AI Citability | [X]/100 | 25% | [X] | [scan] |
| Brand Authority | [X]/100 | 20% | [X] | [scan] |
| Content E-E-A-T | [X]/100 | 20% | [X] | [partial-scan] |
| Technical GEO | [X]/100 | 15% | [X] | [scan] |
| Schema & Structured Data | [X]/100 | 10% | [X] | [scan] |
| Platform Optimization | [X]/100 | 10% | [X] | [scan] |
| **Overall GEO Score** | | | **[X]/100** | |
**Provenance vocabulary (THL enhancement — every row carries one):** `[scan]` = scored
from data actually fetched this run · `[partial-scan]` = some pages sampled, others
inferred · `[heuristic]` = model judgement, no underlying data fetched · `[unmeasured]`
= the data source needed was unavailable. When a category is `[unmeasured]` or pure
`[heuristic]`, emit `—` for its score, **never a number** — a number with weak
provenance still reads as hard data. This is how the audit stays honest about what it
actually measured.
---
## Critical Issues (Fix Immediately)
[List each critical issue with specific page URLs and recommended fix]
## High Priority Issues
[List each high-priority issue with details]
## Medium Priority Issues
[List each medium-priority issue]
## Low Priority Issues
[List each low-priority issue]
---
## Category Deep Dives
### AI Citability ([X]/100)
[Detailed findings, examples of good/bad passages, rewrite suggestions]
### Brand Authority ([X]/100)
[Platform presence map, mention volume, sentiment]
### Content E-E-A-T ([X]/100)
[Author quality, source citations, freshness, depth]
### Technical GEO ([X]/100)
[Crawler access, llms.txt, rendering, headers]
### Schema & Structured Data ([X]/100)
[Schema types found, validation results, missing opportunities]
### Platform Optimization ([X]/100)
[Presence on YouTube, Reddit, Wikipedia, etc.]
---
## Quick Wins (Implement This Week)
1. [Specific, actionable quick win with expected impact]
2. [Another quick win]
3. [Another quick win]
4. [Another quick win]
5. [Another quick win]
## 30-Day Action Plan
### Week 1: [Theme]
- [ ] Action item 1
- [ ] Action item 2
### Week 2: [Theme]
- [ ] Action item 1
- [ ] Action item 2
### Week 3: [Theme]
- [ ] Action item 1
- [ ] Action item 2
### Week 4: [Theme]
- [ ] Action item 1
- [ ] Action item 2
---
## Appendix: Pages Analyzed
| URL | Title | GEO Issues |
|---|---|---|
| [url] | [title] | [issue count] |
Person node; the firm uses the right LocalBusiness subtype (not bare Organization); YMYL claims are sourced, not asserted.FinancialService / ProfessionalService / LegalService / MedicalBusiness (the correct LocalBusiness subtype), Person (per adviser), FAQPage.npx claudepluginhub techhorizonlabs/thl-open --plugin thl-openAudits websites for SEO and GEO covering technical health, E-E-A-T scoring, domain authority, structured data, rich results, Core Web Vitals, crawlability, robots.txt, sitemaps. Use for audits, traffic drops, schema JSON-LD generation, migrations.
Audits brand AI search visibility in responses from ChatGPT/Perplexity/Claude and website GEO readiness for AI crawlers via Karis CLI. Covers mentions, citations, scores, llms.txt.