必须嵌入符合FAQPage类型的JSON-LD结构化数据,包含@context、@type、mainEntity数组及每个Question的name和acceptedAnswer.text字段,且所有文本须与页面可见内容逐字一致。

要让页面被 Google 识别为 FAQ 并展示富文本摘要,必须用 script type="application/ld+json" 嵌入符合 FAQPage 类型的结构化数据——光靠 <details> 或纯 HTML 标签完全无效。
FAQPage JSON-LD 必须包含哪些字段
Google 明确要求以下字段缺一不可,少一个就无法触发富文本摘要:
-
@context必须是"https://schema.org"(注意是 https,不是 http) -
@type必须是"FAQPage"(大小写敏感,不能写成"faqpage"或"FaqPage") -
mainEntity是数组,每项必须是Question类型对象 - 每个
Question对象里:@type为"Question",name是问题文本,acceptedAnswer是答案对象,且其中text字段必须存在 -
name和acceptedAnswer.text的内容,要和页面上用户实际看到的可见文本**逐字一致**(包括空格、标点、换行)
常见错误导致“无法解析结构化数据”
Google Search Console 报这个错,90% 是以下几种情况:
- JSON 语法不合法:末尾多逗号、用了单引号代替双引号、中文引号、注释(JSON 不支持
//或/* */) -
mainEntity写成了对象而不是数组,比如"mainEntity": { ... }(正确应为"mainEntity": [ { ... } ]) -
acceptedAnswer没有text字段,或写成了answer、body等非标准名 -
script标签被套在其他标签里(如<div><script>...</script></div>),或放在了<body>外部 - 动态渲染时,JSON-LD 在客户端 JS 中生成(如 React useEffect),但 Googlebot 不执行 JS,导致抓取不到
怎么验证 JSON-LD 是否生效
别等上线再查,本地就能确认:
立即学习“前端免费学习笔记(深入)”;
- 把完整 HTML 源码(含
<script type="application/ld+json">块)粘贴到 Google Rich Results Test(已整合进 URL Inspection Tool) - 错误会直接定位到某一行,比如
"Unexpected token '}'"就说明 JSON 闭合有问题 - 验证通过后,再检查
name和acceptedAnswer.text是否真和页面文字一模一样——哪怕多一个全角空格,富文本也会失败 - 如果用了 SSR(如 Next.js、Nuxt),确保 JSON-LD 在服务端吐出,而不是仅靠客户端 JS 注入
最易被忽略的一点:JSON-LD 里的文本不是“可读即可”,而是必须和 DOM 中最终渲染出的可见文本完全一致。很多团队在 CMS 里改了 FAQ 内容,却忘了同步更新 JSON-LD,结果富文本突然消失,查半天才发现是 name 字段还留着旧问法。



















