
【免费下载链接】claude-seoUniversal SEO skill for Claude Code. 26 sub-skills 19 sub-agents covering technical SEO, E-E-A-T, schema, GEO/AEO, agent readiness (Lighthouse Agentic Browsing, WebMCP, llms.txt), backlinks, local SEO, e-commerce, international SEO, Google APIs, and PDF/Excel reporting. 9 optional extensions for live SEO data.项目地址https://gitcode.com/GitHub_Trending/cl/claude-seo点击查看免费下载SEO 漂移SEO drift是指页面在部署、改版或第三方脚本调整后悄悄丢失 Title、Canonical、Schema、noindex 等 SEO 关键元素从而导致排名与流量在数天至数周内无声下滑的过程。本项目claude-seo内置的seo-drift技能将其视为SEO 界的 Git——先为页面拍下已知良好的快照baseline再在任意时刻与快照做 diffcompare并留存全部变更历史history。读完本篇你将掌握三个子命令的完整用法、17 条对比规则的判定逻辑与严重级别、SQLite 存储与 URL 规范化细节以及贯穿抓取管线的 SSRF 安全防护原理可立即用它搭建发布前后检查和持续监控流程。一、技能定位为页面 SEO 状态建立版本管理seo-drift是 claude-seo 技能体系中的监控型子技能其定位描述明确为SEO drift monitoring: capture baselines of SEO-critical elements, detect changes, and track regressions over time. Git for SEO。在 Claude Code 中它通过以下三个斜杠命令被调用命令用途/seo drift baseline url抓取当前页面 SEO 状态存为已知良好快照/seo drift compare url将当前页面状态与已存基线对比输出差异报告/seo drift history url展示某 URL 的变更历史与历次对比摘要该技能同时提供了直接可执行的 Python 脚本入口二者底层共享同一套实现drift_baseline.py、drift_compare.py、drift_history.py与drift_report.py均位于 scripts/ 目录因此既可以在 Claude Code 里用自然语言触发也可以直接在终端以脚本方式跑批处理或接入 CI。技能文件本体位于 skills/seo-drift/SKILL.md完整的规则集位于 skills/seo-drift/references/comparison-rules.md。二、基线捕获什么13 项 SEO 关键要素每次baseline都会记录以下 SEO 关键元素字段名与数据来源均为仓库源码 scripts/drift_baseline.py 中capture_baseline()实际写入 SQLite 的字段要素字段来源标题标签titlescripts/parse_html.pyMeta 描述meta_descriptionscripts/parse_html.pyCanonical URLcanonicalscripts/parse_html.pyRobots 指令meta_robotsscripts/parse_html.pyH1 标题h1数组scripts/parse_html.pyH2 标题h2数组scripts/parse_html.pyH3 标题h3数组scripts/parse_html.pyJSON-LD 结构化数据schema数组scripts/parse_html.pyOpen Graph 标签open_graph字典scripts/parse_html.pyCore Web Vitalscwv字典scripts/pagespeed_check.pyHTTP 状态码status_codescripts/fetch_page.pyHTML 内容哈希html_hashSHA-256由 scripts/drift_baseline.py 计算Schema 内容哈希schema_hashSHA-256由 scripts/drift_baseline.py 计算有两个实现细节值得注意其一h1字段在 SQLite 中存的是第一个 H1 的文本而 H2/H3 以 JSON 数组整体存储h2_json/h3_json因为比较规则中 H1 用的是文本相似度、H2 用的是结构对比其二html_hash是对整页 HTML 做 SHA-256schema_hash则是对schema数组按sort_keysTrue序列化后哈希——排序保证键顺序变化不会误报 schema 修改。三、存储设计本地 SQLite 与 URL 规范化所有数据存储在本地 SQLite 数据库中路径为~/.cache/claude-seo/drift/baselines.db数据库包含两张表建表语句见 scripts/drift_baseline.py 的init_db()baselines已捕获的快照含全部 SEO 要素字段主键id自增并以url_hash建立索引加速查询comparisons历次对比结果存results_json完整 JSON 报告、baseline_id外键关联 baselines以及critical_count/warning_count/info_count三个严重级别计数。数据库首次使用时自动创建os.makedirs(DB_DIR, exist_okTrue)并开启了 WAL 日志模式。所有查询均使用参数化占位符?杜绝字符串拼接注入。URL 规范化是保证同一页面多次抓取能匹配到同一条基线记录的关键。normalize_url()的具体规则源码见 scripts/drift_baseline.pyscheme 与 host 统一转小写剥离默认端口http 的 80、https 的 443查询参数按 key 排序移除 UTM 参数utm_source、utm_medium、utm_campaign、utm_term、utm_content定义于脚本顶部的UTM_PARAMS集合去除结尾斜杠裸域名保留/。规范化后的 URL 再取 SHA-256 前 16 位十六进制作为url_hash主键所有历史查询与基线匹配都基于该哈希因此https://example.com/page?utm_sourcexb2a1与https://example.com/page?a1b2会被视为同一页面。四、命令详解一baseline—— 捕获已知良好快照执行步骤baseline命令的完整流程对应 scripts/drift_baseline.py 的capture_baseline()校验 URL调用google_auth.validate_url()做 SSRF 防护详见第八节抓取页面通过 scripts/fetch_page.py 抓取 HTMLHTTP 状态码从 stderr 的Status: NNN输出中解析解析 HTML通过 scripts/parse_html.py 解析出 title、meta、heading、schema、OG 等字段可选抓取 CWV通过 scripts/pagespeed_check.py 抓取 Core Web Vitals可用--skip-cwv跳过计算哈希对 HTML 正文与 schema 内容分别做 SHA-256入库将快照写入 SQLite 的baselines表。命令行执行python3 scripts/drift_baseline.py url python3 scripts/drift_baseline.py url --skip-cwv其中--skip-cwv的官方说明是Skip Core Web Vitals fetch (faster, uses less API quota)——由于 CWV 依赖 PageSpeed Insights API未配置 API Key 或想节省配额时建议带上。输出格式输出为 JSON包含status、baseline_id、规范化后的url、UTC 时间戳timestamp与summary摘要{ status: ok, baseline_id: 1, url: https://example.com/, timestamp: 2026-04-01T00:00:0000:00, summary: { title: ..., meta_description: ..., canonical: ..., robots: ..., h1: ..., h2_count: 5, h3_count: 3, schema_count: 1, og_tag_count: 6, cwv_captured: true, status_code: 200, html_hash: 3f8a2b... (前12位) } }summary中meta_description超过 80 字符会被截断显示html_hash只展示前 12 位便于人工快速浏览。五、命令详解二compare—— 17 条规则的三级 diff执行步骤compare会重新抓取页面并与最近基线或指定的历史基线对比对应 scripts/drift_compare.py 的run_comparison()校验 URL从 SQLite 加载最近基线默认或--baseline-id指定的基线若不存在基线则报错并提示先运行baseline抓取并解析当前页面状态依次运行全部17 条比较规则按严重级别CRITICAL / WARNING / INFO分类结果将对比结果持久化到comparisons表输出 JSON 差异报告。命令行执行python3 scripts/drift_compare.py url python3 scripts/drift_compare.py url --baseline-id 5 python3 scripts/drift_compare.py url --skip-cwv对比结果落库后可进一步生成 HTML 报告python3 scripts/drift_report.py comparison_json_file --output drift-report.html输出格式输出 JSON 包含baseline_id、baseline_timestamp、comparison_timestamp、summarytotal_rules17、triggered、以及critical/warning/info三个计数、triggered_findings与untriggered_findings两个数组、current_status_code、cwv_compared。每条 finding 结构统一为{ rule: canonical_changed, severity: CRITICAL, triggered: true, old_value: https://example.com/a, new_value: https://example.com/b, message: Canonical URL changed from ... to .... Verify this is intentional. }CLI 还会向 stderr 输出人类可读摘要例如*** 2 CRITICAL finding(s) ***若全部规则未触发则输出No drift detected. Page matches baseline.。严重级别定义级别含义建议响应时间CRITICALSEO 破坏性变更可能导致流量损失立即处理WARNING潜在影响需要调查1 周内INFO仅提示可能是主动变更有空时复查六、17 条对比规则全解以下为 skills/seo-drift/references/comparison-rules.md 的完整规则集并补充了 scripts/drift_compare.py 中的实际判定实现细节。CRITICAL需立即处理规则 1–8规则对比对象触发阈值建议动作关联技能1. Schema/JSON-LD 完全移除基线schema数组非空 vs 当前为空之前有、现在无立即恢复结构化数据富媒体结果数小时内即会丢失/seo schema url2. Canonical URL 变更基线canonicalvs 当前canonical规范化后均为非空且不同核实新 canonical 是否为有意为之错误 canonical 会把排名信号导向错误页面/seo technical url3. Canonical URL 移除基线有canonicalvs 当前为null有值变缺失恢复 canonical否则 Google 会自行猜测对带查询参数的页面常猜错/seo technical url4. 新增 noindex 指令基线meta_robots不含 vs 当前含noindexnoindex子串出现不区分大小写若非有意立即移除页面数天内会被移出索引/seo technical url5. H1 完全移除基线h1有值 vs 当前为空数组之前有 H1、现在为零恢复 H1 标题它是搜索引擎的主要主题信号/seo content url6. H1 文本显著变更基线首个 H1 vs 当前首个 H1SequenceMatcher相似度相似度 0.5差异超 50%核实 H1 变更是否与目标关键词策略一致/seo content url7. Title 完全移除基线title有值 vs 当前为null/空有值变缺失立即恢复 title否则 Google 会自行生成效果通常不佳/seo page url8. HTTP 状态码变为错误基线 2xx vs 当前 4xx/5xx从成功类变为客户端/服务端错误排查服务端错误或页面缺失排名数天内会下滑/seo technical url源码实现细节规则 6 使用 Pythondifflib.SequenceMatcher计算两个 H1 文本的相似度比值并以此触发规则 8 的判断条件是基线状态码在200–399且当前状态码 400见 scripts/drift_compare.py 的rule_08_status_code_error()。WARNING一周内调查规则 9–14规则对比对象触发阈值建议动作关联技能9. Title 文本变更基线titlevs 当前titletrim 后字符串不同区分大小写、空白规范化核实新 title 是否包含目标关键词在 GSC 中监控 CTR 两周/seo page url10. Meta 描述变更基线 vs 当前meta_descriptiontrim 后字符串不同核实新描述是否含 CTA 与目标关键词监控 CTR/seo page url11. CWV 指标回退超 20%各指标 p75 值LCP、INP、CLS、TBT当前值比基线差超 20%排查性能回退检查近期代码或第三方脚本/seo technical url12. 性能分数下跌 10 分Lighthouse performance 分数下跌 ≥ 10 分如 85→74运行完整 PageSpeed 分析定位新瓶颈/seo google psi url13. OG 标签移除基线open_graph非空 vs 当前为空之前有 OG 标签、现在没有恢复 OG 标签否则社交分享预览将缺失或通用化/seo page url14. Schema/JSON-LD 内容被修改基线schema_hashvs 当前schema_hash哈希不同且 schema 仍存在移除属规则 1校验修改后的 schema检查类型变更、属性删除或校验错误/seo schema url源码实现细节规则 11 在 scripts/drift_compare.py 中实际比较的指标是largest-contentful-paint、cumulative-layout-shift、total-blocking-time三个 lab 指标的 value按(new - old) / old 0.20判定规则 14 与规则 1 的边界通过旧哈希存在且新哈希存在且不同来区分——schema 被整体移除时由规则 1 负责仍在但内容变化时由规则 14 负责。INFO仅提示规则 15–17规则对比对象触发阈值建议动作关联技能15. 新增 Schema/JSON-LD基线schema为空 vs 当前有之前无 schema、现在出现正向变更用/seo schema校验新 schema 的合法性/seo schema url16. H2 结构变更基线h2数组 vs 当前h2数组H2 数量或文本值不同复查标题层级确保内容分区仍与目标主题对齐/seo content url17. 内容哈希变更基线html_hashvs 当前html_hash哈希不同任何正文变更的兜底若其他规则均未触发审查 HTML 哈希变化以定位改了什么/seo page url规则 17 是整个规则体系的兜底网即使某次改版没有触发 1–16 条中任何一条具体规则只要页面 HTML 有变化就能被感知到。七、命令详解三history与 HTML 报告history查看变更历史python3 scripts/drift_history.py url python3 scripts/drift_history.py url --limit 10输出为 JSON 数组新记录在前包含该 URL 的所有基线与对比摘要。基线记录含id、timestamp、title、canonical、robots、h1、status_code、截断后的html_hash/schema_hash以及has_cwv布尔值对比记录含baseline_id、timestamp和critical/warning/info计数。若数据库尚不存在或没有基线会提示先运行drift baseline。drift_report生成自包含 HTML 报告python3 scripts/drift_report.py comparison_json_file --output drift-report.html # 也支持从 stdin 输入 echo {status:ok,...} | python3 scripts/drift_report.py --stdin --output drift-report.html报告生成逻辑位于 scripts/drift_report.py 的generate_html()单文件、无外部依赖采用 claude-seo 配色板navy#1e3a5f、gold#b8860b、red#c53030等按严重级别输出顶部状态横幅DRIFT DETECTED/CHANGES DETECTED/MINOR CHANGES/NO DRIFT、三栏摘要卡片Critical/Warning/Info、红色Before与绿色After的差异卡片以及全部未触发规则的通过清单。所有输出均经过 HTML 转义html.escapeNone值渲染为emnone/em。八、跨技能集成检测到漂移后怎么办drift 监控的价值不仅在于发现问题更在于把问题交给对的专家。检测到漂移时技能会自动推荐相应的专项技能见 skills/seo-drift/SKILL.md 的 Cross-Skill Integration 章节检测结果推荐动作Schema 被移除或修改运行/seo schema url做完整校验CWV 回退运行/seo technical url做性能审计Title 或 Meta 描述变更运行/seo page url做内容分析Canonical 变更或移除运行/seo technical url做可索引性检查新增 noindex运行/seo technical url做抓取审计H1/标题结构变更运行/seo content url做 E-E-A-T 复查OG 标签移除运行/seo page url做社交分享分析状态码变为错误运行/seo technical url做完整诊断九、错误处理矩阵技能文档明确规定了各类异常场景的处置行为避免 Agent 在数据缺失时脑补状态场景动作URL 不可达报告 scripts/fetch_page.py 返回的错误不猜测状态建议用户核实 URLURL 尚无基线告知用户并建议先运行baselineSSRF 拦截私有 IP报告validate_url()拒绝结果绝不绕过SQLite 数据库缺失首次使用时自动创建不报错CWV 抓取失败无 API KeyCWV 字段存null对比时跳过 CWV 相关规则规则 11、12 会输出 comparison skipped 提示页面返回 4xx/5xx仍然照常捕获为基线状态码本身就是一个被跟踪的字段存在多条基线默认使用最近一条除非指定--baseline-id十、安全机制整条抓取管线的防护设计seo-drift将安全作为一等公民这一点在源码中体现得比文档描述更彻底URL 双层校验baseline/compare入口先调用google_auth.validate_url()其实现是 scripts/url_safety.py 中validate_url()的兼容包装拒绝非 http/https scheme、缺失 hostname、硬黑名单主机含metadata.google.internal.这类 FQDN 形式元数据端点、2130706433这类混淆 IPv4以及私有/回环/保留地址段连接期 DNS 重绑定防护scripts/fetch_page.py 的fetch_page()进一步使用validate_url_strict()safe_requests_session()先解析一次 DNS校验所有A 记录均为公网 IP只要有一条解析到私有 IP 就整体拒绝防止攻击者在校验与连接之间竞态切换 DNS并钉住连接 IP使解析器无法在校验后重绑定统一抓取管线全链路不直接使用curl或裸subprocessHTTP 调用所有抓取都走项目内经过校验的fetch_page.pydrift_baseline.py通过子进程调用它并写入临时文件再由parse_html.py解析测试 tests/test_drift_portability.py 专门验证了该子进程交接过程不使用/dev/stdout、/dev/stdin等危险路径参数化 SQL所有 SQLite 查询均使用?占位符无字符串插值TLS 始终校验管线中不存在verifyFalse。值得说明的是技能文档中提及的validate_url()阻塞私网 IP 属于解析期校验而fetch_page.py的严格模式属于连接期校验二者叠加才构成完整防护。从源码结构看这两层设计共同应对的是 SSRF服务端请求伪造攻击场景——监控类工具会按用户输入抓取任意 URL若不加防护攻击者可借此探测内网或云元数据服务。十一、典型工作流场景一发布前后检查Deployment Check/seo drift baseline https://example.com # 部署前 # ... 执行部署 ... /seo drift compare https://example.com # 部署后部署是 SEO 漂移的最高发场景——模板升级、CDN 切换、后端框架调整都可能悄悄移除 canonical、noindex 整页、改掉 title 格式。发布后立即compare能在流量受损前的黄金窗口内发现问题。场景二持续监控Ongoing Monitoring/seo drift baseline https://example.com # 初次捕获 # ... 数周之后 ... /seo drift compare https://example.com # 检查是否漂移 /seo drift history https://example.com # 回顾全部变更适合内容营销团队对核心落地页、产品页做月度巡检或配合 CI 在每次生产发布流水线中自动执行。场景三流量下滑归因Traffic Drop Investigation/seo drift compare https://example.com # 什么变了 /seo drift history https://example.com # 什么时候变的当 GSC 或 GA4 报告流量异常下跌时compare给出变了什么history给出何时变的两者结合即可快速将时间线对齐到具体部署节点。十二、实现架构小结与使用前提综合源码可以梳理出 seo-drift 的完整数据流validate_url() → fetch_page.pySSRF 严格校验→ parse_html.py → pagespeed_check.py可选 CWV ↓ ↓ 结构化字段 SHA-256 哈希html_hash / schema_hash performance_score / lab_metrics / field_metrics ↓ ↓ SQLitebaselines 表←──────────────── compare 加载基线 → 17 条规则 → comparisons 表 → drift_report.py → HTML ↓ drift_history.py 查询 baselines comparisons 两表模块间的依赖关系为drift_compare.py与drift_history.py直接复用drift_baseline.py的normalize_url、url_hash、init_db、fetch_page_data、fetch_cwv_data、hash_content等函数drift_baseline.py与drift_compare.py都依赖google_auth.validate_url最终落到url_safetyfetch_page_data通过子进程调用fetch_page.py与parse_html.py。由于 CWV 抓取依赖 PageSpeed Insights API未配置 Google API Key 时基线中 CWV 字段为null、对比时 CWV 规则自动跳过这是使用前需要知晓的一个前提相应地--skip-cwv也允许在无配额或追求速度时显式关闭该环节。如果需要深入验证或二次开发建议从以下文件入手skills/seo-drift/SKILL.md命令与工作流、skills/seo-drift/references/comparison-rules.md规则阈值、scripts/drift_compare.py规则实现、scripts/drift_baseline.py存储与规范化、scripts/url_safety.pySSRF 防护、tests/test_drift_portability.py子进程交接的回归测试。赞分享【免费下载链接】claude-seoUniversal SEO skill for Claude Code. 26 sub-skills 19 sub-agents covering technical SEO, E-E-A-T, schema, GEO/AEO, agent readiness (Lighthouse Agentic Browsing, WebMCP, llms.txt), backlinks, local SEO, e-commerce, international SEO, Google APIs, and PDF/Excel reporting. 9 optional extensions for live SEO data.项目地址https://gitcode.com/GitHub_Trending/cl/claude-seo点击查看免费下载相关推荐claude-seo SEO Drift 对比规则全解析17 条规则、3 级严重度与 Git 式页面基线守护claude seo SEO Drift 对比规则全解析17 条规则、3 级严重度与 Git 式页面基线守护 本指南以 claude seo 项目中 seoclaude-seo 的 SEO Drift 监控实战用基线对比守护线上页面的搜索可见性claude seo 的 SEO Drift 监控实战用基线对比守护线上页面的搜索可见性 claude seo 将Git for SEO的理念落地为 se用 claude-seo 的 seo-competitor-pages 技能打造高转化的竞品对比与替代方案页面用 claude seo 的 seo competitor pages 技能打造高转化的竞品对比与替代方案页面 本技术指南以 claude seo 仓库中 se上一篇all-MiniLM-L6-v1训练实录TPU集群上100K步对比学习全解析下一篇开发者必看Trinity-Large-Thinking的Transformers部署与自定义Agent开发完整教程创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考