Geo Analyzer

io.github.houtini-aiPublished by GitHub account houtini-aiv3.0.5Updated Oct 24, 2026

Scores content on the signals that get it cited by ChatGPT, Perplexity and AI Overviews

Overview

AI-generated overview

Scores web pages or pasted text on the content signals that make AI assistants cite them, using Claude for semantic analysis.

What you can do
GEO Analyzer examines content for signals AI systems use when choosing sources to cite: claim density, information density, answer frontloading, semantic triples, entity recognition and sentence structure. It returns 0-10 scores for overall quality, extractability, readability and citability, plus key metrics and prioritised recommendations with before/after examples. Two tools are provided: analyze_url fetches and analyses a published page, and analyze_text analyses pasted content of at least 500 characters. A summary output format gives condensed results without detailed recommendations.
When to use it
Useful when you want to check whether an article, landing page or draft is likely to be quoted by ChatGPT, Claude, Perplexity or Google AI Overviews, and to get concrete suggestions for improving extractability and citability. It suits content and SEO work rather than general writing assistance.
Requirements
Runs locally as an npm package (npx @houtini/geo-analyzer) and needs Node.js 20 or newer. Requires an Anthropic API key supplied through the ANTHROPIC_API_KEY environment variable. Desktop-only, configured in Claude Desktop or registered with Claude Code. Network access is needed to fetch analysed URLs.
Before you install
The README marks the project as deprecated and no longer maintained, and directs users to a successor package. Each analysis calls the Anthropic API and is billed to your own key, at roughly $0.14 per analysis according to the README. The ANTHROPIC_API_KEY secret is stored in the client configuration file. Analysed page content is sent to Anthropic for semantic extraction; paywalled pages cannot be accessed.

Installation

In SourceWeft

  1. Open Geo Analyzer in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

[!WARNING] Deprecated and no longer maintained. GEO Analyzer's AI-search content analysis has been consolidated into SEO Audit Console (npm i @houtini/seo-audit-console) — which scores AI-Overview citation, passage relevance, agent readiness and content extractability alongside a full technical SEO audit, all in one MCP. Please migrate there.


GEO Analyzer

[npm version] [MCP Registry] [Known Vulnerabilities] [License: MIT]

Content analysis for AI search visibility. Measures what actually matters for getting cited by ChatGPT, Claude, Perplexity, and Google AI Overviews.

[GEO Analyzer MCP server]

Quick Navigation

What it does | Installation | Usage examples | Output | Tools | Troubleshooting | Research foundation

What It Does

GEO Analyzer examines content for the signals AI systems use when selecting sources to cite:

  • Claim Density - Extractable facts per 100 words
  • Information Density - Word count vs predicted AI coverage
  • Answer Frontloading - How quickly key information appears
  • Semantic Triples - Structured (subject, predicate, object) relationships
  • Entity Recognition - Named entities AI can reference
  • Sentence Structure - Optimal length for AI parsing

The analysis runs locally using Claude Sonnet 4.5 for semantic extraction. No external services, no data leaving your machine.

Installation

Claude Desktop

Add to your claude_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.

Claude Code (CLI)

Claude Code uses a different registration mechanism -- it doesn't read claude_desktop_config.json. Use claude mcp add instead:

bash
claude mcp add -e ANTHROPIC_API_KEY=sk-ant-... -s user geo-analyzer -- npx -y @houtini/geo-analyzer@latest

Verify with:

bash
claude mcp get geo-analyzer

You should see Status: Connected.

Requirements

Usage Examples

Analyse a Published URL

Analyse https://example.com/article for "topic keywords"

The topic context helps score relevance but isn't required:

Analyse https://example.com/article

Analyse Text Directly

Paste content for analysis (minimum 500 characters):

Analyse this content for "sim racing wheels":
[Your content here]

Summary Mode

Get condensed output without detailed recommendations:

Analyse https://example.com/article with output_format=summary

Output

Scores (0-10)

ScoreMeasures
OverallWeighted average of all factors
ExtractabilityHow easily AI can extract facts
ReadabilityStructure quality for AI parsing
CitabilityHow quotable and attributable

Key Metrics

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

Recommendations

Prioritised suggestions with:

  • Specific locations in content
  • Before/after examples
  • Rationale based on research

Tools

analyze_url

Fetches and analyses published web pages.

ParameterRequiredDescription
urlYesURL to analyse
queryNoTopic context for relevance scoring
output_formatNodetailed (default) or summary

analyze_text

Analyses pasted content directly.

ParameterRequiredDescription
contentYesText to analyse (min 500 chars)
queryNoTopic context for relevance scoring
output_formatNodetailed (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.gitcd geo-analyzernpm installnpm run build

Research Foundation

The analysis methodology draws from peer-reviewed research and empirical studies:

MIT GEO Paper (2024)

Aggarwal et al., "GEO: Generative Engine Optimization" - ACM SIGKDD

Key findings applied:

  • Claim density target of 4+ per 100 words
  • Optimal sentence length of 15-20 words
  • 40% improvement in AI citation rates with extractability focus

arxiv.org/abs/2311.09735

Dejan AI Grounding Research (2025)

Empirical analysis of 7,060 queries and 2,275 pages

Key findings applied:

  • ~2,000 word total grounding budget per query
  • Rank #1 source gets 531 words (28% of budget)
  • Rank #5 source gets 266 words (13% of budget)
  • Average extraction chunk: 15.5 words
  • Pages <1K words: 61% coverage
  • Pages 3K+ words: 13% coverage

dejan.ai/blog/how-big-are-googles-grounding-chunks
dejan.ai/blog/googles-ranking-signals


MIT License - Houtini.ai

Source: README.md at commit 62910ed

Tools

0
SourceWeft has not started this package in its sandbox yet, so its tools are not known.

Version history

1
  1. v3.0.5LatestSep 16, 2026

Score

50% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts

    Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.

  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listed15 pts

    Answer tools/list without a credential, or ship a package that starts in a sandbox without one.

  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts