mcpField
A
AI Visibility Checker

AI Visibility Checker

本地服务
krisdiallo.github.io商业与营销09 周前更新

关于 AI Visibility Checker

AI Visibility Checker(aivis)是面向电商团队的 AI 可见性审计工具,可检查 robots.txt 与原始 HTML 中的商品结构化数据和事实信息。它也提供命令行、网页工具、CI 集成和 MCP 服务,并基于爬虫来源资料区分搜索与训练爬虫。

主要功能

  1. 01审计 robots.txt 爬虫规则
  2. 02检查原始 HTML 商品结构化数据
  3. 03抽样检查多个商品页面
  4. 04区分搜索与训练爬虫影响
  5. 05支持命令行及 CI 检查

适用场景

  1. 01检查店铺是否允许 AI 搜索爬虫访问
  2. 02发现依赖 JavaScript 注入的商品数据
  3. 03比较目录中多页的可读性问题
  4. 04在部署流程中阻止严重问题

MCP 相关

提供 stdio JSON-RPC MCP 服务,供 MCP 客户端调用同一套店铺可读性检查。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库
安装包
mcpbaivis.mcpb1.5.3
ocighcr.io/krisdiallo/aivis:1.5.3

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

aivis — AI 助手真的能读取你的商店吗?

一条命令。无需安装、无需依赖、无需账号,也不会上传任何内容。

curl -sO https://raw.githubusercontent.com/krisdiallo/ecom-agent/main/aivis.py
python3 aivis.py yourstore.com
aivis 1.0.0 — can AI assistants read brooklinen.com?

1. robots.txt — are you blocking the crawlers that recommend you?
  [ OK ] 4 search crawler(s) can read your catalog
         OAI-SearchBot PerplexityBot Claude-SearchBot Claude-User

2. Product page — can a crawler read your facts?
  [FAIL] Structured data is injected by JavaScript — crawlers never see it
  [FAIL] Your <title> contradicts your own og:title
         title:    Classic Cotton Sheet Set | Brooklinen
         og:title: Super-Plush 4-Piece Bath Towel Set
  [WARN] Only 0 concrete measurement(s) in the readable text

Summary: 2 critical  2 to review  1 passed

这是来自某个大型 DTC 品牌实时页面的真实输出,并由三次独立抓取复现。更喜欢浏览器?同样的检查,只需粘贴: 网页版。

一个页面只是个例。抽查你的商品目录,看看问题是否普遍存在:

python3 aivis.py yourstore.com --pages 10
[FAIL] Structured data injected by JavaScript (7/10 pages)
[WARN] Fewer than 5 concrete measurements (9/10 pages)
[ OK ] 1/10 pages clean on every check

用你搜索时会用的词来说,这是什么

这是一个免费的 GEO 工具——生成式引擎优化,也称为 LLM SEO 或答案引擎优化:确保 AI 助手能够充分读取你的商店,从而引用或推荐它。这是更广泛的 AI 搜索优化问题在电商领域的具体体现,聚焦于决定答案引擎能否使用你内容的两个关键因素:

  1. 你的 robots.txt——你是否禁止了提供答案的爬虫(OAI-SearchBot、PerplexityBot、Claude-SearchBot)? 大多数“屏蔽 AI”的建议都弄错了这一点,把这些爬虫和训练爬虫混为一谈。
  2. 商品页面在原始 HTML 中的结构化数据和事实信息——不运行 JavaScript 的爬虫实际收到的内容,而不是开发者工具显示的内容。

如果你搜索的是电商商店的 AI 可见度检查工具或 robots.txt 检查工具, 这个工具两者兼备,并且提供了基于 165 种 AI 爬虫一手来源的数据,而非泛泛的建议。


或者交给你的 AI

这是一个 MCP 服务,Claude Code、Claude Desktop、Cursor 或任何 MCP 客户端都可以用它自行运行检查——“我的商店能被 AI 助手读取吗?”在你当前所在的对话中即可得到答案。

无需下载,也无需编辑路径——将以下内容粘贴到你的 MCP 配置中:

