SEO Playbook
此技能将SEO转化为可重复的工程工作流程:找到网站真正能赢的查询,为每个页面设定一个清晰任务,将正确的词汇放入正确的HTML元素中,确保Google能够爬取、渲染和索引结果,获取链接,然后衡量和迭代。
它提炼了在将年轻的Next.js工具站点从零提升至长尾查询第一页排名过程中有效(以及默默失效)的做法。经验教训可泛化至任何技术栈。
思维模式(五句话)
- 排名取决于可赢得性,而非期望。 一个年轻域名今年无法在“qr code generator”这样的头部词上进入前五名;但可以在“free qr code generator no sign up”或“birthday wish link with name”上在数周内获得排名。首先瞄准长尾词,让专题权威性后来带动头部词。
- 一个页面,一个搜索意图,一个主要关键词。 两个针对同一查询的页面会分裂信号(关键词蚕食);一个针对两种意图的页面则无法服务任何一方。
- Google排名的依据是接收到的HTML,而非用户看到的应用。 如果内容、H1、FAQ回答或链接仅在JavaScript运行后才出现,假设它们不存在。每次检查原始服务器响应。
- 索引性缺陷比文案更重要。 软404、错误的规范标签或从布局继承的
noindex可以在没有任何错误提示的情况下抹去数月的内容工作。验证每个你接触的页面类型的状态码、规范标签和robots。 - 用Search Console衡量,而非直觉。 位于第8–20位的展示次数是最容易获得的胜利;第50位以上意味着存在权威性或意图问题,仅靠页面内调整无法解决。
诚实设定用户期望:长尾页面的首次展示通常在2–6周内出现;头部词需要数月时间和反向链接。“快速”SEO意味着选择网站能赢的战斗。
首先选择深度
大多数SEO请求规模较小。在开始之前先选择模式,因为完整工作流所需的时间和令牌成本是小规模更改的数倍。
快速模式 适用于对已知或明显关键词的一到两页的编辑:重新标题、编写元描述、添加FAQ、修复标记的问题、或将页面添加到已有可复制SEO模式的项目中。在快速模式下:
- 除非下面的检查失败或你确实无法决定,否则不读取参考文件,也不研究实时SERP。
- 遵循项目现有的SEO模式:其元数据助手、内容配置和schema组件。
- 进行更改,然后对结果运行下面的快速检查清单。如果有构建或服务端的HTML,对其运行一次
scripts/seo_check.py。 - 用几行报告。将你注意到的任何重大问题作为一行“Also worth doing”提及,而不进一步调查。
快速检查清单(仅针对更改的页面):
- 标题唯一、以关键词开头、不超过60个字符。描述在120–160个字符之间且仅做真实声明。
- 恰好一个H1,且主要内容、H1和FAQ答案在服务器HTML中(非仅客户端、非
opacity:0、非未挂载)。 - 页面设置自己的规范标签、可索引、且位于站点地图中。隐藏页面使用
noindex且不在robots.txt中被禁止。 - 3–5个外链,且至少一个内链。
- 结构化数据与可见内容匹配,且不包含非网站自身的评分。
完整模式 是指下面的工作流。用于:
- 新站点、页面集或专题群组
- 当正确目标不明确时选择关键词
- 诊断“为什么没有排名”或“流量持平”
- 上线前或全站审计
- 站外计划
快速检查可能揭示全站性的问题,例如继承的规范标签、软404模式或捏造的评分。不要默默扩大工作范围:完成请求的更改,在报告中顶部放置问题并附上一行说明其重要性,然后提供完整分析的建议。由用户决定是否投入。例外情况是,当请求的更改在不修复问题的情况下无法工作时,例如您正在编辑的页面没有服务端渲染的H1。在这种情况下,修复必要的最小问题并明确说明。
工作流(完整模式)
对于新站点或页面集,按顺序执行各个阶段。对于单页更改,至少执行第3、4和6阶段。当您到达一个阶段时,读取链接的参考文件——每个文件都包含详细的检查清单和模板。
将工作规模与请求相匹配。 页面审查就是页面审查;关键词映射就是关键词映射。彻底完成所需的任务,并将邻近的机会(关键词、站外想法)放在一个简短的“Also worth doing”列表中,而不是生成没人需要的完整额外计划。额外的交付物会稀释用户所需内容并消耗时间。
在断言之前验证。 检查您可以验证的事实(实时SERP、品牌名称是否已被占用、页面实际包含什么、特性实际做什么)。当您无法检查某些内容时——仅知道URL的页面、无法加载的站点、您未见过的特性——说明这是一个假设,并告诉用户要确认什么。关于他人网站的自信猜测是SEO建议出错的最常见原因。
脚本是给您使用的。 自己运行 scripts/*.py。在写给用户的指令中,用通俗的术语描述检查,或给出一个他们无需此技能即可运行的命令(curl、Search Console步骤)。仅当您知道用户已安装此技能时,才引用技能的脚本路径。
阶段 1 — 侦察(在更改任何内容之前)
- 识别技术栈以及页面渲染方式(SSR、SSG、SPA、混合)。对于框架陷阱,请阅读
references/technical-seo.md的相关部分(Next.js App Router 有独立章节)。 - 盘点已有内容:元数据如何设置、页面文案所在位置、站点地图和robots生成方式、结构化数据组件、分析工具。复用现有模式而不是添加并行模式。
- 以Googlebot的身份获取每种类型的代表性页面并记录基线:
python3 <skill-dir>/scripts/seo_check.py <url> [<url> ...]该脚本会报告状态、标题/描述长度、规范标签、robots元标签和X-Robots-Tag、H1数量、可见词汇数、JSON-LD类型、OG图片以及诸如“Loading…”主元素的危险信号。 - 如果有Search Console数据可用(导出、API助手或已安装的
seo-google技能),提取90天的查询+页面行并运行scripts/gsc_opportunities.py(见阶段6)。现有展示次数告诉您Google已经将哪些内容与网站关联。 - 查找项目SEO文档或早期审计的记忆笔记,并在此基础上构建。
阶段 2 — 关键词研究和关键词映射
阅读 references/keyword-research.md。简而言之:
- 从产品出发:页面做什么、谁使用它、用户在想要该功能时键入的词汇。
- 用免费信号扩展:Google自动完成和“People also ask”、相关搜索、竞争对手标题、GSC查询、Reddit/Quora措辞。仅当项目有付费API时才使用(例如已安装的
seo-dataforseo或seo-ahrefs技能)。 - 分类意图(do / know / go / buy)并查看每个候选词的实时SERP。如果第一页全是大型品牌或不同的页面类型(例如你提供的是工具而结果全是列表文章),则该关键词在此页面尚不可赢得。
- 评分可赢得性:第一页上的弱竞争对手(单薄独立页面、论坛、GitHub仓库、
*.vercel.app站点)是最强信号。 - 检查品牌名称:直接搜索,以及相关的npm/PyPI/GitHub/应用商店。如果已被占用,建议一致使用域名形式(“Brand.app”)。
- 生成关键词映射:每行一个URL,包含主要关键词、3–8个次要/长尾词、意图以及每个词放置位置(标题、H1、H2、引言、FAQ)。没有主要关键词出现在两行上,每个表的每一行都有一个意图。
没有付费工具时的搜索量是方向性层级(非常高 / 高 / 中等 / 低)。在输出中说明这一点,而不是虚构数字。
阶段 3 — 页面内实施
阅读 references/on-page.md 获取完整检查清单和页面内容模型。每个可索引页面的要点:
- 标题:唯一、主要关键词优先、理想情况下不超过60个字符(包括任何品牌后缀)、旨在赢得点击。
- 元描述:唯一、120–160个字符、说明用户获得的内容和差异化优势(“免费、无需注册、在浏览器中运行”),仅当真实时才使用。
- 服务器HTML中恰好一个H1,匹配页面的主要意图(标题的接近变体,而非重复)。
- 正文:在第一段回答查询,然后增加竞争对手页面缺乏的深度:操作步骤、工作示例、常见问题及修复、局限性、FAQ。每部分之所以存在是因为搜索者需要它,而不是为了达到字数。
- FAQ在HTML中可见(不仅限于折叠的、未挂载的折叠面板,也不仅存在于JSON-LD中),以真实查询的形式编写。
- 内部链接:3–5个指向相关页面的上下文链接,以及至少一个来自相关中心页或文章的指向该页面的链接。无孤立页面。
- 与可见内容匹配的结构化数据:参见
references/structured-data.md,了解哪些类型仍能获得富媒体摘要。 - 信任:真实的作者或组织、准确的声明、内容变更时更新的最后审核日期、数字的来源。永不发布占位评论或推荐——Google将其视为虚假陈述。
将页面SEO内容存储为数据(类型化配置对象或CMS字段),而不是将字符串散布在JSX中。这使唯一性检查、长度测试和批量审查成为可能。
阶段 4 — 技术关卡(不可跳过)
阅读 references/technical-seo.md。在宣布任何页面完成之前,在构建或部署的HTML中确认:
- 真实页面返回状态200,未知URL返回真正的404(而非状态200但包含“not found”文本)。
- 自引用的绝对规范标签,没有意外从父布局继承的canonical或robots。
- 可索引页面位于站点地图中,带有诚实的
lastmod;noindex页面不在其中。 - 您希望隐藏的页面使用
noindex(meta或X-Robots-Tag),并且不在robots.txt中被阻止,否则Google永远无法读取noindex。 - 主要内容、H1、FAQ答案和内部链接存在于原始HTML中(
seo_check.py的词汇数检查和H1检查)。 - 一个首选主机(https、www或根域名),其他版本通过单跳301重定向。
- 核心网页指标未退化(LCP ≤ 2.5 s、INP ≤ 200 ms、CLS ≤ 0.1)。对于现场数据,使用PageSpeed Insights / CrUX,或已安装的
seo-performance/seo-google技能。
阶段 5 — 站外和分发
阅读 references/off-page.md。页面内工作使页面有资格;链接和品牌需求决定了它能在竞争的查询中上升到多高。在页面建设的同时规划链接获取,而非之后:
- 每个专题群组构建一个可链接资产(免费工具、模板仓库、数据表、原创指南)。
- 向少数符合受众的目录和发布平台提交内容,编写为真正的帖子。
- 视觉型利基使用视觉平台(Pinterest、YouTube Shorts);开发者受众使用GitHub。
- 设置Bing Webmaster Tools和IndexNow(Bing的索引为ChatGPT搜索和Copilot提供数据)。
- 永不购买链接、加入链接计划或向垃圾目录批量提交。
当您自己无法完成站外工作时,为用户生成一个可运行的套件:目标列表、帖子草稿、外联邮件草稿和日历。
阶段 6 — 验证、发布、监控
阅读 references/measurement.md。
- 对构建或部署的页面重新运行
seo_check.py并与阶段1的基线进行差异比较。对于共享布局或组件的更改,差异比较每种页面类型,而不仅限于您编辑的那一个——全站性更改可能会悄悄改变已经排名的页面。 - 部署后:重新提交站点地图,仅对最重要的少数新URL请求索引,ping IndexNow。
- 2–4周后:运行
python3 <skill-dir>/scripts/gsc_opportunities.py <gsc-export.json|csv>列出可触及的查询、低CTR页面和关键词蚕食情况,然后针对这些页面迭代标题、章节和内部链接。
来之不易的规则
这些规则来自实际回退案例。每个案例在被发现之前都造成了排名或索引的损失。
- 检查爬虫实际接收的内容。 路由级加载旋转图标、
ssr: false动态导入、或从opacity: 0开始的淡入效果可能导致服务器HTML中只包含“Loading…”,而浏览器显示完美。AI爬虫根本不运行JavaScript。 - 入场动画隐藏了首屏内容。 动画库(framer-motion
initial={{ opacity: 0 }}、AOS、GSAP)会服务端渲染它们的起始状态,因此H1和引言在Hydration之前以不可见状态发送,延迟了LCP。对首屏以上内容使用initial={false}或纯CSS动画;在构建后的HTML中搜索opacity:0。 - CMS正文添加了第二个H1。 从
# Title开始的Markdown在页面级H1下会重复它。在渲染器中,将正文H1降级为H2。 - 流式SSR引发的软404。 一旦流式响应开始,后续的
notFound()无法更改状态200。在渲染之前拒绝未知slug(使用静态参数并禁用动态参数),或者从元数据缺失分支中返回显式的noindex。 - 继承的规范标签。 根布局中的规范标签会泄漏到每个未设置自身规范标签的页面中。继承该标签的软404会成为一个可索引的、真实页面的重复。
- “API宕机”不等于“无结果”。 决定
notFound()或noindex的代码必须区分抓取失败和空结果,否则一次宕机会导致真实页面被取消索引。 - 隐藏内容。 关闭时卸载面板的折叠面板会将FAQ答案从HTML中移除。保持它们挂载(
hidden="until-found"或CSS),使其可爬取且可通过页面内搜索找到。 - 共享组件是爆炸半径。 当一个页面排名良好时,在可选属性的背后更改共享SEO组件,并在之前和之后对构建后的其他页面HTML进行差异比较。
- 捏造的社交证据。 Google的搜索质量评估者指南将虚假的推荐、评分或“as seen on”徽标标记为虚假陈述。仅当外部来源明确认可产品时,才在其来源旁边声明信任标记。
- 推广的域名使策略失效。 如果初始分析使用了推广的域名(例如优惠链接),关键词策略、竞争分析和意图分类将无法应用于真实网站——两者有不同的权威性和页面。始终询问:“您网站的域名是什么?”
- 内容杂糅。 当AI助手仅根据URL主题推断页面内容时,它们填充了公司名称、功能、定价和屏幕上不存在的细节。如果编写器从未访问过该页面,始终要求用户粘贴页面内容或提供其构建后的HTML。
两行规则
- 始终询问域名并自行访问它。u003cbr />- 现实检查!勿基于推广URL或URL模式模式推断内容、功能或技术栈。