geo-audit
Skill16 starsChanged 35 days agoMITView on GitHub
Full website GEO+SEO audit with parallel subagent delegation. Orchestrates a comprehensive Generative Engine Optimization audit across AI citability, platform analysis, technical infrastructure, content quality, and schema markup. Produces a composite GEO Score (0-100) with prioritized action plan.
20 other projects use a version of this, 5 of them edited.
Adopted by
Most recently taken up by
- alpit-patel/seo-aeo-geo-kitedited, first seen Nov 8, 2026
- Ghanyte/geo-seo-audittheir own version, first seen Nov 8, 2026
- dougwithseismic/geo-kittheir own version, first seen Nov 5, 2026
- Gallyan/trouvabletheir own version, first seen Nov 1, 2026
- jiguang9/geo-audittheir own version, first seen Oct 25, 2026
- DoddleHQ/doddle-seo-geo-skillstheir own version, first seen Oct 20, 2026
Used with
Projects with it also use seo-local and seo-schema.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
mangollcSkillseo-local
Local SEO optimization: Google Business Profile post generation, 30-day posting calendars, NAP consistency checks, local citation audits, review response templates, local keywords.
Also in 3 projects that use this
megastepSkillseo-schema
Detect, validate, and generate Schema.org structured data. JSON-LD format preferred. Use when user says "schema", "structured data", "rich results", "JSON-LD", or "markup".
Also in 3 projects that use this
Other versions20 projects use a version of this.
Word for word · 0
None found.
Edited · 5
- zubair-trabzada/geo-seo-claude★ 11k96% same
- alpit-patel/seo-aeo-geo-kit★ 294% same
- HermeticOrmus/LibreGEO-Claude-Code★ 187% same
- Ormus-Solutions/LibreGEO-Claude-Code★ 187% same
- kennyolofsson23-netizen/claude-code-config★ 091% same
Wrote their own version · 15
- vellum-ai/vellum-assistant★ 1.5ksame name
- me2resh/apexyard★ 542same name
- Cognitic-Labs/geoskills★ 30same name
- Ghanyte/geo-seo-audit★ 9same name
- greglas75/zuvo★ 7same name
- jiguang9/geo-audit★ 3same name
- dougwithseismic/geo-kit★ 2same name
- ifitsmanu/landing-studio★ 1same name
- Pannix/geo-audit-skill★ 1same name
- try-era/geo-skills★ 1same name
5 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository17 other files it gives its agents.
- llms.txtllms.txt
- agent-readiness-scanSkill
- found-by-aiSkill
- geo-brand-mentionsSkill
- geo-citabilitySkill
- geo-compareSkill
- geo-contentSkill
- geo-crawlersSkill
- geo-llmstxtSkill
- geo-platform-optimizerSkill
- geo-proposalSkill
- geo-prospectSkill
- geo-report-pdfSkill
- geo-reportSkill
- geo-schemaSkill
- geoSkill
- geo-technicalSkill
The file
Show its rules and text
We split this skill into the rules it gives an agent
28 rules. 0 are common, 27 are distinctive, and 1 is very specific to this project.
0
Common
Most of the 19 edited versions we read keep these.
27
Distinctive
This author's own choices. Worth a look.
1
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 43
Use WebFetch to retrieve the homepage at the provided URL.
- Distinctive: line 70
If sitemap exists, extract up to 50 unique page URLs prioritized by:
- Distinctive: line 76
If no sitemap exists, crawl internal links from the homepage:
- Distinctive: line 78
Follow up to 2 levels deep
- Distinctive: line 107
Check AI crawler access via robots.txt and llms.txt presence (these also inform Technical GEO)
- Distinctive: line 112
Check platform-specific ranking factors and optimization opportunities
- Distinctive: line 116
Verify meta tags, headers, and technical accessibility for AI systems
- Distinctive: line 117
Check page speed, server-side rendering, and Core Web Vitals
- Distinctive: line 122
Check author bios, credentials, source citations
- Distinctive: line 124
Verify "About" page quality and team credentials
- Distinctive: line 128
Check for GEO-critical schema types (FAQ, HowTo, Organization, Product, Article)
- Distinctive: line 168
Every issue found during the audit is classified by severity:
- Distinctive: line 171
All AI crawlers blocked in robots.txt
- Distinctive: line 172
No indexable content (JavaScript-rendered only with no SSR)
- Distinctive: line 180
No llms.txt file present
- Distinctive: line 183
No author attribution on content pages
- Distinctive: line 184
All content behind login/paywall with no preview
- Distinctive: line 192
No Wikipedia or Reddit brand presence
- Distinctive: line 325
Page Limit: Never crawl more than 50 pages per audit.
- Distinctive: line 327
Robots.txt: Always check and respect robots.txt before crawling.
- Distinctive: line 328
Rate Limiting: Wait at least 1 second between page fetches to avoid overloading the server.
- Distinctive: line 330
Content Type: Only analyze HTML pages. Skip PDFs, images, and other binary content.
- Distinctive: line 339
Check for: API documentation structure, changelog pages, knowledge base organization
- Distinctive: line 344
Check for: Service area pages, location-specific content, review markup
- Distinctive: line 349
Check for: Product schema completeness, review aggregation, FAQ sections on product pages
- Distinctive: line 354
Check for: Article schema, author pages, publication date freshness, original research
- Distinctive: line 359
Check for: Portfolio schema, team credentials, industry-specific expertise signals
- Very specific: line 364
Check for: each practitioner has on-page credentials and a Person node.
“Common” is measured: kept by at least 6 in 10 of the 19 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
GEO Audit Orchestration Skill
Purpose
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 what it 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, run the free scan at areyoufoundbyai.com: two buyer questions on ChatGPT and Gemini, no signup; Pro asks up to 25 buyer questions across seven engines on the schedule you choose, from a shared token balance, and its headline measure is the named share of saved answers (the two are complementary: readiness here, visibility there; see
docs/THL-GEO-METHOD.md). This composite is the open audit's own formula. It is not the product's AI Readiness score, which is built differently (five site signals, with the off-site Footprint scored separately). Every dimension below carries a provenance tag; a[heuristic]tag means model judgement from signals, not a measured fact.
Key Insight
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.
THL enhancements (this fork)
Tech Horizon Labs runs this audit as part of a three-layer method (see docs/THL-GEO-METHOD.md):
- External benchmark. Alongside the dimensional composite below, run the
agent-readiness-scanskill (THL-original) for Cloudflare's independentisitagentready.com0 to 100 score. Record both; on a re-audit, track the delta on each: the movement is the proof, not the first number. - Checklist. Work through
references/thl-audit-checklist.mdso no dimension is silently skipped and the same facts/scores stay consistent across every section. - Deliverable. Assemble the audit data and run
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.
Audit Workflow
Phase 1: Discovery and Reconnaissance
Step 1: Fetch Homepage and Detect Business Type
- Use WebFetch to retrieve the homepage at the provided URL.
- Extract the following signals:
- Page title, meta description, H1 heading
- Navigation menu items (reveals site structure)
- Footer content (reveals business info, location, legal pages)
- Schema.org markup on homepage (Organization, LocalBusiness, etc.)
- Pricing page link (SaaS indicator)
- Product listing patterns (E-commerce indicator)
- Blog/resource section (Publisher indicator)
- Service pages (Agency indicator)
- Address/phone/Google Maps embed (Local business indicator)
- 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
- Attempt to fetch
/sitemap.xmland/sitemap_index.xml. - If sitemap exists, extract up to 50 unique page URLs prioritized by:
- Homepage (always include)
- Top-level navigation pages
- High-value pages (pricing, about, contact, key service/product pages)
- Blog posts (sample 5-10 most recent)
- Category/landing pages
- If no sitemap exists, crawl internal links from the homepage:
- Extract all
<a href>links pointing to the same domain - Follow up to 2 levels deep
- Prioritize pages linked from main navigation
- Extract all
- Respect
robots.txtdirectives -- do not fetch disallowed paths. - Enforce a maximum of 50 pages and a 30-second timeout per fetch.
Step 3: Collect Page-Level Data
For each page in the crawl set, record:
- URL, title, meta description, canonical URL
- H1-H6 heading structure
- Word count of main content
- Schema.org types present
- Internal/external link counts
- Images with/without alt text
- Open Graph and Twitter Card meta tags
- Response status code
- Whether the page has structured data
Phase 2: Parallel Subagent Delegation
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 (THL), every subagent follows it: 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 n/a, 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)
- Return two separate dimension scores: AI Citability (quotability/extractability) and Brand Authority (entity recognition), not one blended "AI visibility" number, since the composite weights them differently (25% vs 20%).
- Analyze content blocks for quotability by AI systems (citability scoring)
- Check AI crawler access via robots.txt and llms.txt presence (these also inform Technical GEO)
- Scan brand presence across YouTube, Reddit, Wikipedia, LinkedIn for the Brand Authority score
Subagent 2: Platform Optimization (geo-platform-analysis)
- Assess readiness for Google AI Overviews, ChatGPT, Perplexity, Gemini, Bing Copilot
- Check platform-specific ranking factors and optimization opportunities
Subagent 3: Technical GEO Infrastructure (geo-technical)
- Analyze robots.txt for AI crawler access
- Verify meta tags, headers, and technical accessibility for AI systems
- Check page speed, server-side rendering, and Core Web Vitals
- Assess security headers and mobile optimization
Subagent 4: Content E-E-A-T Quality (geo-content)
- Evaluate Experience, Expertise, Authoritativeness, Trustworthiness signals
- Check author bios, credentials, source citations
- Assess content freshness, depth, and originality
- Verify "About" page quality and team credentials
Subagent 5: Schema & Structured Data (geo-schema)
- Validate all schema.org markup
- Check for GEO-critical schema types (FAQ, HowTo, Organization, Product, Article)
- Assess schema completeness and accuracy
- Identify missing schema opportunities
Phase 3: Score Aggregation and Report Generation
Composite GEO Score Calculation
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 Interpretation
| 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 |
Issue Severity Classification
Every issue found during the audit is classified by severity:
Critical (Fix Immediately)
- All AI crawlers blocked in robots.txt
- No indexable content (JavaScript-rendered only with no SSR)
- Domain-level noindex directive
- Site returns 5xx errors on key pages
- Complete absence of any structured data
- Brand not recognized as an entity by any AI system
High (Fix Within 1 Week)
- Key AI crawlers (GPTBot, ClaudeBot, PerplexityBot) blocked
- No llms.txt file present
- Zero question-answering content blocks on key pages
- Missing Organization or LocalBusiness schema
- No author attribution on content pages
- All content behind login/paywall with no preview
Medium (Fix Within 1 Month)
- Partial AI crawler blocking (some allowed, some blocked)
- llms.txt exists but is incomplete or malformed
- Content blocks average under 50 citability score
- Missing FAQ schema on pages with FAQ content
- Thin author bios without credentials
- No Wikipedia or Reddit brand presence
Low (Optimize When Possible)
- Minor schema validation errors
- Some images missing alt text
- Content freshness issues on non-critical pages
- Missing Open Graph tags
- Suboptimal heading hierarchy on some pages
- LinkedIn company page exists but is incomplete
Output Format
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 `n/a` 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] |Quality Gates
- Page Limit: Never crawl more than 50 pages per audit. Prioritize high-value pages.
- Timeout: 30-second maximum per page fetch. Skip pages that exceed this.
- Robots.txt: Always check and respect robots.txt before crawling. Note any AI-specific directives.
- Rate Limiting: Wait at least 1 second between page fetches to avoid overloading the server.
- Error Handling: Log failed fetches but continue the audit. Report fetch failures in the appendix.
- Content Type: Only analyze HTML pages. Skip PDFs, images, and other binary content.
- Deduplication: Canonicalize URLs before crawling. Skip duplicate content (e.g., HTTP vs HTTPS, www vs non-www, trailing slashes).
Business-Type-Specific Audit Adjustments
SaaS Sites
- Extra weight on: Feature comparison tables (high citability), integration pages, documentation quality
- Check for: API documentation structure, changelog pages, knowledge base organization
- Key schema: SoftwareApplication, FAQPage, HowTo
Local Businesses
- Extra weight on: NAP consistency, Google Business Profile signals, local schema
- Check for: Service area pages, location-specific content, review markup
- Key schema: LocalBusiness, GeoCoordinates, OpeningHoursSpecification
E-commerce Sites
- Extra weight on: Product descriptions (citability), comparison content, buying guides
- Check for: Product schema completeness, review aggregation, FAQ sections on product pages
- Key schema: Product, AggregateRating, Offer, BreadcrumbList
Publishers
- Extra weight on: Article quality, author credentials, source citation practices
- Check for: Article schema, author pages, publication date freshness, original research
- Key schema: Article, NewsArticle, Person (author), ClaimReview
Agency/Services
- Extra weight on: Case studies (citability), expertise demonstration, thought leadership
- Check for: Portfolio schema, team credentials, industry-specific expertise signals
- Key schema: Organization, Service, Person (team), Review
Professional / financial services (YMYL)
- Extra weight on: displayed credentials (CFP/FChFP/degrees), regulatory IDs (AFSL / AR number / registration), named article authors, and trust/compliance pages (FSG, privacy, complaints).
- Check for: each practitioner has on-page credentials and a
Personnode; the firm uses the right LocalBusiness subtype (not bareOrganization); YMYL claims are sourced, not asserted. - Key schema:
FinancialService/ProfessionalService/LegalService/MedicalBusiness(the correct LocalBusiness subtype),Person(per adviser),FAQPage. - Entity reconciliation: identify the legal entity vs the trading/brand/domain name (they often differ) so the audit findings and the schema name one consistent entity.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

