FAQ schema 缺失或无效:4 个原因 + 对症修复

Rich Results Test 报 FAQPage 错。Search Console 移除 FAQ rich snippet。常见原因与修法。

你给文章加了 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 都出。

相关阅读

标签: #SEO #排查 #排查 #结构化数据 #FAQ Schema #JSON-LD