你给文章加了 FAQ JSON-LD。Rich Results Test 过。Search Console → Enhancements → FAQ rich results 显示绿色。然后突然——红色警告出现,SERP 里之前显示的 FAQ rich result 消失。Google FAQPage 政策严格,2023 年后还在收紧:FAQ 必须对用户可见、JSON-LD 里的问题必须跟可见问题精确一致、每个 Q 至少有一个 acceptedAnswer、页面必须真的有 FAQ 区(不能把产品信息硬标成 FAQ)。
本文讲 FAQ schema 被废的最常见原因。
常见原因
按命中率从高到低。
1. FAQ 块默认隐藏
你的 accordion / tab UI 把答案藏到点击之后才展开。HTML 里还在(所以 Rich Results Test 过),但 Google 的”用户可见内容”检查认为它实际不可见。
怎么判断:DevTools 关 JavaScript → 刷新。如果 FAQ 答案看不到,就是被交互 UI 藏了。
2. JSON-LD 比可见多或少 Q
页面显示 5 个 FAQ。JSON-LD 有 8 个(你留了旧版的)。或反过来。错配触发警告。
怎么判断:
# 数可见 FAQ
curl -s "https://site.com/article" | grep -c 'class="faq-item"'
# 数 JSON-LD FAQ
curl -s "https://site.com/article" | grep -oP '"@type":"Question"' | wc -l
应该匹配。
3. 问题文本可见与 JSON-LD 不同
可见问题:“How long does AdSense approval take?”
JSON-LD:"name": "What's the AdSense approval timeline?"
语义相同、字符不同。Google 读 JSON-LD 作为正版,标记不一致。
怎么判断:抽出两边对比:
# 可见问题
curl -s URL | grep -oP '<h3 class="faq-q">\K[^<]+'
# JSON-LD 问题
curl -s URL | grep -oP '"@type":"Question","name":"\K[^"]+'
4. 答案太短或没放在 acceptedAnswer.text
每个 Question 需要:
{
"@type": "Question",
"name": "...",
"acceptedAnswer": {
"@type": "Answer",
"text": "完整答案,至少 50 字符。"
}
}
把答案放在 text 里、纯文本可以。带 HTML 标记的话,必须有效且渲染后纯文本 > 50 字符。
怎么判断:每个 acceptedAnswer.text 应该 >= 50 字符。< 50 经常被标记。
5. FAQPage 用在没真实 FAQ 的页
把产品信息当 FAQPage 标记冲 rich result。Google 检测到(内容不像 Q&A)就降权。
怎么判断:读页面。有真的回答用户问题的章节吗?没有或”算是有”,就去掉 FAQPage schema。
6. FAQ 跨多页重复
同一组 FAQ 出现在你站 100 页上。Google 检测到重复就对所有这些页都停止显示 FAQ rich result。
怎么判断:如果你”全局 FAQ”侧栏在每页都用同一组 Q&A 还都加了 FAQPage schema,就是 bug。只标记文章特有的 FAQ。
7. 答案只是链到其它页(不是文本)
{
"acceptedAnswer": { "text": "查看定价页详情。" }
}
“答案”只是转介。Google 视为非真实答案,可能标记。
怎么判断:读答案。如果是 1 行 “看 X” 转介,Google 可能不接受。
最短修复路径
第 1 步:Rich Results Test 校验
Rich Results Test 打开 URL → 滚到 FAQPage → 修每个红字段。
第 2 步:FAQ 默认可见
如果 accordion 把答案藏在点击之后,改 CSS 让答案默认渲染(可以保留点击切换):
.faq-answer { display: block; } /* 不是 display: none */
或者 SSR / 无 JS 用户也能看到完整答案;用渐进增强在上层加 accordion 切换。
第 3 步:Q 从单一源生成
MDX 文章 frontmatter:
faq:
- q: "AdSense 审核要多久?"
a: "通常 1-4 周通过,新域名可能 6-8 周。"
- q: "..."
a: "..."
模板从这个数组同时渲染 UI 和 JSON-LD:
---
const { faq } = Astro.props.frontmatter;
const jsonLd = {
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": faq.map(item => ({
"@type": "Question",
"name": item.q,
"acceptedAnswer": { "@type": "Answer", "text": item.a },
})),
};
---
<section class="faq">
{faq.map(item => (
<article>
<h3 class="faq-q">{item.q}</h3>
<p class="faq-a">{item.a}</p>
</article>
))}
</section>
<script type="application/ld+json" set:html={JSON.stringify(jsonLd)}></script>
UI 和 JSON-LD 保证一致。
第 4 步:只标记真实 FAQ
页面没有读起来像 Q&A 的章节,就别加 FAQPage schema。别冒险,Google 会惩罚。
第 5 步:答案目标 50+ 字符
答案是一行短答的话扩写。Google 期望每个 acceptedAnswer.text 有实质(最少 50 字符)。
第 6 步:提交并观察
修后 Search Console → URL Inspection → Request indexing。1-2 周内看 Enhancements → FAQ 报告。
哪些情况可能不是你操作错了
Google 自 2023 起 减少 FAQ rich result 展示;即使 schema 有效也未必出 rich result。这是策略,不是修法问题。保证 schema 有效,机会来时你才符合资格。
容易误判的情况
把 FAQ schema 加到每页冲流量——没真实 FAQ 的页会被惩罚。别 spam。
预防建议
- FAQ JSON-LD 与可见 UI 用同一数据结构生成。
- 只在有真实 FAQ 的页加 schema,不要全站加。
- 答案 50+ 字符且实质,不要转介。
- FAQ 默认可见渲染;accordion 切换是渐进增强。
- CI 校验:可见 FAQ 问题数与 JSON-LD 问题数一致。
FAQ
- FAQ 答案能带图吗? 有限支持——文本必填,rich content 支持因 Google 而异。
- FAQ rich result 还常见吗? 2023 后变少,更多保留给权威页。别期待每个有效 FAQ 都出。