blog-seo-check
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseBlog SEO Check -- Post-Writing Validation
博客SEO检查 -- 文章撰写后验证
Runs a comprehensive on-page SEO validation against a completed blog post and
generates a pass/fail checklist with specific fixes for each failure. Designed
to run after writing — catches issues before publishing.
针对已完成的博客文章运行全面的页面SEO验证,并生成包含具体修复方案的通过/未通过检查清单。专为文章撰写完成后使用设计——在发布前发现问题。
Workflow
工作流程
Step 1: Read Content
步骤1:读取内容
Read the target file and extract:
- Frontmatter — title, description, date, lastUpdated, author, tags, canonical, og:image, slug/URL
- Heading structure — H1, H2, H3 hierarchy with full text
- Links — All internal and external links with anchor text
- Meta tags — OG tags, Twitter Card tags, canonical URL
- Body content — Full text for keyword and structural analysis
If the user provides a URL instead of a file path, use WebFetch to retrieve
the page and extract the relevant elements.
读取目标文件并提取以下信息:
- 前端元数据(Frontmatter) — 标题、描述、日期、最后更新时间、作者、标签、规范URL(canonical)、og:image、路径别名/URL
- 标题结构 — H1、H2、H3层级及完整文本
- 链接 — 所有内链和外链及其锚文本
- 元标签 — OG标签、Twitter Card标签、规范URL
- 正文内容 — 用于关键词和结构分析的完整文本
如果用户提供的是URL而非文件路径,使用WebFetch获取页面并提取相关元素。
Step 2: Title Tag Validation
步骤2:标题标签验证
| Check | Pass Criteria |
|---|---|
| Character count | 40-60 characters (no truncation in SERPs) |
| Keyword placement | Primary keyword in first half of title |
| Power word | Contains at least one power word (e.g., Guide, Best, How, Why, Essential, Proven, Complete) |
| Truncation risk | No critical meaning lost if truncated at 60 chars |
| Uniqueness | Not generic — specific to the content |
| 检查项 | 通过标准 |
|---|---|
| 字符数 | 40-60个字符(在搜索引擎结果页SERPs中不会被截断) |
| 关键词位置 | 核心关键词位于标题前半部分 |
| 强力词汇 | 包含至少一个强力词汇(例如:Guide、Best、How、Why、Essential、Proven、Complete) |
| 截断风险 | 即使在60字符处截断,也不会丢失核心含义 |
| 独特性 | 非通用标题——与内容紧密相关 |
Step 3: Meta Description
步骤3:元描述
| Check | Pass Criteria |
|---|---|
| Character count | 150-160 characters |
| Statistic included | Contains at least one specific number or data point |
| Value proposition | Ends with clear reader benefit or value proposition |
| Keyword presence | Primary keyword appears naturally (not stuffed) |
| No keyword stuffing | Keyword appears at most once |
| Call to action | Implies action (learn, discover, find out, see) |
| 检查项 | 通过标准 |
|---|---|
| 字符数 | 150-160个字符 |
| 包含统计数据 | 至少包含一个具体数字或数据点 |
| 价值主张 | 结尾包含清晰的读者收益或价值主张 |
| 关键词存在 | 核心关键词自然出现(不堆砌) |
| 无关键词堆砌 | 关键词出现次数不超过1次 |
| 行动号召 | 隐含行动引导(例如:learn、discover、find out、see) |
Step 4: Heading Hierarchy
步骤4:标题层级
| Check | Pass Criteria |
|---|---|
| Single H1 | Exactly one H1 tag (the title) |
| No skipped levels | H1 -> H2 -> H3, never H1 -> H3 or H2 -> H4 |
| Keyword in headings | Primary keyword in 2-3 headings (natural, not forced) |
| Question format | 60-70% of H2 headings are questions |
| H2 count | 6-8 H2 sections for a standard blog post |
| Heading length | Each heading under 70 characters |
| 检查项 | 通过标准 |
|---|---|
| 单个H1 | 恰好有一个H1标签(即文章标题) |
| 无层级跳跃 | 遵循H1 -> H2 -> H3的层级,不得出现H1 -> H3或H2 -> H4 |
| 标题中包含关键词 | 核心关键词出现在2-3个标题中(自然融入,不生硬) |
| 疑问式标题 | 60-70%的H2标题为疑问形式 |
| H2数量 | 标准博客文章包含6-8个H2章节 |
| 标题长度 | 每个标题不超过70个字符 |
Step 5: Internal Links
步骤5:内链
| Check | Pass Criteria |
|---|---|
| Link count | 3-10 internal links per post |
| Anchor text | Descriptive (not "click here" or "read more") |
| Bidirectional | Check if linked pages also link back (flag if not) |
| No orphan status | Post links to at least 3 other pages on the site |
| Link distribution | Links spread across the post, not clustered |
| No self-links | Post does not link to itself |
Use Grep and Glob to scan the project for existing blog content and verify
bidirectional linking where possible.
| 检查项 | 通过标准 |
|---|---|
| 链接数量 | 每篇文章包含3-10个内链 |
| 锚文本 | 描述性文本(非“点击这里”或“阅读更多”) |
| 双向链接 | 检查被链接页面是否也反向链接(若未反向则标记) |
| 非孤立页面 | 文章至少链接到网站内的3个其他页面 |
| 链接分布 | 链接分散在文章各处,不集中堆砌 |
| 无自链接 | 文章不链接到自身 |
使用Grep和Glob扫描项目中已有的博客内容,尽可能验证双向链接情况。
Step 6: External Links
步骤6:外链
| Check | Pass Criteria |
|---|---|
| Source tier | Links to tier 1-3 sources only (authoritative, not SEO blogs) |
| Broken links | Use WebFetch to verify top external links are reachable |
| Rel attributes | External links have appropriate rel attributes (nofollow for sponsored/UGC) |
| Link count | At least 3 external links to authoritative sources |
| No competitor links | Not linking to direct competitors unnecessarily |
| 检查项 | 通过标准 |
|---|---|
| 来源层级 | 仅链接到1-3级权威来源(非SEO博客类网站) |
| 无失效链接 | 使用WebFetch验证主要外链是否可访问 |
| Rel属性 | 外链带有合适的rel属性(赞助/用户生成内容UGC使用nofollow) |
| 链接数量 | 至少链接到3个权威来源 |
| 无竞争对手链接 | 不不必要地链接到直接竞争对手 |
Step 7: Canonical URL
步骤7:规范URL(Canonical URL)
| Check | Pass Criteria |
|---|---|
| Present | Canonical URL is defined in frontmatter or meta tags |
| Correct format | Full absolute URL (https://domain.com/path) |
| Trailing slash | Consistent with site convention (no mixed trailing slashes) |
| Self-referencing | Canonical points to the page itself (unless intentional cross-domain) |
| 检查项 | 通过标准 |
|---|---|
| 已定义 | 规范URL在前端元数据或元标签中已定义 |
| 格式正确 | 完整的绝对URL(https://domain.com/path) |
| 尾斜杠一致性 | 与网站约定保持一致(不混合有无尾斜杠的情况) |
| 自引用 | 规范URL指向页面自身(除非是有意的跨域引用) |
Step 8: OG Meta Tags
步骤8:OG元标签
| Check | Pass Criteria |
|---|---|
| og:title | Present, matches or complements the title tag |
| og:description | Present, 150-160 characters, compelling for social sharing |
| og:image | Present, 1200x630 minimum dimensions, absolute URL |
| og:type | Set to "article" for blog posts |
| og:url | Present, matches canonical URL |
| og:site_name | Present, matches site/brand name |
| 检查项 | 通过标准 |
|---|---|
| og:title | 已定义,与标题标签匹配或互补 |
| og:description | 已定义,150-160个字符,适合社交分享 |
| og:image | 已定义,最小尺寸1200x630,绝对URL |
| og:type | 博客文章设置为“article” |
| og:url | 已定义,与规范URL一致 |
| og:site_name | 已定义,与网站/品牌名称一致 |
Step 9: Twitter Card
步骤9:Twitter Card
| Check | Pass Criteria |
|---|---|
| twitter:card | Set to "summary_large_image" for blog posts |
| twitter:title | Present, under 70 characters |
| twitter:description | Present, under 200 characters |
| twitter:image | Present, same as or similar to og:image |
| twitter:site | Present if the site has a Twitter/X account |
| 检查项 | 通过标准 |
|---|---|
| twitter:card | 博客文章设置为“summary_large_image” |
| twitter:title | 已定义,不超过70个字符 |
| twitter:description | 已定义,不超过200个字符 |
| twitter:image | 已定义,与og:image相同或类似 |
| twitter:site | 若网站有Twitter/X账号则需定义 |
Step 10: URL Structure
步骤10:URL结构
| Check | Pass Criteria |
|---|---|
| Length | Short — under 75 characters for the path portion |
| Keyword presence | Primary keyword or close variant in the URL slug |
| No dates | URL does not contain /2025/ or /2026/ date segments |
| No special characters | Only lowercase letters, numbers, and hyphens |
| Lowercase | Entire URL path is lowercase |
| No stop words | Minimal use of "the", "a", "and", "of" in slug |
| No file extension | No .html or .php in the URL (clean URLs) |
| 检查项 | 通过标准 |
|---|---|
| 长度 | 简短——路径部分不超过75个字符 |
| 关键词存在 | URL路径别名中包含核心关键词或近似变体 |
| 无日期 | URL不包含/2025/或/2026/这类日期分段 |
| 无特殊字符 | 仅包含小写字母、数字和连字符 |
| 全小写 | 整个URL路径为小写 |
| 无停用词 | 路径别名中尽量少用“the”“a”“and”“of”这类停用词 |
| 无文件扩展名 | URL中无.html或.php这类文件扩展名(简洁URL) |
Step 11: Generate Report
步骤11:生成报告
Output a comprehensive SEO validation report in this format:
undefined输出格式如下的全面SEO验证报告:
undefinedSEO Validation Report: [Title]
SEO验证报告: [标题]
File: [path or URL]
Date: [check date]
Overall: [X/Y checks passed] — [PASS/NEEDS WORK/FAIL]
文件: [路径或URL]
日期: [检查日期]
整体结果: [X/Y项检查通过] — [通过/需要优化/未通过]
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 |
| ... | ... | ... | ... | ... |
| 序号 | 检查项 | 状态 | 详情 | 修复方案 |
|---|---|---|---|---|
| 1 | 标题长度 | 通过 | 52个字符 | — |
| 2 | 标题关键词 | 通过 | “关键词”位于前半部分 | — |
| 3 | 标题强力词汇 | 未通过 | 未发现强力词汇 | 添加“Guide”“Essential”或“Complete” |
| 4 | 元描述长度 | 通过 | 155个字符 | — |
| 5 | 元描述统计数据 | 未通过 | 未发现数字 | 添加文章中的关键统计数据 |
| ... | ... | ... | ... | ... |
Summary
总结
Passed: [N] checks
Failed: [N] checks
通过项: [N]项
未通过项: [N]项
Priority Fixes
优先级修复方案
- [Most impactful fix — what to change and where]
- [Second most impactful fix]
- [Third most impactful fix]
- [影响最大的修复方案——修改内容及位置]
- [影响第二大的修复方案]
- [影响第三大的修复方案]
Notes
备注
- [Any observations about overall SEO health]
- [Suggestions for improvement beyond the checklist]
Status values:
- **PASS** — Meets the criteria
- **FAIL** — Does not meet the criteria, fix provided
- **WARN** — Partially meets criteria or edge case, recommendation provided
- **N/A** — Not applicable (e.g., no Twitter Card tags if site has no X account)- [关于整体SEO健康状况的观察]
- [检查清单之外的改进建议]
状态值说明:
- **通过** — 符合标准
- **未通过** — 不符合标准,提供修复方案
- **警告** — 部分符合标准或属于边缘情况,提供建议
- **不适用** — 不适用(例如:若网站无X账号则无需Twitter Card标签)