2026 年 7 月,ChatGPT 的购物推荐换了主要的信息来源。如果你的商品数据没有跟上这个变化,再怎么优化商品页面也补不回来。这套流程的作用,是把商品目录做到可通过校验、可提交的状态。无论你今天能不能提交 feed,它都成立。
目标读者 | 负责大约 500 到 100,000 个 SKU 商品数据的电商 SEO、feed 运营与商家运营负责人 |
交付物 | 一份通过全部九项必填字段校验的商品文件,外加一份标注了责任人的例外清单,记录被拦下的 SKU |
前置条件 | 能把商品目录导出为 CSV、TSV 或 JSONL;一个 staging 目录;能自行编辑或提交变更申请修改 |
接入前提 | 你今天可能提交不了 feed。OpenAI 的 feed 项目是受邀制的,结账是需要单独启用的接入,标准上传目前面向美国。即便如此,这套流程依然能把文件做出来 |
预计耗时 | 商品数低于 5,000 的目录首次约 4 到 6 小时。耗时的是字段审计,不是技术配置 |
完成标准 | 每一行都通过九项必填字段校验;跳过的 SKU 全部进入标注了责任人的例外清单;OpenAI 的搜索爬虫能抓取示例商品 URL 并读到真实数据;该次运行可从留存的导出文件复现 |
变化本身,以及它逼出来的一个判断
OpenAI 于 2026 年 7 月 9 日发布了 ChatGPT 5.6 模型。第二天,ChatGPT 购物推荐中来自商家商品 feed 而非开放网络搜索的比例,从 8.26% 跳到了 61.54%。这组数字来自 Profound 公开的研究,该公司追踪了 2026 年 7 月期间的 1,757,723 次 ChatGPT 购物提示。仅仅一天,基于 feed 的检索就从少数来源变成了主导来源。
这个数字是第三方观测,不是 OpenAI 的披露。OpenAI 没有确认 7 月 10 日的变化,也从未公布过任何检索占比。哪些结论有数据支撑、哪些没有,我放在文章靠后的一个章节里统一说明。方向上请认真对待,精度上请放宽。
这个方向逼出来的,是一个思维转换。商品数据现在不仅要作为内容正确,还要作为数据正确。 一个写得漂亮的商品页面,如果 GTIN 校验位缺失,对基于 feed 的推荐引擎来说就是一行校验失败的记录。
以下全部是操作流程。7 月 10 日那组数字站不站得住,都不影响每一步的价值,因为一份干净、完整、机器可读的商品目录,在今后所有购物场景里都用得上。
先判断你在哪一条通道上
这套流程分成两条通道。"做完"的含义在两条通道上不同,所以开工前你得先知道自己在哪条。通道 A 能证明已被收录。通道 B 能证明的到"准备就绪"为止。两条通道产出的是同一份文件。
四项接入判定
每一项都请如实回答。
问题 | 算作"是"的凭据 | 不算数的 |
|---|---|---|
你是否已向 OpenAI 注册并收到 feed 接入的书面确认? | 点名提到你的 feed 的确认 | "我提交过意向表" |
你的目录是否面向美国市场? | 当前标准上传范围覆盖到你的确认 | 假设自己的市场也在范围内 |
结账接入是否已单独启用? | 接入过程中明确的确认 | 自己把开关打开 |
你是否提交过样例或完整文件并收到受理回复? | 提到你这次提交的回复 | 发出去了但没有任何回音 |
只要有一项没有"能指得出来的凭据"支撑,你就在通道 B。这是默认位置,不是失败状态。有两点值得额外说明:打开资格字段并不会完成结账的接入流程;注册能拿到的只是商家展示名,拿不到 feed 的其他任何东西。
通道 A:feed 接入已确认
你会拿到注册专属的字段清单,以及接入流程中确认的提交渠道。提交机制本身是在接入流程里确定的。 是 SFTP,还是往白名单端点做加密 HTTPS 推送,各家公开的说法并不一致。在 OpenAI 明确告诉你适用哪一种之前,别按任何一种说法去搭你的管道。
通道 B:还没有接入,以及哪些事不会白做
今天不需要任何许可就能推进的有三件事:爬虫访问、商品页面自身的结构化数据与描述质量,以及把文件做好并校验通过。本文中段的目录工作没有任何门槛。现在就做出文件并校验,等接入开通那天直接提交一份本来就合格的。
如果你用 Shopify,商品数据会通过 Shopify Catalog 到达 ChatGPT,商家侧不需要额外工作。真正需要直接 feed 的是时效性,以及默认不会带过去的那些字段。有一点要留意:有一个二手来源把这项接入标为 2026 年 3 月,但那个日期未经核实,当作闲聊素材即可,别写进计划。
为读取你商品的爬虫开门
这是两条通道都能立刻见效的第一步,也是性价比最高的一步。
打开 robots.txt,查看针对 OpenAI 各 agent 的指令。对商品可见性真正关键的是 OAI-SearchBot。它一旦被屏蔽,你的内容就不会出现在 ChatGPT 的商品结果里,feed 再干净也没用。它不用于模型训练,屏蔽它保护不了任何东西。
需要明确判断的 agent 名称有四个。
Agent | 作用 | 对商品可见性的影响 |
|---|---|---|
| 为搜索场景索引内容 | 屏蔽后商品会被隐藏,与 feed 质量无关 |
| 抓取用户明确询问的页面 | 屏蔽后实时读页会失效 |
| 训练用爬虫 | 与购物可见性无关 |
| 智能体式浏览 | 影响经由智能体的结账路径 |
这里最重要的质量检查不是 `robots.txt`。 而是被放行的爬虫真的到达之后,能不能读到东西。用爬虫的 user agent 抓一个代表性商品 URL,然后检查响应正文。如果返回的只是一个应用外壳,没有服务端渲染的标题、价格、库存状态和描述,那这次抓取成功了,却什么有用的东西都没返回。很多店铺前端只在客户端渲染商品数据,这类店铺无论 robots 文件怎么写,在没有 feed 的发现路径里都是隐形的。
这项检查可以用 Auspia 的 OpenAI search crawler simulator 跑,它会以 OpenAI 爬虫的身份抓取公开页面,并显示它能读到什么。
补救路径。 如果 robots.txt 被平台或代理方锁住,把变更申请连同日期记录下来,然后继续往下走。这一步不是拦截点,它会成为通道 B 记录里的证据。
让商品页面对机器可读
feed 不是通往购物推荐的唯一路径,对通道 B 的商家来说目前根本用不上。页面上的结构化数据用得上。
给所有商品模板加上 JSON-LD 格式的 Product 结构化数据,并且让它和商品目录导出同源。后半句是团队最容易漏掉的地方。如果 schema 在主题里手工维护,而 feed 来自 PIM,两者会在一个季度内跑偏,而价格和库存信号互相打架,比干脆没有更糟。
至少包含 name、description、image、SKU、brand,以及带 price、price currency、availability 的 offers 块。取值要和 feed 里一致。如果目录里有 GTIN、condition、material、color、size、dimensions,也一并放进去,这些正是对话式查询真正会用到的属性。
质量检查。 从差异最大的品类里各挑一个商品 URL,一共三个,用爬虫看到的那条渲染路径去验证,而不是用登录状态的浏览器。
补救路径。 如果平台不允许往商品模板注入 JSON-LD,就通过标签管理器塞进 head,并把它记为技术债。能用,但脆弱,得有人负责撤下它。
面向对话式查询重写描述
这一步里,SEO 的老规矩会反过来伤你。
商品目录的描述通常是为了覆盖关键词、和在货架上说服人而写的:品牌叙事、堆关键词的标题、卖点罗列。对话式购物查询完全不是这个形状。有人问"办公室开放式工位用的、150 美元以下的静音机械键盘",能回答这个问题的属性是噪音水平、轴体类型和配列。这些属性要能被抽取,就必须存在,而且必须是事实。
把商品描述写成一份事实规格表,前面带一句给人看的简短引言。一句话说清它是什么、适合谁。然后不加营销修饰地把属性列出来。"重量:780 g"胜过"令人惊艳的轻量化设计"。要下判断,就把它写得具体、可验证。
在大举投入之前,有件事得知道。OpenAI 的购物文档写明,ChatGPT 可能会生成简化过的商品标题和描述。你的文案是推荐的输入,不是有保证的输出。把源数据写得干净、基于事实,然后接受表层可能改写它这个事实。
质量检查。 挑出销量前十的商品,为每个写下买家做决定时需要的四个属性。如果一个描述里出现不到三个,那它没在干活。
补救路径。 如果描述来自你控制不了的供应商 feed,手工重写销量最高的那一成,让长尾慢慢跟上。局部覆盖也比项目停摆强。
动第一行数据之前,先写下字段契约
从这里进入 feed 本体。在任何导出之前,把"什么算对"一次性写清楚。这么做的结果,是把审计从辩论变成机械处理。
九个必填字段,以及各自会在哪儿崩
每一行都需要这九个。这张表就是契约。
字段 | 可接受的格式 | 最常见的失败 | 后果 |
|---|---|---|---|
| 每个商品或变体稳定、唯一的字符串 | 在变体间复用,或每次导出重新生成 | 重复行与孤立行 |
| 纯字符串,建议不超过 150 字符 | 从词中间截断,或在标题里带上价格 | 整行被拒或错误匹配 |
| 纯文本,最多 5,000 字符 | CMS 残留的 HTML 或 markdown | 整行被拒 |
| 商品页面 URL | 带跟踪参数,或会跳转的 URL | 该行解析不到任何东西 |
| 品牌名字符串 | 无品牌 SKU 上完全缺失 | 整行被拒 |
| 商家名字符串 | 整个目录里写法不一致 | 商家信号被削弱 |
| 直达图片的 URL | 占位图,或需要会话才能访问的 URL | 该行没有视觉素材 |
| 只能是 | 来自内部库存词汇的自造值 | 整行被拒 |
|
| 带千位分隔符,或没有币种的裸数字 | 整行被拒 |
有两个字段值得单独强调,因为它们会悄悄失败并拖垮整条商品线。
availability 字段只接受五个值。省略、留空或无法识别的值都会导致整行被拒。如果你的平台导出的是 IN STOCK、available 或 1,这些行全都会失败。把内部词汇显式映射到五个可接受值,映射不了的送进人工队列,别默认落到 unknown。unknown 是合法取值,但它是一个有意的状态,不是什么都往里塞的垃圾桶。
price 字段是 金额、一个空格,然后是大写币种代码。也就是 79.99 USD,不是 $79.99,不是 79,99 USD,也不是 7.999e1。不能有千位分隔符,不能有科学计数法。
会悄悄拒行的规则
还有四条约束值得写进校验脚本。
GTIN。 必须正好是 8、12、13 或 14 位,且校验位有效。不接受 ISBN-10。保留前导零,也就是说,在所有会经过的地方都要把这一列当文本处理。这是整份规格里最常见的一个隐形破坏点,因为电子表格和 CSV 导出默认会丢掉前导零。
促销价。 必须大于零,且在同一币种下严格小于原价。促销价等于原价、或原价留空的促销行都会失败。
标题长度。 建议不超过 150 字符。截断时请在词边界处切。
日期字段不排期任何东西。 规格明确写着,契约里的日期不会为价格或库存变更排期。想让促销在午夜切换,必须由你的管道把新值推上去。
有意识地决定资格字段
有三个字段决定一行通过校验之后会发生什么。
字段 | 省略或留空时的默认值 | 作用 |
|---|---|---|
|
| 设为 |
| 需要搜索资格 | 要设为 |
| 关闭 | 控制一条独立的广告处理路径 |
它们也可能以 enable_search、enable_checkout、is_eligible_ads 出现。这些是别名,别把用旧拼写的模板当成另外一个字段。
一条实操建议:让 is_eligible_search 和那个已经知道商品下架或隐藏的系统保持同步。如果你另有一份"从渠道隐藏"的名单,而它到不了 feed,你就是在把过期的在售信息往推荐里送。
按什么顺序开启可选字段组
可选字段大约有 50 个。这里按每投入一小时能拿回多少来排,而不是按规格顺序。
- 变体(
group_id、listing_has_variations、variant_dict、offer_id、gtin、mpn)。如果你卖服装、鞋、家居,或任何有尺码颜色的东西,这是第一优先。 - 商品信息(
condition、product_category、material、color、size、gender、age_group,以及尺寸重量字段)。这些是让对话式匹配跑起来的东西。 - 媒体(
additional_image_urls)。 - 退货(
accepts_returns、return_deadline_in_days、return_policy)。 - 评价(
review_count、star_rating),加上店铺级的store_review_count与store_star_rating。 - 履约、商家与地区(
shipping_price、shipping、seller_url、target_countries、store_country)。 - 只在接入时开放的字段。
marketplace_seller、size_system、accepts_exchanges、is_digital,广告那一对(is_ads_eligible、ads_metadata),结账那一对(is_eligible_checkout、seller_privacy_policy、seller_tos),都需要在接入流程中确认。它们不是自助的。第一轮先放一放。
质量检查。 九个必填字段都要映射到某一列,且该列在至少 95% 的 SKU 上解析出真实数据。低于这个门槛的字段不是映射任务,而是一个采购决策。
补救路径。 如果某个必填字段根本没有来源,比如无品牌商品线上的 brand,那就停下来,在做文件之前先和业务负责人把采购问题定下来。格式层面的工作修不好不存在的数据。
实际允许提交的文件格式
用接入流程中针对你注册 feed 确认过的格式。除此之外,还有一条 Google 兼容路径,接受 UTF-8 的制表符分隔 .txt 或 .tsv,以及逗号分隔 .csv,并支持 .txt.gz、.txt.gzip、.tsv.gz、.csv.gz 形式的 gzip 压缩。
在这条兼容路径上,JSON、电子表格、XML、RSS、Atom 都不受支持。不要逐行混用格式,整份上传只用一种。
归一化最容易崩掉的四个字段
冻结一份导出
只导出一次,给文件打上时间戳并算出哈希值。后面每一步都针对这份冻结文件执行。可复现的性能,决定了三周后有人问"这个 SKU 为什么不见了"时,这次审计能不能交代得清。
四项归一化
GTIN 前导零。 把该列按文本导出,校验位数是 8、12、13、14 中的一个,并验证校验位。绝大多数静默失败都出在这里。
价格格式。 去掉千位分隔符,保留小数点,清掉科学计数法,把币种代码作为独立记号附上。把结果丢进一个只接受 ^\d+\.\d{2} [A-Z]{3}$ 的正则,其余进队列。
库存状态映射。 把内部词汇显式映射到五个可接受值。统计每个桶落进了多少行,又有多少行落进人工复核。人工复核多,说明的不是 feed 坏了,而是你的库存词汇需要一张映射表。
标题与描述清理。 标题在 150 字符处按词边界截断。描述剥掉标记,按纯文本限制在 5,000 字符以内。
质量检查。 把归一化后的文件重新导入一个新的电子表格,确认 GTIN 列仍然显示前导零。这样能抓出那种绕过其他所有检查的数字导出陷阱。
补救路径。 如果 feed 平台或 PIM 替你做这些归一化,别信成功提示,用同一套检查去验证它的输出。
审计每一行,并维护一份例外清单
到这里,把检查跑遍整份文件。这一步把商品目录变成一份工作任务书。
不用校验器就能做的九项机械检查
对每一行:九个必填字段都存在且非空;availability 落在五个枚举值里;gtin 位数与校验位有效;price 符合金额加币种的形状;sale_price 严格小于 price、大于零且币种相同;title 不超过 150 字符;description 是纯文本且不超过 5,000 字符;url 返回 200 且在服务端渲染出商品数据;image_url 解析到真实图片而非占位图。

