{"slug": "show-hn-open-source-tool-to-check-if-chatgpt-recommends-your-business", "title": "Show HN: Open-source tool to check if ChatGPT recommends your business", "summary": "CrazySEO, an open-source GEO/AEO auditor and MCP server, lets businesses check whether ChatGPT, Gemini, and Perplexity recommend their site by asking buyer questions without naming the brand. The tool, available via npx or GitHub, includes a zero-configuration readiness audit with 11 checks and verbatim receipts, and it exits non-zero on failures for CI/CD gating.", "body_md": "**Find out whether ChatGPT, Gemini and Perplexity recommend your site — and why they don't.**\n\nAn open-source GEO / AEO auditor and MCP server. No account. No card. Your keys.\n\nYour customers have stopped googling. They ask an assistant *\"best CRM for small\nlaw firms?\"* and buy whatever it names. If it doesn't name you, you don't exist —\nand no analytics tool will tell you, because there is no click to measure.\n\nThis audits it directly: it asks the questions your buyers ask, records the\nanswers **word for word**, and shows you which sources the models cite instead\nof you.\n\nMost tools in this space ask the model *\"what do you think of Acme?\"* — which\ntells you nothing, because naming the brand in the prompt guarantees it shows up\nin the answer.\n\n**This asks blind.** Your brand never appears in the question, so the answer you\nget back is the answer a real buyer gets. That is the whole difference between a\nnumber you can act on and a number that flatters you.\n\nThree more things a prompt wrapper can't do:\n\n**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.\n\nThe readiness audit runs against any site with zero configuration and zero cost:\n\n```\nnpx crazyseo readiness yourbrand.com\n```\n\nNothing to install, no signup, no key. Or run it from source:\n\n```\ngit clone https://github.com/d08m/crazyseo && cd crazyseo\nnpm install && npm run build\nnode dist/cli.js readiness yourbrand.com\nAI-READINESS  stripe.com                                    82/100\n\n  ✓ Served over HTTPS\n  ✓ AI crawlers allowed\n  ✓ Structured data (schema.org)\n  ✓ llms.txt published (bonus)\n  ✓ Title + meta description\n  ✓ Readable without JavaScript\n  ✓ Canonical URL set\n  ✓ Social preview tags (Open Graph)\n  ✗ Single, clear H1\n      2 H1 tags — ambiguous which is the main topic\n  ✗ Images have alt text\n      27 of 31 images missing alt text\n  ✓ Sitemap referenced\n  ✓ No broken internal links\n\n  → 2 issues to fix\n```\n\n*(That's real output — stripe.com, unmodified.)*\n\n**11 scored checks**, all first-party fetches: HTTPS · AI crawlers (GPTBot,\nClaudeBot, PerplexityBot, Google-Extended…) unblocked in robots.txt · schema.org\nmarkup · title + meta · readable without JavaScript · canonical · Open Graph ·\nsingle-H1 structure · image alt-text coverage · sitemap referenced · broken\ninternal links (sampled).\n\nPlus **llms.txt**, shown but deliberately unscored: Google's own AI-optimization\nguidance says it has no effect in Google Search, so it can't fairly cost anyone\npoints — but some agents do read it, so it's still worth seeing.\n\nExits non-zero when checks fail, so you can gate a deploy on it:\n\n```\n- run: npx crazyseo readiness ${{ env.SITE }}\n```\n\nMachine-readable output for pipelines:\n\n```\nnpx crazyseo readiness yourbrand.com --json > report.json\n```\n\nTo measure what the engines actually say, add whichever keys you have. Any one is enough; more engines means more coverage.\n\n```\nexport OPENAI_API_KEY=...      # optional\nexport GOOGLE_API_KEY=...      # optional\nexport PERPLEXITY_API_KEY=...  # optional\n\nnpx crazyseo audit yourbrand.com\n```\n\nIt 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.\n\n```\nVISIBILITY  lymexa.com                       0 of 8 answers  ·  0%\n  Lymexa — premium pickleball paddles and recovery gear brand, USA\n\n  \"What are the best premium pickleball paddles for advanced players?\"\n    Gemini      ✗ not named  JOOLA, CRBN, Selkirk, Six Zero\n    Perplexity  ✗ not named  JOOLA, Selkirk, CRBN, Gearbox\n\n  \"Which high-performance pickleball paddle brands are manufactured in the USA?\"\n    Gemini      ✗ not named  Engage, Paddletek, Selkirk, Thompson Pickleball\n    Perplexity  ✗ not named  Engage, Paddletek, Selkirk, GAMMA\n\n  RECOMMENDED INSTEAD\n    Selkirk                      4× named\n    Therabody                    4× named\n    Hyperice                     4× named\n\n  CITATION GAP — cited on the questions you lost\n    reddit.com                   7×  Community discussion AI trusts for real opinions\n    youtube.com                  6×  Video content AI pulls into answers\n    pickleheads.com              4×  Third-party source AI cites instead of you\n\n  ! ChatGPT did not respond — this score covers the rest only.\n```\n\n*(Real output, trimmed for length. Note the last line: when an engine fails, the\nreport says so instead of quietly averaging the rest and calling it your score.)*\n\nRuns on your own keys — a full audit is typically a few cents.\n\nIt ships as an MCP server, so Claude, ChatGPT or any MCP-capable agent can run it directly:\n\n```\nclaude mcp add --transport stdio crazyseo -- npx -y crazyseo mcp\n```\n\nIt's also packaged as a Claude Code plugin, which wires up the MCP server and the skill below in one step:\n\n```\n/plugin marketplace add d08m/crazyseo\n/plugin install crazyseo@crazyseo\n```\n\nThen just ask:\n\n\"Is my site visible in AI search? What's cited instead of me?\"\n\n| tool | what it does | keys |\n|---|---|---|\n`readiness_check` |\n11-point AI-readiness audit | none |\n`audit_visibility` |\nblind multi-engine visibility + verbatim answers | BYO |\n`citation_gap` |\nsources cited on the questions you lose | BYO |\n`engine_status` |\nwhich engines this install can query | none |\n\nThere's also a [ SKILL.md](/d08m/crazyseo/blob/master/SKILL.md) so agents know\n\n*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.\n\n``` js\nimport { checkReadiness } from 'crazyseo';\n\nconst report = await checkReadiness('example.com');\nconsole.log(report.score, report.checks);\n```\n\nEverything here is **free forever, self-hosted, AGPL** — full capability, no\nfeature locks, no telemetry, no account, no upsell in the output.\n\nThere is no paid tier today, and this README won't pretend otherwise. If one\never appears it will be for the single thing self-hosting genuinely can't give\nyou — **scheduled re-runs, stored history and alerts**, the infrastructure to\nwatch a number move over months without running anything yourself. The auditing\nitself stays here, complete, under AGPL.\n\nWhich 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.\n\nIssues 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.\n\n[ CONTRIBUTING.md](/d08m/crazyseo/blob/master/CONTRIBUTING.md) covers the setup, the bar a new check has\nto clear, and what an engine adapter needs to get right.\n\n**AGPL-3.0.** Use it, fork it, run it commercially, embed it in your own tooling.\nIf you offer it to others as a hosted service, that service must be open too.\n\nBuilt because \"am I in the answer?\" deserves a real measurement, not a vibe.", "url": "https://wpnews.pro/news/show-hn-open-source-tool-to-check-if-chatgpt-recommends-your-business", "canonical_source": "https://github.com/d08m/crazyseo", "published_at": "2026-08-04 12:03:50+00:00", "updated_at": "2026-08-04 12:24:47.542468+00:00", "lang": "en", "topics": ["ai-tools", "ai-products", "developer-tools", "generative-ai", "ai-agents"], "entities": ["CrazySEO", "ChatGPT", "Gemini", "Perplexity", "OpenAI", "Google", "stripe.com", "lymexa.com"], "alternates": {"html": "https://wpnews.pro/news/show-hn-open-source-tool-to-check-if-chatgpt-recommends-your-business", "markdown": "https://wpnews.pro/news/show-hn-open-source-tool-to-check-if-chatgpt-recommends-your-business.md", "text": "https://wpnews.pro/news/show-hn-open-source-tool-to-check-if-chatgpt-recommends-your-business.txt", "jsonld": "https://wpnews.pro/news/show-hn-open-source-tool-to-check-if-chatgpt-recommends-your-business.jsonld"}}