AI search optimization analysis with actionable findings and gap analysis
npm install @houtini/geo-analyzerclaude_desktop_config.json:
json
{
"mcpServers": {
"geo-analyzer": {
"command": "npx",
"args": ["-y", "@houtini/geo-analyzer@latest"],
"env": {
"ANTHROPIC_API_KEY": "sk-ant-..."
}
}
}
}
`
Config locations:
- Windows: %APPDATA%\Claude\claude_desktop_config.json
- macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
- Linux: ~/.config/Claude/claude_desktop_config.json
Restart Claude Desktop after saving.
$3
- Node.js 20+
- Anthropic API key (console.anthropic.com)
Usage Examples
$3
`
Analyse https://example.com/article for "topic keywords"
`
The topic context helps score relevance but isn't required:
`
Analyse https://example.com/article
`
$3
Paste content for analysis (minimum 500 characters):
`
Analyse this content for "sim racing wheels":
[Your content here]
`
$3
Get condensed output without detailed recommendations:
`
Analyse https://example.com/article with output_format=summary
`
Output
$3
| 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 |
$3
Information Density:
- Word count with coverage prediction
- Optimal range: 800-1,500 words
- Pages under 1K words: ~61% AI coverage
- Pages over 3K words: ~13% AI coverage
Answer Frontloading:
- Claims and entities in first 100/300 words
- First claim position
- Score indicating answer immediacy
Claim Density:
- Target: 4+ claims per 100 words
- Extractable facts, statistics, measurements
Sentence Length:
- Target: 15-20 words average
- Matches Google's ~15.5 word chunk extraction
$3
Prioritised suggestions with:
- Specific locations in content
- Before/after examples
- Rationale based on research
Tools
$3
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 |
$3
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 |
Troubleshooting
"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.
Performance
- URL analysis: ~8-10 seconds
- Text analysis: ~5-7 seconds
- Cost: ~$0.14 per analysis (Sonnet 4.5)
Migration from v1.x
v2.0 removed external dependencies. Update your config:
Old (v1.x):
`json
{
"env": {
"GEO_WORKER_URL": "https://...",
"JINA_API_KEY": "jina_..."
}
}
`
New (v2.x):
`json
{
"env": {
"ANTHROPIC_API_KEY": "sk-ant-..."
}
}
`
Development
`bash
git clone https://github.com/houtini-ai/geo-analyzer.git
cd geo-analyzer
npm install
npm run build
``