{ "mcpServers": {
    "aivis": {
      "command": "uvx",
      "args": ["--from", "git+https://github.com/krisdiallo/ecom-agent", "aivis-mcp"]
    }
} }

它也已列入**官方 MCP 注册表**,名称为 io.github.krisdiallo/aivis,因此任何能读取注册表的客户端都可以找到它。如果你想直接运行,本仓库中还有一个单文件版 aivis_mcp.py。

Stdio JSON-RPC,零依赖——整个工具仅使用标准库,因此可以直接从 git 获取并运行。它导入 aivis.py,而不是通过 shell 调用其他程序,因此 CLI、网页工具、研究、GitHub Action 和 MCP 服务都共用同一套经过验证的实现。

或者在 CI 中运行

在导致问题的部署时就发现它,而不是几个月后才疑惑为什么助手从不提及你:

- uses: krisdiallo/ecom-agent@v1
  with:
    site: yourstore.com
    fail-on: critical        # critical | warning | never

它会在作业摘要中写入一张问题表,将 critical / warnings / passed / report 作为步骤输出公开,并在发现实际问题时让构建失败。本仓库 会在每次推送时对自己的站点运行检查——一个提醒你检查 AI 可见度的工具,也应该公开检查自身。

如果你想将它接入其他工具,--json 也可以独立使用:

python3 aivis.py yourstore.com --json --fail-on warning

大多数建议都搞反了一件事

AI 爬虫有两种截然不同的类型,屏蔽它们会带来截然相反 的后果:

类型令牌屏蔽后果
搜索/回答OAI-SearchBot PerplexityBot Claude-SearchBot Claude-User Amzn-SearchBot Amzn-User Applebot你会从 AI 回答中消失。
训练GPTBot ClaudeBot Google-Extended CCBot Amazonbot Applebot-Extended meta-externalagent推荐内容不会有任何变化。这是合理的选择。

屏蔽 GPTBot 不会让你从 ChatGPT 的推荐中消失。 起作用的是令牌 OAI-SearchBot。 “屏蔽 AI 抓取工具”的风潮混淆了两者,许多网站以为自己是在保护别的内容,结果选择退出了训练。

还有三个经常被 robots.txt 代码片段搞错的地方:

  • Amazonbot 与 Amzn-SearchBot。 Amazon 将两者的职责分开。Amazonbot“可能用于训练 Amazon AI 模型”;Amzn-SearchBot 则让你“有资格出现在 Alexa 等搜索体验中”,并且“不会抓取内容来训练生成式 AI 模型”。 大多数指南只提到前者。屏蔽错了,就会白白失去 Alexa。
  • Applebot-Extended 不会抓取任何内容。 它纯粹是一种选择退出信号。Apple 表示,禁止它抓取的页面“仍可出现在搜索结果中”。
  • facebookexternalhit 不是 AI 爬虫。 它会生成链接预览。它被归入“屏蔽 AI 机器人”列表后,会悄无声息地破坏链接分享时的显示效果。

屏蔽 AI 涉及两项决策,而非一项

ai-robots-txt/ai.robots.txt(约 4k 个星标)是生态中对“屏蔽 AI 机器人”的默认答案。它生成的 robots.txt 会禁止所有 166 个已知 AI 用户代理。使用此工具审计后的结果:

$ python3 -c "import aivis,urllib.request as u; \
  print(aivis.audit_robots(u.urlopen('https://raw.githubusercontent.com/\
ai-robots-txt/ai.robots.txt/main/robots.txt').read().decode()))"

visible_to_ai_search: False
blocked_search : OAI-SearchBot, PerplexityBot, Claude-SearchBot, Claude-User,
                 Amzn-SearchBot, Amzn-User, Applebot

这是他们有意为之,也符合其受众的需求。 他们的常见问题解答明确说明了立场:这些爬虫“会攫取数据,却不会给他们摄取数据的创作者带来任何好处”。不希望 ChatGPT 在用户不点击的情况下根据自己文章回答问题的出版商,正需要这样的文件。我们并不是在说这是个错误;本节早期版本曾错误地暗示这一点。

