technical-seo-geo
针对技术SEO、语义HTML、可访问性、元数据、Open Graph、结构化数据、站点地图、robots.txt、规范链接、内部链接、Core Web Vitals、Next.js SEO、电商SEO、GEO、AEO、LLM可见性、AI搜索优化和信息检索优化的自动化审计器。
不可协商的执行契约
此技能是一个实时审计工作流,而非静态检查清单。
1. 实时/最新来源要求
在每次审计开始时,你必须从网络上获取并验证最新的相关指导。
不要假定附带的.md文件是最新的。它们只是基线知识。
对于每个适用的审计域:
- 打开
source-registry.md中的种子来源。 - 验证页面是否可访问且是最新的。
- 检查来源的变更日志、更新、发布说明、“新增内容”或等效信息(如果可用)。
- 跟踪在来源内部发现的相关第一方子链接。
- 递归地跟踪相关子链接,直到没有其他相关的权威参考资料可以改变正在审计的规则。
- 优先选择规范或文档页面的最新适用版本。
- 记录来源URL、来源日期/版本(如果可用)以及它所支持的规则。
- 如果某个来源不可用,请重试和/或找到权威的替代来源后再继续。切勿静默地跳过它。
2. 来源层级
使用此权威顺序:
- Google Search Central / Google 网络标准
- W3C / WCAG / WAI / WHATWG
- Schema.org
- Next.js 官方文档和发布/变更日志文档
- MDN
- OWASP
- 与检测到的技术栈相关的官方库/框架文档
- 知名行业来源
- 研究论文 / 实验性GEO-AI来源
较低权威的来源不得覆盖直接适用的较高权威来源。
如果来源冲突:
- 优先选择更新的权威来源。
- 记录冲突。
- 解释哪个来源胜出及原因。
- 切勿静默地选择一个。
3. 不跳过/不提前终止策略
代理不得:
- 因为另一个类别已经发现了问题而跳过某个审计类别;
- 因为附带的参考资料看起来足够而跳过来源验证;
- 因为父页面已被阅读而跳过子链接;
- 在发现几个关键问题后就停止;
- 用假设代替必要的验证;
- 报告“未检查”而没有记录阻塞原因和恢复尝试。
只有当每个适用类别都有记录的状态时,审计才算完成:
PASSISSUES_FOUNDNOT_APPLICABLE并附有证据BLOCKED_AFTER_RETRY并附有尝试证据以及(如果可能)替代来源/路径
不能静默地省略某个类别。
4. 完成检查点
在生成最终报告之前,对强制性的运行分类账进行完成检查。报告仅从分类账的终态生成。
必需的检查点:
- 已完成所有适用域的最新来源刷新。
- 已递归检查相关子链接。
- 来源冲突已解决或明确记录。
- SEO/可索引性审计已完成。
- 语义HTML审计已完成。
- 可访问性审计已完成。
- 元数据/Open Graph/规范链接审计已完成。
- 结构化数据审计已完成。
- 站点地图/robots审计已完成。
- 内部链接审计已完成,包括爬取深度和孤立页面检测。
- 性能/Core Web Vitals审计已完成。
- 电商审计(如适用)已完成。
- GEO/AEO/AI搜索审计已完成。
- Next.js审计(当检测到Next.js时)已完成。
- 当应用程序暴露网络/服务器功能时,相关安全/加固检查已完成。
- 当环境支持时,验证/构建/代码检查/类型检查/运行时检查已运行。
- 每个发现问题都有证据。
- 每个发现问题都有严重性和分类。
- 修复顺序已完成。
- 最终审计中没有未解决的
TODO、SKIP或未经验证的声明,除非明确标记为受阻。
如果某个检查点失败,则继续工作。不要仅仅因为已经可以写出一份看似合理的报告而最终确定报告。
5. 恢复/重试策略
当必需的操作失败时:
- 诊断失败原因。
- 使用相同的可靠路径重试(如适用)。
- 尝试等效的权威来源/路径。
- 继续执行不依赖于该失败的独立审计工作。
- 返回受阻的项目。
- 记录最终状态和证据。
临时性的网络故障不是在不披露的情况下使用过时知识的许可。
6. 来源图/子链接爬取
将每个权威文档页面视为来源图中的一个节点。
对于每个打开的来源页面:
- 检查指向规范、API参考、变更日志、迁移指南、更新、验证工具和相关官方指导的链接;
- 跟踪可能实质性地改变实现规则的相关链接;
- 避免无关的导航、营销、评论或不相关的产品页面;
- 去重URL并规范化明显的URL变体;
- 维护一个已访问来源分类账;
- 除非内容/版本发生变化或存在冲突声明需要重新检查,否则不要重新访问URL。
目标是相关来源的完整性,而非任意的爬取深度限制。
7. 证据优先规则
不要在没有证据的情况下将建议转化为问题。
对于每个发现,记录:
- 确切的代码/页面/URL证据;
- 支持该规则的来源;
- 来源日期/版本(如果可用);
- 当前实现为何违反或未达到该规则;
- 具体的修复措施。
清楚地区分:
- 已确认的缺陷;
- 风险;
- 建议;
- 新兴实践;
- 实验性想法。
7A. 上下文预算/按需加载参考
附带的参考文件是故意模块化的。不要在运行开始时将每个.md文件加载到上下文中。
使用此加载顺序:
- 阅读
SKILL.md和source-registry.md。 - 检查项目并确定哪些审计域适用。
- 仅加载当前正在审计的域所需的参考文件。
- 完成一个域后,将其结果保留在运行分类账中,而不是在活动上下文中保留完整的参考文本。
- 仅当发现问题、框架版本、来源冲突或实现细节需要时才加载其他模块。
下面定义的项目本地运行手册是未来运行的紧凑操作记忆。应优先使用它,而不是将整个技能复制到项目上下文中。
7B. 项目本地运行手册(持久化,永不自动删除)
首次在项目中使用时,如果.claude/technical-seo-geo-runbook.md文件尚不存在,则创建一个紧凑文件。
此文件的规则:
- 它是持久的项目文档,不是运行状态。
- 创建后绝不自动覆盖它。
- 在分类账清理期间绝不删除它。
- 保持简短(目标:≤120行)。
- 它仅包含执行顺序、项目特定决策和指针——不复制参考文档。
- 仅在项目特定的工作流决策真正发生更改时更新它,并保留现有的项目自有内容。
初始运行手册内容应为PROJECT-LOCAL-STEPS.md中显示的紧凑步骤序列。
8. 检测实际技术栈
在应用框架特定规则之前:
- 检查
package.json; - 检测Next.js版本;
- 检测React版本;
- 检测TypeScript;
- 检测路由模型;
- 检测UI/可访问性库;
- 检测Schema/SEO库;
- 检测测试/构建工具。
应用适用于检测到版本的最新规则。不要将Next.js规则强加给非Next.js项目。
8A. 不自愿停止规则
代理不得因为任务量大、已发现许多问题、某个工具失败或已能生成一份看似合理的报告而自愿终止运行。继续所有独立的工作,并在最终确定之前返回到受阻的工作。如果外部限制确实阻止了完成,则记录确切的限制、已完成的覆盖范围、恢复尝试和剩余的未验证项目,而不是暗示已完成。
9. 强制性运行分类账(反跳过/反提前终止)
每次运行必须在内存或临时工作文件中维护一个明确的审计分类账。该分类账是审计的执行状态机;文档式的报告不能替代它。
运行分类账存储和清理(强制)
- 不要将每运行的分类账模板或运行状态文件保留在用户的项目仓库中。
- 不要仅仅为了跟踪当前运行而创建、覆盖或删除持久化项目文件。
- 仅将运行状态存储在仓库外部的临时运行目录中,例如
$TMPDIR/technical-seo-geo/<run-id>/。 - 临时目录每次运行必须是唯一的。
- 正常完成后,删除临时运行目录。
- 崩溃/中断后,后续运行必须在开始新运行之前清理陈旧的
technical-seo-geo/*临时运行目录。 - 绝不要在分类账清理期间删除用户项目文件、
.git、context/、.claude/或任何其他持久化项目内容。 - 旧的附带的
run-ledger-template.md故意不是必需的,且不得安装到项目中。
这种分离是有意的:项目只保留持久的指令;瞬态的执行状态永远不会污染仓库或增大未来上下文。
分类账必须至少包含:
| ID | 域 | 必需? | 来源状态 | 审计状态 | 证据 | 恢复状态 |
|---|---|---|---|---|---|---|
| D1 | 实时来源刷新 | 是 | 待定/已验证/受阻 | 待定/通过/问题/受阻 | URL | 尝试次数 |
| D2 | 爬取/可索引性 | 是 | ... | ... | ... | ... |
| D3 | 语义HTML | 是 | ... | ... | ... | ... |
| D4 | 可访问性 | 是 | ... | ... | ... | ... |
| D5 | 元数据/社交 | 是 | ... | ... | ... | ... |
| D6 | 结构化数据 | 是 | ... | ... | ... | ... |
| D7 | 站点地图/robots/规范链接 | 是 | ... | ... | ... | ... |
| D8 | 内部链接 | 是 | ... | ... | ... | ... |
| D9 | 性能/CWV | 是 | ... | ... | ... | ... |
| D10 | 电商 | 条件 | ... | ... | ... | ... |
| D11 | GEO/AEO/AI搜索 | 是 | ... | ... | ... | ... |
| D12 | Next.js | 条件 | ... | ... | ... | ... |
| D13 | 安全/加固 | 条件 | ... | ... | ... | ... |
| D14 | 验证检查点 | 是 | ... | ... | ... | ... |
规则:
- 一个域从
待定开始,并且不能认为已完成,除非有明确的终态。 待定、进行中、TODO、SKIP、未知和空白是非终态,禁止最终确定。- 如果工作被错误、超时、速率限制、缺少依赖项或工具故障中断,仅在所有恢复尝试都已用尽后,将受影响的项标记为
BLOCKED_AFTER_RETRY;首先继续所有独立的域,然后再次重试受阻的项。 - 代理不得因为通过了一部分检查而将整个域标记为
PASS。 - 如果某个项不适用,需附上具体的证据说明为什么不适用。
- 在最终输出之前,每个必需分类账行必须是终态,每个条件行必须明确标记为
NOT_APPLICABLE或已完成审计。 - 最终报告必须从分类账生成,而不是从记忆或直觉生成。
分类账完成不变量
FINALIZABLE = all(required items are terminal) AND all findings have evidence AND all mandatory source refreshes are terminal AND all applicable validations have explicit results。
如果FINALIZABLE = false,则不要生成最终审计报告。继续执行,或仅在所有允许的恢复路径都已用尽后报告确切的阻塞项。
10. 强制性实时来源过期/新鲜度规则
“最新”指的是在运行时可以发现的最新权威信息,而不是模型已知的最新信息,也不是附带的最新markdown。
对于每个适用的来源系列:
- 打开种子/当前页面。
- 阅读其最后更新/发布/版本信息(如果可用)。
- 检查官方的变更日志、更新页面、发布说明、历史记录或版本索引。
- 递归跟踪相关的第一方链接。
- 在跟随指向它们的较新参考后,重新检查较旧页面指向的当前来源。
- 在分类账中记录所选权威版本/日期。
切勿在未经验证的情况下,将当前的框架版本、Core Web Vitals阈值、结构化数据功能、可访问性状态或Google搜索行为硬编码到最终建议中。
来源新鲜度优先级
当多个页面涵盖相同规则时,按此顺序选择:
- 检测到版本的当前规范性规范/官方文档。
- 当前的官方发布/变更日志/安全公告。
- 当前的官方实施指南。
- 仅当第一方来源未涵盖该问题时,使用二级文档。
- 仅用于补充或实验性实践的行业/营销来源。
较新的草案不会自动覆盖现有的最终建议。记录标准状态(推荐、工作草案、已弃用等),并应用适当的规范性权威。
11. 递归子链接验证——带有真实的停止条件
递归爬取必须在广度/深度上安全且完整地覆盖所有相关的权威链接。
对于每个来源节点,检查其目标可能改变审计规则的链接,包括:
- 标准/规范;
- API参考;
- 版本化文档;
- 迁移指南;
- 变更日志和发布说明;
- 安全公告;
- 弃用通知;
- 验证要求/工具;
- 定义行为的官方示例;
- 官方Google搜索功能文档;
- 官方框架/库兼容性文档。
使用由标准化规范URL键控的已访问集。
…
[为翻译而截断]