Communitygithub.com

dilab/audit

每季度对线上站点进行技术审计,爬取所有页面,检查链接、标题、描述等,并生成修复项和所有者列表。

audit 是什么?

这是一个用于对网站进行季度性技术审计的AI Agent技能。它从首页、站点地图和商品目录等入口开始爬取所有页面,全面检查内部链接、外部链接、重定向、标题标签、描述标签、规范标签、noindex标签、H1标签、alt文本、内容单薄页面、站点地图缺口,并可选检查核心网页指标(Core Web Vitals)。审计结果会保存为JSON文件并与上一次审计进行差异对比。对于文章类页面发现的可修复问题,它会生成“fix”和“link”类型的待办事项;对于导航、布局、定价及法律页面等不可自动修复的问题,则归入所有者列表。该技能对站点只读,不创建PR;修复项会安排在周五执行。适合在每个季度初、站点迁移后,或当业务方要求“审计站点”“检查死链”“技术SEO检查”时使用。

兼容平台✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/dilab/seo-agent/tree/main/skills/audit

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

audit — 季度爬取

analysis 看到的是仓库;audit 看到的是访问者和爬虫看到的内容:真实的 HTML、实际的状态码、重定向、以及服务端返回的站点地图。它发现的一切要么变成 fix 技能可以机械执行的待办事项,要么列入所有者列表——那些不该由技能处理的事务(导航、布局、定价和法律页面、托管)。它从不编辑文章,也从不创建 PR。

脚本:${CLAUDE_PLUGIN_ROOT}/scripts/{crawl,inventory,sitecheck}.js。设置 P=${CLAUDE_PLUGIN_ROOT}。

参数:--origin <url>(默认值:seo/brand.json 中的 https://<domain>,否则使用 Preview 行的主机)--max <n> 页面(500),--external <n> 要检查的外部链接(200),--cwv(向 PageSpeed Insights 请求首页和集群枢纽页;需要能访问 googleapis.com,PAGESPEED_API_KEY 可选),--no-items(仅报告,不写入待办事项),--dry-run(爬取并报告,不提交任何内容)。

0. 前置条件

产品仓库根目录;git status --porcelain 为空;处于默认分支;存在 seo/strategy.md 和 ## SEO agent 块。先执行 node $P/scripts/inventory.js --root .,以便爬虫能将路径映射到文件和种类。不需要 gh。

1. 爬取

PREV=$(ls seo/data/crawl/*.json 2>/dev/null | sort | tail -1)
node $P/scripts/crawl.js --root . --origin <origin> --max <n> --external <n> [--cwv] --save seo/data/crawl ${PREV:+--diff $PREV} --quiet

读取 JSON:summary(页面、按代码分类的发现、truncated),findings[](code、severity fix|report、path、file、msg、to),sitemap(count、error、missing),external[],cwv[],diff(自上次审计以来的 new、resolved)。顶层出现 error 键或 sitemap.error → 说明情况并停止;站点宕机是所有者的问题,不是待办事项。truncated: true → 说明爬取已达到 --max 限制以及哪些路径仍在队列中。

然后还要执行 node $P/scripts/sitecheck.js --root .:它能看到源码(Blade 参数、路由、框架)——这些是 HTML 源码隐藏的内容,两者结合起来才是完整视图。

2. 分类

按以下顺序分为三类:

  1. fix 项 — 对于 severity: fix 的发现(代码为 title、description、canonical、alt、link、sitemap),且该页面的库存条目具有 file 且种类为指南、文章或工具。每页面一个条目,格式与 analysis §1c 完全相同,仅有两处不同:- evidence: audit <date>: <n> findings 以及每行 fixes: 以 (audit <date>) 结尾,以便 fix 知道要针对线上站点而非 sitecheck 进行确认:
    ### [B-nnn] fix: <path>
    - type: fix
    - target: <path>
    - score: <n> (potential <p> × ease 10 × fit <f>)      ← potential 3,或来自最新 seo/data/gsc 快照的页面 gsc_potential;fit 来自集群优先级
    - evidence: audit <date>: <n> findings
    - status: open
    - fixes:
      link: internal link /old-path redirects to /new-path: link the final URL (audit <date>)
      description: no meta description (audit <date>)
    
    如果一个页面已有开放的/已认领的/正在审核的 fix 项 → 将新的 fixes: 行追加到其中(跳过已存在的、具有相同 code + to 的行)。如果一个页面被一个开放的 refresh 项拥有 → 标记为 owned by B-nnn,不创建 fix 项。如果 sitecheck 也报告了相同的发现(相同页面、相同代码),则只列出一次,来自审计,并带有 (audit <date>) 标签。
  2. link 项 — 文章页面的 orphan 发现:每个集群一个 link 项($P/skills/analysis/SKILL.md §1c 格式,- links: 行 /hub → /orphan (orphan, audit <date>));如果集群已有开放的 link 项,则追加配对。没有集群的孤页(没有匹配的枢纽页)归入所有者列表。
  3. 所有者列表 — 其余所有内容:broken-external、redirect-chain、duplicate-title/duplicate-description、noindex-in-sitemap、sitemap-404、thin、h1、mixed-content、slow、server-error、非文章页面(首页、定价页、法律页面、布局)上的所有发现、sitemap.missing 以及 CWV 行。按代码分组,最严重的在前,每种代码最多 3 个示例路径;如果库存中有文件名则注明。文章页面上的 thin 是刷新信号,不是修复项:说明是刷新信号并交由 analysis 处理。

如果使用了 --no-items → 仅执行第 3 类,并统计本应创建的条目数量。

3. 提交

除非使用 --dry-run:运行 git add seo/data/crawl/<date>.json seo/backlog.md 并在默认分支上提交 seo: audit <date> — <pages> pages, <findings> findings, <k> fix items, <m> link items(直接提交计划文件);如果分支有上游则推送。不创建 PR。

4. 报告(不超过 15 行)

  • audit <date>: <pages> pages crawled (<html> html, <truncated?>), <findings> findings (<fixable> fixable);站点地图 <count> 个 URL,<missing> 个缺失或失败
  • 按代码分类的发现,每行一个,包含计数
  • 与 <previous> 的差异:<new> 个新增,<resolved> 个已解决(如果新增 ≤ 5 个则列出名称)
  • 条目:fix ID 及路径;link ID 及集群;owned by / already open 备注
  • 所有者列表:不超过 8 行,最严重的在前(导航中的 5xx 或重定向链排在长描述之前)
  • 使用 --cwv 时的 CWV 表格:路径、LCP、CLS、INP、性能、来源
  • 下一步:fix 将在周五执行这些条目(或立即执行 /seo-agent:fix);下次审计将在 3 个月后进行

硬性规则

  • 对站点只读:使用 seo-agent-audit 用户代理进行 GET/HEAD 请求,单个来源,--max 个页面,请求间有 --delay 延迟;绝不提交表单,绝不登录,绝不爬取其他主机
  • 绝不编辑文章、布局或站点地图;绝不创建 PR;仅写入 seo/data/crawl/ 和 seo/backlog.md
  • 待办事项仅针对 fix 技能可以编辑的文章页面;其余归所有者处理
  • 确定性:所有发现均来自 crawl.js;不通过人工阅读 HTML 添加任何发现
  • thin 绝不是修复项

相关技能