你 Google 自己的文章,标题下面的 snippet 不是你 <meta name="description"> 里写的那段。是从正文里挑的一段——有时候很相关,有时候看起来很随机。大家容易紧张,但 Google 的文档说,他们大约 70% 时候用你的 description,剩下 30% 从正文合成。snippet 还会按 query 变:搜 “vsync fix” 看到的跟搜 “DaVinci 卡顿” 看到的不一样。
要把那 30% 压到 10-15%,得搞清楚你的 description 命中了哪个触发条件,把它去掉。
常见原因
按命中率从高到低。
1. description 太通用
“Learn everything about X in this comprehensive guide” 这种,放在任何一页上都说得通。Google 觉得没具体价值就从正文里挑更好的一句——挑了。
怎么判断:把 description 念出来。“放到一篇完全不同的文章上还说得通吗?” 是的话就太通用。
2. description 跨页面重复
站点级模板让每页都用同一个 description。Search Console → Indexing → Enhancements 可能标 “Duplicate meta descriptions”。
怎么判断:
site:yourdomain.com "你描述的前 30 字"
返回 3+ 个你自己的页 = 站内重复。
3. description 没包含命中的 query
Google 按 query 动态挑 snippet。如果搜的人查 “deploy Astro to Vercel”,但你的 description 写”本博客讲前端”,Google 会从正文里挑包含 “Astro” 和 “Vercel” 的句子。
怎么判断:Search Console → Performance → 选这个 URL → Queries。对比 SERP 上的 snippet 跟你的 meta。SERP 版本里有 query 关键词但 meta 里没有,就是这个原因。
4. description 长度不对
- 太短(< 70 字符):Google 会从正文补内容。
- 太长(> 160 字符):会被截断,Google 经常直接替换而不是在句中截断。
桌面 SERP 宽约 920px,约 155-160 英文字符。移动端约少 20%。
5. description 跟正文矛盾
你写”5 个工具”但正文列了 8 个。写”Best of 2024” 但 publishedAt: 2026-05-17。Google 检测到不一致就替换。
怎么判断:对比 meta 里的数字和日期跟正文。改完文章常会出现这种不一致。
6. description 跟 title 雷同
<title> 和 <meta name="description"> 说的基本是同一件事,Google 认为 description 冗余,用正文片段替换。
怎么判断:把 title 和 description 连着读。听起来像”同一句话说了两遍”就是这条。
7. description 是关键词堆砌
"AI tools, ChatGPT, Claude, productivity 2026, AI developer tools, best AI"——逗号分隔的关键词列表。Google 标为低质量丢弃。
怎么判断:数 description 里的逗号。超过 4 个、片段不连贯,就是关键词堆砌。
最短修复路径
第 1 步:找被改写的页
Search Console → Performance → Pages → 按曝光排序。取前 20:
# 拉 meta description
curl -s "https://yourdomain.com/your-article" | grep -oP '<meta name="description" content="\K[^"]+'
然后在 Google 搜 site:yourdomain.com/your-article,复制 SERP snippet。对比。不一样就是被改写了。
第 2 步:用”独特 + 关键词 + 价值”公式重写
[主关键词] + [独特事实或数字] + [用户价值或承诺]
| 差 | 好 |
|---|---|
| ”了解 meta description" | "Google 为什么改写 meta description:6 个原因 + 把 CTR 从 1.2% 提到 4.8% 的 3 步修法" |
| "AI 效率工具" | "2026 我付费用的 12 个 AI 工具,按每周省下时长排序” |
字符预算:
- 英文:140-160 字符
- 中日韩:60-80 字
第 3 步:每页 description 必须唯一
Astro / Next / Hugo 项目加构建期检查:
// scripts/check-descriptions.mjs
import fs from "node:fs";
import path from "node:path";
import matter from "gray-matter";
const seen = new Map();
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")) {
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: ${p}`);
else if (desc.length > 160) issues.push(`TOO LONG: ${p}`);
else if (seen.has(desc)) issues.push(`DUPLICATE: ${p}`);
else seen.set(desc, p);
}
}
}
walk("src/content/articles");
if (issues.length) { console.error(issues.join("\n")); process.exit(1); }
挂到 prebuild。
第 4 步:description 匹配真实 query
Search Console 显示你的页在 “X tutorial” 上有排名,那就把 “X” 和 “tutorial” 加进 description。不要脱离 Google 实际给你的 query 写描述。
第 5 步:等 7-14 天
Google 不会立刻重新评估。Search Console → URL Inspection → Request indexing 加速。
第 6 步:多意图页就接受 Google 选择
如果你的页面真的服务 3 种不同 query,Google 的 per-query snippet 通常是对的。你写不出一句描述同时让 “Astro 怎么部署”、“Astro vs Next 比较”、“Astro CMS 例子” 都满意。这种页面就接受 per-query snippet。
预防建议
- 每页独立写 description,不要用站点级模板。
- 构建期脚本强制 description 唯一。
- 主关键词放在前 60 字符内,移动端截断后还在。
- 发布 14 天后审计 CTR < 1% 的页,重写它们的 description。
- 每个 description 自问一遍:“放到另一篇文章上还说得通吗?” 是的话就重写。