一行数据要么穿过所有闸门,要么带着失败的那道闸门名字落进例外文件。拒行最多的是 availability 这道闸门,因为自造库存词汇是商品目录失败最常见的原因。
做一份例外文件,而不是一份完美目录
两列加一个责任人:item_id、卡点、以及谁来修。
质量检查。 对于一个整理得还行的目录,例外文件应该不到总行数的 10%。超过 30%,问题就在上游的数据治理,诚实的做法是去修源系统,而不是给文件打补丁。
补救路径。 如果某个必填字段是整类商品缺失而不是零散 SKU 缺失,把它当作一个需要业务负责人参与的采购决策来处理。别为了让审计通过就把这些行改成 unknown。unknown 是一个有明确含义的合法取值,用它来通过检查是在污染你自己的数据。
关于更新频率,有一句诚实的补充。规格没有说明更新节奏,也没有说明 feed 是全量快照还是增量更新。公开的厂商说法对这两点都言之凿凿,但那些内容不在 OpenAI 的文档里。规格真正要求的是:提交当前价格,在促销开始和结束时更新,在商品售罄或恢复时更新库存状态。把你的管道围绕这两类事件搭建,更新频率的问题留到接入流程里去确认。
用平台会用的方式校验文件
用你打算提交的那种格式,重新解析你打算提交的那份确切字节,数一数进去多少行、出来多少行。
这一步能抓出电子表格掩盖掉的失败。一个在 Excel 里打开很漂亮的文件,和一个能被当 CSV 解析的文件不是一回事,因为未转义的分隔符或描述字段里的换行,在屏幕上看着没问题,却会破坏解析。
质量检查。 进出的行数相等,且自动检查与人工审计结果一致。两者对不上就是有一方错了,通常错的是人工那方。
补救路径。 编码问题几乎总能靠重新导出为 UTF-8 解决。引号问题几乎总是未转义的分隔符,或描述里的多余换行。
如果团队里有编码 agent,这里是写个小脚本最划算的地方,因为它能把审计从季度项目变成一次重跑。
验证它真的生效了
能证明什么,取决你在哪条通道。这一点值得说准,不要含糊过去。

