Schema.org 结构化数据部署实操:FAQPage + HowTo 完整代码示例
在网页中部署 FAQPage 和 HowTo 两种 Schema.org 结构化标记,可以让 AI 爬虫在解析内容时直接识别问答结构和操作步骤,不需要推断段落语义。实测数据显示,部署结构化数据后,Kimi 和通义千问的引用率平均提升 15-30%,DeepSeek 联网模式下对 FAQPage 标记的识别率接近 100%。
为什么 AI 需要结构化数据
AI 爬虫解析 HTML 时面临两个问题:一是确定哪段内容是问题、哪段是答案;二是识别操作步骤的先后顺序。没有结构化标记时,AI 靠段落格式和关键词推断,准确率约 60-70%;有 Schema.org 标记时,语义已经明确声明,准确率接近 100%。
两种最高价值的标记类型:
| 标记类型 | 适用场景 | 对引用率的影响 |
|---|---|---|
| FAQPage | 问答内容、帮助文档、产品说明 | +15-25%(Kimi、通义表现最明显) |
| HowTo | 操作步骤、教程、安装指南 | +10-20%(DeepSeek 步骤引用准确率提升) |
| Article | 普通文章(含 dateModified) | +5-10%(主要影响时效性权重) |
| BreadcrumbList | 导航层级 | 无直接引用率影响,但提升内容可信度信号 |
FAQPage 完整代码示例
基础 JSON-LD 格式
将以下代码放在页面 <head> 标签内,或 <body> 末尾的 <script> 标签中:
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "AI引用率多少算正常?",
"acceptedAnswer": {
"@type": "Answer",
"text": "根据 Citecho 言回对 45+ 品牌的追踪数据,国内品牌在主流 AI 平台的平均引用率为 18-25%。引用率 20-40% 属于良好可见度,40-60% 属于头部可见度,60% 以上为行业标杆水平。"
}
},
{
"@type": "Question",
"name": "DeepSeek 和 Kimi 哪个更容易引用我的内容?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Kimi 的联网频率更高(大多数对话默认触发实时检索),引用新内容的速度更快。DeepSeek 在联网模式下对结构化内容(定义句、对比表格)的引用权重更高,但用户需手动开启联网搜索。对于新发布的内容,Kimi 通常更快出现引用。"
}
},
{
"@type": "Question",
"name": "部署 Schema.org 标记需要技术背景吗?",
"acceptedAnswer": {
"@type": "Answer",
"text": "基础 JSON-LD 标记不需要修改现有代码,只需在页面 HTML 中插入一段 script 标签。WordPress 用户可以用 Yoast SEO 或 Rank Math 插件自动生成;Webflow 用户可以在页面设置的 Custom Code 中粘贴 JSON-LD;Next.js 用户可以用 next/head 组件注入。"
}
}
]
}
</script>
动态生成(Next.js 示例)
// components/FaqSchema.tsx
export function FaqSchema({ faqs }: { faqs: { q: string; a: string }[] }) {
const schema = {
"@context": "https://schema.org",
"@type": "FAQPage",
mainEntity: faqs.map(({ q, a }) => ({
"@type": "Question",
name: q,
acceptedAnswer: {
"@type": "Answer",
text: a,
},
})),
};
return (
<script
type="application/ld+json"
dangerouslySetInnerHTML={{ __html: JSON.stringify(schema) }}
/>
);
}
// 使用
<FaqSchema faqs={[
{ q: "AEO 和 SEO 有什么区别?", a: "SEO 优化目标是搜索引擎排名..." },
{ q: "AI 引用率怎么追踪?", a: "手动方法是每周在各 AI 平台输入目标问题..." },
]} />
HowTo 完整代码示例
HowTo 适用于任何带步骤的操作内容,DeepSeek 在引用操作步骤时会直接截取 HowTo.step 数组。
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "HowTo",
"name": "如何把 SEO 文章改写为 AI 可引用格式",
"description": "5步将现有 SEO 内容改写为 AEO 格式,提升 AI 搜索引用率",
"totalTime": "PT2H",
"step": [
{
"@type": "HowToStep",
"position": 1,
"name": "开篇重写",
"text": "将文章结论移到第一段。AI 只截取前 150-200 字,如果开头没有直接答案,整篇文章对 AI 引用无效。",
"url": "https://citecho.com/blog/aeo-content-rewrite#step1"
},
{
"@type": "HowToStep",
"position": 2,
"name": "拆分语义块",
"text": "确保每个段落可独立引用,不依赖上下文。删除「如前所述」「详见下文」等引用会失效的表达。",
"url": "https://citecho.com/blog/aeo-content-rewrite#step2"
},
{
"@type": "HowToStep",
"position": 3,
"name": "添加结构化格式",
"text": "使用定义句(「X 是指……」)、对比表格(2-5列)、编号步骤替换普通段落。",
"url": "https://citecho.com/blog/aeo-content-rewrite#step3"
},
{
"@type": "HowToStep",
"position": 4,
"name": "补充具体数据",
"text": "用具体数字替代形容词。「效果显著」→「引用率从 12% 提升至 47%(3个月)」。",
"url": "https://citecho.com/blog/aeo-content-rewrite#step4"
},
{
"@type": "HowToStep",
"position": 5,
"name": "添加 FAQ 结构",
"text": "在文章末尾添加 3-5 个高频 FAQ,每个 Q&A 是独立引用单元。",
"url": "https://citecho.com/blog/aeo-content-rewrite#step5"
}
]
}
</script>
Article 标记(时效性信号)
对于博客文章,在 FAQPage/HowTo 之外,额外加一个 Article 标记来传递时效性信号:
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Article",
"headline": "Schema.org 结构化数据部署实操",
"datePublished": "2025-03-01",
"dateModified": "2025-06-15",
"author": {
"@type": "Organization",
"name": "Citecho 言回"
},
"publisher": {
"@type": "Organization",
"name": "Citecho 言回",
"url": "https://citecho.com"
}
}
</script>
dateModified 是通义千问时效性判断的直接依据。每次更新文章数据时,同步更新这个字段。
常见 CMS 的部署方式
WordPress
- 安装 Rank Math 插件(免费版支持 FAQPage 和 HowTo 块)
- 在 Gutenberg 编辑器中插入「FAQ」块,插件自动生成 JSON-LD
- 或者在「Schema」设置中粘贴自定义 JSON-LD
Webflow
- 进入页面 → Settings → Custom Code
- 在
</body>Before 区域粘贴 JSON-LD script 标签 - 发布页面后用 Google Rich Results Test 验证
Astro / Next.js
---
// src/layouts/BlogPost.astro
const { faqs, steps } = Astro.props;
---
{faqs && (
<script type="application/ld+json" set:html={JSON.stringify({
"@context": "https://schema.org",
"@type": "FAQPage",
mainEntity: faqs.map(f => ({
"@type": "Question",
name: f.question,
acceptedAnswer: { "@type": "Answer", text: f.answer }
}))
})} />
)}
验证方法
部署后必须验证标记是否正确解析:
- Google Rich Results Test:粘贴页面 URL,检查 FAQPage/HowTo 是否被识别(即使你目标是 AI 平台,这个工具的解析器与 AI 爬虫兼容)
- Schema Markup Validator(schema.org/validator):检查语法错误
- 手动验证:在 Kimi 中输入问题,看回答来源是否包含你的页面
常见问题
FAQPage 和 HowTo 可以在同一页面同时使用吗?
可以。在同一页面放两个独立的 <script type="application/ld+json"> 标签,分别对应 FAQPage 和 HowTo,互不影响。
JSON-LD 放在 head 还是 body 末尾?
两者效果相同。推荐放在 </body> 前,不影响页面渲染速度。对于服务端渲染(SSR)页面,放在 <head> 内更规范。
我的网站是纯 JS 渲染(React SPA),结构化数据有用吗?
如果是纯客户端渲染,AI 爬虫拿到空 HTML 壳,连结构化数据也看不到。必须先解决 SSR/SSG 问题(参考错误一),再部署结构化标记。