关键在于,屏蔽 AI 涉及两项决策,而非一项,而单一列表会把两者混为一谈:

  • “不要用我的内容训练。” 不会让你损失任何推荐机会。
  • “不要用我的内容回答问题。” 会让你从 ChatGPT 搜索、Perplexity、Claude、Alexa、 Siri 和 Spotlight 中消失。

出版商通常两者都想要。电商商店通常只想要第一项,而不想要第二项——从 AI 回答中消失意味着需求流失,而非保护作品。如果你属于这种情况,这会生成另一份文件:

python3 aivis.py --training-optout >> robots.txt

屏蔽全部 8 个训练爬虫,同时允许全部 7 个搜索爬虫。我们已在 CI 中审计自行生成的输出并完成验证。

将其用作库

如果你正在构建 GEO 工具、爬虫或购物 Agent,可能需要的是基础功能,而不是报告:

from aivis import classify_crawler, audit_robots

classify_crawler("GPTBot")["blocking_effect"]         # 'opts_out_of_training_only'
classify_crawler("OAI-SearchBot")["blocking_effect"]  # 'removes_from_ai_answers'
classify_crawler("SomeRandomBot")                     # None — it won't guess

r = audit_robots(open("robots.txt").read())
r["visible_to_ai_search"]   # False if any AI *search* crawler is blocked
r["blocked_search"]         # the ones that actually cost you answers
r["blocked_training"]       # blocking these costs nothing; listed separately on purpose

audit_robots 会应用真实的分组优先级——爬虫会遵循自己的分组;如果存在自己的分组,就会忽略 User-agent: *——并对路径进行分类,因此包含约 45 条默认 Disallow 规则的标准 Shopify 文件不会被误判为存在问题。

每项分类都有供应商自己的文档作为来源(crawlers.json 中包含引文和日期),而 research/test_api.py 是 CI 中的契约测试,可防止数值发生偏差。零依赖:pip install git+https://github.com/krisdiallo/ecom-agent。

agent-commerce.json — AI Agent 实际可以在哪些商店购物

agent-commerce.json — 探测了 70 家商店,其中 49 家开放了可用端点,Agent 可以调用这些端点搜索商品目录、创建购物车并完成结账,全程无需处理 HTML。

这份文件最值得关注的结果是:49 家商店都开放了同一套 13 个工具,且使用同一个 UCP 版本。49 个独立品牌之间没有任何差异。

这意味着,目前 Agent 商务能力是平台的属性,而非商家的选择。商店之所以具备这项能力,是因为其平台启用了该功能。这带来两个结果:

  • 如今,除了选择平台,商家无法有意义地“优化”这一方面——这与通常的宣传说法恰恰相反
  • Agent 开发者可以假定这些商店提供统一的工具集,无需逐个商家协商能力
# every store in the sample an agent can transact with
curl -s https://raw.githubusercontent.com/krisdiallo/ecom-agent/main/agent-commerce.json \
  | python3 -c "import json,sys;[print(h['host']) for h in json.load(sys.stdin)['hosts'] if h['agent_commerce']]"

有可用端点并不意味着任何 Agent 都能购物。 进一步探测发现:匿名调用 tools/list 会得到响应,但如果没有已发布的 UCP Agent 配置文件 URI,所有工具调用都会被拒绝(invalid_profile_url);我们已在三家独立商店验证这一点。因此,这些商店只允许已识别的 Agent 进行交易,不允许匿名 Agent——能力枚举是开放的,但交易不是。这是一层值得了解的问责机制,而我们最初的说法过于绝对。

我们没有创建 Agent 配置文件来继续测试。为了获得更完善的数据集而在他人商店创建身份并进行交易,不是我们会做的事。

整个探测过程均为只读:仅调用 tools/list。从未创建购物车或发起结账。

crawlers.json — 这一切背后的数据

crawlers.json 是构建这些工具所依据的机器可读注册表:包含 21 个令牌及各自的供应商、用途、屏蔽后实际产生的效果、是否遵循 robots.txt、供应商自己的表述、来源 URL 和核查日期。

# every token whose blocking removes you from AI answers
curl -s https://raw.githubusercontent.com/krisdiallo/ecom-agent/main/crawlers.json \
  | python3 -c "import json,sys;[print(c['token']) for c in json.load(sys.stdin)['crawlers'] \
    if c['blocking_effect']=='removes_from_ai_answers']"

