mcpField
C
citable

citable

本地服务
genzagents.github.io商业与营销02 天前更新

关于 citable

citable 是用于检查网站能否被 AI 答案引擎读取和引用的命令行工具及 MCP 服务。它检测爬虫访问限制、页面标记和内容可读性,并给出评分与修复建议。

主要功能

  1. 01模拟答案引擎检查网站访问
  2. 02检查 robots.txt 与边缘拦截
  3. 03验证 llms.txt 和结构化数据
  4. 04检测 JavaScript 渲染内容
  5. 05生成评分和修复建议
  6. 06监控变化并追踪引用

适用场景

  1. 01部署后检查网站的 AI 可访问性
  2. 02在 CI 中阻止访问评分下降的变更
  3. 03定期监测站点访问故障
  4. 04追踪特定问题的引擎引用情况

MCP 相关

它提供 check_site 和 draft_llms_txt 工具,供 MCP 客户端检查网站并起草 llms.txt;服务通过 stdio 运行。

配置

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

mcp.json · 通用配置
{
"mcpServers": {
"genzagents-citable": {
"command": "uvx",
"args": [
"citable-cli"
]
}
}
}
启动命令uvx citable-cli

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
pypicitable-cli0.4.2

工具

2

收录的工具列表 · 更新于 1 天前

参数类型必填说明
urlstring是网站 URL 或域名,例如 example.com
liveboolean否同时以各 AI 机器人身份获取主页,以检测 WAF/CDN 拦截(默认值为 true)

详细介绍

citable

GitHub Marketplace PyPI

ChatGPT、Claude 和 Perplexity 真的能读取并引用你的网站吗?

大多数“AI 可见度”检查工具只读取 robots.txt,然后就此打住。citable 会以每个 AI 机器人的身份抓取你的主页,并报告 robots.txt 从未提及的拦截(Cloudflare“拦截 AI 机器人”、WAF 规则、速率限制器),然后检查列表中的其余项目:llms.txt、JSON-LD、标题和描述、仅限 JS 的内容、站点地图、规范链接。评分满分 100,每项失败都会附上修复方法。它还可以作为 MCP 服务运行,让你的 Agent 替你检查网站。

零依赖。单个文件。Python 3.9+。

pipx install citable-cli     # from PyPI; on a Mac: brew install pipx first. Or: uvx --from citable-cli citable
citable example.com                # report
citable example.com --json         # for scripts and CI (exit 1 if below --min-score=N)
citable example.com --llms-txt     # a starter llms.txt built from your homepage
citable watch a.com b.com          # weekly watch: GitHub issue per site, comment (email) on regressions
citable track a.com "best X" "how Y"  # prompt tracking: which engines cite you, who gets cited instead

完全无需安装:

curl -sL https://raw.githubusercontent.com/genzagents/citable/main/citable/__init__.py | python3 - example.com

运行结果示例

