FAQPage Schema 必须嵌套在 WebPage 类型下,通过 mainEntity 数组指向 Question;每个 Question 的 name 和 acceptedAnswer.text 需为纯文本,acceptedAnswer 必须是 Answer 类型对象。

FAQPage Schema 必须用 WebPage 作为父类型
Google 要求 FAQ 结构化数据必须嵌套在 WebPage 类型下,单独用 FAQPage 会失效。很多页面直接把 FAQPage 当顶层类型写,结果在 Rich Results Test 里显示“未检测到有效 FAQ”,就是这个原因。
正确做法是:外层用 WebPage,再通过 mainEntity 指向一个或多个 Question;每个 Question 的 acceptedAnswer 必须是 Answer 类型,不能是字符串或 HTML 片段。
-
mainEntity必须是数组(哪怕只有一个问答),且每个元素是Question -
Question的name是问题文本,acceptedAnswer是对象,不是字符串 - 所有文本字段(
name、text)需纯文本,不能含<p>、<strong>等标签
JSON-LD 写法中 text 字段容易被误当成 HTML 渲染
结构化数据里的 text(在 acceptedAnswer 下)只是供搜索引擎理解的内容,和页面上实际显示的 HTML 完全无关。但很多人把页面里带格式的 <div class="answer"><p>... 直接取 innerHTML 塞进 text,导致 JSON-LD 里出现未转义的引号、换行或标签字符,整个脚本解析失败。
安全做法是:从 DOM 提取纯文本内容(比如用 textContent),再用 JSON.stringify() 序列化 —— 它会自动处理引号和换行。
立即学习“前端免费学习笔记(深入)”;
- 错误示例:
"text": "<p>支持 HTTPS 吗?</p><div class="aritcle_card flexRow"> <div class="artcardd flexRow"> <a class="aritcle_card_img" href="/xiazai/skill8961" title="html-to-pptx-converter"><img src="https://img.php.cn/upload/skill/000/000/081/179232667384043.jpg" alt="html-to-pptx-converter" onerror="this.onerror='';this.src='/static/lhimages/moren/morentu.png'" ></a> <div class="aritcle_card_info flexColumn"> <a href="/xiazai/skill8961" title="html-to-pptx-converter">html-to-pptx-converter</a> <p>使用 PptxGenJS 和 Python 解析,将结构化的 HTML/CSS 幻灯片内容转换为原生、可编辑的 PowerPoint(.pptx)演示文稿。</p> </div> <a href="/xiazai/skill8961" title="html-to-pptx-converter" class="aritcle_card_btn flexRow flexcenter"><b></b><span>下载</span> </a> </div> </div>"→ 引号未转义,JSON 无效 - 正确示例:
"text": "支持 HTTPS 吗?"(纯文本,无标签) - 如果答案含代码片段(如
curl -X GET),保留原样,但不要加<code>标签
多个 FAQ 区块共存时,mainEntity 数组别漏掉任何一项
常见场景:页面有「开通类 FAQ」和「使用类 FAQ」两个折叠区块,开发者只给第一个区块加了 Schema,第二个靠 JS 动态展开的就没处理。Google 只识别到部分问答,可能降权或不展示“全部展开”按钮。
只要都在同一 HTML 页面内,且语义上属于该页核心 FAQ,就必须全部纳入同一个 WebPage 的 mainEntity 数组。动态加载的内容(如点击“更多问答”后插入的)无法被爬虫执行 JS 获取,所以必须服务端渲染或静态注入。
- 前端用 JS 生成 FAQ 列表?得在页面初始 HTML 里就把全部
Question写进 JSON-LD - Vue/React 项目建议在 SSR 阶段注入,或用
document.write在<head>中写死(慎用) - WordPress 用户注意:某些 FAQ 插件生成的 Schema 是独立
FAQPage类型,需手动改造成嵌套结构
验证通过 ≠ Google 一定展示,sameAs 和页面可见性才是隐形门槛
即使 Rich Results Test 显示绿色对勾,Google 仍可能不展示 FAQ 富媒体结果。关键卡点有两个:一是页面没被判定为「权威信息源」,二是问答内容与用户搜索 query 相关性不足。
提升命中率的实际动作很少被提,但很实在:
- 确保每个
Question的name匹配真实搜索词(比如用 “怎么重置密码” 而非 “账户安全设置”) - 在页面 HTML 中,对应问答区块的
<h3>文本要和name字段严格一致(大小写、标点都算) - 可选加
sameAs指向知识库中该问题的独立 URL(如有),增强可信度 - 避免 FAQ 出现在折叠面板、tab 标签页或需要滚动才出现的位置 —— Google 偏好首屏可见内容
最常被忽略的是最后一项:就算 Schema 完美,如果所有问答都藏在 display: none 或 JS 控制的 accordion 里,Google 很可能直接跳过。


















