ai-search-audit

ai-search-audit

Enables auditing AI search visibility: checks site readiness for AI crawlers and measures whether ChatGPT, Gemini, and Perplexity recommend your site, including verbatim answers and citation gap analysis.

Category
访问服务器

README

<div align="center">

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

<br>

<img src="https://raw.githubusercontent.com/d08m/crazyseo/master/docs/demo.svg" alt="crazyseo readiness audit of stripe.com, scoring 82 out of 100 across 11 technical checks" width="669">

</div>


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:

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.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:

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

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:

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:

/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 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

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.


<div align="center"> <sub>Built because "am I in the answer?" deserves a real measurement, not a vibe.</sub> </div>

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选