使用方法
- 在文本框里按「问题一行、答案若干行」的格式写每一对问答;问题和答案之间不用分隔,答案可以是多行。
- 用单独一行的「---」把每一对问答分开;页面打开时已预置三对示例,直接点「生成 JSON-LD」即可看到效果。
- 需要可直接粘贴进网页的版本,勾选「输出包含 <script> 包裹」,生成结果会带上
<script type="application/ld+json">与</script>。 - 点「生成 JSON-LD」,或在文本框按 Ctrl + Enter(Mac 上 Cmd + Enter);结果区显示格式化后的代码,深色框里即为可直接使用的 JSON-LD。
- 下方字段表列出六个必填字段及其状态,全部「通过」才说明结构完整;「复制字段表」复制其 TSV,「导出 CSV」存成带 BOM 的文件。
- 「复制代码」把结果区的内容直接复制到剪贴板,可整段粘进页面源码或 CMS 的结构化数据区块。
这个生成器能解决什么问题
搜索引擎看不懂页面上排布整齐的问答,它只能读结构化的标记。把一个普通 FAQ 区块变成机器可读的结构化数据,也就是常说的「FAQ结构化数据」,能让 Google 在搜索结果里直接展开你的问答,占据更大的展示面积。
第一类用途是富媒体结果。正确标注 FAQPage 后,Google 可能把问答以可展开的卡片形式展示在搜索结果中,提升点击率。
第二类用途是自动转义。答案里经常有双引号、换行、小于号,手写 JSON 很容易漏掉转义导致整段解析失败。本工具用标准 JSON 序列化并额外把小于号转成 \u003c,省去手工排错的麻烦。
第三类用途是必填字段校验。@context、@type、mainEntity、name、acceptedAnswer、text 六个字段缺一不可,本工具在生成时逐项确认,缺哪个直接报出来,避免上线后才发现标记无效。
除了搜索富媒体,结构化数据还能被语音助手、聚合卡片等下游系统复用:同样一段问答,机器读到你标记的 FAQPage 后,就能在回答用户时直接引用,而不必重新抓取正文去猜哪段是问题、哪段是答案。
本 FAQ结构化数据生成器不做这些事:不抓取你网页上已有的可见问答(需要你手动粘贴)、不保证 Google 一定会展示富媒体结果(只是给了资格)、也不生成 HowTo 或 QAPage 等其他 schema 类型,本页只做 FAQPage。
生成原理与字段说明
输出的核心结构是一个 JSON 对象:@context 固定为 https://schema.org,@type 固定为 FAQPage,mainEntity 是一个数组,数组里每个元素都是一条 Question,内含 name(问题)和 acceptedAnswer(答案对象),答案对象再含 @type: Answer 与 text(答案正文)。
JSON-LD 与普通 script 不同。它写在 <script type="application/ld+json"> 里,浏览器不会把它当脚本执行,只是交给搜索引擎解析;而本页面自身运行的 JavaScript 是普通的 <script>,两者职责不同,不要混淆。
字符转义规则。答案里的双引号会变成 \",换行会变成 \n,小于号会变成 \u003c——这三处是 JSON 与 HTML 双重语境下最容易出错的地方。本工具在序列化后额外把小于号替换成 \u003c,避免它和后面的内容凑出 </script> 误闭合标签。
内容必须一致。
校验之所以重要,是因为 Google 的结构化数据测试会逐项检查字段类型与必填项;漏掉 text 或把 name 写成空串,整段标记都会被判无效,页面反而拿不到富媒体资格。本工具的字段表先把这六项是否齐全过一遍,等于在提交前做一次本地预检。
Google 要求 FAQ 标记的内容与页面可见内容逐字一致,否则会被判作弊降权;且每页 FAQ 不超过 25 组(官方建议),答案不能是「点击查看」这类空话。请务必让标记里的问答就是用户真正看到的问答。
完整示例(默认输入实测)
默认文本框里写了三对问答,第一对问题是「如何提取结构化数据?」,答案是「使用 JSON-LD 格式,把 FAQPage 的 @context、@type、mainEntity 写好即可。」;第二对解释什么是 FAQPage;第三对提到 JSON-LD 要放在 <script type="application/ld+json"> 标签里——这句话含小于号与双引号,正好演示转义。
生成后,mainEntity 数组长度为 3,每个元素形如:
| 字段 | 本例取值 |
|---|---|
| @type | Question |
| name | 如何提取结构化数据? |
| acceptedAnswer.@type | Answer |
| acceptedAnswer.text | 使用 JSON-LD 格式…写好即可。 |
第三对答案里的 <script 在输出中会变成 \u003cscript,即使原文本带有尖括号也不会破坏外层包裹标签。如果你输入了 26 对以上,结果区会提示「超过 25 对,建议拆分」,但代码仍会生成,由你自行决定。
需要留意,FAQ 标记只描述「已有问答」,并不会替你生成问答内容;本工具的输入就是你页面上要展示的问答文本,请确保两者逐字一致,否则富媒体资格会被取消。
必填字段对照表
下表是 FAQPage 必须包含的六个字段,生成时逐项校验,缺任何一项都无法通过 Google 的结构化数据测试。
| 字段 | 含义 | 取值 |
|---|---|---|
| @context | 词汇表地址 | 固定 https://schema.org |
| @type | 标记类型 | 固定 FAQPage |
| mainEntity | 问答主体 | Question 对象数组 |
| name | 问题标题 | 每条问题的文本 |
| acceptedAnswer | 答案对象 | 含 @type 与 text |
| text | 答案正文 | 每条答案的文本 |
结果边界与适用说明
- 至少需要一对问答;文本框为空或只有分隔线时提示「请至少写一对问答」。
- 每一对必须同时有问题和答案;只有问题没有答案会被标记为「text 缺失」,并在结果区给出具体是哪一对。
- 问题和答案都不能只由空白组成,纯空白的行会被跳过,但成对里缺答案仍会报错。
- 双引号、换行、小于号在输出中分别转成
\"、\n、\u003c,因此粘贴回页面后能被正确解析。 - 问答对超过 25 组时给出提醒但不阻断生成,由你按 Google 建议拆分。
- 「压缩成单行」只影响展示格式(去掉缩进换行),不改变字段与转义,校验结果一致。
- 若答案本身需要换行,本工具会保留为 JSON 里的 \n 转义,还原后仍是多行;不要为凑单行而删掉换行,否则问答可读性会下降。
- 本工具不联网,所有生成与校验在浏览器本地完成,输入内容不会上传。
常见问题
生成的代码要放在网页哪里?
放在 HTML 的 <script type="application/ld+json"> 标签里,可以置于 head 或 body,通常放在对应 FAQ 内容附近。勾选本工具的「输出包含 script 包裹」即可直接得到完整片段。
为什么答案里的小于号要变成 \u003c?
因为 JSON-LD 本身处在 script 标签内,若答案文字里出现 < 且后面凑成 </script>,会提前闭合标签导致解析中断。把小于号写成 \u003c 既能通过 JSON 解析,也杜绝了这种误闭合,是结构化数据里公认的安全写法。
FAQ 标记为什么要求与页面内容一致?
Google 明确规定富媒体标记的内容必须与用户看到的可见内容逐字一致,否则会被判为作弊并可能受到处理。所以本工具只负责把你粘贴的问答转成结构,问答本身请确保和页面上展示的一字不差。
每页最多能放多少对问答?
官方建议每页 FAQ 不超过 25 组。超过时本工具仍会生成代码,但会在结果区提醒你拆分,因为过多问答既不利于展示,也可能触发审核更严格的判定。
FAQPage、HowTo、QAPage 有什么区别?
FAQPage 用于「常见问题 + 固定答案」;HowTo 用于分步骤教程(含步骤顺序与材料);QAPage 用于社区问答(一个问题多个用户回答、有最佳答案)。三者结构不同,本工具只生成 FAQPage,选错类型会让标记无效。
复制出来的代码为什么有反斜杠?
那些反斜杠是 JSON 的转义字符,不是多余符号。双引号前的 \"、换行前的 \n、小于号前的 \u003c 都是合法 JSON,粘贴进页面后会被正确还原,请勿手动删除。
怎么验证生成结果有效?
把代码粘贴进 Google 的富媒体结果测试工具或结构化数据测试工具,它会逐项检查六个必填字段并给出错误位置。本工具的字段表已先做一轮本地校验,能拦住大部分明显缺失。
这个工具免费吗?数据安全吗?
免费,无需注册。所有序列化与校验都在当前浏览器本地完成,问答内容不会上传服务器,刷新后输入框内容也不会被保存。