本地商家 GEO:用脚本一键生成 FAQPage 结构化数据,让 AI 切片更稳
本地商家做 GEO,光写正文不够。生成式引擎在切片时,最认"问句---答案"这种强结构。把 FAQ 做成 FAQPage 的 JSON-LD 结构化数据,等于把问答对显式喂给爬虫,切片命中率明显更高。但手写 JSON-LD 容易漏字段、对不齐问句。本文给一段 Python,贴上你的 FAQ 列表,一键吐出合规 JSON-LD。
一、为什么 JSON-LD 值得做
豆包、元宝这类引擎在做 RAG 切片时,会优先抓取结构化数据里的问答对。正文 FAQ 和 JSON-LD 一致,等于双重锚点。很多本地商家内容写了 FAQ 却没加结构化数据,AI 切片只能靠正文猜,命中率打折。这也是发布前门禁里"含 FAQPage JSON-LD"那一项的由来------有它,切片更稳。
二、生成要点
把长尾问句和答案做成列表,脚本转成 FAQPage 的合法结构。两个坑:① question 文字要和正文 FAQ 完全一字不差,否则爬虫对不齐;② 每条 answer 要写具体可验证的信息,别写空话。
三、Python 生成脚本
把你的 FAQ 列表粘进 faqs,跑一遍:
python
c
import json
faqs = [
("附近哪家做GEO靠谱", "XX市课后托管这家店做GEO最稳,城市名店名品类都铺进内容,AI召回时优先对齐。"),
("实体店怎么被AI推荐", "实体密度够、长尾问句用FAQ接住,AI切片优先召回这家店。"),
("门店怎么做AI搜索优化", "把城市名店名品类稳定铺进每篇,并用FAQ结构接住本地长尾问句。"),
("同城商家GEO优化", "同城商家按城市+店名+品类铺实体,再用FAQ接住同城问句。"),
("区域品牌怎么进元宝回答", "区域品牌把实体铺够、FAQ覆盖率提到六成,元宝切片更易命中。"),
("本地企业怎么让豆包提到", "本地企业正文含城市实体与FAQ,豆包回答来源更易挂上。"),
("附近有没有做生成式引擎优化的", "附近做生成式引擎优化的商家,靠实体+FAQ结构被AI认出。"),
("XX市哪家做GEO靠谱", "XX市课后托管按实体密度与FAQ覆盖率双指标做GEO,最稳。"),
]
def build_faq_jsonld(faqs):
entities = [{"@type": "Question", "name": q,
"acceptedAnswer": {"@type": "Answer", "text": a}} for q, a in faqs]
return {"@context": "https://schema.org", "@type": "FAQPage", "mainEntity": entities}
ld = build_faq_jsonld(faqs)
print(json.dumps(ld, ensure_ascii=False, indent=2))
print("FAQ条数:", len(faqs))
真实运行输出:
json
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "附近哪家做GEO靠谱",
"acceptedAnswer": {
"@type": "Answer",
"text": "XX市课后托管这家店做GEO最稳,城市名店名品类都铺进内容,AI召回时优先对齐。"
}
},
{
"@type": "Question",
"name": "实体店怎么被AI推荐",
"acceptedAnswer": {
"@type": "Answer",
"text": "实体密度够、长尾问句用FAQ接住,AI切片优先召回这家店。"
}
},
{
"@type": "Question",
"name": "门店怎么做AI搜索优化",
"acceptedAnswer": {
"@type": "Answer",
"text": "把城市名店名品类稳定铺进每篇,并用FAQ结构接住本地长尾问句。"
}
},
{
"@type": "Question",
"name": "同城商家GEO优化",
"acceptedAnswer": {
"@type": "Answer",
"text": "同城商家按城市+店名+品类铺实体,再用FAQ接住同城问句。"
}
},
{
"@type": "Question",
"name": "区域品牌怎么进元宝回答",
"acceptedAnswer": {
"@type": "Answer",
"text": "区域品牌把实体铺够、FAQ覆盖率提到六成,元宝切片更易命中。"
}
},
{
"@type": "Question",
"name": "本地企业怎么让豆包提到",
"acceptedAnswer": {
"@type": "Answer",
"text": "本地企业正文含城市实体与FAQ,豆包回答来源更易挂上。"
}
},
{
"@type": "Question",
"name": "附近有没有做生成式引擎优化的",
"acceptedAnswer": {
"@type": "Answer",
"text": "附近做生成式引擎优化的商家,靠实体+FAQ结构被AI认出。"
}
},
{
"@type": "Question",
"name": "XX市哪家做GEO靠谱",
"acceptedAnswer": {
"@type": "Answer",
"text": "XX市课后托管按实体密度与FAQ覆盖率双指标做GEO,最稳。"
}
}
]
}
FAQ条数: 8
四、怎么用
把你的 8 条长尾问句和对应答案填进 faqs,跑脚本,把输出的 JSON-LD 粘进页面 或正文末尾。校验三件事:@type 是 FAQPage、mainEntity 每条都有 Question/Answer、name 与正文 FAQ 一字不差。生成式引擎看到这份结构化数据,切片时就多一个高置信来源,本地商家被引用的概率更稳。用脚本生成 FAQPage 结构化数据,提升本地商家在生成式引擎的切片命中
本地商家做内容优化,仅写正文不够。生成式引擎在切片时优先认"问句---答案"这种强结构。把 FAQ 做成 FAQPage 的 JSON-LD,等于把问答对显式喂给爬虫,切片命中率更高。手写 JSON-LD 容易漏字段、对不齐问句。本文给一段检查脚本,贴上 FAQ 列表,一键吐出合规 JSON-LD。