GEO Optimizer
Generative Engine Optimization (GEO) for AI search visibility.
What is GEO?
GEO is NOT traditional SEO. AI search engines (ChatGPT, Perplexity, Claude, Gemini) work fundamentally differently:
They fetch raw HTML - Many don't render JavaScript They have size limits - Crawlers abandon pages >1MB HTML They evaluate confidence - Hedged language ("maybe", "possibly") ranks 3x lower than confident assertions They need machine-readable metadata - AgentFacts/NANDA protocol for AI agent discovery Quick Audit Workflow 1. Technical Visibility Check
Run full GEO audit
python3 ${CLAUDE_SKILL_DIR}/scripts/audit-geo.py https://example.com
Check HTML size and JS dependency
curl -sI https://example.com | grep -i content-length
- Content Authority Analysis
Check hedge density of your content
python3 ${CLAUDE_SKILL_DIR}/scripts/check-hedge-density.py --url https://example.com/blog/post
Or analyze text directly
python3 ${CLAUDE_SKILL_DIR}/scripts/check-hedge-density.py --text "Your content here"
- Agent Infrastructure Setup
Generate AgentFacts schema for your domain
python3 ${CLAUDE_SKILL_DIR}/scripts/generate-agentfacts.py \ --domain example.com \ --agent-name "Example Service" \ --capabilities text,image \ --output /.well-known/agent-facts
Core Metrics Hedge Density Score
Measures uncertainty language in content. Target: <0.2%
Hedge words to avoid:
maybe, possibly, perhaps, might, could be however, although, it seems, arguably some believe, it appears, potentially
Why it matters: Research shows confident citations rank 3x higher in AI responses. Every hedge word signals uncertainty to LLMs.
See: references/hedge-density.md
HTML Size Budget
Maximum: 1MB raw HTML. Above this threshold:
18% of pages abandoned by crawlers Content truncation risks Slower indexing
Check with: curl -sI URL | grep content-length
See: references/technical-visibility.md
JS Dependency Risk
AI crawlers vary in JavaScript rendering:
Rendering crawlers: GPTBot, PerplexityBot (sometimes) Non-rendering: ClaudeBot, many others
If your content requires JS to display, you're invisible to ~40% of AI crawlers.
Discovery Gap
Startups face a "recency wall" - 30:1 visibility disadvantage vs established domains:
Site Age Visibility Strategy <2 years ~3.3% Web-augmented: Reddit, referring domains 2+ years ~99% GEO content: entity density, hedge reduction
See: references/discovery-strategies.md
AgentFacts Setup
The NANDA protocol provides machine-readable metadata for AI agent discovery. Place at /.well-known/agent-facts:
{ "@context": "https://nanda.dev/ns/agent-facts/v1", "id": "nanda:example.com", "agent_name": "urn:agent:example:com", "endpoints": { "static": ["https://api.example.com/v1/agent"] }, "capabilities": { "modalities": ["text"], "authentication": { "methods": ["oauth2", "jwt"] } }, "trust": { "certification": "self-attested", "human_oversight": "true" } }
See: references/agentfacts-schema.md
Audit Report Sections
A complete GEO audit covers:
Technical Visibility
HTML payload size (target: <1MB) JS dependency assessment Crawler accessibility
Content Authority
Hedge density score (target: <0.2%) Confidence assessment Entity density
Discovery Strategy
Site age analysis Recency wall detection Recommended approach
Agent Infrastructure
AgentFacts presence Schema validation NANDA compliance Scripts Script Purpose audit-geo.py Full GEO audit for a URL check-hedge-density.py Analyze content confidence generate-agentfacts.py Create NANDA-compliant schema Reference Documentation File Contents hedge-density.md Confidence scoring methodology agentfacts-schema.md NANDA protocol specification technical-visibility.md Crawler behavior & limits discovery-strategies.md Startup vs incumbent approaches Example Commands
Full audit with report
python3 ${CLAUDE_SKILL_DIR}/scripts/audit-geo.py https://mysite.com --output report.md
Quick hedge check
python3 ${CLAUDE_SKILL_DIR}/scripts/check-hedge-density.py --url https://mysite.com/about
Generate AgentFacts for SaaS
python3 ${CLAUDE_SKILL_DIR}/scripts/generate-agentfacts.py \ --domain myapp.com \ --agent-name "MyApp AI" \ --capabilities text \ --auth oauth2,apikey
Key Takeaways GEO != SEO - Different crawlers, different rules Confidence wins - Hedge density <0.2% is the target Size matters - Stay under 1MB HTML JS is risky - Content must work without rendering Age affects strategy - Startups need web-augmented signals AgentFacts is future-proofing - Implement NANDA now