关于 seo-crawlability
面向 Claude 的技能,用于审查搜索引擎抓取权限、robots.txt 规则和站点地图指令。它根据页面快照检查 Googlebot 与 Bingbot 的访问情况,并提出有依据的修复建议。
主要功能
- 01检查 robots.txt 可访问性与语法
- 02解析 Googlebot 和 Bingbot 的访问权限
- 03发现被屏蔽的资源与内容
- 04检查抓取延迟和站点地图指令
- 05生成并验证修复建议
适用场景
- 01审查页面是否被禁止抓取
- 02查找屏蔽 CSS 或 JavaScript 的规则
- 03检查站点地图指令与抓取延迟
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ hainrixz/ claude-seo-ai --skill seo-crawlability安装后在 Claude Code 中输入/seo-crawlability确认已加载。
详细介绍
seo-crawlability(M1)
可抓取性是所有其他搜索信号的前提:如果 Googlebot/Bingbot 无法获取页面及其资源,其他内容就无法获得排名。本模块仅涵盖通用抓取访问。AI 专用爬虫指令(GPTBot、Claude-SearchBot 等)位于 seo-ai-crawlers(M14),AI 发现文件(llms.txt、agents.md、UCP)位于 seo-ai-discovery(M21);关于此边界,请参阅 references/ai-crawlers.md。
输入
根据调度信封中指定的 PageSnapshot 开展工作:读取 <run_dir>/pages/<slug>.json 中的 parsed,以及 status_chain 和 headers;读取 <run_dir>/site/robots.json 中解析后的 robots 文件(语法、分组、针对受审计 URL 的 Googlebot/Bingbot 判定、Sitemap: 行);对 pages/<slug>.html 执行 Grep,查找原文证据。<run_dir>/findings.deterministic.json 中列出了 audit.mjs 已生成的确定性发现——不要重复输出这些 ID;仅添加由模型判断的发现。如果直接使用 URL/路径调用且不存在快照,请先运行 node "${CLAUDE_PLUGIN_ROOT}/scripts/snapshot.mjs" <target> --out "${CLAUDE_PLUGIN_DATA}/runs",并使用输出的快照路径。
审计
根据 PageSnapshot(当 render.used 不为 none 时使用 parsed_rendered,否则使用 parsed)和 site/robots.json 开展工作:
- 可访问性:
/robots.txt返回 200(404 表示“允许全部”,但值得标记;5xx 可能会暂停抓取)。 - 语法:每一行都是有效指令(
User-agent、Disallow、Allow、Sitemap、Crawl-delay);标记未知词项、缺少User-agent分组标头以及 BOM/编码问题。 - 资源屏蔽:检查任何会屏蔽 CSS/JS、字体或类似
/wp-includes/路径的Disallow规则——这会导致渲染异常,也是“页面在 Google 看起来坏掉”的主要原因;请与 M-render 交叉核对。 - 内容屏蔽:检查会向
Googlebot/Bingbot隐藏重要可索引路径的Disallow规则。 - 抓取延迟合理性:较大的
Crawl-delay(或应用于全局分组的延迟)可能会耗尽抓取预算;请注意,Googlebot 会忽略Crawl-delay,但 Bingbot 会遵守。 - Sitemap 指令:至少存在一个绝对地址的
Sitemap:URL。 - 总体访问权限:针对受审计 URL,解析
Googlebot和Bingbot的有效规则集——最终是否允许访问?
修复
生成的编辑内容是用于 fix 的差异,并映射到架构的 fixable 字段:
- AUTO:移除意外屏蔽 CSS/JS 或关键内容路径的
Disallow规则(添加解除屏蔽规则,可验证);添加缺失的绝对地址Sitemap:行;修正格式错误的语法(例如Dissallow拼写错误、缺少冒号、分组缺少User-agent标头)。 - PROPOSED:收紧
Crawl-delay或重组User-agent分组——拟定修改内容,每项都需要接受,因为原意可能是有意如此。 - ADVISORY:更改有意禁止访问的内容(私有/暂存路径)——工具绝不写入此类更改。
切勿捏造 sitemap URL 或路径:如果未知规范的 sitemap 位置,请输出清晰标注的
TODO占位符供用户填写,或向用户询问。
验证
node "${CLAUDE_PLUGIN_ROOT}/scripts/parse-robots-sitemap.mjs" --url <final_url> --path <audited path>— 获取并解析/robots.txt,针对 Googlebot/Bingbot 在受审计路径上(而非根路径)解析有效的允许/拒绝规则,并检查是否存在Sitemap:指令(方法robots_parse)。离线 robots 文件可使用--robots <robots_url>或--file <path>。- 当无法获取
/robots.txt(网络/身份验证/边缘屏蔽)时,状态为needs_api,绝不会错误地显示为pass。
发现
按 schema/finding.schema.json 输出发现项;轴为 search。严重性策略:5 仅用于网站/模板级别、会导致灾难性后果并使资格失效的事实;4 为重大 · 3 为中等 · 2 为轻微 · 1 为表面问题 · 0 为信息提示——且只有处于活动类别中的 established 严重性 5 fail 才能封顶评分(references/scoring-model.md)。
M1.robots.blocks_googlebot— 有效规则集禁止Googlebot访问受审计的 URL(fail,严重性 5,fixable: proposed,置信度established)。这是网站级别最具破坏性的 robots 缺陷,严重性保持为 5。M1.robots.blocks_css_js— 某条Disallow规则匹配了渲染页面加载的 CSS/JS,导致 Google 渲染页面的效果变差(fail,严重性 4,fixable: auto,置信度established)。M1.robots.unreachable—/robots.txt返回 5xx,在恢复之前会暂停抓取(fail,网站级别严重性为 5,fixable: advisory,置信度established)。M1.robots.syntax_error— 指令格式错误、缺少User-agent组标头或存在 BOM(warn,严重性 3,fixable: auto,置信度established)。M1.sitemap.missing_directive— robots.txt 中没有Sitemap:行(warn,严重性 2,fixable: auto,置信度directional——也可以通过 Search Console 和/sitemap.xml发现站点地图,因此缺少指令只是便利性方面的不足,并非访问故障)。M1.crawl_delay.excessive— 全局组中较大的Crawl-delay会使遵守该规则的爬虫难以抓取(warn,严重性 2,fixable: proposed,置信度directional)。 依平台触发的 id。 仅当profile.json指定了平台(shopify、wordpress、nextjs)时,本模块才会另外触发 6 个 id。这些 id 已列在references/routing.md§ Platform-conditional finding ids 中,并在references/platforms/<id>.md§10 中进行了说明。
每条发现项:evidence.observed 原样引用有问题的 robots.txt 行(或解析出的判定);verification.reproduce 是上文中可运行的命令;expected_impact 按等级划分并标注置信度(不得只给出百分比)。
诚实说明
robots.txt控制的是抓取,而非编入索引:即使页面被Disallow,也仍可能通过外部链接被编入索引(仅保留 URL)。如需将页面排除在索引之外,请使用noindex元标签,且不要同时设置Disallow,否则爬虫将无法看到noindex。- 缺少
robots.txt或返回 404 不是缺陷——这表示“抓取所有内容”。不要将其报告为fail;应标记为信息提示。5xx 则不同:在故障持续期间,它会被视为完全禁止抓取。 - Googlebot 会忽略
Crawl-delay;建议将其作为控制 Google 抓取的手段纯属误区——相关建议应仅针对 Bingbot 和其他遵守该指令的 Agent。 - 请针对受审计路径解析每项判定,而不是
/。网站允许访问根路径但禁止访问/blog/是常见配置,只检查根路径会得出错误结论。 - 在预览或预发布主机上,统一设置
Disallow: /是预期配置;设置--environment preview|staging|local时,评分器会抑制M1.robots.*封顶规则(参见references/scoring-model.md)。