citable 0.3.0: https://reddit.com/
  score 13/100  grade F   (final URL https://www.reddit.com/)

  [FAIL]  0/15 robots.txt allows answer engines: robots.txt blocks: OAI-SearchBot, ChatGPT-User, Claude-SearchBot, ...
  [FAIL]  0/20 Answer engines not blocked at the edge: Fetching the homepage as a bot: ChatGPT-User got HTTP 403; a browser got 200.
         fix: Your CDN or WAF (Cloudflare 'Block AI bots', bot-fight mode, a rate limiter) is refusing them ...
  [FAIL]  0/15 /llms.txt: /llms.txt returns HTTP 404.
  ...
  Bot                 Vendor                 Role    robots.txt   live fetch
  OAI-SearchBot       OpenAI                 answer  block        HTTP 200
  ChatGPT-User        OpenAI                 answer  block        HTTP 403  <- BLOCKED
  Claude-SearchBot    Anthropic              answer  block        HTTP 200
  ...

检查内容

检查项分值重要性
robots.txt 允许答案机器人(OAI-SearchBot、ChatGPT-User、Claude-SearchBot、Claude-User、PerplexityBot、Perplexity-User、DuckAssistBot、Bingbot、Googlebot)15这些机器人会抓取页面,以回答实时问题并引用来源。被拦截就意味着永远不会被引用。
未在边缘拦截:以这些机器人的身份访问主页,返回的内容与浏览器获取的内容相同20CDN 和 WAF 的“拦截 AI”开关会阻止 robots.txt 允许的机器人。在此项通过之前,列表中的其他事项都无关紧要。
训练爬虫(GPTBot、ClaudeBot、Google-Extended、CCBot、Applebot-Extended、meta-externalagent、Amazonbot、Bytespider)信息拦截它们是合理的选择,不会影响引用。仅报告,不扣分。
存在 /llms.txt,为纯文本,包含 H1、> summary 和链接15答案引擎和 Agent 会首先读取的约定文件。软 404 HTML 页面会被视为缺失。
无需 JavaScript 即可读取内容(原始 HTML 中的文字)15大多数 AI 爬虫不会运行 JS。客户端渲染的空壳对它们不可见。
JSON-LD 结构化数据(Organization、WebSite、Article、FAQPage 等)10实体和常见问题会被直接引用。
标题和 meta 描述长度合理8会在回答中逐字引用。
HTTPS、响应时间、规范链接、Open Graph、站点地图、<html lang>、无 noindex22决定哪个 URL 会获得引用的基础事项。

作为 MCP 服务运行(Claude Code、Claude Desktop、Cursor,以及任何 MCP 客户端)

工具:check_site(url, live=true) 和 draft_llms_txt(url)。

Claude Code 插件(包含 MCP 服务和一个知道如何处理报告的技能):

claude plugin marketplace add genzagents/marketplace
claude plugin install citable@genzagents

手动配置任意 MCP 客户端:

{ "mcpServers": { "citable": { "command": "python3", "args": ["/path/to/citable/citable/__init__.py", "mcp"] } } }

该服务通过 stdio 使用 MCP 通信,且无任何依赖,因此只要能运行 Python,就能运行它。

在 CI 中

当部署导致 AI 访问受阻时(新增 WAF 规则、llms.txt 丢失、误加了 Disallow: /),让构建失败:

citable yoursite.com --min-score=70 --json > citable.json

监控

一次部署只要切换 WAF 开关,就可能悄无声息地让你从所有 AI 答案中消失。监控会在这时发出警报。它以 GitHub Action 的形式运行在你拥有的任意仓库中(不必是网站所在的仓库),为每个网站维护一个最新的问题,并且一旦某个答案机器人被拦截、llms.txt 消失、网站宕机或评分下降,就会立即在该问题下发表评论,GitHub 会通过邮件通知你。无需服务、账号或依赖项。示例:问题 #1 监控的是本项目自己的页面。

将 docs/watch.yml 复制到 .github/workflows/citable-watch.yml:

on:
  schedule: [{ cron: "17 6 * * 1" }]   # Mondays
  workflow_dispatch:
permissions: { issues: write, contents: read }
jobs:
  watch:
    runs-on: ubuntu-latest
    steps:
      - uses: genzagents/[email protected]
        with:
          sites: |
            example.com
            docs.example.com
          # min-score: 75

输入项:sites(必填)、min-score(低于此分数时失败)、live(按各机器人身份进行抓取,默认 true)、issue (在问题中跟踪,默认 true)、notify(回归时 @提及的用户名,默认为仓库所有者)、 fail-on-regression(默认 true)。输出项:score、regressed、changed。在已登录 gh 的 shell 中也可以执行同样的操作:

citable watch example.com docs.example.com --repo=you/your-repo --notify=you

托管服务,每月 £9:由我们运行同样的监控,无需仓库,最多支持 5 个域名,并提供每周邮件。 目前尚未上线;点击按钮告诉我们你是否需要,这将决定我们是否开发:

我想要托管版每周监控 →

跟踪

监控会告诉你引擎能否读取你的网站。跟踪会告诉你它们是否会这么做:对于你希望成为答案的问题,ChatGPT、Claude 或 Perplexity 会链接到你的网站吗?如果没有,链接的是谁?

citable track example.com "best tools for X" "how do I Y" --brand=Example
## citable track: example.com

**Visibility 50%**: share of prompt-and-engine pairs where an answer linked to your site.

| Prompt | anthropic | openai | perplexity |
|---|---|---|---|
| best tools for X | **cited** | mentioned | **cited** |
| how do I Y | no | no | no |

**Who gets cited instead** (answers citing them): rival.io (4), other.org (2)

引擎:anthropic(ANTHROPIC_API_KEY,web_search 工具)、openai(OPENAI_API_KEY,Responses API web search)、perplexity(PERPLEXITY_API_KEY,sonar)和 claude-code(你电脑上的 claude CLI,无需密钥)。凡是已提供密钥的引擎都会运行;--engines= 可选择要运行的子集。添加 --issue --repo=you/repo(或者在 Action 中使用 prompts: 输入项运行),它就会维护一个名为“citable track: example.com”的问题,并在引用丢失时发表评论。这正是付费工具每月收费 $29 到 $39 提供的每周邮件。使用你自己的密钥;在三个引擎上运行 10 个提示词只需几美分。

托管服务(每月 £9)

无需仓库、密钥或 cron:每月付费一次,在结账时填写你的网站(最多 5 个)、重要提示词(最多 10 个)和品牌信息,首份报告会在一小时内发送到你的收件箱。之后,一旦出现回归,你就会立即收到邮件;每周还会收到一封包含提示词跟踪信息的摘要。可通过收据取消订阅。

运行器位于此仓库中(citable hosted),因此你也可以为自己的客户自行运行同样的服务: 它会轮询 Polar 以获取有效订阅,为每位订阅者维护一个小型状态文件,并通过 Resend 发送邮件。零依赖项,每小时运行一次 cron。详见 docs/HOSTED.md。

citable hosted run --dry-run                  # against Polar, prints the emails instead of sending
citable hosted run --subscribers=subs.json    # against a local list (no Polar), e.g. for your own clients
citable hosted launchd                        # a launchd plist that runs it hourly on a Mac

说明

  • MCP 注册表名称:mcp-name: io.github.genzagents/citable(PyPI 软件包 citable-cli;导入名称和命令均为 citable)。

  • 机器人用户代理和角色遵循供应商公布的字符串(OpenAI、Anthropic、Perplexity)。角色“answer” = 在实时对话中获取内容以回答问题或引用;“train” = 构建训练语料。

  • 边缘检查仅比较 HTTP 状态。若网站对机器人返回 200 并显示验证页面,检查仍会通过;提交包含域名的问题后,我们会为其添加启发式规则。

  • --no-live 会跳过机器人抓取(速度更快,只检查 robots.txt)。

开发

python3 -m unittest discover -s tests -v

MIT。由 genzagents 构建。

评论

支持 Markdown

第一次接触 MCP?

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

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