关于 seo-review
这是面向 33 JavaScript Concepts 项目概念文档页面的 SEO 审核 Agent 技能。它提供关键词规划、页面元素与内容结构检查清单,以及审核报告方法。
主要功能
- 01规划概念关键词集群
- 02检查页面 SEO 元素
- 03评估精选摘要结构
- 04审查内部链接
- 05按模板记录审核结果
适用场景
- 01发布概念页面前审核 SEO
- 02优化搜索表现不佳的页面
- 03内容重大更新后进行检查
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ leonardomso/ 33-js-concepts --skill seo-review安装后在 Claude Code 中输入/seo-review确认已加载。
详细介绍
技能:概念页面 SEO 审核
使用此技能,对 33 JavaScript Concepts 项目的概念文档页面进行重点 SEO 审核。目标是提升页面在 JavaScript 开发者搜索结果中的曝光度。
适用场景
- 发布新的概念页面之前
- 优化表现不佳的页面时
- 定期进行内容审核时
- 进行重大内容更新之后
- 针对新的关键词时
目标
每个概念页面都应在以下搜索中获得较高排名:
- “JavaScript 中的 [概念] 是什么”
- “[概念] 在 JavaScript 中如何运作”
- “JavaScript [概念] 讲解”
- “JavaScript [概念] 教程”
- “JavaScript [概念] 示例”
SEO 审核方法
遵循以下五个步骤,完成 SEO 审核。
步骤 1:确定目标关键词
开始审核前,先确定该概念的关键词组。
关键词组模板
| 类型 | 模式 | 示例(闭包) |
|---|---|---|
| 主要关键词 | [概念] JavaScript | closures JavaScript |
| 是什么 | what is [concept] in JavaScript | what is a closure in JavaScript |
| 如何运作 | how does [concept] work | how do closures work |
| 如何使用 | how to use/create [concept] | how to use closures |
| 为什么 | why use [concept] | why use closures JavaScript |
| 示例 | [concept] examples | closure examples JavaScript |
| 对比 | [concept] vs [related] | closures vs scope |
| 面试 | [concept] interview questions | closure interview questions |
步骤 2:页面 SEO 审核
系统地检查所有页面 SEO 要素。
步骤 3:精选摘要优化
确认内容结构有利于获得精选摘要。
步骤 4:内部链接审核
检查内部链接结构。
步骤 5:生成报告
使用报告模板记录审核结果。
各概念的关键词组
使用以下为各概念预先整理的关键词组。
| 类型 | 关键词 | |------|----------| | 主要关键词 | JavaScript call stack, call stack JavaScript | | 是什么 | what is the call stack in JavaScript | | 如何运作 | how does the call stack work | | 错误 | maximum call stack size exceeded, stack overflow JavaScript | | 可视化 | call stack visualization, call stack explained | | 面试 | call stack interview questions JavaScript | | 类型 | 关键词 | |------|----------| | 主要关键词 | JavaScript primitive types, primitives in JavaScript | | 是什么 | what are primitive types in JavaScript | | 列表 | JavaScript data types, types in JavaScript | | 对比 | primitives vs objects JavaScript | | typeof | typeof JavaScript, JavaScript typeof operator | | 面试 | JavaScript types interview questions | | 类型 | 关键词 | |------|----------| | 主要关键词 | JavaScript value vs reference, pass by reference JavaScript | | 是什么 | what is pass by value in JavaScript | | 如何运作 | how does JavaScript pass objects | | 对比 | value types vs reference types JavaScript | | 复制 | how to copy objects JavaScript, deep copy JavaScript | | 类型 | 关键词 | |------|----------| | 主要关键词 | JavaScript type coercion, type conversion JavaScript | | 是什么 | what is type coercion in JavaScript | | 如何运作 | how does type coercion work | | 隐式转换 | implicit type conversion JavaScript | | 显式转换 | explicit type conversion JavaScript | | 面试 | type coercion interview questions | | 类型 | 关键词 | |------|----------| | 主要关键词 | JavaScript 相等性,JavaScript 中 == 与 === 的区别 | | 是什么 | == 和 === 有什么区别 | | 比较 | JavaScript 中的宽松相等与严格相等 | | 最佳实践 | 何时使用 == 与 === | | 面试 | JavaScript 相等性面试题 | | 类型 | 关键词 | |------|----------| | 主要关键词 | JavaScript 闭包,JavaScript 作用域 | | 是什么 | 什么是 JavaScript 闭包,什么是作用域 | | 如何工作 | 闭包如何工作,作用域如何工作 | | 类型 | JavaScript 作用域类型,词法作用域 | | 使用场景 | 闭包的使用场景,为什么使用闭包 | | 面试 | JavaScript 闭包面试题 | | 类型 | 关键词 | |------|----------| | 主要关键词 | JavaScript 事件循环,JavaScript 事件循环 | | 是什么 | 什么是 JavaScript 事件循环 | | 如何工作 | 事件循环如何工作 | | 可视化 | 事件循环可视化,事件循环详解 | | 相关主题 | 调用栈与事件循环,JavaScript 任务队列 | | 面试 | 事件循环面试题 | | 类型 | 关键词 | |------|----------| | 主要关键词 | JavaScript Promise,JavaScript 中的 Promise | | 是什么 | 什么是 JavaScript Promise | | 如何使用 | 如何使用 Promise,如何链式调用 Promise | | 方法 | Promise.all,Promise.race,Promise.allSettled | | 错误 | Promise 错误处理,Promise catch | | 对比 | Promise 与回调的对比,Promise 与 async await 的对比 | | 类型 | 关键词 | |------|----------| | 主要关键词 | JavaScript async await,JavaScript async await | | 是什么 | 什么是 JavaScript async await | | 如何使用 | 如何使用 async await,async await 教程 | | 错误 | async await 错误处理,异步 try catch | | 对比 | async await 与 Promise 的对比 | | 面试 | async await 面试题 | | 类型 | 关键词 | |------|----------| | 主要关键词 | JavaScript this 关键字,JavaScript 中的 this | | 是什么 | 什么是 JavaScript 中的 this | | 如何工作 | JavaScript 中的 this 如何工作 | | 绑定 | JavaScript call、apply、bind,this 绑定 | | 箭头函数 | 箭头函数中的 this | | 面试 | this 关键字面试题 | | 类型 | 关键词 | |------|----------| | 主要关键词 | JavaScript 原型,JavaScript 原型链 | | 是什么 | 什么是 JavaScript 原型 | | 如何工作 | 原型继承如何工作 | | 原型链 | 原型链详解 | | 对比 | JavaScript 原型与类的对比 | | 面试 | JavaScript 原型面试题 | | 类型 | 关键词 | |------|----------| | 主要关键词 | JavaScript DOM,JavaScript DOM 操作 | | 是什么 | 什么是 JavaScript 中的 DOM | | 如何操作 | 如何操作 JavaScript DOM | | 方法 | getElementById,JavaScript querySelector | | 事件 | JavaScript DOM 事件,事件监听器 | | 性能 | DOM 性能,虚拟 DOM 与 DOM 的对比 | | 类型 | 关键词 | |------|----------| | 主要关键词 | JavaScript 高阶函数,高阶函数 | | 是什么 | 什么是高阶函数 | | 示例 | JavaScript map、filter、reduce | | 如何使用 | 如何使用高阶函数 | | 面试 | 高阶函数面试题 | | 类型 | 关键词 | |------|----------| | 主要关键词 | JavaScript 递归、JavaScript 中的递归 | | 是什么 | 什么是 JavaScript 中的递归 | | 如何实现 | 如何编写递归函数 | | 示例 | JavaScript 递归示例 | | 对比 | JavaScript 中递归与迭代的对比 | | 面试 | 递归面试问题 |审核清单
标题标签清单(4 分)
| # | 检查项 | 分数 | 验证方法 |
|---|---|---|---|
| 1 | 长度为 50–60 个字符 | 1 | 统计 title frontmatter 中的字符数 |
| 2 | 主要关键词出现在前半部分 | 1 | 概念名称出现在前面 |
| 3 | 以“in JavaScript”结尾 | 1 | 检查标题结尾 |
| 4 | 包含吸引人的亮点 | 1 | 向读者传达价值或益处 |
评分:
- 4/4:✅ 优秀
- 3/4:⚠️ 良好,还有小幅改进空间
- 0-2/4:❌ 需要大幅改进
标题公式:
[Concept]: [What You'll Understand] in JavaScript
优秀示例:
| 概念 | 标题(含字符数) |
|---|---|
| 闭包 | “Closures: How Functions Remember Their Scope in JavaScript”(58 个字符) |
| 事件循环 | “Event Loop: How Async Code Actually Runs in JavaScript”(54 个字符) |
| Promise | “Promises: Handling Async Operations in JavaScript”(49 个字符) |
| DOM | “DOM: How Browsers Represent Web Pages in JavaScript”(51 个字符) |
不佳示例:
| 问题 | 不佳标题 | 更好的标题 |
|---|---|---|
| 太短 | “Closures” | “Closures: How Functions Remember Their Scope in JavaScript” |
| 太长 | “Understanding JavaScript Closures and How They Work with Examples”(66 个字符) | “Closures: How Functions Remember Their Scope in JavaScript”(58 个字符) |
| 没有亮点 | “JavaScript Closures” | “Closures: How Functions Remember Their Scope in JavaScript” |
| 缺少“JavaScript” | “Understanding Closures and Scope” | 在末尾添加“in JavaScript” |
元描述清单(4 分)
| # | 检查项 | 分数 | 验证方法 |
|---|---|---|---|
| 1 | 长度为 150–160 个字符 | 1 | 统计 description frontmatter 中的字符数 |
| 2 | 以行动词开头 | 1 | “Learn”“Understand”“Discover”(不要用“Master”) |
| 3 | 包含主要关键词 | 1 | 包含概念名称和“JavaScript” |
| 4 | 明确说明具体价值 | 1 | 列出读者将学到的内容 |
描述公式:
[Action word] [what it is] in JavaScript. [Specific things they'll learn]: [topic 1], [topic 2], and [topic 3].
优秀示例:
| 概念 | 描述 |
|---|---|
| 闭包 | “Learn JavaScript closures and how functions remember their scope. Covers lexical scoping, practical use cases, memory considerations, and common closure patterns.”(159 个字符) |
| 事件循环 | “Discover how the JavaScript event loop manages async code execution. Understand the call stack, task queue, microtasks, and why JavaScript is single-threaded but non-blocking.”(176 个字符——需缩短!) |
| DOM | “Learn how the DOM works in JavaScript. Understand how browsers represent HTML as a tree, select and manipulate elements, traverse nodes, and optimize rendering.”(162 个字符) |
不佳示例:
| 问题 | 不佳描述 | 修改方法 |
|---|---|---|
| 太短 | “Learn about closures” | 扩展至 150–160 个字符,并补充具体内容 |
| 以“Master”开头 | “Master JavaScript closures...” | 改为“Learn JavaScript closures...” |
| 太笼统 | “A guide to closures” | 列出涵盖的具体主题 |
| 缺少关键词 | “Functions can remember things” | 加入“closures”和“JavaScript” |
关键词布局检查清单(5 分)
| # | 检查项 | 分值 | 验证方式 |
|---|---|---|---|
| 1 | 标题中包含主要关键词 | 1 | 检查 frontmatter 中的 title |
| 2 | 元描述中包含主要关键词 | 1 | 检查 frontmatter 中的 description |
| 3 | 前 100 个词中包含主要关键词 | 1 | 检查开篇段落 |
| 4 | 至少一个 H2 标题中包含关键词 | 1 | 扫描所有 ## 标题 |
| 5 | 不堆砌关键词 | 1 | 内容读起来自然 |
关键词布局图:
┌─────────────────────────────────────────────────────────────────────────┐
│ KEYWORD PLACEMENT │
├─────────────────────────────────────────────────────────────────────────┤
│ │
│ 🔴 CRITICAL (Must have keyword) │
│ ───────────────────────────────── │
│ • title frontmatter │
│ • description frontmatter │
│ • First paragraph (within 100 words) │
│ • At least one H2 heading │
│ │
│ 🟡 RECOMMENDED (Include naturally) │
│ ────────────────────────────────── │
│ • "What you'll learn" Info box │
│ • H3 subheadings │
│ • Key Takeaways section │
│ • First sentence after major H2s │
│ │
│ ⚠️ AVOID │
│ ───────── │
│ • Same phrase >4 times per 1000 words │
│ • Forcing keywords where pronouns work better │
│ • Awkward sentence structures to fit keywords │
│ │
└─────────────────────────────────────────────────────────────────────────┘
内容结构检查清单(6 分)
| # | 检查项 | 分值 | 验证方式 |
|---|---|---|---|
| 1 | 以问题引入开篇 | 1 | 第一段提出引人入胜的问题 |
| 2 | 前 200 个词中包含代码示例 | 1 | 尽早展示简单示例 |
| 3 | 包含“你将学到什么”信息框 | 1 | 开篇后添加 <Info> 组件 |
| 4 | 段落简短(2-4 句) | 1 | 检查内容中是否有过长的段落 |
| 5 | 1,500 个词以上 | 1 | 检查词数 |
| 6 | 首次提及时将关键术语加粗 | 1 | 使用 **bold** 标记重要术语 |
内容结构模板:
┌─────────────────────────────────────────────────────────────────────────┐
│ IDEAL PAGE STRUCTURE │
├─────────────────────────────────────────────────────────────────────────┤
│ │
│ 1. QUESTION HOOK (First 50 words) │
│ "How does JavaScript...? Why do...?" │
│ │
│ 2. BRIEF ANSWER + CODE EXAMPLE (Words 50-200) │
│ Quick explanation + simple code demo │
│ │
│ 3. "WHAT YOU'LL LEARN" INFO BOX │
│ 5-7 bullet points │
│ │
│ 4. PREREQUISITES WARNING (if applicable) │
│ Link to required prior concepts │
│ │
│ 5. MAIN CONTENT SECTIONS (H2s) │
│ Each H2 answers a question or teaches a concept │
│ Include code examples, diagrams, tables │
│ │
│ 6. COMMON MISTAKES / GOTCHAS SECTION │
│ What trips people up │
│ │
│ 7. KEY TAKEAWAYS │
│ 8-10 numbered points summarizing everything │
│ │
│ 8. TEST YOUR KNOWLEDGE │
│ 5-6 Q&A accordions │
│ │
│ 9. RELATED CONCEPTS │
│ 4 cards linking to related topics │
│ │
│ 10. RESOURCES (Reference, Articles, Videos) │
│ MDN links, curated articles, videos │
│ │
└─────────────────────────────────────────────────────────────────────────┘
精选摘要检查清单(4 分)
| # | 检查项 | 分值 | 验证方式 |
|---|---|---|---|
| 1 | “什么是 X”包含 40-60 词的定义 | 1 | 统计“什么是”H2 后第一段的词数 |
| 2 | 至少一个 H2 采用疑问句形式 | 1 | 检查是否有“什么是”“如何”“为什么”等 H2 |
| 3 | “如何操作”内容使用编号步骤 | 1 | 使用 <Steps> 组件或编号列表 |
| 4 | 比较表(如适用) | 1 | 为“X 与 Y”内容提供表格 |
精选摘要模式:
┌─────────────────────────────────────────────────────────────────────────┐
│ FEATURED SNIPPET FORMATS │
├─────────────────────────────────────────────────────────────────────────┤
│ │
│ QUERY TYPE WINNING FORMAT YOUR CONTENT │
│ ─────────── ────────────── ──────────── │
│ │
│ "What is X" Paragraph 40-60 word definition │
│ after H2, bold keyword │
│ │
│ "How to X" Numbered list <Steps> component or │
│ 1. 2. 3. markdown │
│ │
│ "X vs Y" Table | Feature | X | Y | │
│ comparison table │
│ │
│ "Types of X" Bullet list - **Type 1** — desc │
│ - **Type 2** — desc │
│ │
│ "[X] examples" Code block ```javascript │
│ + explanation // example code │
│ │
└─────────────────────────────────────────────────────────────────────────┘
定义段落示例(40-60 词):
## What is a Closure in JavaScript?
A **closure** is a function that retains access to variables from its outer
(enclosing) scope, even after that outer function has finished executing.
Closures are created every time a function is created in JavaScript, allowing
inner functions to "remember" and access their lexical environment.
(这是 52 个词,非常适合用作精选摘要)
内部链接检查清单(4 分)
| # | 检查项 | 分值 | 验证方式 |
|---|---|---|---|
| 1 | 正文中链接 3-5 个相关概念 | 1 | 统计正文中的 /concepts/ 链接 |
| 2 | 使用描述性锚文本 | 1 | 不使用“点击这里”“这里”“这个” |
| 3 | 在 Warning 框中列出前置条件 | 1 | 在开头使用带链接的 <Warning> |
| 4 | 相关概念部分包含 4 张卡片 | 1 | 在末尾使用包含 4 张 Card 的 <CardGroup> |
良好的锚文本:
| ❌ 不佳 | ✓ 良好 |
|---|---|
| “点击这里” | “事件循环概念” |
| “这里” | “JavaScript 闭包” |
| “这篇文章” | “我们的 Promises 指南” |
| “阅读更多” | “理解调用栈” |
链接放置策略:
<Warning>
**Prerequisite:** This guide assumes you understand [Promises](/concepts/promises)
and the [Event Loop](/concepts/event-loop). Read those first if needed.
</Warning>
When the callback finishes, it's added to the task queue — managed by
the [event loop](/concepts/event-loop).
<CardGroup cols={2}>
<Card title="Promises" icon="handshake" href="/concepts/promises">
async/await is built on top of Promises
</Card>
</CardGroup>
技术 SEO 检查清单(3 分)
| # | 检查项 | 分值 | 验证方法 |
|---|---|---|---|
| 1 | 每页仅有一个 H1 | 1 | 只有一个 # 标题(页面标题) |
| 2 | URL slug 包含关键词 | 1 | /concepts/closures,而不是 /concepts/topic-1 |
| 3 | 没有孤立页面 | 1 | 至少有一个其他页面链接到该页面 |
H1 规则:
每个页面应恰好有一个 H1(主标题)。这对 SEO 至关重要:
- H1 会告诉 Google 页面内容是什么
- 多个 H1 会使搜索引擎混淆页面层级
- 所有其他标题都应使用 H2(
##)或更低级别 - H1 应包含主要关键词
# Closures in JavaScript ← This is your H1 (only one!)
## What is a Closure? ← H2 for sections
### Lexical Scope ← H3 for subsections
## How Closures Work ← Another H2
URL/Slug 最佳实践:
| ✅ 好 | ❌ 差 |
|---|---|
/concepts/closures | /concepts/c1 |
/concepts/event-loop | /concepts/topic-7 |
/concepts/type-coercion | /concepts/abc123 |
/concepts/async-await | /concepts/async_await |
Slug 规则:
- 包含主要关键词 — 概念名称应出现在 URL 中
- 使用连字符,不要使用下划线 — 使用
event-loop,而不是event_loop - 保持 slug 简短易读 — 少于 50 个字符
- 不要使用 UUID、数据库 ID 或随机字符串
- 仅使用小写字母 —
/concepts/Event-Loop应改为/concepts/event-loop
孤立页面检测:
孤立页面是指没有其他页面通过内部链接指向它的页面。这会损害 SEO,因为:
- Google 可能无法发现该页面,或不会经常抓取该页面
- 这表明该页面在网站结构中并不重要
- 用户无法通过自然方式导航到该页面
- 链接权重无法传递到该页面
如何检查孤立页面:
- 在代码库中搜索指向此概念的链接:
grep -r "/concepts/[slug]" docs/ - 确认至少有一个其他概念的“相关概念”部分包含该页面
- 检查将该页面列为前置条件的页面是否恰当地反向链接
- 确保该页面已包含在导航中(
docs.json)
修复孤立页面:
- 将该概念添加到相关页面的“相关概念”CardGroup 中
- 在相关概念的正文内容中自然地链接到该概念
- 确保双向链接(如果 A 链接到 B,在相关情况下,B 也应链接回 A)
评分系统
可获总分:30 分
| 类别 | 最高分 |
|---|---|
| 标题标签 | 4 |
| Meta 描述 | 4 |
| 关键词布局 | 5 |
| 内容结构 | 6 |
| 精选摘要 | 4 |
| 内部链接 | 4 |
| 技术 SEO | 3 |
| 总计 | 30 |
分数解读
| 分数 | 百分比 | 状态 | 操作 |
|---|---|---|---|
| 27-30 | 90-100% | ✅ 优秀 | 可发布 |
| 23-26 | 75-89% | ⚠️ 良好 | 需要进行少量优化 |
| 17-22 | 55-74% | ⚠️ 一般 | 需要进行多项改进 |
| 0-16 | <55% | ❌ 较差 | 需要进行大量改进 |
常见 SEO 问题及修复方法
标题标签问题
| 问题 | 当前内容 | 修复方法 |
|---|---|---|
| 太短(<50 个字符) | “Closures”(8) | “Closures: How Functions Remember Their Scope in JavaScript”(58) |
| 太长(>60 个字符) | “Understanding JavaScript Closures and How They Work with Examples”(66) | “Closures: How Functions Remember Their Scope in JavaScript”(58) |
| 缺少关键词 | “Understanding Scope” | 添加概念名称:“Closures: Understanding Scope in JavaScript” |
| 缺少吸引点 | “JavaScript Closures” | 添加益处:“Closures: How Functions Remember Their Scope in JavaScript” |
| 缺少“JavaScript” | “Closures Explained” | 在末尾添加:“Closures Explained in JavaScript” |
Meta 描述问题
| 问题 | 当前内容 | 修复方法 |
|---|---|---|
| 过短(<120 个字符) | "Learn about closures"(20 个字符) | 补充具体内容,扩展至 150-160 个字符 |
| 过长(>160 个字符) | [会被截断] | 大幅精简,保留关键信息 |
| 以 "Master" 开头 | "Master JavaScript closures..." | 改为 "Learn JavaScript closures..." |
| 不含关键词 | "Functions that remember" | 加入 "closures" 和 "JavaScript" |
| 过于笼统 | "A guide to closures" | 列出具体主题:"涵盖 X、Y 和 Z" |
内容结构问题
| 问题 | 修复方法 |
|---|---|
| 没有问题式引入 | 以 "How does...?" 或 "Why...?" 开头 |
| 代码示例出现太晚 | 将简单示例移到前 200 个词内 |
| 缺少 Info 信息框 | 添加 <Info>,并写上 "你将学到什么" |
| 段落过长 | 拆分为每段 2-4 句话 |
| 不足 1,500 个词 | 增加深度、示例和边界情况 |
| 没有加粗术语 | 首次提及时加粗关键概念 |
精选摘要问题
| 问题 | 修复方法 |
|---|---|
| 没有 "What is" 定义 | 添加 40-60 个词的定义段落 |
| 定义过长 | 精简至 40-60 个词 |
| 没有疑问式 H2 标题 | 添加 "What is X?" 或 "How does X work?" H2 标题 |
| 步骤没有编号 | 使用 <Steps> 或 Markdown 编号列表 |
| 没有对比表格 | 为 "X vs Y" 部分添加表格 |
内部链接问题
| 问题 | 修复方法 |
|---|---|
| 没有内部链接 | 添加 3-5 个指向相关概念的链接 |
| 锚文本不佳 | 将 "click here" 替换为描述性文字 |
| 没有前置要求 | 添加带有前置要求链接的 <Warning> |
| Related Concepts 为空 | 添加 4 个链接到相关主题的 Cards |
技术 SEO 问题
| 问题 | 修复方法 |
|---|---|
| 有多个 H1 标题 | 仅保留一个 # 标题(标题本身),所有章节使用 ## |
| slug 缺少关键词 | 将文件重命名为包含概念名称(例如,closures.mdx) |
| 孤立页面 | 在相关概念页面的正文或 Related Concepts 部分添加链接 |
| slug 中含下划线 | 使用连字符:event-loop.mdx,而非 event_loop.mdx |
| slug 中含大写字母 | 只使用小写字母:async-await.mdx,而非 Async-Await.mdx |
| slug 过长 | 缩短为主要关键词:closures.mdx,而非 understanding-javascript-closures-and-scope.mdx |
SEO 审核报告模板
使用此模板记录审核结果。
# SEO Audit Report: [Concept Name]
**File:** `/docs/concepts/[slug].mdx`
**Date:** YYYY-MM-DD
**Auditor:** [Name/Claude]
**Overall Score:** XX/30 (XX%)
**Status:** ✅ Excellent | ⚠️ Needs Work | ❌ Poor
---
## Score Summary
| Category | Score | Status |
|----------|-------|--------|
| Title Tag | X/4 | ✅/⚠️/❌ |
| Meta Description | X/4 | ✅/⚠️/❌ |
| Keyword Placement | X/5 | ✅/⚠️/❌ |
| Content Structure | X/6 | ✅/⚠️/❌ |
| Featured Snippets | X/4 | ✅/⚠️/❌ |
| Internal Linking | X/4 | ✅/⚠️/❌ |
| Technical SEO | X/3 | ✅/⚠️/❌ |
| **Total** | **X/30** | **STATUS** |
---
## Target Keywords
**Primary Keyword:** [e.g., "JavaScript closures"]
**Secondary Keywords:**
- [keyword 1]
- [keyword 2]
- [keyword 3]
**Search Intent:** Informational / How-to / Comparison
---
## Title Tag Analysis
**Current Title:** "[current title from frontmatter]"
**Character Count:** XX characters
**Score:** X/4
| Check | Status | Notes |
|-------|--------|-------|
| Length 50-60 chars | ✅/❌ | XX characters |
| Primary keyword in first half | ✅/❌ | [notes] |
| Ends with "in JavaScript" | ✅/❌ | [notes] |
| Contains compelling hook | ✅/❌ | [notes] |
**Issues Found:** [if any]
**Recommended Title:** "[suggested title]" (XX chars)
---
## Meta Description Analysis
**Current Description:** "[current description from frontmatter]"
**Character Count:** XX characters
**Score:** X/4
| Check | Status | Notes |
|-------|--------|-------|
| Length 150-160 chars | ✅/❌ | XX characters |
| Starts with action word | ✅/❌ | Starts with "[word]" |
| Contains primary keyword | ✅/❌ | [notes] |
| Promises specific value | ✅/❌ | [notes] |
**Issues Found:** [if any]
**Recommended Description:** "[suggested description]" (XX chars)
---
## Keyword Placement Analysis
**Score:** X/5
| Location | Present | Notes |
|----------|---------|-------|
| Title | ✅/❌ | [notes] |
| Meta description | ✅/❌ | [notes] |
| First 100 words | ✅/❌ | Found at word XX |
| H2 heading | ✅/❌ | Found in: "[H2 text]" |
| Natural reading | ✅/❌ | [no stuffing / stuffing detected] |
**Missing Keyword Placements:**
- [ ] [Location where keyword should be added]
---
## Content Structure Analysis
**Word Count:** X,XXX words
**Score:** X/6
| Check | Status | Notes |
|-------|--------|-------|
| Question hook opening | ✅/❌ | [notes] |
| Code in first 200 words | ✅/❌ | Code appears at word XX |
| "What you'll learn" box | ✅/❌ | [present/missing] |
| Short paragraphs | ✅/❌ | [notes on paragraph length] |
| 1,500+ words | ✅/❌ | X,XXX words |
| Bolded key terms | ✅/❌ | [notes] |
**Structure Issues:**
- [ ] [Issue and recommendation]
---
## Featured Snippet Analysis
**Score:** X/4
| Check | Status | Notes |
|-------|--------|-------|
| 40-60 word definition | ✅/❌ | Currently XX words |
| Question-format H2 | ✅/❌ | Found: "[H2]" / Not found |
| Numbered steps | ✅/❌ | [notes] |
| Comparison tables | ✅/❌/N/A | [notes] |
**Snippet Opportunities:**
1. **"What is [concept]" snippet:**
- Current definition: XX words
- Action: [Expand to/Trim to] 40-60 words
2. **"How to [action]" snippet:**
- Action: [Add Steps component / Already present]
---
## Internal Linking Analysis
**Score:** X/4
| Check | Status | Notes |
|-------|--------|-------|
| 3-5 internal links in body | ✅/❌ | Found X links |
| Descriptive anchor text | ✅/❌ | [notes] |
| Prerequisites in Warning | ✅/❌ | [present/missing] |
| Related Concepts section | ✅/❌ | X cards present |
**Current Internal Links:**
1. [Anchor text] → `/concepts/[slug]`
2. [Anchor text] → `/concepts/[slug]`
**Recommended Links to Add:**
- Link to [concept] in [section/context]
- Link to [concept] in [section/context]
**Bad Anchor Text Found:**
- Line XX: "click here" → change to "[descriptive text]"
---
## Technical SEO Analysis
**Score:** X/3
| Check | Status | Notes |
|-------|--------|-------|
| Single H1 per page | ✅/❌ | [Found X H1 tags] |
| URL slug contains keyword | ✅/❌ | Current: `/concepts/[slug]` |
| Not an orphan page | ✅/❌ | Linked from X other pages |
**H1 Tags Found:**
- Line XX: `# [H1 text]` ← Should be the only one
- [List any additional H1s that need to be changed to H2]
**Slug Analysis:**
- Current slug: `[slug].mdx`
- Contains keyword: ✅/❌
- Format correct: ✅/❌ (lowercase, hyphens, no special chars)
**Incoming Links Found:**
1. `/concepts/[other-concept]` → Links to this page in [section]
2. `/concepts/[other-concept]` → Links in Related Concepts
**If orphan page, add links from:**
- [Suggested concept page] in [section]
- [Suggested concept page] in Related Concepts
---
## Priority Fixes
### High Priority (Do First)
1. **[Issue]**
- Current: [what it is now]
- Recommended: [what it should be]
- Impact: [why this matters]
2. **[Issue]**
- Current: [what it is now]
- Recommended: [what it should be]
- Impact: [why this matters]
### Medium Priority
1. **[Issue]**
- Recommendation: [fix]
### Low Priority (Nice to Have)
1. **[Issue]**
- Recommendation: [fix]
---
## Competitive Analysis (Optional)
**Top-Ranking Pages for "[primary keyword]":**
1. **[Competitor 1 - URL]**
- What they do well: [observation]
- Word count: ~X,XXX
2. **[Competitor 2 - URL]**
- What they do well: [observation]
- Word count: ~X,XXX
**Our Advantages:**
- [What we do better]
**Gaps to Fill:**
- [What we're missing that competitors have]
---
## Implementation Checklist
After making fixes, verify:
- [ ] Title is 50-60 characters with keyword and hook
- [ ] Description is 150-160 characters with action word and value
- [ ] Primary keyword in title, description, first 100 words, and H2
- [ ] Opens with question hook
- [ ] Code example in first 200 words
- [ ] "What you'll learn" Info box present
- [ ] Paragraphs are 2-4 sentences
- [ ] 1,500+ words total
- [ ] Key terms bolded on first mention
- [ ] 40-60 word definition for featured snippet
- [ ] At least one question-format H2
- [ ] 3-5 internal links with descriptive anchor text
- [ ] Prerequisites in Warning box (if applicable)
- [ ] Related Concepts section has 4 cards
- [ ] Single H1 per page (title only)
- [ ] URL slug contains primary keyword
- [ ] Page linked from at least one other concept page
- [ ] All fixes implemented and verified
---
## Final Recommendation
**Ready to Publish:** ✅ Yes / ❌ No - [reason]
**Next Review Date:** [When to re-audit, e.g., "3 months" or "after major update"]
快速参考
字符数
| 元素 | 理想长度 |
|---|---|
| 标题 | 50-60 个字符 |
| Meta 描述 | 150-160 个字符 |
| 定义段落 | 40-60 个词 |
关键词密度
- 每 1,000 个词中,完全匹配的短语不要超过 3-4 次
- 自然地使用不同形式(例如,"closures"、"closure"、"JavaScript closures")
内容长度
| 长度 | 评估 |
|---|---|
| <1,000 个词 | 内容过少——增加深度 |
| 1,000-1,500 | 最低可行 |
| 1,500-2,500 | 良好 |
| 2,500-4,000 | 优秀 |
| >4,000 | 考虑拆分 |
总结
审核概念页面的 SEO 时:
- 确定目标关键词,使用该概念的关键词集群
- 检查标题标签——50-60 个字符,关键词靠前,包含引导语,以 "JavaScript" 结尾
- 检查 Meta 描述——150-160 个字符,包含行动词、关键词和具体价值
- 核实关键词位置——标题、描述、前 100 个词和 H2 标题
- 审核内容结构——问题式引入、较早出现代码、Info 信息框、短段落
- 针对精选摘要进行优化——40-60 个词的定义、编号步骤、表格
- 检查内部链接——3-5 个链接、优质锚文本、Related Concepts 部分
- 生成报告——记录评分、问题和按优先级排列的修复项
请记住: SEO 不是为了操纵搜索引擎,而是为了让需要相关内容的开发者更容易找到它。每项优化也应改善读者体验。
评论
支持 Markdown