mcpField
L
llms-txt-checker

llms-txt-checker

github.com/infrasity-labs营销与增长150141 次安装17 周前更新
代码仓库

关于 llms-txt-checker

该技能通过直接请求指定域名的 `robots.txt`、`llms.txt` 和 `llms-full.txt`,评估网站对 AI 的准备情况。它按结构化清单检查文件,并输出通过、警告或失败结果及可执行的修正建议。

主要功能

  1. 01使用 `curl` 探测标准文件路径
  2. 02检查 HTTP 状态码和文件内容
  3. 03按结构化清单评分
  4. 04生成通过、警告和失败结果
  5. 05提供可执行的修正建议

适用场景

  1. 01检查网站是否提供 `llms.txt`
  2. 02审计文档的 AI 可访问信号
  3. 03发现缺失或不完整的文档索引
  4. 04制定网站 AI 准备度改进项

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/infrasity-labs/dev-gtm-claude-skills --skill llms-txt-checker

安装后在 Claude Code 中输入/llms-txt-checker确认已加载。

附带文件README.mdreferences/llms-txt-report-reference.html

详细介绍

LLMs.txt 检查器技能

通过使用 curl 直接探测 robots.txt、llms.txt 和 llms-full.txt,审查任意域名的 AI 就绪情况,然后根据结构化清单为每个文件评分,并生成格式化报告,列出通过/警告/失败的检查结果以及可执行的修复建议。

用户只需提供一个域名(例如 anthropic.com 或 docs.example.com)。Claude 会使用 bash_tool 和 curl 命令直接探测该域名,无需猜测,也无需抓取网页。


工作原理

此技能不依赖 web_fetch,也不必等待链接自然出现,而是通过 bash_tool 使用 curl 直接请求 robots.txt、llms.txt 和 llms-full.txt 这几个众所周知的路径。此方法可靠、快速,且不受网站构建方式影响。

curl 命令会跟随 HTTP 重定向、捕获响应代码,并将内容保存到临时文件中以供审查。


分步工作流

步骤 1:规范化域名

获取用户提供的输入,并删除末尾斜杠、http://、https:// 或路径段,以得到干净的基础域名(例如 docs.anthropic.com)。如果用户提供的是完整 URL,例如 https://docs.anthropic.com/en/home,则只提取 docs.anthropic.com。


步骤 2:通过 curl 获取全部三个文件

使用 bash_tool 运行以下 curl 命令。使用 -L 跟随重定向、使用 -s 启用静默模式、使用 -o 保存内容、使用 -w 捕获 HTTP 状态码,并设置合理的超时时间(--max-time 10)。

DOMAIN="<normalised-domain>"
# Ensure files exist to prevent "No such file or directory" errors if curl fails
touch /tmp/robots.txt /tmp/llms.txt /tmp/llms-full.txt

# Fetch robots.txt
curl -L -s -o /tmp/robots.txt -w "%{http_code}" --max-time 10 "https://$DOMAIN/robots.txt" > /tmp/robots_status.txt

# Fetch llms.txt
curl -L -s -o /tmp/llms.txt -w "%{http_code}" --max-time 10 "https://$DOMAIN/llms.txt" > /tmp/llms_status.txt

# Fetch llms-full.txt
curl -L -s -o /tmp/llms-full.txt -w "%{http_code}" --max-time 10 "https://$DOMAIN/llms-full.txt" > /tmp/llms_full_status.txt

# Print status codes and file sizes for inspection
echo "robots.txt: $(cat /tmp/robots_status.txt) | $(wc -c < /tmp/robots.txt) bytes"
echo "llms.txt:   $(cat /tmp/llms_status.txt) | $(wc -c < /tmp/llms.txt) bytes"
echo "llms-full.txt: $(cat /tmp/llms_full_status.txt) | $(wc -c < /tmp/llms-full.txt) bytes"

解读 HTTP 状态码:

  • 200 → 文件存在,读取并审查内容
  • 301/302 → -L 会自动跟随重定向;以最终目标为准
  • 404 → 此路径下不存在该文件
  • 403/429/5xx → 服务端拦截或错误;明确注明
  • 000 → 连接失败(域名无法访问或请求超时)

步骤 3:读取并分类结果

curl 命令执行完毕后,读取已保存的文件:

if [ "$(cat /tmp/robots_status.txt)" = "200" ]; then
  cat /tmp/robots.txt
fi
if [ "$(cat /tmp/llms_status.txt)" = "200" ]; then
  cat /tmp/llms.txt
fi
if [ "$(cat /tmp/llms_full_status.txt)" = "200" ]; then
  head -200 /tmp/llms-full.txt
  wc -l /tmp/llms-full.txt   # get total line count
  wc -c /tmp/llms-full.txt   # get total byte size
fi

情况 A — llms.txt(200)和 llms-full.txt(200)均存在

  • 两个文件均已成功获取;继续执行审查清单(步骤 4)

情况 B — 只有 llms.txt(200),llms-full.txt 返回 404

  • 审查 llms.txt
  • 扫描其内容,查找对 llms-full.txt 的任何内部引用(该文件可能托管在非标准路径下)
  • 如果找到自定义路径 → 使用 curl 获取该路径并审查文件
  • 如果未找到 → 报告 llms-full.txt 不存在且未被引用

