事故:改了副标题之后,点击率掉了四成
去年十月我在自己的一个技术博客上做了一次「优化」:给每篇文章都加了一句副标题,放在标题下面、正文上面的位置,灰字小一号,用来补充说明这篇文章讲什么。当时的想法很朴素——读者看到副标题能更快判断要不要读,体验应该更好。
三个月后看数据,展示量没变、排名没变,点击率从 4.1% 掉到 2.4%。我一开始以为是竞争对手变了或者季节波动,直到有一天自己在搜索结果里搜自己的文章,才发现问题:Google 把我那句副标题当成了描述,展示在 SERP 里。而副标题写的是「本文约 3200 字,含大量代码示例」——作为一条搜索结果,它完全没有吸引力。
这件事让我重新理解了「标题」在 SEO 里到底是什么:它不是文章的名字,而是在搜索结果里跟几十个竞争对手抢夺一次点击的那 60 个字。而标题、副标题、description、H1、URL slug 这几个东西,各自的职责完全不同,一旦混淆,就会出现「内容很好但没人点」这种最难查的问题。
这篇文章想把这几层关系讲清楚,从 SERP 里实际显示什么开始,一直到页面结构应该怎么写。
先看 SERP 里到底展示了什么
很多人以为搜索结果里那行标题就是网页的 <title>,其实不然。Google 在 2021 年之后把「标题改写」做得非常激进,它会从页面里挑选它认为更合适的一段文本替换掉 <title>。常见的被选中对象有:
<h1>的内容(尤其当它跟 title 差异大且更具体时)- 页面上离 H1 最近的一段文字,包括你写的副标题
- 面包屑导航(显示为「站点名 > 分类 > 标题」的形式)
- 锚文本,如果这个页面在别处被链接时用了描述性文字
<title>的某个片段(当原始 title 太长被截断时,它会重组成一个「完整」的版本)
所以副标题被拿去当 title,不是「bug」,而是 Google 认为「这段文字比你的 title 更能说明这个页面」。而它判断的依据是「跟查询词的相关性」和「是否足够简洁完整」。我那句「本文约 3200 字」恰好符合「简洁完整」,只是完全不符合「吸引点击」。
description 的处境更糟:Google 有超过一半的情况会自己生成摘要,直接抓取页面上跟查询词最匹配的段落。所以你精心写的 155 字 description,很多时候根本没被用到。
这两条事实加起来,得出一个反直觉但重要的结论:不要试图「操控」SERP 里显示的文字,要保证「无论 Google 挑哪一段,挑到的都是能吸引点击的句子」。 这意味着页面上每一段靠近标题的文字,都应该按「可能被展示在 SERP 里」的标准来写。
标题、H1、副标题、description、slug 五者的职责边界
这是我踩坑之后整理的一张表,每次写新站的内容模板都会对照着过一遍:
<title>:给搜索引擎和 SERP 看。核心职责是「包含搜索词 + 给出点击理由」。长度控制在 30 个汉字以内(60 个字符左右),因为超了会被截断。它的位置是页面 head 里,用户看不见。<h1>:给已经点进来的读者看,也是页面的语义主标题。它应该跟 title 高度一致但可以更自然、更口语。一页只能有一个 h1,这不是玄学,而是 HTML 语义的要求。- 副标题(subtitle / 摘要段):给读者看,作用是「让读者在 3 秒内决定读不读」。它的位置在 H1 之后、正文之前。它同时是 SERP 摘要的候选素材,所以要写得像一句能独立成立的介绍,而不是「本文约 X 字」这种元信息。
meta description:给 SERP 看,但现在只有约一半概率被用上。职责是「在 Google 不用时不影响,在 Google 用时能加分」。写法上要包含核心词 + 一个具体的价值承诺。- URL slug:给搜索引擎和分享者看。英文、短、含核心词、不含日期(日期型 URL 在内容更新后会显得过时)。中文站的 slug 必须做拼音或英文翻译,绝不能让浏览器把中文做 URL 编码之后塞进去——那会变成
%E4%B8%AD%E6%96%87这样的怪东西,在分享和日志分析时都是灾难。
这五者的关系可以概括成一句话:title 是「广告语」,H1 是「招牌」,副标题是「开场白」,description 是「备用的广告语」,slug 是「门牌号」。 把广告语写成门牌号,或者把开场白写成广告语,都会出问题。
为什么「副标题」这个位置特别危险
在页面结构上,H1 下面那段文字是一个「黄金位置」:它在视觉上最显眼、在 DOM 里离 H1 最近、在语义上最像「对标题的解释」。这三重身份让它在三个地方同时产生作用:
作用一:影响用户是否继续读。 这是好事。一段好的副标题(「用一个真实的 502 事故,讲清楚 upstream keepalive 的四个必配项」)能显著提升页面停留时间,而停留时间是排名因素之一。
作用二:可能被 SERP 抓取为摘要。 这是双刃剑。写得好就是优势,写得像元信息就是灾难。判断标准很简单:这句话脱离上下文,单独出现在搜索结果里,能不能让一个陌生人想点?
作用三:可能被用作「页面主题」的语义信号。 搜索引擎会从这段文字里提取主题词。如果副标题写的是「本文约 3200 字,含大量代码示例」,它提取到的主题信号是「字数」「代码」,而不是文章真正的主题「keepalive 配置」。
所以副标题的正确写法是「一句带核心词的、可独立成立的介绍句」,长度在 40~80 个汉字之间。比如:
- 差:「本文约 3000 字,适合有 Nginx 基础的读者。」(元信息,浪费位置)
- 差:「关于 keepalive 的一些总结。」(无核心词,无价值承诺)
- 好:「Nginx upstream keepalive 配了却不生效,多数是漏了 Connection 头这一行;本文用一个真实 502 事故讲清四个必配项。」(有核心词、有具体问题、有承诺)
标题写法:三种结构,对应三种搜索意图
标题不是越长越好,也不是越有创意越好。搜索引擎的查询分三类意图,标题应该对应匹配:
第一类:操作型(「怎么做 X」)。 用户想知道步骤。标题结构应该是「具体场景 + 核心动作 + 结果或关键障碍」。例如「MySQL 死锁排查:从锁等待日志到代码改法」——前半是场景,后半是给你的路径。这类标题最忌讳写抽象词,「浅谈」「深入理解」「那些事」全是浪费字符。
第二类:信息型(「X 是什么 / 为什么」)。 用户在建立认知。标题结构应该是「概念 + 一个反直觉的结论」。例如「缓存命中率不是越高越好:缓存键设计的五个坑」——前半立概念,后半给出「跟常识不一样」的钩子。
第三类:导航/交易型(「X 官网」「X 怎么下载」)。 这类词个人站基本抢不到,也不必抢。硬去写「XX 官网入口」只会得到一堆低质量流量和极高的跳出率。
还有一个非常实际的约束:标题在 SERP 里显示的字数由像素宽度决定,不是字符数。中文一个字大约占 2 个字符宽度,所以中文标题在移动端大约 20 个字就会被截断,桌面端约 30 个字。我现在的习惯是控制在 22~26 个汉字,需要补充的信息全部放到副标题里。这一点在之前的站点上踩过坑——标题写到 45 个字,库里是完整的,但前台被主题按字节截断,搜索结果里看到的是半截句子,非常难看。
description 的正确用法:不指望它,但别浪费它
既然有一半概率不被使用,那还要不要写?要,但心态要对。
数据上,一份写得好的 description 在被使用时,点击率能比自动生成的摘要高 15%~30%。这个概率不低,值得花五分钟写。但如果没被使用,也不要觉得白写了——它对「页面主题的一致性」仍有正面作用。
写法的几个具体建议:
- 长度 70~120 个汉字(约 150~300 字符)。太短信息不足,太长会被截断在中途。
- 第一句就给结论或答案。 因为被截断的时候,往往只有第一句能完整显示。
- 不要堆关键词。 现在的算法对 keyword stuffing 的识别很成熟,一段话里核心词出现 2 次足够,第 3 次开始就是负分。
- 不要写「点击了解更多」「欢迎阅读」这种废话。 这是最常见的浪费。
- 不要所有页面的 description 都一样。 模板化 description(「XX 站提供优质的技术文章」)等于没有,而且会在大批量页面上制造重复内容信号。
还有一个容易忽略的点:description 里出现的数字和具体信息,会显著提升点击率。「五个必配项」「三个月的实测数据」「从 640ms 降到 1.9ms」,这类具体信息比形容词更有说服力。这跟写广告文案的原理是一样的。
H1 与 title 不一致,到底行不行
这个问题我被问过很多次。答案是:行,但要满足条件。
title 和 H1 完全一致是最安全的做法,尤其在内容页上。但有些场景下不一致反而更好:
- title 需要包含品牌名或分类名以便在 SERP 里辨识(「Nginx 配置排查 - 某某博客」),而 H1 只需要文章名。
- title 为了搜索词匹配用了稍显生硬的表述,H1 则用更自然的口语。
- 列表页的 title 可以写「全部文章」,H1 写「按时间归档的全部技术文章」。
但一定要避免的是「title 和 H1 讲的是两件不同的事」。比如 title 是「MySQL 索引优化」,H1 是「我的建站三年总结」,这是语义冲突,Google 会认为页面主题混乱,两个都排不好。
还有一类非常隐蔽的问题:同一个 H1 出现在多个页面上。这经常发生在模板里——列表页和详情页用了同一个 header 组件,里面写死了 <h1>某某博客</h1>,于是所有页面都有一个「某某博客」的 H1。这种情况会稀释每个页面的主题信号,是模板设计时必须避开的。
改标题的风险:我的两次教训
「改标题能不能提升排名」这个问题,我的答案是能,但风险远大于收益,除非确有问题。
教训一:改标题导致排名清零。 有一次我觉得一篇排在第 5 的文章标题不够好,改成了一个更「优化」的版本。三天后排名消失,两周后才回来,回到了第 12 位。原因可能是:标题变了,搜索引擎把它当成「一个新页面」重新评估;原来积累的点击数据和标题的关联断掉了。后来我给自己定了一条规矩:排名在前 20 的文章,标题不动;只有排名在 30 名之外、且确认标题存在明显问题(比如不含核心词、过长被截断、有错别字)时才改。
教训二:改副标题也会连带影响。 就是本文开头那次。副标题被 SERP 抓取之后,改动它会立刻反映在点击率上。所以副标题的调整要当成「A/B 测试」来做:一次只改一个页面,观察两周数据,确认是正向后才批量推。
还有一条技术性的风险要提:改标题后一定要验证页面不是 404。有些 CMS 的编辑接口在处理标题时会连带修改「发布日期」,如果时区处理不当,发布日期被推到未来,已发布的文章在前台会直接不可见。这个坑我在 Typecho 上遇到过——编辑返回成功、数据库里标题也改了,但前台 404。排查了很久才发现是日期问题。所以改完必须立刻 curl 一次,确认返回 200 且 <title> 是新的。
一个可以直接抄的检查清单
把这套东西收成一个发布前的清单,每篇新文章过一遍,五分钟:
- title 是否在 26 个汉字以内,且包含主关键词?在 SERP 里预览一下会不会被截断。
- title 是否有「点击理由」?是「MySQL 锁问题」还是「MySQL 死锁排查:从日志到代码改法」?后者才有理由。
- H1 是否只有一个?是否跟 title 语义一致(可以不同措辞,不能不同主题)?
- 副标题是否为一句可独立成立的介绍句,且包含核心词?假设它被单独放进 SERP,能不能吸引点击?
- description 是否 70~120 个汉字,第一句是否给出结论,是否含具体数字?
- slug 是否为英文、短、含核心词、没有日期?中文站必须做转换,不能让中文被编码后进入 URL。
- 页面上「跟标题挨得最近的几段文字」是否都合格?因为其中任何一段都可能被选为摘要。
- 改完用
curl确认返回 200,且<title>是新的,页面正文可见。
最后回到那次点击率事故。我的修复方式是:把副标题全部从「元信息」改成「介绍句」,并且把 description 重新写成「一句结论 + 一个具体数字」。两个月后点击率回到 3.8%,超过了原来的 4.1%——因为有超过一半的页面,Google 选用了新的 description 而不是原来那句元信息。
这件事的启示不在于「副标题要怎么写」,而在于:页面上的每一个文字位置,都可能被搜索引擎拿去当「你的门面」。 你写「本文约 3200 字」的时候,以为写的是一个备注;搜索引擎看到的是「这个页面在自我介绍什么」。从这个角度重新审视每一段靠近标题的文字,很多「没流量」的问题其实都有答案。