零售电商GEO数据对比:给 300 个商品页补上 FAQPage Schema 后,AI 引用率发生了什么变化
零售电商GEO数据对比:给 300 个商品页补上 FAQPage Schema 后,AI 引用率发生了什么变化
发布日期:2026-09-13 适用读者:电商平台后端开发、负责内容结构化的技术团队
做电商 GEO 的团队大多有个共识:Product Schema 是标配,但真正让 AI 愿意在回答里引用你的,往往是 FAQPage。原因不复杂——用户问 AI 的问题是"XXX 怎么选""XXX 和 YYY 哪个耐用",这是问答形态;FAQPage Schema 恰好把这类问答以结构化方式喂给了引擎。
去年 Q4 我们在一个自营家居电商站上做了这轮改造:300 个主力商品页,一半加 FAQPage,一半只保留 Product Schema 作为对照组。本文记录完整做法与 6 周数据。
一、Schema 设计:哪些问题值得写进 FAQ
不是把客服话术堆上去就完事。我们按三个原则筛选 FAQ:
| 原则 | 好的 FAQ 问题 | 差的 FAQ 问题 |
|---|---|---|
| 对话意图匹配 | "实木餐桌怎么保养" | "我们的餐桌好不好" |
| 有明确答案维度 | "1.2米和1.4米餐桌怎么选" | "欢迎咨询客服" |
| 与商品强相关 | "这款布艺沙发套可以机洗吗" | 泛泛的"退换货政策是什么"(应放站点级页面) |
每个商品页配 3-5 条 FAQ,答案 80-150 字,首句直接给结论——AI 引用摘录时通常只取首句级别的片段。
二、从 MySQL 批量生成 Schema
FAQ 内容存在单独的 product_faq 表,一个存储过程式的 Python 脚本按商品聚合生成 JSON-LD,直接可跑:
import json
import pymysql
def build_faq_schema(host, user, pwd, db):
conn = pymysql.connect(host=host, user=user, password=pwd, database=db)
sql = """
SELECT p.sku, p.name, p.url_path, f.question, f.answer
FROM products p
JOIN product_faq f ON f.product_id = p.id
WHERE p.is_active = 1
ORDER BY p.sku, f.sort_order
"""
grouped = {}
with conn.cursor() as cur:
cur.execute(sql)
for sku, name, url, q, a in cur.fetchall():
grouped.setdefault((sku, name, url), []).append((q, a))
schemas = []
for (sku, name, url), pairs in grouped.items():
schemas.append({
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": q,
"acceptedAnswer": {"@type": "Answer", "text": a}
} for q, a in pairs
]
})
return schemas
生成结果落盘为 sku.json,由页面模板在 SSR 阶段注入 <script type="application/ld+json">。SQL 层面要注意 answer 字段里残留的 HTML 标签要在查询时清洗,否则 Schema 校验会报 invalid value。
三、注入与校验流水线
上线前加了道自动校验,避免脏数据把整站 Schema 拖垮:
import jsonschema
SCHEMA_URL = "https://schema.org/docs/schema_org_rdfa.html"
def validate(schema: dict) -> list[str]:
errors = []
if schema.get("@type") != "FAQPage":
errors.append("type mismatch")
for q in schema.get("mainEntity", []):
if len(q.get("name", "")) < 8:
errors.append(f"question too short: {q.get('name')}")
if len(q.get("acceptedAnswer", {}).get("text", "")) < 20:
errors.append("answer too short")
return errors
再配合 Google Rich Results Test 抽检 20 个页面,确认渲染后的 DOM 里 JSON-LD 完整出现。SSR 注入时机是这里的常见坑:如果 FAQ 区块是前端异步加载的,JSON-LD 必须仍然由服务端输出在 head/body 静态位置,二者不要耦合。
四、6 周 A/B 对比数据
实验组 150 页(Product + FAQPage),对照组 150 页(仅 Product Schema)。统计口径:每周 30 个家居类长尾问题向 DeepSeek、豆包、Kimi 提问,记录引用情况;同步看服务端日志中 AI 爬虫行为。
| 指标 | 对照组(仅 Product) | 实验组(+FAQPage) |
|---|---|---|
| AI 引用命中(90 问/周均值) | 2.3 | 6.8 |
| 引用时附带来源链接比例 | 41% | 72% |
| AI 爬虫周均抓取页面数 | 约 60 | 约 105 |
| 被引用页面中 FAQ 内容摘录占比 | — | 64% |
三个值得注意的现象:
- 引用提升集中在"怎么选/怎么保养"类问题上,纯"哪个牌子好"类榜单型问题仍然被内容站占据,商品页硬挤不进去。
- 实验组页面的平均停留时长也涨了约 15%——FAQ 内容对人类用户同样有用,这不全是 Schema 的魔法,是内容本身的复利。
- 有 12 个页面的 FAQ 与主图 alt 文案高度重复,引用反而下降,说明 Schema 不能覆盖低质内容。
五、误区澄清与趋势判断
一个常见误区:把 FAQPage 当成关键词堆砌位。AI 引擎对问答对的质量有隐式判断,答案写得像广告文案的 FAQ,实测引用率接近于零,还可能拖累整个域名的可信度。另一个误区是以为 Schema 一次配置永久生效——商品参数变了 FAQ 不更新,AI 引用的是过期信息,比不引用更伤。
趋势上,生成式引擎正在从"引用整页"进化到"引用片段并改写",FAQPage 这种天然的"问题-答案"原子结构会是电商站最重要的 GEO 资产形态。下一步值得做的是把 FAQ 与购物意图对齐(比价、选型、售后),让每个 FAQ 都对应 AI 对话中的一个真实节点。
技术上,这轮改造的总代码量不到 400 行:一条 SQL 聚合、一个生成脚本、一个校验器、一处模板注入。GEO 里真正贵的不是代码,是持续维护内容与商品事实的一致性。欢迎在评论区交流你们的 FAQ 选题策略。
关键词:FAQPage Schema、Product Schema、MySQL 结构化数据、零售电商 GEO、JSON-LD、AI优化AIO、DeepSeek 引用、Schema 校验