关于 seo-platform-detect
seo-platform-detect 是用于 SEO 审计的平台识别技能,可判断网站的平台、框架、CMS 插件、托管和环境。它生成基于证据的配置供审计 Agent 选择检查项与修复路径,并明确标记未能识别的结果。
主要功能
- 01独立识别平台与框架
- 02评估 CMS 插件和托管信息
- 03按层记录证据与置信度
- 04生成供审计分发使用的配置
- 05支持快照、路径和探测输入
适用场景
- 01在 SEO 审计前识别网站平台
- 02选择平台专属的审计检查项
- 03判断哪些修复适用
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ hainrixz/ claude-seo-ai --skill seo-platform-detect安装后在 Claude Code 中输入/seo-platform-detect确认已加载。
详细介绍
seo-platform-detect
平台配置决定了任何模块都无法自行决定的三件事:哪些平台条件检查 ID 会触发、哪些发现会因为相关事项由平台负责而标记为 not_applicable,以及 fix 会调用哪个修复适配器。在每次审计中运行一次:快照完成后、派发任务前。
平台检测与垂直领域检测彼此独立:seo-vertical-detect 回答 这是哪种类型的网站,本技能回答 这个网站基于什么构建。两者都会写入同一个 profile.json。
何时运行
在常规的 /audit 和 /geo 流程中,无需自行运行此工具:audit.mjs 已经会基于本次运行的首页快照调用相同的 detect(),并将结果保存为 <run_dir>/profile.json。请先读取该文件。只有在需要无头检测阶段无法获取的信号时,才直接运行脚本——使用 --path <project> 获取仓库和软件包信号,或使用 --probe 获取 WordPress 插件判定;在运行器之外工作时也需要直接运行。无论哪种情况,每次审计都只运行一次,并在构建派发信封前完成;所有子 Agent 都读取同一份平台配置。
如何运行
node "${CLAUDE_PLUGIN_ROOT}/scripts/detect-platform.mjs" --snapshot "<run_dir>/pages/<home-slug>.json"
仅在适用时添加相应标志:
- 当用户提供本地项目(
--project)时,使用--path <project>。只有通过此方式才会检查仓库和软件包信号;不提供此参数时,无法检测 Payload,Next.js 路由器检测也会退回到 DOM 标记。此参数还会启用capabilities.local_files,这是本地文件修复得以实现的必要条件。 - 当目标可访问且需要判定 WordPress 插件时,使用
--probe。此参数会请求/wp-json/、/.well-known/ucp、/products.json和/wp-sitemap.xml——仅发送四次 GET 请求。REST 命名空间列表是区分 Yoast、Rank Math 和 AIOSEO 的唯一可靠方式;HTML 注释只能表明有某个插件输出了注释,而不能证明该插件处于启用状态。 - 使用
--out "<run_dir>/profile.platform.json"将结果保存到文件,而不是通过标准输出传递 JSON。
离线/夹具模式(测试使用,也适用于没有网络的情况):
--html <file> [--headers <json>] [--cookies <json>] [--probes <json>] [--url <u>]。
退出代码:0 表示成功 · 1 表示调用错误或输入不可读 · 2 表示获取失败。
返回内容
{ version: "detect-platform/1", target, platform, framework, cms_plugins[], hosting, environment, capabilities, write_targets[], candidates, vertical_hints[], cards[], sources, notes[] }。
platform、framework、cms_plugins[] 和 hosting 各自都会包含对应的 confidence
(high 表示 ≥ 8 且信号种类 ≥ 2,medium 表示 ≥ 5,low 表示 ≥ 2)以及产生该结果的 signals。
证据不足的层会返回 null——平台未解析出来也是一种结果,并非缺失。
请报告为未解析,并让本次运行继续使用 instructions;切勿在文字描述中把 low 提升为更高置信度。
四个层级分别评分,因此无头架构也能正确解析:WordPress 后端搭配 Next.js 前端时,会得到
platform: wordpress 以及 framework: nextjs,并且
capabilities.head_owner 会变为 framework。当卡片结果不一致时,请以 head_owner 为准。
合并到 profile.json
<run_dir>/profile.json 是此工具输出与 seo-vertical-detect 输出的并集。audit.mjs 会写入该文件:刷新 detect() 管理的每个键,同时保留你添加的键,因此文件中已有的 vertical 块会在重新运行时保留(--vertical 标志会覆盖该块)。结构如下:
{ "version": "detect-platform/1", "platform": {…}, "framework": {…}, "cms_plugins": [],
"hosting": {…}, "environment": {…}, "capabilities": {…}, "write_targets": [],
"candidates": {…}, "vertical_hints": [], "cards": [], "sources": {…}, "notes": [],
"vertical": { "primary": "ecommerce", "also": [], "multilingual": false, "locales": [] } }
将 vertical_hints[] 作为 信号 传给 seo-vertical-detect,而不是作为判定结果——它仍必须引用自身的证据。将 environment.kind 传给评分器(score.mjs --environment preview|staging|local),这样在非生产主机上会抑制 noindex 类严重度 5 的上限,并将其报告为预期情况。
每张卡片分配给哪个子 Agent
profile.cards[] 已列出路径(references/platforms/<id>.md)。将这些路径放入每个调度信封中的 platform_cards,并与 platform 字段(绝对路径 profile.json)和一行摘要(
"shopify (high) · theme head · staging theme available · environment production")一同提供,并逐字包含以下两条指示:
- 当规则匹配时,输出卡片 §10 中的检查 ID;
- 卡片 §4 中的项目 ⇒
not_applicable,并在evidence.observed中注明负责人——绝不能默默判定通过,也绝不能因为平台不允许任何人更改而判定fail。
将平台卡片、框架卡片和任何插件卡片一并提供;无头站点显然需要这三者。capabilities.instructions_only 为 true 时,还要告知 Agent,他们提出的每项修复都会以点击路径的形式交付,因此 fix_preview 必须是人类可读的文字,而非差异内容。
诚实原则
write_targets中的needs列出的是凭据键名。通过检查CLAUDE_PLUGIN_OPTION_<KEY>/<KEY>是否存在来确认;绝不会读取、打印或记录其值。ready: false表示“尚未配置”,绝不表示“密钥错误”。- Cookie 名称可作为证据;绝不记录 Cookie 值。
- 未提供
--path时,不会有仓库信号;未提供--probe时,不会有探测信号;配置文件中的notes[]会注明这一点。请在报告中重申,而不要将不完整的配置文件描述为完整内容。 - 卡片 §12 中标记为
UNVERIFIED的信号可以支持检测判定,但绝不能支持写入。当修复取决于未经验证的 API 细节时,答案为needs_api。