关于 blog-seo-check
blog-seo-check 是用于文章完成后的页面 SEO 检查技能,按多项标准生成通过或未通过清单,并为问题提供修正建议,涵盖元数据、链接、标题层级、URL 和引文。
主要功能
- 01检查标题、描述和标题层级
- 02审核内外部链接
- 03查找重复 URL 和链接问题
- 04验证规范链接及社交标签
- 05检查 URL 结构和引文
- 06生成含修正建议的 SEO 报告
适用场景
- 01发布前检查博客文章
- 02查找重复或缺失的内部链接
- 03检查元数据和标题结构
- 04核验公开统计数据的引文
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ infrasity-labs/ dev-gtm-claude-skills --skill blog-seo-check安装后在 Claude Code 中输入/blog-seo-check确认已加载。
详细介绍
博客 SEO 检查:写作后验证
对已完成的博客文章进行全面的页面内 SEO 验证,并生成一份通过/未通过清单,为每项未通过检查提供具体的修复建议。适用于写作完成后运行,可在发布前发现问题。
工作流
步骤 1:读取内容
读取目标文件并提取:
- Frontmatter — 标题、描述、日期、lastUpdated、作者、标签、 canonical、og:image、slug/URL
- 标题结构 — H1、H2、H3 层级及完整文本
- 链接 — 所有内部和外部链接及其锚文本
- Meta 标签 — OG 标签、Twitter Card 标签、canonical URL
- 正文内容 — 用于关键词和结构分析的完整文本
如果用户提供的是 URL 而不是文件路径,请使用 WebFetch 获取页面并提取 相关元素。
步骤 2:标题标签验证
| 检查项 | 通过标准 |
|---|---|
| 字符数 | 40-60 个字符(在 SERP 中不会被截断) |
| 关键词位置 | 核心关键词出现在标题的前半部分 |
| 强效词 | 至少包含一个强效词(例如,指南、最佳、如何、为何、必备、经验证的、完整) |
| 截断风险 | 截断至 60 个字符时不会丢失关键信息 |
| 独特性 | 不泛泛而谈,内容指向明确 |
步骤 3:Meta 描述
| 检查项 | 通过标准 |
|---|---|
| 字符数 | 150-160 个字符 |
| 包含数据 | 至少包含一个具体数字或数据点 |
| 价值主张 | 以明确的读者收益或价值主张结尾 |
| 包含关键词 | 自然地包含核心关键词(不堆砌) |
| 不堆砌关键词 | 关键词最多出现一次 |
| 行动号召 | 暗示采取行动(学习、探索、了解、查看) |
步骤 4:标题层级
| 检查项 | 通过标准 |
|---|---|
| 单个 H1 | 恰好一个 H1 标签(标题) |
| 层级无跳跃 | H1 -> H2 -> H3,不得出现 H1 -> H3 或 H2 -> H4 |
| 标题中包含关键词 | 2-3 个标题中自然地包含核心关键词,不刻意生硬 |
| 问句格式 | 60-70% 的 H2 标题采用问句形式 |
| H2 数量 | 标准博客文章包含 6-8 个 H2 部分 |
| 标题长度 | 每个标题少于 70 个字符 |
步骤 5:内部链接
| 检查项 | 通过标准 |
|---|---|
| 链接数量 | 每篇文章包含 3-10 个内部链接 |
| 锚文本 | 描述明确(不是“点击此处”或“阅读更多”) |
| 双向链接 | 检查被链接页面是否也链接回来(如果没有则标记) |
| 无孤立状态 | 文章至少链接到网站上的其他 3 个页面 |
| 链接分布 | 链接分散在文章中,而非集中在一处 |
| 无自链接 | 文章不链接到自身 |
使用 Grep 和 Glob 扫描项目中的现有博客内容,并在可能的情况下验证双向链接。
步骤 5.5:链接去重
| 检查项 | 通过标准 |
|---|---|
| URL 不重复 | 每个 URL 在正文内容中最多出现一次 |
| 保留最佳实例 | 如果存在重复,保留锚文本描述性最强的实例 |
| 导航链接豁免 | 页眉/页脚导航链接不计入正文去重 |
| 片段规范化 | 将带有不同 #fragments 的 URL 视为同一 URL |
对于发现的每个重复项:
- 规范化 URL(移除末尾斜杠、查询参数和片段)
- 根据锚文本的描述性对每个实例评分(包含丰富关键词的优于泛泛的)
- 建议保留得分最高的实例,删除其他实例
- SEO 优化得分中每出现一处重复扣 1 分
Google 会为每个页面上的每个 URL 记录 1-2 个锚文本(Zyppy 2023)。最佳做法:正文内容中每个 URL 只链接一次;每 2,000 个词包含 5-10 个内部链接;每页链接总数最多约 50 个。
步骤 6:外部链接
| 检查项 | 通过标准 |
|---|---|
| 来源等级 | 仅链接到 1–3 级来源(权威来源,而非 SEO 博客) |
| 链接失效 | 使用 WebFetch 验证重要外部链接是否可访问 |
| rel 属性 | 外部链接具有适当的 rel 属性(赞助内容/用户生成内容使用 nofollow) |
| 链接数量 | 至少包含 3 个指向权威来源的外部链接 |
| 无竞争对手链接 | 不必要时不链接直接竞争对手 |
FLOW 证据三要素(引文)
对于帖子中的每项公开统计数据,请验证以下三个组成部分:
- 正文中在统计数据之前出现年份标记(如“In 2026,”或“As of Q1 2026,”),不要将其埋在括号中。
- 行内引文注明发布方和文档标题(或报告名称)。
- 帖子底部的来源区块列出每个引用来源的 URL,以及
retrieved YYYY-MM-DD。
未满足以上任一项的帖子,应删除无法核实的说法,或将其替换为已核实的说法。参见 skills/blog/references/flow-alignment.md。如需使用一次性提示词驱动的检查,请参见 /blog flow optimize。
步骤 7:Canonical URL
| 检查项 | 通过标准 |
|---|---|
| 已设置 | 在 frontmatter 或 meta 标签中定义 Canonical URL |
| 格式正确 | 完整的绝对 URL(https://domain.com/path) |
| 末尾斜杠 | 与网站规范一致(末尾斜杠不混用) |
| 指向自身 | Canonical 指向页面自身(有意跨域的情况除外) |
步骤 8:OG Meta 标签
| 检查项 | 通过标准 |
|---|---|
| og:title | 已设置,且与 title 标签相符或形成补充 |
| og:description | 已设置,长度为 150–160 个字符,适合社交分享且具有吸引力 |
| og:image | 已设置,尺寸至少为 1200x630,且为绝对 URL |
| og:type | 博客帖子设为 "article" |
| og:url | 已设置,且与 Canonical URL 相符 |
| og:site_name | 已设置,且与网站/品牌名称相符 |
步骤 9:Twitter Card
| 检查项 | 通过标准 |
|---|---|
| twitter:card | 博客帖子设为 "summary_large_image" |
| twitter:title | 已设置,且少于 70 个字符 |
| twitter:description | 已设置,且少于 200 个字符 |
| twitter:image | 已设置,与 og:image 相同或相似 |
| twitter:site | 网站有 Twitter/X 账号时设置 |
步骤 10:URL 结构
| 检查项 | 通过标准 |
|---|---|
| 长度 | 简短,路径部分少于 75 个字符 |
| 包含关键词 | URL slug 中包含主要关键词或相近变体 |
| 不含日期 | URL 不包含 /2025/ 或 /2026/ 之类的日期段 |
| 不含特殊字符 | 仅使用小写字母、数字和连字符 |
| 小写 | 整个 URL 路径均为小写 |
| 不含停用词 | slug 中尽量少用 "the"、"a"、"and"、"of" |
| 不含文件扩展名 | URL 中不含 .html 或 .php(使用简洁 URL) |
步骤 11:生成报告
按以下格式输出全面的 SEO 验证报告:
## SEO Validation Report: [Title]
**File**: [path or URL]
**Date**: [check date]
**Overall**: [X/Y checks passed] - [PASS/NEEDS WORK/FAIL]
### Results
| # | Check | Status | Details | Fix |
|---|-------|--------|---------|-----|
| 1 | Title length | PASS | 52 chars | - |
| 2 | Title keyword | PASS | "keyword" in first half | - |
| 3 | Title power word | FAIL | No power word found | Add "Guide", "Essential", or "Complete" |
| 4 | Meta description length | PASS | 155 chars | - |
| 5 | Meta description stat | FAIL | No number found | Add a key statistic from the post |
| ... | ... | ... | ... | ... |
### Summary
**Passed**: [N] checks
**Failed**: [N] checks
### Priority Fixes
1. [Most impactful fix - what to change and where]
2. [Second most impactful fix]
3. [Third most impactful fix]
### Notes
- [Any observations about overall SEO health]
- [Suggestions for improvement beyond the checklist]
状态值:
- PASS - 符合标准
- FAIL - 不符合标准,已提供修复方案
- WARN - 部分符合标准或存在边缘情况,已提供建议
- N/A - 不适用(例如,网站没有 X 账号时无需设置 Twitter Card 标签)
可选:实时性能检查(blog-google)
如果帖子已有已发布的 URL,且有可用的 blog-google 凭据:
- 检查凭据:
python3 skills/blog-google/scripts/run.py google_auth --check --json - 如果为 Tier 0+,运行 PageSpeed:
python3 skills/blog-google/scripts/run.py pagespeed_check <url> --json - 将以下内容附加到报告中:
- Lighthouse 的 Performance、Accessibility、Best Practices 和 SEO 分数
- CWV 字段数据(LCP、INP、CLS)及红黄绿评级
- 预计可节省时间最多的 3 个优化机会
- 如果凭据不可用或 URL 尚未发布,则静默跳过。
评论
支持 Markdown