Optimizes content for AI search engines like ChatGPT, Claude, Perplexity, and Google AI Overviews. Exposes two tools: analyze_url for live pages and analyze_text for pasted content. Both return extractability, readability, and citability scores based on claim density (facts per 100 words), answer frontloading (how quickly key info appears), semantic triples, and sentence structure. Uses Claude Sonnet 4.5 locally for semantic extraction. Built on MIT's GEO research showing 4+ claims per 100 words and 15-20 word sentences improve AI citation rates by 40%. Takes about 8 seconds per URL analysis at roughly $0.14 per run. Reach for this when you need measurable signals for whether AI systems will cite your content.
Content analysis for AI search visibility. Measures what actually matters for getting cited by ChatGPT, Claude, Perplexity, and Google AI Overviews.
Quick Navigation
What it does | Installation | Usage examples | Output | Tools | Troubleshooting | Research foundation
GEO Analyzer examines content for the signals AI systems use when selecting sources to cite:
The analysis runs locally using Claude Sonnet 4.5 for semantic extraction. No external services, no data leaving your machine.
Add to your claude_desktop_config.json:
{
"mcpServers": {
"geo-analyzer": {
"command": "npx",
"args": ["-y", "@houtini/geo-analyzer@latest"],
"env": {
"ANTHROPIC_API_KEY": "sk-ant-..."
}
}
}
}
Config locations:
%APPDATA%\Claude\claude_desktop_config.json~/Library/Application Support/Claude/claude_desktop_config.json~/.config/Claude/claude_desktop_config.jsonRestart Claude Desktop after saving.
Claude Code uses a different registration mechanism -- it doesn't read claude_desktop_config.json. Use claude mcp add instead:
claude mcp add -e ANTHROPIC_API_KEY=sk-ant-... -s user geo-analyzer -- npx -y @houtini/geo-analyzer@latest
Verify with:
claude mcp get geo-analyzer
You should see Status: Connected.
Analyse https://example.com/article for "topic keywords"
The topic context helps score relevance but isn't required:
Analyse https://example.com/article
Paste content for analysis (minimum 500 characters):
Analyse this content for "sim racing wheels":
[Your content here]
Get condensed output without detailed recommendations:
Analyse https://example.com/article with output_format=summary
| Score | Measures |
|---|---|
| Overall | Weighted average of all factors |
| Extractability | How easily AI can extract facts |
| Readability | Structure quality for AI parsing |
| Citability | How quotable and attributable |
Information Density:
Answer Frontloading:
Claim Density:
Sentence Length:
Prioritised suggestions with:
Fetches and analyses published web pages.
| Parameter | Required | Description |
|---|---|---|
url | Yes | URL to analyse |
query | No | Topic context for relevance scoring |
output_format | No | detailed (default) or summary |
Analyses pasted content directly.
| Parameter | Required | Description |
|---|---|---|
content | Yes | Text to analyse (min 500 chars) |
query | No | Topic context for relevance scoring |
output_format | No | detailed (default) or summary |
"ANTHROPIC_API_KEY is required"
Add your API key to the env section in config.
"Cannot find module" after config change Restart Claude Desktop completely.
"Content too short" Minimum 500 characters required for meaningful analysis.
Paywalled content returns errors The analyser can only access publicly available pages.
v2.0 removed external dependencies. Update your config:
Old (v1.x):
{
"env": {
"GEO_WORKER_URL": "https://...",
"JINA_API_KEY": "jina_..."
}
}
New (v2.x):
{
"env": {
"ANTHROPIC_API_KEY": "sk-ant-..."
}
}
git clone https://github.com/houtini-ai/geo-analyzer.git
cd geo-analyzer
npm install
npm run build
The analysis methodology draws from peer-reviewed research and empirical studies:
Aggarwal et al., "GEO: Generative Engine Optimization" - ACM SIGKDD
Key findings applied:
Empirical analysis of 7,060 queries and 2,275 pages
Key findings applied:
dejan.ai/blog/how-big-are-googles-grounding-chunks
dejan.ai/blog/googles-ranking-signals
MIT License - Houtini.ai
ANTHROPIC_API_KEY*secretAnthropic API key for Claude access
com.mcparmory/google-search
io.github.pipeworx-io/brave-search
marcopesani/mcp-server-serper
brave/brave-search-mcp-server
com.mcparmory/google-search-console
acamolese/google-search-console-mcp