GEO Audit Script
geo audit scores your website from 0 to 100 across five GEO dimensions and tells you exactly what to fix.
What It Checks
| Area | What is audited |
|---|---|
| robots.txt | 13 AI bots β are they allowed or missing? |
| llms.txt | Present at site root? Has content and links? |
| Schema JSON-LD | WebSite, WebApplication, FAQPage, Article detected? |
| Meta tags | Title, description, canonical, Open Graph |
| Content quality | Headings count, statistics, external citations |
Usage
# Standard audit
geo audit --url https://yoursite.com
# --verbose flag is coming soon (currently has no effect)
Flags
| Flag | Required | Description |
|---|---|---|
--url |
β Yes | Full URL of the site to audit (must include https://) |
--verbose |
No | Coming soon β currently has no effect |
Output Explained
Each line in the output maps to a specific check. Hereβs how to read it:
βΈ ROBOTS.TXT
+ β
GPTBot allowed (OpenAI β ChatGPT training)
+ β
OAI-SearchBot allowed (OpenAI β ChatGPT citations) β critical
- β ClaudeBot MISSING β critical
- β PerplexityBot MISSING β critical
+ β
Google-Extended allowed (Gemini + AI Overviews)
- β anthropic-ai MISSING
- β ChatGPT-User MISSING
βΈ LLMS.TXT
- β Not found at https://yoursite.com/llms.txt
βΈ SCHEMA JSON-LD
+ β
WebSite schema
- β FAQPage schema missing β next step
- β WebApplication schema missing
βΈ META TAGS
+ β
Title (62 chars)
+ β
Meta description (142 chars)
+ β
Canonical URL
- β Open Graph tags missing (og:title, og:image)
βΈ CONTENT QUALITY
+ β
18 headings
- β 1 statistic (target: 5+)
- β 0 external citations (target: 3+)
GEO Score Breakdown
The score is calculated from five weighted categories:
| Category | Max Points | How itβs scored |
|---|---|---|
| robots.txt | 20 | Full points if all 3 citation bots (OAI-SearchBot, ClaudeBot, PerplexityBot) are allowed; partial for other bots |
| llms.txt | 20 | 10pt for presence, 10pt for having H1, sections, and links |
| Schema JSON-LD | 25 | 10pt WebSite (essential), 10pt FAQPage (high value), 5pt WebApplication (bonus for tools) |
| Meta tags | 20 | 5pt each: title, description, canonical, OG tags |
| Content quality | 15 | 4pt for H1, 6pt for numerical statistics, 5pt for external citations |
Score bands:
| Score | Label | Meaning |
|---|---|---|
| 91β100 | π Excellent | Fully optimized for AI citations |
| 71β90 | β Good | Strong foundation, apply Princeton content methods |
| 41β70 | β οΈ Foundation | Core elements present, schema/content gaps remain |
| 0β40 | β Critical | Missing essential elements β start with robots.txt and llms.txt |
What Each β Means and How to Fix It
| Problem | Fix | Docs |
|---|---|---|
| AI bot MISSING in robots.txt | Add the botβs User-agent block with Allow: / |
AI Bots Reference |
| llms.txt not found | Generate with geo llms, place at site root |
Generating llms.txt |
| FAQPage schema missing | Generate with geo schema --type faq |
Schema Injector |
| WebSite schema missing | Generate with geo schema --type website |
Schema Injector |
| Meta description missing | Add <meta name="description" content="..."> to <head> |
β |
| Open Graph tags missing | Add og:title, og:description, og:image to <head> |
β |
| Low statistics count | Add specific numbers, %, dates to page content | GEO Methods |
| 0 external citations | Link to authoritative sources (papers, .gov, .edu) | GEO Methods |
Example Outputs
Score 55/100 β Unoptimized Site
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
GEO AUDIT β https://example.com
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β³ Fetching homepage... 200 OK | 22,418 bytes
βΈ ROBOTS.TXT βββββββββββββββββββββββββββββββββββββββββββββ
β
GPTBot allowed
β OAI-SearchBot MISSING β critical
β ClaudeBot MISSING β critical
β PerplexityBot MISSING β critical
β
Googlebot allowed
βΈ LLMS.TXT βββββββββββββββββββββββββββββββββββββββββββββββ
β Not found at https://example.com/llms.txt
βΈ SCHEMA JSON-LD βββββββββββββββββββββββββββββββββββββββββ
β
WebSite schema
β FAQPage schema missing
β WebApplication schema missing
βΈ META TAGS ββββββββββββββββββββββββββββββββββββββββββββββ
β
Title
β
Meta description
β Canonical URL missing
β Open Graph tags missing
βΈ CONTENT QUALITY ββββββββββββββββββββββββββββββββββββββββ
β
9 headings
β 1 statistic (target: 5+)
β 0 external citations (target: 3+)
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
GEO SCORE [ββββββββββββββββββββ] 55 / 100 β οΈ FOUNDATION
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Score 85/100 β Optimized Site
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
GEO AUDIT β https://example.com
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β³ Fetching homepage... 200 OK | 50,251 bytes
βΈ ROBOTS.TXT βββββββββββββββββββββββββββββββββββββββββββββ
β
GPTBot allowed (OpenAI β ChatGPT training)
β
OAI-SearchBot allowed (OpenAI β ChatGPT citations) β critical
β
ClaudeBot allowed (Anthropic β Claude) β critical
β
PerplexityBot allowed (Perplexity AI) β critical
β
Google-Extended allowed (Gemini + AI Overviews)
β
anthropic-ai allowed
β
ChatGPT-User allowed
β
All critical citation bots configured
βΈ LLMS.TXT βββββββββββββββββββββββββββββββββββββββββββββββ
β
Found (6,517 bytes Β· 46 links Β· 6 sections)
βΈ SCHEMA JSON-LD βββββββββββββββββββββββββββββββββββββββββ
β
WebSite schema
β
WebApplication schema
β οΈ FAQPage schema missing β next step
βΈ META TAGS ββββββββββββββββββββββββββββββββββββββββββββββ
β
Title Β· Meta description Β· Canonical Β· OG tags
βΈ CONTENT QUALITY ββββββββββββββββββββββββββββββββββββββββ
β
31 headings Β· 15 statistics Β· 2 external citations
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
GEO SCORE [ββββββββββββββββββββ] 85 / 100 β
GOOD
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
The missing FAQPage schema (β8pt) and one external citation (β2pt) are the gap between 85 and 100.