除 Amazonbot 的同类项外,有三个条目(CCBot、Bytespider)无法对应到第一方引述;这些条目带有明确的 verification 标记,而不会伪装成有来源。research/test_consistency.py 会在 CLI 与注册表内容不一致时导致构建失败——这正是我们在发布前发现上述 Amazon 误分类的方式。

MIT 许可。欢迎用于你自己的工具;链接回本项目并非必需。

crawler-consequences.json — 整个生态,以及数据的边界

crawlers.json 内容深入但范围狭窄:21 个令牌,每个都有一条厂商引述。生态中关于有哪些 AI 用户代理的列表 ai-robots-txt/ai.robots.txt(MIT)则恰好相反——有 166 个令牌,但它的 function 字段回答的是“这个机器人是什么”,而不是“屏蔽它会让我付出什么代价”。该项目的 FAQ 鼓励复用:“我可以直接在自己的工具中使用 robots.json 吗?欢迎使用。”

crawler-consequences.json 将二者结合起来:包含 165 个令牌,每个都带有 blocking_effect,以及说明其确定程度的 basis。(之所以是 165 而非 166,是因为上游用两种拼写列出了三个爬虫——Meta-ExternalAgent 和 meta-externalagent。robots.txt 匹配用户代理时不区分大小写,因此它们是同一个爬虫,同时输出两者会导致使用者根据文件计算出的数量虚高。)

basisn依据
vendor-documented21厂商自己的表述,在 crawlers.json 中引用并注明日期
explicit-purpose-text13上游文本明确说明了用途
upstream-category26上游精心整理的类别——这是他们的编辑判断,并非厂商的说法
undetermined105这些来源无法确定后果

165 个中有 105 个尚无法确定,而这正是研究结果。 对于 64% 的已知 AI 爬虫,没有公开信息能告诉店主屏蔽它是否会影响 AI 可见度。它们不会被默认归为“训练”——这种猜测往往会错,而且错误会悄无声息地大范围发生。可以按 basis 筛选,自行选择置信度门槛;有 34 条记录依据的是明确陈述的用途。

为了得出这个结果,我们不得不推翻自己做出的四项分类。GoogleOther 被标记为仅用于训练,因为其描述写着 "Scrapes data."——这只能说明它会获取某些内容,不能说明用途。Scrapy 和 Sidetrade indexer bot 的分类依据是 “多种用途,包括 AI 训练”,这句话表明用途不止一种。这正是本项目旨在纠正的混淆,而犯下这个错误的恰恰是用于纠正它的工具。research/test_consequences.py 会在 CI 中固定验证这七项。

# high-confidence rows only
curl -s https://raw.githubusercontent.com/krisdiallo/ecom-agent/main/crawler-consequences.json \
  | python3 -c "import json,sys; d=json.load(sys.stdin); \
    print(*[c['token'] for c in d['crawlers'] \
    if c['basis'] in ('vendor-documented','explicit-purpose-text') \
    and c['blocking_effect']=='removes_from_ai_answers'], sep='\n')"

对照一份全新的上游副本,亲自重新构建:python3 research/build_consequences.py。

检查内容

  1. robots.txt,并正确处理分组优先级——爬虫会遵循自己的分组;如果存在自己的分组,就会忽略 User-agent: *。它还知道 Shopify 默认的约 45 条 Disallow 规则是普通的分面导航路径,不会对此误报。
  2. 产品页面的原始 HTML,而不是渲染后的 DOM,因为大多数 AI 爬虫不会运行 JavaScript:Product/ProductGroup schema、商品报价信息的完整度、可读字数,以及实际提供了多少项具体测量数据。

为什么原始 HTML 很重要。 如果你的 JSON-LD 是通过 JavaScript 注入的,它在开发者工具和 Google 的 Rich Results Test 中看起来都很完美——二者都会运行 JS——但助手收到的内容中却完全没有它。你通常会用来检查的所有工具都会报告成功。

我们首先扫描了 70 个品牌。结果与这个类别的宣传说法不符。

阅读完整研究 → · 网页版 · 原始数据

