CrazySEO logo

CrazySEO

Audit whether ChatGPT, Gemini and Perplexity recommend a site. Readiness checks need no keys.

Install CrazySEO

Pick your client, then add it in one click or paste the config.

STDIONode.js
~/Library/Application Support/Claude/claude_desktop_config.json
claude_desktop_config.json
{
  "mcpServers": {
    "crazyseo": {
      "command": "npx",
      "args": [
        "-y",
        "crazyseo"
      ]
    }
  }
}

Settings → Developer → Edit Config, merge this into mcpServers, then fully quit and reopen Claude Desktop.

We couldn’t confirm it starts correctly

We ran the install command but it didn't respond within our test window — this can mean a slow first-time install rather than a real problem.

npx -y crazyseo

No response to initialize.

This is an experimental automated check and can have false negatives — missing environment variables, a slow cold install, etc. It doesn’t necessarily mean something’s wrong. Last checked 6d ago.

Overview

Security & health

What it can reach and how reliably it runs — from our own checks, not the maintainer’s claims.

ActiveLast checked 3d ago

Recent health check succeeded.

4/4 checks healthy over the last 40d

Supply-chain signal

No high-severity advisories surfaced by our automated scan.

Critical 0High 0Medium 0Low 0

Scanned 15d ago via OSV.dev · crazyseo (npm)

Adoption & maintenance

Factual signals from GitHub, npm, and our automated checks — not a rating.

GitHub stars4Stargazers on the source repository.
npm downloads413Package downloads in the last 30 days.
Last commit2mo agoMost recent push to the default branch.
Install checkInconclusiveDidn't respond in our test window — often a slow first install.
Directory activity2 viewsConfig copies, upvotes, and views on AllMCPs.

From the project README

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.

CI License: AGPL v3 MCP


crazyseo readiness audit of stripe.com, scoring 82 out of 100 across 11 technical checks

Your customers have stopped googling. They ask an assistant "best CRM for small law 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 the answers word for word, and shows you which sources the models cite instead of you.

Why another one

Most tools in this space ask the model "what do you think of Acme?" — which tells you nothing, because naming the brand in the prompt guarantees it shows up in the answer.

This asks blind. Your brand never appears in the question, so the answer you get back is the answer a real buyer gets. That is the whole difference between a number 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's raw 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. It never quietly drops an engine and calls the remaining average your score. If a site 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:

Terminal
npx crazyseo readiness yourbrand.com

Nothing to install, no signup, no key. Or run it from source:

bash
git clone https://github.com/d08m/crazyseo && cd crazyseo
npm install && npm run build
node dist/cli.js readiness yourbrand.com
Code
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.org markup · title + meta · readable without JavaScript · canonical · Open Graph · single-H1 structure · image alt-text coverage · sitemap referenced · broken internal links (sampled).

Plus llms.txt, shown but deliberately unscored: Google's own AI-optimization guidance says it has no effect in Google Search, so it can't fairly cost anyone points — 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:

yaml
- run: npx crazyseo readiness ${{ env.SITE }}

Machine-readable output for pipelines:

Terminal
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 one is enough; more engines means more coverage.

server.ts
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 buyers would actually ask, and asks all of them — blind — across every engine you configured.

Code
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, the report 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 run it directly:

Terminal
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 the skill below in one step:

bash
/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?"

toolwhat it doeskeys
readiness_check11-point AI-readiness auditnone
audit_plansite facts + buyer questions to ask, for a keyless auditnone
audit_scorescores what the agent found: visibility, leaderboard, citation gapnone
audit_visibilityblind multi-engine visibility + verbatim answersBYO
citation_gapsources cited on the questions you loseBYO
engine_statuswhich engines this install can querynone

You don't need an API key to get the interesting part. audit_plan and audit_score let the assistant you're already talking to be the engine: it fetches your site, writes the buyer questions, answers them with its own web search, and hands the results back for scoring. Ask "is my site visible in AI search?" and you get a real citation gap with no signup, no key, no billing.

The tool still does the arithmetic, and still refuses a question that names your brand — that guard is what makes the number worth having. It measures visibility in that assistant, which the report says plainly. For the cross-engine picture, use audit with your own keys.

There's also a SKILL.md so agents know how to interpret the numbers — 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

server.ts
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, no feature locks, no telemetry, no account, no upsell in the output.

There is no paid tier today, and this README won't pretend otherwise. If one ever appears it will be for the single thing self-hosting genuinely can't give you — scheduled re-runs, stored history and alerts, the infrastructure to watch a number move over months without running anything yourself. The auditing itself 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, including whoever wrote it.

Contributing

Issues and PRs welcome. The checks are deliberately conservative: every one has to be something an assistant or its crawler actually depends on, and verifiable by 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 has to 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.


Built because "am I in the answer?" deserves a real measurement, not a vibe.

Reviews

No reviews yet — be the first to share how it worked for you.

Frequently Asked Questions about CrazySEO

CrazySEO is an MCP server that audits whether ChatGPT, Gemini, and Perplexity recommend a site and explains why they may not. It also provides a no-key readiness audit covering 11 technical checks, records model answers verbatim, and reports cited sources and engine failures without silently dropping unavailable results.

The readiness audit requires no API keys, account, or payment. Visibility auditing uses the provider keys you supply, and any one supported engine key is enough to run an audit; adding more keys provides broader coverage.

The readiness audit checks 11 site factors, including HTTPS, AI crawler access in robots.txt, schema.org markup, title and meta description, JavaScript-independent readability, canonical URLs, Open Graph tags, H1 structure, image alt text, sitemap references, and sampled broken internal links. It also reports llms.txt without scoring it.

CrazySEO asks buyer-style questions without naming the audited brand, then records each engine’s raw answer and cited sources. This blind approach is intended to reflect what a real buyer may receive, while reports explicitly show engine failures or rate limits instead of silently excluding them.

You can run the readiness audit with npx crazyseo readiness yourbrand.com, and it exits with a non-zero status when checks fail, allowing deployment gates. Use the --json option to write a machine-readable report for pipeline processing.

Related MCP servers

Add a badge to your READMEShow it’s listed — live SVG, Markdown or HTML.

AllMCPs Directory Badge

Full Badge Customizer

Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.

Badge Style:
Live Dynamic SVG PreviewCrazySEO AllMCPs Directory Badge
Markdown (GitHub README)
[![AllMCPs](https://allmcps.com/api/badge/crazyseo?style=directory)](https://allmcps.com/mcp/crazyseo)
HTML Embed
<a href="https://allmcps.com/mcp/crazyseo"><img src="https://allmcps.com/api/badge/crazyseo?style=directory" alt="CrazySEO on AllMCPs" /></a>