当用户在 ChatGPT 中讨论北京旅游攻略时,系统可能推送 Grubhub 的中餐外卖广告;当对话转向 NBA 季后赛时,体育赛事票务平台 Gametime 的广告就会出现在对话流中。这种基于会话上下文的实时广告投放背后,隐藏着一套完整的广告归因循环系统。本文将从技术实现角度拆解这一工程链路,重点分析用户点击、会话上下文追踪、转化回传的核心机制。
广告投放的技术架构基础
ChatGPT 的广告投放并非传统的展示广告位模式,而是深度嵌入在对话生成的 Server-Sent Events(SSE)流中。当用户发送一条消息后,ChatGPT 会在 chatgpt.com/backend-api/f/conversation 端点上开启 SSE 响应流。在模型输出文本的间隙,后端会注入结构化的广告单元对象,这种设计使得广告能够在不中断对话体验的前提下自然呈现。
具体而言,广告单元以 single_advertiser_ad_unit 为类型标识出现在 SSE 数据流中。每个广告单元包含广告主品牌信息、广告卡片内容、跳转链接以及加密的归因令牌。值得注意的是,advertiser_brand.id 字段采用 adacct_<32位十六进制> 的命名格式,这是 OpenAI 为每个商户账户生成的稳定标识符,贯穿整个归因链路。
在创意托管方面,广告主的市场图标和素材图片均加载自 bzrcdn.openai.com 域名。这意味着 OpenAI 不仅提供广告投放平台,还直接托管广告创意内容,确保素材加载速度与品牌呈现的一致性。点击行为通过 target.open_externally: false 参数控制在 ChatGPT 内的 Webview 中打开,使 OpenAI 能够观测到用户点击后的完整浏览行为,而不仅仅依赖商户侧的上报信号。
会话上下文与定向投放机制
从实际捕获的数据来看,ChatGPT 的广告定向基于当前对话主题的语义理解。同一个测试账户在不同话题的六次对话中收到了六个不同品牌的广告:当对话涉及北京行程规划时,系统推送 Grubhub 的中餐外卖广告;讨论北京 tour bookings 时出现 GetYourGuide 的长城 tour 广告;涉及航班信息时出现 Axel 的机票广告;而 NBA 季后赛相关对话则展示 Gametime 的体育票务广告。这种上下文相关的定向逻辑表明,ChatGPT 正在利用对话内容的语义分析来匹配相关广告主。
目前尚未发现系统是否会将更早的对话历史纳入定向参考的证据,但基于对话主题的实时匹配已经是确定的事实。这种定向方式与传统搜索引擎广告的关键词匹配有本质区别 —— 它是对用户意图的更深层理解,而非简单的关键词触发。
四个 Fernet 加密令牌的归因链路
ChatGPT 广告归因系统的核心是四个 Fernet 加密令牌,它们共同构成了从点击到转化的完整追踪链条。Fernet 是 Python 加密标准库中的对称加密方案,其设计特点是密钥不可逆且内置消息认证码。这四个令牌各司其职,形成相互验证的冗余结构:
ads_spam_integrity_payload 是服务器端完整性校验令牌,随 SSE 流一起发送给客户端,但永远不会出现在用户点击的 URL 中。它的作用是防止恶意方伪造广告点击来套取广告费用。在服务器端,OpenAI 可以通过验证这个令牌的完整性来确认广告请求的真实性。
oppref 是前向归因令牌,出现在点击 URL 中,同时被 OAIQ SDK 复制并存储在浏览器 Cookie __oppref 中,TTL 设置为 720 小时(即 30 天)。这个令牌会伴随用户在商户网站上的所有后续行为,成为归因的核心依据。当用户在商户侧产生转化行为时,这个令牌会被回传至 OpenAI 的归因系统。
olref 与 oppref 同时出现在点击 URL 中,但不会被 SDK 存储。根据其命名习惯推断,这个令牌很可能用于 OpenAI 服务端的出站链接日志记录,帮助广告平台追踪每一次广告点击的发起时间与来源。
ad_data_token 是第四个令牌,它被 base64 包装后嵌套在 SSE 载荷的 ad_data_token 字段中。这个令牌可能在广告被点击时由服务器端进行校验,用于确认广告展示与点击之间的关联性。
值得注意的是,Fernet 加密的前九个字节是公开的:第一个字节是版本标识 0x80,随后是 8 字节的大端序 Unix 时间戳。这意味着任何人无需解密密钥即可从令牌中提取其生成时间。实际测试中,一个 Home Depot 广告点击 URL 中的令牌生成时间为 11:30:08 UTC,而浏览器实际发起请求的时间为 11:31:43 UTC,两者相差 95 秒,这个时间差可能反映了用户阅读广告内容后做出点击决策的思考时间。
商户侧的归因闭环实现
用户点击广告卡片后,浏览器会打开包含 utm 参数和归因令牌的商户页面。商户页面加载时,OAIQ SDK(版本 0.1.3)会初始化并执行归因闭环的关键步骤:
<script src="https://bzrcdn.openai.com/sdk/oaiq.min.js"></script>
<script>
oaiq('init', { pid: '<merchant pixel ID>' });
oaiq('measure', 'contents_viewed', { ... });
</script>
SDK 在初始化时首先检查 URL 参数中是否存在 oppref 令牌。如果存在,它会将该令牌写入第一方 Cookie __oppref,设置 720 小时的过期时间。同时,SDK 还会设置探测 Cookie __oaiq_domain_probe 用于跨域追踪验证。此后,用户在商户网站上的每一次关键行为(如查看商品详情、加购、提交订单)都会触发 measure 调用,将事件以 JSON 格式 POST 到 https://bzr.openai.com/v1/sdk/events?pid=<merchant>&st=oaiq-web&sv=0.1.3 端点。
这个设计实现了一个自洽的归因循环:用户在 ChatGPT 对话中点击广告时携带 oppref 令牌来到商户网站,OAIQ SDK 捕获并存储这个令牌,将其与用户的后续行为关联,最终将转化事件连同归因令牌一起回传至 OpenAI 的广告系统。
工程化参数与监控要点
对于希望接入 ChatGPT 广告体系的商户和技术团队,以下工程参数值得重点关注:
归因窗口配置方面,720 小时的 Cookie TTL 意味着从广告点击到最终转化在 30 天内都将被归因至 ChatGPT 广告源。这一窗口长度显著长于多数搜索广告平台的默认设置,反映出对话式广告可能需要更长的用户决策周期。
SDK 版本与端点方面,当前观测到的 OAIQ SDK 版本为 0.1.3,表明该广告平台仍处于早期迭代阶段。事件上报端点为 bzr.openai.com,素材 CDN 为 bzrcdn.openai.com。对于广告技术开发者而言,这两个域名应当加入过滤器列表以便调试和隐私分析。
加密算法与密钥管理方面,Fernet 使用 AES-128-CBC 加密并配合 HMAC-SHA256 做完整性校验,密钥由 OpenAI 服务器端单独保管。商户无需关心加密细节,只需正确传递和存储令牌即可。
监控与验证方面,广告主可以通过检查浏览器中的 __oppref 和 __oaiq_domain_probe Cookie 来验证归因链路是否正常工作。如果在 ChatGPT 广告点击后未能发现这些 Cookie,说明归因链条存在断裂,需要排查 SDK 初始化是否成功。
总结
ChatGPT 的广告归因循环代表了对话式 AI 平台变现的技术前沿。通过将广告单元嵌入 SSE 流实现原生展示,利用 Fernet 加密的四个令牌构建防伪和归因双重保障,配合商户侧 OAIQ SDK 完成转化回传,OpenAI 构建了一套完整的从展示到转化的闭环系统。720 小时的归因窗口和基于对话上下文的实时定向能力,使得这一系统区别于传统搜索广告,成为 AI 原生广告技术的典型实践。
参考资料:本文技术细节来源于 Buchodi Threat Intel 的流量分析报告,基于真实移动流量捕获的 SDK 行为与网络请求记录。