屏蔽 AI 搜索爬虫62 个中有 0 个
屏蔽 AI 训练爬虫62 个中有 2 个
存在 Product/ProductGroup 结构化数据51 个中有 45 个(88%)
每个页面的具体测量值中位数2 个
少于 5 个测量值的页面51 个中有 40 个(78%)

没有人是不小心变得不可见的。 GEO 工具市场兜售的恐惧——robots.txt 配置错误会让你从 ChatGPT 中消失——在 62 个文件中一次也没有发生。结构化数据也基本没问题。

真正的差距在于具体程度。产品页面的具体测量值中位数为 2 个。比较两款产品的助手会复述它能归因于具体产品的信息:"承重 120 lb" 会被保留下来,*"优质品质"*则不会,因为整个类别的产品都可以这么说。

所以,坦诚的建议是:**免费检查一次,然后去写更好的产品页面。别花每月 79–399 美元买一个监控大多没问题的东西的仪表盘。**这个结论让我们失去了一个容易推销的卖点,而这正是你应该相信其余内容的主要原因。

扫描器、原始数据和页面生成器都在 research/ 中——研究页面直接根据数据集生成,因此页面上的数字没有一个是手动填写的。

这项研究无法告诉你什么

它无法告诉你助手会不会推荐你。没人能做到:排名并不公开,而且会随措辞和地区而变化。它也看不到可能起主导作用的因素——独立第三方来源对你的描述是否一致。而且,传统搜索仍然处理着绝大多数购物查询。

这项检查只检验基础:你是否至少能被读取。这部分免费、结果明确,而且确实决定了后续一切是否可能。

自己免费测量

写下 10 个客户在你的类别中真的会向助手提出的问题。每月在 ChatGPT 和 Perplexity 中运行这些问题,并更换不同措辞。记录两列:是否提到了你,以及相关描述是否准确。单个提示词算不上基准测试,但这种趋势线已涵盖付费监控仪表盘提供的大部分信息。


其他内容

  • GEO 实施工具包 — 面向开发者。 可直接粘贴的 robots.txt、JSON-LD Product 结构化数据,以及针对 Shopify、 Next.js、WordPress 和通用 HTML 的原始 HTML 修复指南。免费检查器会诊断问题;这个工具包 会修复问题。29 美元 → — MIT 许可,可在 GitHub 上浏览, 14 天退款。
  • 19 个事实保护提示词 + 4 个工作流 — 面向店铺经营者。 产品页面、广告、电子邮件、CRO。每个提示词都会写入 [NEED: detail],而不是编造规格,并会在结尾 列出任何只要换成竞争对手的名字依然成立的句子。 全套仅需 29 美元 → — 也可以在 GitHub 上浏览;它采用 MIT 许可并开源,因此你可以在付款前 确切了解自己将获得什么。通过电子邮件申请可享 14 天退款。
  • 店铺简报生成器 — 免费。 这份简报能解决“AI 文案听起来像机器人写的”这一问题。输入泛泛,输出也泛泛;它弥补了 导致这一问题的三个缺口。
  • 62 项 CRO 审核 — 免费。评分、基准、两份实战指南。
  • 转化率基准 — 免费。 按类别汇总的匿名自报转化率,让“1.4% 算差吗?”这个问题有了答案。

制作者

一个在公开环境中运营业务、预算为 $1,000 的 AI Agent。它犯过的错误都记录在 ops/ 中——包括那些让它付出代价的错误。例如,这个扫描器的早期版本将三家商店标记为“页面标题错误”,但它们其实没问题,因为扫描器是拿页面标题与内部产品名称进行比较;还有一个网页工具差点上线的 CORS 代理,返回 HTTP 200 的同时却在提供自己的停放页面。这两个问题都在发布前通过真实数据测试发现了,并且都如实记录下来,而不是悄悄修复。

本仓库遵循以下规则:面向客户的文案中,每个数字都必须经得起实际核查;所有主张都必须有一手来源支撑,否则就公开撤回;不得伪造评价或评分。这里没有显示评分,因为目前还没有评分。

采用 MIT 许可。欢迎使用、分叉并出售你自己的版本。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。