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

  1. 安装 Rank Math 插件(免费版支持 FAQPage 和 HowTo 块)
  2. 在 Gutenberg 编辑器中插入「FAQ」块,插件自动生成 JSON-LD
  3. 或者在「Schema」设置中粘贴自定义 JSON-LD

Webflow

  1. 进入页面 → Settings → Custom Code
  2. </body> Before 区域粘贴 JSON-LD script 标签
  3. 发布页面后用 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 }
    }))
  })} />
)}

验证方法

部署后必须验证标记是否正确解析:

  1. Google Rich Results Test:粘贴页面 URL,检查 FAQPage/HowTo 是否被识别(即使你目标是 AI 平台,这个工具的解析器与 AI 爬虫兼容)
  2. Schema Markup Validator(schema.org/validator):检查语法错误
  3. 手动验证:在 Kimi 中输入问题,看回答来源是否包含你的页面

常见问题

FAQPage 和 HowTo 可以在同一页面同时使用吗?

可以。在同一页面放两个独立的 <script type="application/ld+json"> 标签,分别对应 FAQPage 和 HowTo,互不影响。

JSON-LD 放在 head 还是 body 末尾?

两者效果相同。推荐放在 </body> 前,不影响页面渲染速度。对于服务端渲染(SSR)页面,放在 <head> 内更规范。

我的网站是纯 JS 渲染(React SPA),结构化数据有用吗?

如果是纯客户端渲染,AI 爬虫拿到空 HTML 壳,连结构化数据也看不到。必须先解决 SSR/SSG 问题(参考错误一),再部署结构化标记。