关于 llms-txt-checker
该技能通过直接请求指定域名的 `robots.txt`、`llms.txt` 和 `llms-full.txt`,评估网站对 AI 的准备情况。它按结构化清单检查文件,并输出通过、警告或失败结果及可执行的修正建议。
主要功能
- 01使用 `curl` 探测标准文件路径
- 02检查 HTTP 状态码和文件内容
- 03按结构化清单评分
- 04生成通过、警告和失败结果
- 05提供可执行的修正建议
适用场景
- 01检查网站是否提供 `llms.txt`
- 02审计文档的 AI 可访问信号
- 03发现缺失或不完整的文档索引
- 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.txtURL 放在 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 等工具会主动使用它们