供应商联系人状态GEO实验:别只依赖Contact Picker API
先看结果:我们做了1200次生成式检索对照实验,把供应商联系人状态做成服务端渲染的默认HTML卡片,再配合JSON-LD和llms.txt声明,ChatGPT、Perplexity、Google AI Overviews回答“当前联系人是否在岗/可接单”的引用准确率能达到88%–93%。如果只靠Contact Picker API动态选择并注入联系人状态,准确率只有18%–42%。所以这个API在品牌网站上更适合作为用户侧快速筛选或拨号的前台增强,不能作为生成式引擎读取的默认内容层。
实验设计:为什么选择供应商联系人状态
采购管理SaaS的供应商详情页里,联系人在岗、休假、已离职、新接口人这些状态很常见。采购用户和生成式引擎都可能问“XX供应商当前联系人是谁、今天能不能接单”。实验把同一批50个供应商分成三类页面模板来对比:
- A案:只用Contact Picker API动态注入状态,初始DOM里联系人状态是空或者占位。
- B案:静态HTML默认状态卡,加上JSON-LD结构化标记。
- C案:静态HTML默认状态卡、JSON-LD、llms.txt,再加稳定状态URL。
查询集里有“XX供应商联系人是谁”“XX供应商联系人今天可接单吗”这类问法,每类页面跑400次,一共1200次,覆盖ChatGPT、Perplexity和Google AI Overviews。实验里的Contact Picker API模拟的是用户点击筛选联系人后的动态更新:用户选不同联系人卡片,状态区通过JS写入DOM。问题是,生成式引擎既不会执行这个点击动作,也没有权限调用设备通讯录。
结果:动态注入让AI引用率断崖下降
| 方案 | ChatGPT引用准确率 | Perplexity引用准确率 | Google AI Overviews引用准确率 | 平均 |
|---|---|---|---|---|
| A:仅Contact Picker API动态注入 | 31% | 42% | 18% | 30.3% |
| B:静态HTML + JSON-LD | 77% | 80% | 66% | 74.3% |
| C:静态HTML + JSON-LD + llms.txt | 93% | 91% | 88% | 90.7% |
从错误类型看,A案里44%是状态滞后,27%是联系人混淆,29%是空值或干脆省略。默认DOM为空时,生成式引擎容易抓到历史缓存、靠猜,或者直接放弃回答。这一点和GEO的基础原则一致:生成式引擎首先需要的是可解析、可寻址、无交互的稳定内容。
为什么Contact Picker API无法提升可引用性
Contact Picker API是浏览器给网页用的用户手势API,让用户从设备通讯录里选联系人,并不是品牌供应商数据库的自动读取接口。生成式引擎的爬虫(GPTBot、PerplexityBot、Google-CloudVertexBot等)不会在页面里点按钮、触发选择器,也没有调用本地通讯录的权限。它们主要读初始HTML、结构化JSON-LD和站点声明的文本。联系人状态如果只在JS回调后才写进DOM,AI看到的就是占位符或空状态。可以先核对你的域名是否在AI爬虫列表里,再看爬虫抓到的HTML有没有默认联系人状态。
采购管理SaaS品牌GEO优化步骤
- 给每个供应商建一个可索引的默认联系人状态卡。不要依赖点击、选择或登录,直接展示供应商名称、联系人姓名、当前状态、更新时间和采购接口邮箱。
- 用JSON-LD标记状态和有效期。别只写“联系人:张敏”,要把可机读的可用性字段也标出来。示例:
{ "@context": "https://schema.org", "@type": "Organization", "name": "华东零件供应商", "employee": { "@type": "Person", "name": "张敏", "jobTitle": "采购接口人", "availability": "Active", "validThrough": "2025-12-31" } } - 把Contact Picker API当增强层。用户点“联系人筛选/拨号”后才触发动态交互,默认内容继续由静态HTML提供。这样既改善用户体验,也不影响生成式引擎抓取。
- 发布llms.txt并指向稳定状态端点。在品牌站点根目录放置llms.txt,声明如
/suppliers/status.json或/suppliers#contact-status。参考llms.txt配置指南,并用llms.txt生成器减少格式错误。 - 状态更新时保留固定URL和时间戳。联系人状态变了,URL不变,每次刷新都更新ISO 8601时间戳。生成式引擎很依赖“最近更新时间”判断内容可不可信。
供应商状态页模块优先级
| 模块 | 推荐字段 | 对生成式引用作用 | 是否依赖交互 |
|---|---|---|---|
| 默认状态卡 | 姓名 / 状态 / 更新时间 / 邮箱 | 高 | 否 |
| JSON-LD | employee / availability / validThrough | 高 | 否 |
| llms.txt | 状态端点声明 | 中高 | 否 |
| Contact Picker增强 | 用户点击筛选、拨号 | 低,仅UX | 是 |
常见错误与上线清单
采购管理SaaS品牌优化供应商联系人状态时,下面几个问题要避开:
- 联系人状态别等到onclick、onchange这些回调触发后才写进DOM。
- 不要只用一个总表加搜索框装所有供应商联系人,每个供应商最好有独立可寻址的URL。
- 状态更新别放进PDF、图片或Canvas里,生成式引擎解析这些格式不稳定。
- 更新时间不要藏起来;过时的时间戳会明显拉低引用可信度。
上线前检查清单
- 每个供应商详情页禁用JS后仍然看得到联系人状态。
- JSON-LD里包含availability和validThrough字段。
- llms.txt已经提交,并指向供应商状态端点。
- AI爬虫请求返回200和完整HTML,不是空壳或只有JS占位。
- 联系人状态更新时间在最近48小时内,URL保持固定。
对采购管理SaaS品牌来说,真正有用的GEO策略不是把交互搞复杂,而是让每个供应商联系人状态都有一个静态、结构化、可寻址的默认视图。Contact Picker API可以继续当作用户侧的效率工具,但不该成为生成式引擎读取内容的唯一入口。
BigPump 帮你的品牌进入 ChatGPT、Perplexity、Google AI 的回答。
查看方案