打开 Google 搜你的文章,发现 SERP 显示的描述根本不是 <meta name="description"> 里写的那一句——这是 Google 在判定”你写的描述不如我自动从正文抽取的好”。这不是 bug,是它的默认行为:Google 官方明确说只在 ~70% 的查询里使用你的 description,剩下 30% 它会自己摘。
要把展示率从 30% 推回 70-80%,得先搞清楚 Google 嫌弃你的描述哪一点。
常见原因
按命中率从高到低:
1. 描述太泛、没有”独有信息”
最典型的失败描述:
"了解 AI 工具如何提升你的工作效率,本文为你详细介绍。"
"This article introduces the best AI tools for productivity."
这种话适合任何一篇文章,Google 一眼判断:“抽正文一句话比这强”,于是改写。
如何判断:把你自己的描述读出来,问”换到另一篇文章上还能用吗?“——能用就是太泛。
2. 全站描述高度重复
很多模板默认所有页面共享一条描述(比如首页 description),或者用同一段 prefix 拼接。Search Console → 索引 → 增强项里如果出现”重复 meta 描述”警告,就是这种情况。
如何判断:在 Search Console 输入 site:yourdomain.com "你的描述前 30 字",结果若 > 3 条都是你站内页,就是全站重复。
3. 描述没回答用户的 query
Google 是按”哪一段最匹配这次搜索词”动态选 snippet 的。如果用户搜的是”Astro 部署 Vercel”,但你的 description 写的是”本博客分享前端经验”,它会从你正文里抽一段含”Astro”和”Vercel”的句子顶上去。
如何判断:在 Search Console → 性能 → 选这个 URL → 看”查询”列表,对照展示出来的实际 snippet,看它是不是从正文抽的、且抽的位置正好命中那个 query。
4. 描述长度不合适
- 太短(< 70 字符):Google 觉得信息量不够,会补充正文段落
- 太长(> 160 字符 / 中文 > 80 字):被截断,且 Google 会判”反正要截,不如我自己重写”
桌面端 SERP 描述视觉宽度约 920px,对应英文 155-160 字符、中文 75-80 字;移动端再短约 20%。
5. 描述里含日期 / 数字与正文不一致
写”5 个工具”但正文列了 8 个;写”2024 最新”但 publishedAt 是 2026——Google 检测到不一致就替换。
如何判断:搜 site:yourdomain.com 看 Google 给你的 snippet,对比 description 里的数字 / 年份是否被换掉。
6. 描述里全是关键词堆砌
"AI tools, ChatGPT, Claude, productivity, best AI 2026, AI for developers"——Google 识别为低质 SEO 优化,直接弃用。
最短修复路径
按收益从高到低,先做前 3 步通常就能解决 80% 的问题。
Step 1:找出哪些页面被改写了
在 Search Console → 性能 → “页面”标签,把展示量从高到低排序。挑前 20 个 URL,逐一执行:
site:yourdomain.com/your-article-slug
把 SERP 显示的描述复制下来,和源码里的 <meta name="description"> 对比。不同的就标记为”被改写”。
也可以一次性批量检查:
# 用 curl 抓自己的页面,提取 meta description
curl -s "https://yourdomain.com/your-article" | grep -oE '<meta name="description" content="[^"]+"'
然后再 Google site: 查一下对应 SERP 的实际描述。
Step 2:按”独有性 + 含关键词 + 长度”三条规则重写
为每个被改写的页面写新描述时,按这个模板:
[主关键词] + [独有信息或数字] + [对用户的价值或承诺]
例子(差→好):
| 差 | 好 |
|---|---|
| ”Google 改写描述怎么办?本文为你详细介绍" | "Google 改写 meta description 的 6 种原因 + 提高展示率到 80% 的 3 步修复" |
| "AI tools for productivity" | "12 AI tools I actually paid for in 2026, ranked by hours saved per week” |
字符预算:
- 英文:140-160 字符(不含空格 ~130)
- 中文:60-80 字(包含标点)
Step 3:用 build 脚本强制”每页一条独有描述”
如果你用 Astro / Next / Hugo,在 build 阶段加一层校验:
// scripts/check-descriptions.mjs
import fs from "node:fs";
import path from "node:path";
import matter from "gray-matter";
const seen = new Map();
const root = "src/content/articles";
const issues = [];
function walk(dir) {
for (const name of fs.readdirSync(dir)) {
const p = path.join(dir, name);
if (fs.statSync(p).isDirectory()) walk(p);
else if (p.endsWith(".mdx") || p.endsWith(".md")) {
const { data } = matter(fs.readFileSync(p, "utf8"));
const desc = (data.description || "").trim();
if (!desc) issues.push(`MISSING: ${p}`);
else if (desc.length < 50) issues.push(`TOO SHORT (${desc.length}): ${p}`);
else if (desc.length > 160) issues.push(`TOO LONG (${desc.length}): ${p}`);
else if (seen.has(desc)) issues.push(`DUPLICATE: ${p} == ${seen.get(desc)}`);
else seen.set(desc, p);
}
}
}
walk(root);
if (issues.length) {
console.error(issues.join("\n"));
process.exit(1);
}
放进 prebuild 钩子,所有重复 / 缺失 / 长度异常的描述都拦在 CI 里。
Step 4:等 7-14 天观察
Google 不会立刻重新评估。改完后:
- 在 Search Console 对该 URL 用”请求编入索引”重新触发抓取
- 7 天后再
site:检查 snippet - 14 天后看 Search Console → 性能里点击率(CTR)有没有上升
Step 5:还是被改写?让 Google 完全用正文
如果某些页面(比如长篇指南)你写不出比正文更好的总结,可以反过来:让正文第一段就是最佳描述。然后 Google 通常会用那一段。也可以在页面上加:
<meta name="robots" content="max-snippet:160">
明确告诉它最长 snippet 长度。设 max-snippet:0 则强制不用描述(不推荐,会丢 CTR)。
预防建议
- 描述按页面生成,别用全站模板;写完用 build 校验脚本拦截重复
- 写完读一遍:“这句换到任何一篇文章上能不能用?“能用就要重写
- 主关键词放前 60 个字符内,移动端截断后还能看见
- 每篇文章上线 14 天后回看 Search Console,把 CTR < 1% 的描述列出来重写