通道 A 能证明已被收录。通道 B 能证明准备就绪。通道和分叉都不会改变文件本身,这正是"在拿到接入之前先把文件做好"的意义。
有接入时(通道 A)
四项检查:提交已被受理;逐行拒绝报告读过,每一条拒绝都已解决或已记录;示例购物提示开始展示你的某个商品;服务器日志显示有检索 agent 抓取了你的商品 URL。
没有接入时(通道 B)
四项检查:robots.txt 抓取为 OAI-SearchBot 返回了商品 URL;该 URL 的服务端渲染结果里有标题、价格、库存状态和描述;九项审计通过;冻结的导出与检查运行被保存在下一个人能复现的位置。
准备就绪是真实且可证伪的成果,但它和被收录不是同一回事,也不该被当成同一回事来汇报。
最后一个重要的数字
从 ChatGPT 跳出的外部链接会自动带上 utm_source=chatgpt.com。也就是说,点击确实发生过的第一方证据只存在于你自己的分析工具里。趁现在还不需要,先把过滤器建好。
同时说清它到底在测什么:它是基于点击的流量归因,不是可见性指标。一个商品可能被推荐很多次却从未被点击,而不具备资格的商品根本不会被点击。
这套流程控制不了的东西
它控制不了 feed 集合内部的排序。 规格定义的是单行的契约,没有定义排序规则。通过全部字段检查,意味着这个商品获得了被检索的资格,它对十行合格记录里哪一行会展示只字未提。开头引用的那份研究测的是检索来源,不是检索集合内部的排名。
7 月 10 日那组数字是观测值,且来自单一厂商。 它们描述的是 Profound 的追踪提示面板,而不是真实的购物会话或购买链路。OpenAI 没有确认那次变化,也没有披露任何检索占比。2026 年 9 月 3 日开始的 GPT-6 Astra 铺开,与那份研究较晚的测量窗口重叠,是一个实实在在的混淆变量。
集中度数字带着同样的局限。前十店铺引用占比从 22.5% 升到 41.8%、独立商家数从 13,524 降到 10,607,都来自同一个面板。而"检索来源变化解释了 517 个变动客户中 83% 的可见性波动"这个发现,是面板内部的解释比例,不是一个可以拿来制定计划的因果系数。
厂商博客上流传的部分说法不在规格里。 下面每一条都请谨慎对待。
说法 | 来源 | 状态 |
|---|---|---|
feed 每 15 分钟刷新,比每日 feed 频繁 96 倍 | 厂商博客 | 不在 OpenAI 规格里,规格未说明刷新节奏 |
feed 是全量快照而非增量更新 | 一家未引用 OpenAI 文档的厂商 | 未解决。留待接入时确认 |
需要大约 100 个商品的样本 | 厂商博客 | OpenAI 帮助文档只提到"样品或完整 feed 提交",未涉及数量 |
通过 SFTP 提交 | 一家说 SFTP,另一家说加密 HTTPS 推送 | 来源互相矛盾。机制由接入流程确定 |
| 单一聚合来源 | 不在规格字段清单里。规格中的评价字段是 |
结构化 feed 的转化率约为抓取数据的两倍 | 无出处的厂商说法 | 不要当作前提 |
它控制不了你的文案会被怎么呈现。 ChatGPT 可能会生成简化过的商品标题和描述。另外,购物结果由 ChatGPT 独立挑选,不是广告。这一点回答的是商业影响的问题,不是检索来源的问题。如果你要的是付费曝光,OpenAI 另有一条基于商品 feed 构建的广告路径,那是另一套流程,不在本文范围内。
常见问题
今天能向 ChatGPT 提交商品 feed 吗?
不能自助提交。接入是按商家逐一确认的,结账需要一个单独启用的接入,标准上传目前面向美国。注册只会给你商家展示名,你可能处在"已注册但没有实际上传权限"的状态。跑一遍上面的四项接入判定,就知道自己在哪。
feed 应该多久更新一次?
规格没有说明刷新节奏。有两家厂商博客声称是 15 分钟,但那个数字没有出现在 OpenAI 的文档里。务实的答案是:围绕规格明确要求保持最新的两件事来驱动更新,也就是价格和库存状态事件。
发送整个文件,还是只发变更的行?
未解决。有一家厂商声称是全量快照,且没有引用 OpenAI 文档作为依据。在搭建任何依赖某一答案的管道之前,先在接入流程里确认。
100 个商品的样本要求是真的吗?
OpenAI 的帮助文档在提到首次样品或完整 feed 提交时没有给出数量。100 这个数字来自厂商博客。如果你要准备样本,请覆盖各类可选字段组的代表性情形,而不是瞄准某个具体数目。
一份好的 feed 能提升我的商品在 ChatGPT 购物结果里的排名吗?
在这个问题通常暗示的意义上,不能。feed 让商品变得有资格、可被描述。检索集合内部的排序没有公开文档,而现有公开研究测的是检索来源,不是排名。把字段合规当作前提条件,而不是杠杆。
我在 Shopify 上卖东西,这套流程还需要吗?
基础接入不需要。商品数据通过 Shopify Catalog 到达 ChatGPT,商家侧不用额外工作。真正需要直接 feed 的是时效性,以及默认不会带过去的那些字段。
作者:Eva Laurent,Auspia 的电商搜索策略师,负责过一万多个商品页面。她撰写电商搜索、商品发现,以及商品数据如何进入 AI 购物场景的内容。