情况 C — llms.txt 返回 404

  • 报告标准路径下不存在这两个文件
  • 说明 robots.txt 是否提供了任何线索(有些网站会在 robots.txt 中引用 llms.txt)
  • 向用户清楚说明情况(请参阅下方的响应模板部分)

robots.txt(无论情况如何,始终检查)

  • 即使缺少 llms.txt,也始终读取并审查 robots.txt,以检查 AI 访问信号

步骤 4:审查文件
llms.txt 审核

检查以下各项。标记 ✅ 或 ❌:

结构

  • 以单个 # H1 标题开头(网站/产品名称)
  • H1 下方紧接着有 > blockquote 摘要(1–2 句描述)
  • 使用 ## H2 分组整理链接(例如 Docs、API Reference、Guides、OpenAPI Specs)
  • 每个链接均遵循以下格式:- [Page Title](https://absolute-url): brief description
  • 有一个 ## Optional 部分,用于次要/非必要内容(非必需,但最佳实践)
  • H2 链接部分内没有嵌套标题
  • 没有图片、HTML 或表格(仅使用纯 Markdown)

内容完整性

  • 列出了核心产品/功能页面
  • 包含 API 参考页面(如适用)
  • 包含入门/快速入门页面
  • 包含 SDK/集成指南(如适用)
  • 链接描述有实际意义(不只是重复页面标题)
  • 所有链接均使用绝对 URL(不是相对路径)
  • 没有明显失效或返回 404 的链接

AI 就绪信号

  • 引用了 llms-full.txt(直接引用或在 Documentation Sets 部分中引用)
  • 按不同用途划分内容集(进阶做法,但非常理想——例如 Scalekit 按主题划分的 .txt 文件)
llms-full.txt 审核(如果可用)
  • 文件存在且非空
  • 包含完整页面内容(而不只是链接)
  • 页面之间有清晰的文档边界标记(例如 --- 或 # DOCUMENT BOUNDARY)
  • 每个部分都包含 Source: URL 引用
  • 内容为整洁的 Markdown(没有原始 HTML 或 JS 残留)
  • 大小适中(如果文件极大则发出警告——可能超出大模型上下文窗口)
robots.txt 信号(有机会时检查)

如果检查过程中发现了 robots.txt:

  • User-agent: * 且 Allow: /——允许所有机器人访问
  • ai-input=yes——明确允许 AI Agent 使用内容
  • ai-train=no——禁止用于训练(常见且可接受)
  • 是否有会阻止 AI 爬虫的 Disallow 规则

第 5 步:提交报告

按以下结构组织输出:

## LLMs.txt Audit: [domain]

### Discovery
[What was found and how it was surfaced]

### llms.txt — ✅ Found / ❌ Not Found
[Audit results with ✅/❌ per checklist item]
[Notable strengths]
[Issues found]

### llms-full.txt — ✅ Found / ❌ Not Found / ⚠️ Not Referenced
[Audit results or explanation]

### robots.txt Signal
[If available — what it says about AI access]

### Summary & Recommendations
[3–5 actionable bullets]

回复模板

未发现 llms.txt 或 llms-full.txt

无法从提供的 URL 中找到 llms.txt 或 llms-full.txt。

这意味着浏览你文档的 AI Agent 和大模型没有结构化索引可供使用——它们需要逐个抓取页面,或猜测你的内容结构。

解决方法:将 llms.txt URL 放在 Claude(以及其他 AI 工具)获取页面时可以看到的位置。可选方案:

  • 将它添加到页面页脚(例如 LLM usage: /llms.txt)
  • 在文档主页或 .md 页面版本顶部的引用块中添加它(例如 > Documentation index available at: https://yourdomain.com/llms.txt)
  • 在 robots.txt 或 <meta> 标签中引用它

一旦从 AI Agent 通常会访问的页面链接到该文件,它就会自动变得可被发现。

找到 llms.txt,但未引用 llms-full.txt

已找到并审核 llms.txt。但是,文件中没有任何位置引用 llms-full.txt。

llms-full.txt 是配套文件,包含所有文档页面的完整内容,并汇总在一个文件中——对于需要深入上下文、又不想获取数十个独立页面的 AI 编码助手(Cursor、Claude Code、Copilot)而言非常实用。

添加方法:在 llms.txt 的 ## Documentation Sets 部分或类似位置引用它,例如:

- [完整文档](https://yourdomain.com/llms-full.txt):所有页面的完整内容

如果你使用 Mintlify,该文件会自动生成——只需确保已添加链接。

需要牢记的要点

  • Mintlify 会为所有项目自动生成 llms.txt 和 llms-full.txt,并添加 HTTP 标头(Link: </llms.txt>; rel="llms-txt")以便发现
  • Fern 也会自动生成这两个文件
  • Starlight(Astro)不会自动生成——必须手动添加
  • GitBook 会自动生成 llms.txt
  • llms.txt 标准由 Jeremy Howard(fast.ai)于 2024 年 9 月提出
  • llms-full.txt 不属于原始规范,但已被广泛采用,作为配套文件
  • 没有主要的 AI 爬虫正式承诺会遵循这些文件,但 Cursor、Claude Code 等工具会主动使用它们

评论

支持 Markdown