CrazySEO
Find out whether ChatGPT, Gemini and Perplexity recommend your site — and why they don't.
An open-source GEO / AEO auditor and MCP server.No account. No card. Your keys.
Your customers have stopped googling. They ask an assistant "best CRM for smalllaw firms?" and buy whatever it names. If it doesn't name you, you don't exist —and no analytics tool will tell you, because there is no click to measure.
This audits it directly: it asks the questions your buyers ask, records theanswers word for word, and shows you which sources the models cite insteadof you.
Why another one
Most tools in this space ask the model "what do you think of Acme?" — whichtells you nothing, because naming the brand in the prompt guarantees it shows upin the answer.
This asks blind. Your brand never appears in the question, so the answer youget back is the answer a real buyer gets. That is the whole difference between anumber you can act on and a number that flatters you.
Three more things a prompt wrapper can't do:
- Verbatim receipts. Every result carries the exact prompt and the model'sraw answer, so you can paste it into ChatGPT yourself and reproduce it.
- Honest coverage. If an engine fails or rate-limits, the report says so. Itnever quietly drops an engine and calls the remaining average your score. If asite can't be reached, it refuses to score it rather than inventing a number.
- A real readiness audit. 11 checks against your actual site — not a prompt.
Quick start — no API keys needed
The readiness audit runs against any site with zero configuration and zero cost:
npx crazyseo readiness yourbrand.com
Nothing to install, no signup, no key. Or run it from source:
git clone https://github.com/d08m/crazyseo && cd crazyseo
npm install && npm run build
node dist/cli.js readiness yourbrand.com
AI-READINESS stripe.com 82/100
✓ Served over HTTPS
✓ AI crawlers allowed
✓ Structured data (schema.org)
✓ llms.txt published (bonus)
✓ Title + meta description
✓ Readable without JavaScript
✓ Canonical URL set
✓ Social preview tags (Open Graph)
✗ Single, clear H1
2 H1 tags — ambiguous which is the main topic
✗ Images have alt text
27 of 31 images missing alt text
✓ Sitemap referenced
✓ No broken internal links
→ 2 issues to fix
(That's real output — stripe.com, unmodified.)
11 scored checks, all first-party fetches: HTTPS · AI crawlers (GPTBot,ClaudeBot, PerplexityBot, Google-Extended…) unblocked in robots.txt · schema.orgmarkup · title + meta · readable without JavaScript · canonical · Open Graph ·single-H1 structure · image alt-text coverage · sitemap referenced · brokeninternal links (sampled).
Plus llms.txt, shown but deliberately unscored: Google's own AI-optimizationguidance says it has no effect in Google Search, so it can't fairly cost anyonepoints — but some agents do read it, so it's still worth seeing.
Exits non-zero when checks fail, so you can gate a deploy on it:
- run: npx crazyseo readiness ${{ env.SITE }}
Machine-readable output for pipelines:
npx crazyseo readiness yourbrand.com --json > report.json
The visibility audit — bring your own keys
To measure what the engines actually say, add whichever keys you have. Any oneis enough; more engines means more coverage.
export OPENAI_API_KEY=... # optional
export GOOGLE_API_KEY=... # optional
export PERPLEXITY_API_KEY=... # optional
npx crazyseo audit yourbrand.com
It reads your site, infers what you sell, generates the questions your buyerswould actually ask, and asks all of them — blind — across every engine youconfigured.
VISIBILITY lymexa.com 0 of 8 answers · 0%
Lymexa — premium pickleball paddles and recovery gear brand, USA
"What are the best premium pickleball paddles for advanced players?"
Gemini ✗ not named JOOLA, CRBN, Selkirk, Six Zero
Perplexity ✗ not named JOOLA, Selkirk, CRBN, Gearbox
"Which high-performance pickleball paddle brands are manufactured in the USA?"
Gemini ✗ not named Engage, Paddletek, Selkirk, Thompson Pickleball
Perplexity ✗ not named Engage, Paddletek, Selkirk, GAMMA
RECOMMENDED INSTEAD
Selkirk 4× named
Therabody 4× named
Hyperice 4× named
CITATION GAP — cited on the questions you lost
reddit.com 7× Community discussion AI trusts for real opinions
youtube.com 6× Video content AI pulls into answers
pickleheads.com 4× Third-party source AI cites instead of you
! ChatGPT did not respond — this score covers the rest only.
(Real output, trimmed for length. Note the last line: when an engine fails, thereport says so instead of quietly averaging the rest and calling it your score.)
Runs on your own keys — a full audit is typically a few cents.
Use it from your agent
It ships as an MCP server, so Claude, ChatGPT or any MCP-capable agent can runit directly:
claude mcp add --transport stdio crazyseo -- npx -y crazyseo mcp
It's also packaged as a Claude Code plugin, which wires up the MCP server and theskill below in one step:
/plugin marketplace add d08m/crazyseo
/plugin install crazyseo@crazyseo
Then just ask:
"Is my site visible in AI search? What's cited instead of me?"
| tool | what it does | keys |
|---|---|---|
readiness_check |
11-point AI-readiness audit | none |
audit_visibility |
blind multi-engine visibility + verbatim answers | BYO |
citation_gap |
sources cited on the questions you lose | BYO |
engine_status |
which engines this install can query | none |
There's also a SKILL.md so agents know how to interpret thenumbers — that readiness isn't visibility, that 0% is a normal starting point,and that partial engine coverage must be reported as partial.
Use it as a library
import { checkReadiness } from 'crazyseo';
const report = await checkReadiness('example.com');
console.log(report.score, report.checks);
How this stays free
Everything here is free forever, self-hosted, AGPL — full capability, nofeature locks, no telemetry, no account, no upsell in the output.
There is no paid tier today, and this README won't pretend otherwise. If oneever appears it will be for the single thing self-hosting genuinely can't giveyou — scheduled re-runs, stored history and alerts, the infrastructure towatch a number move over months without running anything yourself. The auditingitself stays here, complete, under AGPL.
Which is also the answer to "what stops this going closed later": the licence.Anyone offering it as a hosted service has to open their version too, includingwhoever wrote it.
Contributing
Issues and PRs welcome. The checks are deliberately conservative: every one hasto be something an assistant or its crawler actually depends on, and verifiableby hand. If a check can't be justified that way, it doesn't belong here.
CONTRIBUTING.md covers the setup, the bar a new check hasto clear, and what an engine adapter needs to get right.
License
AGPL-3.0. Use it, fork it, run it commercially, embed it in your own tooling.If you offer it to others as a hosted service, that service must be open too.