Check your website's visibility in AI search engines.
GEO (Generative Engine Optimization) is the next evolution of SEO β optimizing your content so AI search engines (ChatGPT, Perplexity, Gemini) can discover and cite your website.
GEO Analyzer scans your URL across multiple AI search engines and tells you:
- β Whether your site is mentioned in AI responses
- π Whether your site is cited with a URL
- π Where in the response you appear (early = better)
- π― Your overall visibility score (0-100, grade A-F)
Traditional SEO is no longer enough. The way people search is fundamentally changing.
In 2025, 40%+ of information queries start in AI search engines like ChatGPT, Perplexity, and Gemini instead of Google. These AI engines don't return a list of 10 blue links β they synthesize a single answer from multiple sources, and your site may or may not be included.
Here's why traditional SEO falls short in the AI era:
| Traditional SEO | GEO (AI Search) | |
|---|---|---|
| How it works | Ranks pages by backlinks, keywords, authority | AI reads & synthesizes content from many sources |
| What users see | List of 10 links β user clicks through | A single generated answer β user may never click |
| Citation | Your URL appears as a search result | Your URL may be cited inline β or not at all |
| Position | Page 1 rank #1-#10 | Early/middle/late mention in AI response |
| Optimization | Meta tags, backlinks, keyword density | Structured data, factual authority, clear claims |
The problem: You can rank #1 on Google but be completely invisible to ChatGPT. GEO Analyzer tells you exactly where you stand in AI search β and how to improve.
GEO Analyzer is currently GitHub-first. PyPI publishing is paused for now.
pipx install git+https://github.com/coldxiangyu163/geo-analyzer.gitThis installs geo-analyzer as an isolated CLI and is the easiest way to use it globally.
pip install git+https://github.com/coldxiangyu163/geo-analyzer.gitgit clone https://github.com/coldxiangyu163/geo-analyzer.git
cd geo-analyzer
pip install -e .# Install from GitHub
pipx install git+https://github.com/coldxiangyu163/geo-analyzer.git
# Set at least one API key
export OPENAI_API_KEY=sk-...
export PERPLEXITY_API_KEY=pplx-...
export GEMINI_API_KEY=AI...
# Scan your website
geo-analyzer scan https://yoursite.com -k "your product, your brand"$ geo-analyzer scan https://promptvault.dev -k "AI art prompts, prompt gallery"Expected output:
π GEO Analysis: https://promptvault.dev Grade: B Score: 62/100
π Keywords: AI art prompts, prompt gallery
βββββββββββββββ¬βββββββββββββββββββ¬ββββββββ¬βββββββββββββββββββββββββββββββββββββββ
β Engine β Keyword β Score β Status β
βββββββββββββββΌβββββββββββββββββββΌββββββββΌβββββββββββββββββββββββββββββββββββββββ€
β ChatGPT β AI art prompts β 75 β β
Mentioned | π Cited | π early β
β ChatGPT β prompt gallery β 55 β β
Mentioned | β οΈ No URL | π middleβ
β Perplexity β AI art prompts β 80 β β
Mentioned | π Cited | π early β
β Perplexity β prompt gallery β 30 β β
Mentioned | β οΈ No URL | π late β
β Gemini β AI art prompts β 55 β β
Mentioned | π Cited | π middle β
β Gemini β prompt gallery β 0 β β Not mentioned β
βββββββββββββββ΄βββββββββββββββββββ΄ββββββββ΄βββββββββββββββββββββββββββββββββββββββ
π Summary: Mentioned in 5/6 queries, Cited in 3/6 queries
π‘ Suggestions:
1. Add FAQ schema markup to improve Gemini visibility
2. Include more direct claims about "prompt gallery" for citation
3. Add JSON-LD structured data for better AI comprehension
$ geo-analyzer compare https://promptvault.dev https://competitor.com -k "AI art prompts"Expected output:
βοΈ Competitor Comparison: "AI art prompts"
βββββββββββββββ¬βββββββββββββββββββββββββββ¬βββββββββββββββββββββββββββ
β Engine β promptvault.dev β competitor.com β
βββββββββββββββΌβββββββββββββββββββββββββββΌβββββββββββββββββββββββββββ€
β ChatGPT β π’ 75 Cited, early β π‘ 40 Mentioned, late β
β Perplexity β π’ 80 Cited, early β π’ 70 Cited, middle β
β Gemini β π‘ 55 Cited, middle β π΄ 0 Not mentioned β
βββββββββββββββΌβββββββββββββββββββββββββββΌβββββββββββββββββββββββββββ€
β Average β π 70 Grade: B β 37 Grade: D β
βββββββββββββββ΄βββββββββββββββββββββββββββ΄βββββββββββββββββββββββββββ
β
You lead on 3/3 engines for "AI art prompts"
$ geo-analyzer history https://promptvault.dev -k "AI art prompts" --trendExpected output:
π Visibility History: https://promptvault.dev β "AI art prompts"
ββββββββββββββ¬ββββββββ¬ββββββββ¬βββββββββ
β Date β Score β Grade β Trend β
ββββββββββββββΌββββββββΌββββββββΌβββββββββ€
β 2026-02-28 β 45 β C β β β
β 2026-03-01 β 58 β C β β 13 β
β 2026-03-02 β 62 β B β β 4 β
ββββββββββββββ΄ββββββββ΄ββββββββ΄βββββββββ
π Trend: +17 points over 3 scans (β improving)
π‘ Your structured data changes on 03-01 correlated with the biggest jump.
# Scan a URL
geo-analyzer scan <url> -k "keyword1, keyword2"
# Use specific engines only
geo-analyzer scan <url> -k "keyword" -e chatgpt,perplexity
# JSON output
geo-analyzer scan <url> -k "keyword" -o json
# Compare two competing URLs
geo-analyzer compare <url1> <url2> -k "keyword1, keyword2"
# View scan history & trends
geo-analyzer history <url>
geo-analyzer history <url> -k "keyword" --trend
# Batch scan: multi-URL Γ multi-keyword matrix
geo-analyzer batch -u "url1,url2" -k "kw1,kw2"
geo-analyzer batch -f urls.txt -k "kw1,kw2" -o json
# Check which engines are configured
geo-analyzer enginesgeo_analyzer/
βββ cli.py # Click-based CLI entry point (scan, compare, history, batch, engines)
βββ scanner.py # Core scanning orchestrator β dispatches queries to engines
βββ scorer.py # Scoring algorithm: mention + citation + position + accuracy β 0-100
βββ reporter.py # Rich-powered terminal output (tables, colors, grades)
βββ advisor.py # GEO optimization suggestions based on scan results
βββ comparator.py # Side-by-side competitor comparison logic
βββ storage.py # SQLite-based local storage for scan history & trends
βββ batch.py # Multi-URL Γ multi-keyword batch scanning
βββ config.py # API key management & engine configuration
βββ engines/
β βββ base.py # Abstract base class for engine adapters
β βββ chatgpt.py # OpenAI ChatGPT adapter (GPT-4o + web browsing)
β βββ perplexity.py # Perplexity API adapter (with source citations)
β βββ gemini.py # Google Gemini adapter (Gemini Pro)
βββ __main__.py # `python -m geo_analyzer` support
Data flow:
User CLI Input β Scanner β Engine Adapters β Raw AI Responses
β
Reporter β Scorer β Response Analysis (mention/cite/position)
β β
Terminal Output Storage (SQLite) β History & Trends
β
Advisor β Optimization Suggestions
| Engine | Environment Variable | Get Key |
|---|---|---|
| ChatGPT | OPENAI_API_KEY |
platform.openai.com |
| Perplexity | PERPLEXITY_API_KEY |
perplexity.ai/settings/api |
| Gemini | GEMINI_API_KEY |
aistudio.google.com |
Each query is scored 0-100:
| Factor | Points | Description |
|---|---|---|
| Mentioned | 30 | Is your site mentioned in the AI response? |
| Cited | 25 | Is there a direct URL link to your site? |
| Position | 25 | Where? Early (25) > Middle (15) > Late (5) |
| Accuracy | 20 | How accurately is your site described? |
Grades: A (80+) Β· B (60-79) Β· C (40-59) Β· D (20-39) Β· F (<20)
- CLI skeleton + scoring algorithm
- ChatGPT, Perplexity, Gemini engine adapters
- GEO optimization suggestions
- Competitor comparison (
geo-analyzer compare) - Historical tracking (
geo-analyzer history) - Batch scanning (
geo-analyzer batch) - MCP Server integration
- Web dashboard
MIT