https://github.com/alexpospekhov/searchstack-aeo
Searchstack — Open-source AEO/GEO/SEO tech stack for AI-native founders. Monitor your visibility across Google, AI Overviews, ChatGPT, Perplexity, Claude & Grok from one CLI. 22 commands, 9 APIs, llms.txt generator, Markdown reports, cron-ready.
https://github.com/alexpospekhov/searchstack-aeo
aeo ai-search backlinks chatgpt cli geo google-ai-overview google-search-console grok indexnow keyword-research llms-txt ollama perplexity python seo seo-tools serp
Last synced: 8 days ago
JSON representation
Searchstack — Open-source AEO/GEO/SEO tech stack for AI-native founders. Monitor your visibility across Google, AI Overviews, ChatGPT, Perplexity, Claude & Grok from one CLI. 22 commands, 9 APIs, llms.txt generator, Markdown reports, cron-ready.
- Host: GitHub
- URL: https://github.com/alexpospekhov/searchstack-aeo
- Owner: alexpospekhov
- License: mit
- Created: 2026-04-01T08:11:10.000Z (4 months ago)
- Default Branch: main
- Last Pushed: 2026-04-01T08:54:29.000Z (4 months ago)
- Last Synced: 2026-04-01T10:23:43.692Z (4 months ago)
- Topics: aeo, ai-search, backlinks, chatgpt, cli, geo, google-ai-overview, google-search-console, grok, indexnow, keyword-research, llms-txt, ollama, perplexity, python, seo, seo-tools, serp
- Language: Python
- Homepage: https://github.com/alexpospekhov/searchstack-aeo#readme
- Size: 15.6 MB
- Stars: 1
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-geo - Searchstack AEO
README
# Searchstack — AEO/GEO/SEO for AI-native founders
> Open-source AEO / GEO / SEO tech stack for AI-native founders.
[](https://pypi.org/project/searchstack/)
[](https://www.python.org/downloads/)
[](LICENSE)
Monitor your visibility across Google, AI Overviews, ChatGPT, Perplexity & Claude — from one CLI.
## Who is this for
- **AI-native founders** — you're building a product and need to be visible in both Google AND AI search, but don't have $400/mo for Semrush
- **Indie hackers & solo devs** — you ship content, want to know if it's working, and prefer CLI over dashboards
- **SEO-aware engineers** — you understand technical SEO but need a tool that also covers the new AEO/GEO landscape
- **Agency operators** — you manage SEO for multiple clients and need automated reports you can schedule and pipe to Slack
If you've ever wondered *"Does ChatGPT know my product exists?"* — this tool answers that question.
---
## searchstack vs The Rest
| Feature | searchstack | Ahrefs ($99+/mo) | Semrush ($130+/mo) | Free tools |
|---------|:-----------:|:-----------------:|:-------------------:|:----------:|
| Google rankings (GSC) | ✅ | ✅ | ✅ | ✅ GSC only |
| Keyword research | ✅ | ✅ | ✅ | ❌ |
| Backlink analysis | ✅ | ✅ | ✅ | ❌ |
| Technical audit | ✅ | ✅ | ✅ | Partial |
| **ChatGPT citation check** | ✅ | ❌ | ❌ | ❌ |
| **Perplexity citation check** | ✅ | ❌ | ❌ | ❌ |
| **Claude citation check** | ✅ | ❌ | ❌ | ❌ |
| **Grok (xAI) citation check** | ✅ | ❌ | ❌ | ❌ |
| **Local LLM check (Ollama)** | ✅ | ❌ | ❌ | ❌ |
| **Google AI Overview monitor** | ✅ | ❌ | ❌ | ❌ |
| **AI referral tracking** | ✅ | ❌ | ❌ | ❌ |
| CLI / scriptable | ✅ | ❌ | ❌ | ❌ |
| Cron / server deploy | ✅ | ❌ | ❌ | ❌ |
| Markdown reports | ✅ | ❌ PDF only | ❌ PDF only | ❌ |
| Open source | ✅ | ❌ | ❌ | Varies |
| Monthly cost | **~$5** | $99-999 | $130-500 | $0 (limited) |
The bottom 5 rows are what no existing tool does. That's why searchstack exists.
---
### What's inside
- **AEO Monitor** — check if ChatGPT, Perplexity, Claude, Grok, and **local models (Ollama/Qwen/Llama)** cite your site when users ask about your niche
- **GEO Monitor** — track Google AI Overview: who gets cited for your target keywords (and whether it's you)
- **Google Search Console** — rankings, clicks, impressions, CTR, indexing status, sitemap health
- **Keyword Research** — suggestions, volumes, competitor overlap, keyword gaps (DataForSEO)
- **Position Tracking** — compare rankings over time, detect improvements and drops
- **Backlink Analysis** — your profile + competitor backlinks, referring domains, domain rank
- **Technical Audit** — meta tags, JSON-LD validation, internal linking, orphan pages, on-page scoring
- **Traffic Analytics** — Plausible integration with AI referral breakdown (chatgpt.com, perplexity.ai, claude.ai)
- **Search Submission** — IndexNow (instant Bing/Yandex), Bing Webmaster, GSC sitemap resubmit
- **llms.txt Generator** — `searchstack llms generate` creates llms.txt + llms-full.txt from your sitemap following the [llmstxt.org](https://llmstxt.org) spec. Validate with `searchstack llms validate`.
- **Content Monitor** — `searchstack monitor` shows per-page performance: rankings, clicks, indexing status, keyword tracking, changes since last check.
- **SEO Audit** — `searchstack audit` combines GSC data with keyword volumes, calculates opportunity scores, finds content gaps.
- **Markdown Reports** — `searchstack report` generates a full 14-section .md file with executive summary and auto-recommendations. Run it monthly, diff the results, track progress over time.
- **Local LLM Support** — run AEO checks against Ollama, LM Studio, vLLM, or any OpenAI-compatible local model. Test how open-source models (Qwen, Llama, Mistral, Gemma) represent your brand — completely free, no API keys, runs offline.
- **Cron-ready** — pure CLI, no GUI, no browser. Deploy on any server, schedule via cron (`0 8 * * 1 searchstack report`), pipe output to Slack/email. Built for automation.
**22 commands. 10 API integrations (5 cloud AI + local LLMs). One config file. Runs anywhere Python runs.**
```
$ searchstack ai
Checking AI citations for example.com...
ChatGPT (gpt-4o-mini):
"What is the best tool for X?" ✅ CITED
"How to solve Y?" ❌ not cited
"Top Z software in 2026" ✅ CITED
Perplexity (sonar):
"What is the best tool for X?" ✅ CITED → https://example.com/guide
"How to solve Y?" ✅ CITED → https://example.com/docs
"Top Z software in 2026" ❌ not cited
Claude (haiku):
"What is the best tool for X?" ❌ not cited
"How to solve Y?" ❌ not cited
"Top Z software in 2026" ❌ not cited
Summary: ChatGPT 2/3 | Perplexity 2/3 | Claude 0/3
Saved: ~/.searchstack/snapshots/ai_citations_20260401_1200.json
```
---
## Try it free (no API keys needed)
These commands work with zero configuration — they just crawl your sitemap:
```bash
pip install searchstack
# Check meta tags on all your pages
searchstack meta
# Validate JSON-LD structured data
searchstack schema
# Find orphan pages (no internal links)
searchstack links
# Full on-page SEO score for any URL
searchstack onpage https://yoursite.com/pricing
```
No API keys. No accounts. No config file. Just install and run.
---
## The Problem
Google page 1 isn't enough anymore. **60% of Google searches now show an AI Overview** that answers the query directly. ChatGPT and Perplexity are becoming primary search tools for millions of users.
Ahrefs and Semrush cost $100-400/mo and **track none of this**.
searchstack covers all three search layers for ~$5/mo:
| Layer | What it is | What searchstack does |
|-------|-----------|----------------------|
| **SEO** | Google organic rankings | GSC positions, keywords, competitors, technical audit |
| **AEO** | AI chatbot visibility | Checks if ChatGPT, Perplexity, Claude cite you |
| **GEO** | Google AI Overview | Monitors who Google's AI cites for your keywords |
---
## Quick Start
```bash
pip install searchstack
```
Create `.searchstack.toml`:
```toml
domain = "yoursite.com"
sitemap = "https://yoursite.com/sitemap.xml"
[dataforseo]
login = "you@email.com"
password = "api-password"
[openai]
api_key = "sk-..."
[perplexity]
api_key = "pplx-..."
```
Run:
```bash
searchstack ai # are AI chatbots citing you?
searchstack geo # does Google AI Overview cite you?
searchstack gsc # your Google rankings
searchstack report # full 14-section Markdown report
```
See [Services Setup Guide](docs/SERVICES.md) for connecting all 9 services step by step.
---
## Commands
### AEO / GEO — AI Search Visibility
```bash
searchstack ai # citation check: ChatGPT + Perplexity + Claude + Grok
searchstack ai chatgpt # ChatGPT only
searchstack ai perplexity # Perplexity only
searchstack ai claude # Claude only
searchstack ai grok # Grok (xAI) only
searchstack ai ollama # local model (Ollama/LM Studio/vLLM)
searchstack geo # Google AI Overview for all target keywords
searchstack geo "your keyword" # single keyword check
searchstack llms generate # generate llms.txt + llms-full.txt from your sitemap
searchstack llms validate # validate existing llms.txt against spec
searchstack llms check # check if your site has AI-ready files
```
### SEO — Google Rankings & Research
```bash
searchstack gsc # top queries with clicks, impressions, CTR, position
searchstack gsc pages-perf # top pages
searchstack gsc trend # daily trend
searchstack gsc inspect # check if URL is indexed
searchstack keywords "phrase" # keyword suggestions with volumes
searchstack competitors # your ranked keywords vs competitors
searchstack gaps # high-volume keywords where you rank poorly
searchstack serp "query" # live SERP top-10
searchstack track # position changes since last check
searchstack bulk domain1 domain2 # competitor traffic comparison
searchstack backlinks # your backlink profile
searchstack backlinks competitor.com # competitor's backlinks
```
### Technical Audit — Site Health
```bash
searchstack meta # title/description length check
searchstack schema # JSON-LD structured data validation
searchstack links # internal linking + orphan page detection
searchstack onpage # full on-page SEO score
searchstack pages # indexing status of all sitemap URLs
```
### Traffic & Submission
```bash
searchstack traffic # Plausible analytics + AI referral tracking
searchstack indexnow # submit URLs to Bing + Yandex instantly
searchstack bing # Bing Webmaster stats
searchstack bing submit # submit URLs to Bing
searchstack gsc resubmit # resubmit sitemap to Google
```
### Dashboards & Reporting
```bash
searchstack monitor # site health: traffic + rankings + indexing per page
searchstack audit # full SEO audit with keyword volumes + opportunity scores
searchstack report # full Markdown report (14 sections)
```
---
## Services
9 integrations. None required — each command gracefully skips unavailable services.
| # | Service | Cost | What it unlocks |
|---|---------|------|----------------|
| 1 | **[Google Search Console](https://search.google.com/search-console)** | Free | Rankings, clicks, indexing status |
| 2 | **[DataForSEO](https://dataforseo.com)** | $50 prepaid | Keywords, SERP, AI Overview, backlinks |
| 3 | **[OpenAI](https://platform.openai.com)** | ~$0.001/query | ChatGPT citation check |
| 4 | **[Perplexity](https://docs.perplexity.ai)** | ~$0.005/query | Perplexity citation check (best — returns source URLs) |
| 5 | **[Anthropic](https://console.anthropic.com)** | ~$0.001/query | Claude citation check |
| 6 | **[xAI](https://console.x.ai)** | ~$0.002/query | Grok citation check |
| 7 | **[Plausible](https://plausible.io)** | $9/mo | Traffic analytics, AI referral tracking |
| 8 | **[Bing Webmaster](https://www.bing.com/webmasters)** | Free | Bing stats, URL submission |
| 9 | **[IndexNow](https://www.indexnow.org)** | Free | Instant Bing/Yandex notification |
| 10 | **[Ollama](https://ollama.com)** / any local LLM | Free | Test local models (Qwen, Llama, Mistral, Gemma) |
**Why Bing matters:** ChatGPT Search, Perplexity, and Microsoft Copilot all use Bing as their search backend. If you're not in Bing, you're invisible to 3 major AI search products.
### Local LLM setup (Ollama, LM Studio, vLLM)
Run AEO checks against local models — free, offline, no API keys:
```bash
# 1. Install Ollama and pull a model
brew install ollama
ollama pull qwen3:8b
# 2. Add to .searchstack.toml
# [ollama]
# base_url = "http://localhost:11434/v1"
# model = "qwen3:8b"
# 3. Run
searchstack ai ollama
```
Works with any OpenAI-compatible server:
| Server | Config `base_url` | Notes |
|--------|------------------|-------|
| **Ollama** | `http://localhost:11434/v1` | Default, easiest setup |
| **LM Studio** | `http://localhost:1234/v1` | GUI for managing models |
| **vLLM** | `http://localhost:8000/v1` | Production-grade serving |
| **llama.cpp** | `http://localhost:8080/v1` | Lightweight C++ server |
| **LocalAI** | `http://localhost:8080/v1` | Drop-in OpenAI replacement |
**Why test local models?** Open-source LLMs (Qwen, Llama, Mistral, Gemma) are increasingly used in products, search tools, and agents. Knowing how they represent your brand helps you optimize content for the entire AI ecosystem — not just the big 4.
Monthly cost: **$5-10** for full daily monitoring, **$1-2** for weekly AEO/GEO only, **$0** for GSC + technical audit.
---
## Report
`searchstack report` generates a Markdown file with:
| # | Section | Source |
|---|---------|--------|
| 1 | Executive Summary | All |
| 2 | Traffic (30 days) | Plausible |
| 3 | Search Queries | GSC |
| 4 | Google AI Overview visibility | DataForSEO |
| 5 | AI chatbot citations | OpenAI, Perplexity, Anthropic, xAI |
| 6 | Google positions | DataForSEO |
| 7 | Competitor traffic | DataForSEO |
| 8 | Indexing status | GSC |
| 9 | Backlinks | DataForSEO |
| 10 | Keyword gaps | DataForSEO |
| 11 | Position changes | DataForSEO (vs snapshot) |
| 12 | Meta issues | Sitemap crawl |
| 13 | Orphan pages | Sitemap crawl |
| 14 | Recommendations | Auto-generated |
### Sample report output
Click to expand a report fragment
```markdown
# SEO/AEO/GEO Report — 01-04-2026
> yoursite.com | Generated 2026-04-01 09:00
## Executive Summary
| Metric | Value |
|--------|-------|
| Visitors (30 days) | **1,247** |
| Google AI cites us | **0** times |
| Backlinks | 89 (from 23 domains) |
| Keyword gaps (not in top-10) | 12 |
| Positions: improved / declined | 5 / 2 |
**Status:** 🟡 Growing
## 3. Google AI Overview visibility (GEO)
- Keywords checked: 23
- AI Overview present: 18/23
- **AI cites us: 0**
- Organic top-10: 7
### Top Cited (instead of us)
| Domain | Times cited |
|--------|------------|
| competitor1.com | 8 |
| competitor2.com | 5 |
| wikipedia.org | 4 |
## 4. AI chatbot citations (AEO)
- ✅ **ChatGPT**: 3/8 queries cite us
- ✅ **Perplexity**: 5/8 queries cite us
- ❌ **Claude**: 0/8 queries cite us
## Recommendations
- 🤖 **Google AI never cites us** — improve citation-ready content
- 🎯 **12 keyword gaps** — update existing articles for these queries
- 🔗 **Low backlinks (23 domains)** — need outreach campaign
```
---
## Configuration
All keys via `.searchstack.toml` or environment variables (env vars take priority):
```bash
export DATAFORSEO_LOGIN="email" export DATAFORSEO_PASSWORD="pass"
export OPENAI_API_KEY="sk-..." export PERPLEXITY_API_KEY="pplx-..."
export ANTHROPIC_API_KEY="sk-ant-..." export XAI_API_KEY="xai-..."
export PLAUSIBLE_API_KEY="key" export BING_WEBMASTER_API_KEY="key"
```
Full config template: [docs/SERVICES.md](docs/SERVICES.md#full-config-file-template)
---
## Architecture
```
src/searchstack/
├── cli.py # argparse entry point
├── config.py # .searchstack.toml + env loading
├── snapshots.py # JSON snapshot save/load/compare
├── providers/ # API clients (one per service)
│ ├── gsc.py # Google Search Console
│ ├── dataforseo.py # DataForSEO
│ ├── plausible.py # Plausible Analytics
│ ├── bing.py # Bing Webmaster
│ ├── openai.py # OpenAI (ChatGPT)
│ ├── perplexity.py # Perplexity
│ ├── anthropic.py # Anthropic (Claude)
│ ├── grok.py # Grok (xAI)
│ └── google_ads.py # Google Ads Keyword Planner
└── commands/ # one file per CLI command
├── ai.py # AEO citation check
├── geo.py # GEO AI Overview monitor
├── gsc.py # Google Search Console
├── traffic.py # Plausible traffic
├── keywords.py # keyword suggestions
├── competitors.py # competitor analysis
├── gaps.py # keyword gaps
├── serp.py # live SERP
├── track.py # position tracking
├── backlinks.py # backlink profile
├── meta.py # meta tag audit
├── schema.py # JSON-LD validation
├── links.py # internal linking
├── onpage.py # on-page scoring
├── pages.py # indexing status
├── indexnow.py # IndexNow submission
├── bing.py # Bing Webmaster
├── report.py # Markdown report generator
├── monitor.py # Site health monitor
├── audit.py # SEO audit with opportunity scores
└── llms.py # llms.txt generation and validation
```
Minimal dependencies: `google-auth`, `google-auth-oauthlib`, `google-api-python-client`, `requests`. No heavy frameworks.
---
## Server & Cron Deployment
searchstack is a pure CLI tool — no GUI, no browser window, no interactive prompts (after initial OAuth setup). Deploy it on any Linux server and automate with cron.
### Example: weekly monitoring on a VPS
```bash
# Install
pip install searchstack
# Copy your .searchstack.toml and token.pickle to the server
scp .searchstack.toml token.pickle yourserver:~/.config/searchstack/
# Add to crontab (crontab -e)
# ┌─── Weekly full report (Monday 8am)
0 8 * * 1 searchstack report >> /var/log/searchstack.log 2>&1
# ┌─── Daily position tracking
0 6 * * * searchstack track >> /var/log/searchstack.log 2>&1
# ┌─── Submit new content to search engines (every 6 hours)
0 */6 * * * searchstack indexnow >> /var/log/searchstack.log 2>&1
# ┌─── Weekly AEO check (Wednesday)
0 9 * * 3 searchstack ai >> /var/log/searchstack.log 2>&1
# ┌─── Weekly GEO check (Wednesday)
0 10 * * 3 searchstack geo >> /var/log/searchstack.log 2>&1
```
### Pipe to Slack / email
```bash
# Send report to Slack via webhook
searchstack report && curl -X POST -d "{\"text\":\"$(cat ~/.searchstack/snapshots/report_$(date +%Y%m%d).md)\"}" YOUR_SLACK_WEBHOOK
# Or email it
searchstack report && mail -s "SEO Report $(date +%Y-%m-%d)" you@company.com < ~/.searchstack/snapshots/report_$(date +%Y%m%d).md
```
### Docker (coming soon)
```dockerfile
FROM python:3.12-slim
RUN pip install searchstack
COPY .searchstack.toml /root/.config/searchstack/config.toml
COPY token.pickle /root/.config/searchstack/
CMD ["searchstack", "report"]
```
---
## Documentation
| Document | What's in it |
|----------|-------------|
| **[Services Setup Guide](docs/SERVICES.md)** | Step-by-step setup for all 9 services, full config template, verification checklist |
| **[AEO/GEO Explained](docs/AEO-GEO-EXPLAINED.md)** | How AI search works, which models power which search engines, why Bing matters, monitoring strategy |
| **[Detailed Reference](docs/DETAILED-REFERENCE.md)** | Deep dive into every feature, command, and service |
| **[llmstxt.org spec](https://llmstxt.org)** | The llms.txt standard — `searchstack llms` implements generation and validation with built-in docs |
---
## FAQ
Do I need all 9 services?
No. Each command gracefully skips unavailable services. You can start with just the free tools (`meta`, `schema`, `links`, `onpage`) and add API keys as needed. The most impactful paid service is DataForSEO ($50 one-time) — it unlocks GEO monitoring, keyword research, and competitor analysis.
How much does it actually cost per month?
- **$0/mo** — GSC + technical audit (meta, schema, links, onpage, pages)
- **$1-2/mo** — add weekly AEO + GEO monitoring
- **$5-10/mo** — full daily monitoring including all API calls
- **$50 one-time** — DataForSEO deposit (lasts months, no subscription)
Compare: Ahrefs starts at $99/mo, Semrush at $130/mo, and neither tracks AI visibility.
Does searchstack work without DataForSEO?
Yes. Without DataForSEO you lose: keyword research, live SERP, GEO monitoring, competitor analysis, backlink checks, and position tracking. You keep: GSC rankings, AEO citation checks (ChatGPT/Perplexity/Claude/Grok), Plausible traffic, technical audit, Bing submission, and IndexNow.
Is this a replacement for Ahrefs/Semrush?
For technical SEO and AI search monitoring — yes. For features like site explorer, content gap analysis at scale, or rank tracking with 10,000+ keywords — no. searchstack is designed for founders and small teams who need the most impactful SEO data without enterprise pricing.
Can I monitor multiple sites?
Currently one site per config file. For multiple sites, use separate `.searchstack.toml` files and run with `--config` flag (coming soon) or separate directories.
Why does ChatGPT Search use Bing?
Microsoft invested $13B in OpenAI. As part of the deal, ChatGPT Search uses Bing as its search backend. Perplexity and Microsoft Copilot also use Bing. This means **3 out of 5 major AI search products** pull from Bing, not Google. Read more in [AEO/GEO Explained](docs/AEO-GEO-EXPLAINED.md#the-critical-role-of-bing).
---
## Roadmap
- [ ] `searchstack init` — interactive setup wizard
- [ ] `searchstack cron` — scheduled monitoring via system cron
- [ ] `searchstack diff` — visual diff between report snapshots
- [ ] `searchstack dashboard` — local HTML dashboard
- [ ] Reddit, HackerNews, Twitter mention tracking
- [ ] YouTube search visibility
- [x] ~~llms.txt generation and validation~~ (shipped in v0.1.0)
- [ ] GitHub Actions integration for CI/CD monitoring
---
## License
MIT
---
Built by [Alex Pospekhov](https://github.com/alexpospekhov)