Topics API 可在不使用第三方 Cookie 的情况下,针对用户兴趣投放广告。
Topics API 的运作方式
Topics API 可用于根据用户的活动,观察和提供对用户可能感兴趣的主题的访问权限。然后,Topics API 可以向 API 调用方(例如广告技术平台)授予对用户感兴趣的主题的访问权限,但不会泄露有关用户活动的其他信息。
主要概念
- “主题”是指简单易懂的当前用户兴趣主题,是“主题”分类的一部分。
- 调用方是指向 Topics API 发出请求以观察或访问用户兴趣的实体,例如应用、第三方 SDK、网站或服务。
- 如果某个调用方在过去 3 个周期内通过与某个主题相关联的网页或应用发出了 Topics API 请求,此调用方就会观察该主题。
- “周期”是指主题计算期限,默认为一周。
- 分类法是类别的层次结构列表,例如,其中包含
/Arts & Entertainment/Music & Audio/Soul & R&B和/Business & Industrial/Business Services/Corporate Events等类别。 - 系统使用分类器模型派生主题,该模型会将用户活动映射到零个或多个主题。
Topics API 流程核心步骤
Topics API 生命周期包含三个主要步骤:
- 观察用户活动,例如用户访问网页
https://cats.example/tabby/index.html或下载应用cats的情况。 - 从用户活动中派生主题,例如
/Pets & Animals/Pets/Cats。 - 访问之前为用户观察到的主题,例如作为选择相关广告(例如猫粮促销广告)的信号。
观察主题
调用方只能访问他们观察到的感兴趣的主题。当调用方从与某个主题相关联的情境中发出 Topics API 请求时,就会观察该主题。为了说明这一概念,请参考以下简化示例。
- 假设有两个 Topics API 调用方:A 和 B。
- 有两个上下文:
- Greenhouse,例如与主题
Home & Garden相关联的名为 Greenhouse 的应用或网站 greenhouse.example。 - 网球练习,例如与主题
Sports/Tennis相关联的名为“网球练习”的应用或网站 tennis.example。
- Greenhouse,例如与主题
- 调用方 A 和 B 都存在于 Greenhouse 上下文中。
- 网球练习上下文中只有调用方 B。
- 为简单起见,假设在第 1 个时段之前,系统未观察到该用户感兴趣的任何主题。
- 用户访问 Greenhouse 应用,调用方 A 和 B 会调用 Topics API 来记录用户对相应网页或应用的访问(如需了解如何调用 Topics API,请参阅后续步骤中建议的实现指南)。此记录(主机名或应用数据)稍后将用于派生感兴趣的主题。Topics API 稍后会将主题
Home & Garden标记为同时被调用方 A 和 B 观察到。 - 用户访问 Tennis exercises 应用。只有调用方 B 会发送 Topics API 请求。Topics API 稍后会将主题
Sports/Tennis标记为调用方 B 观察到的主题。 - 在周期结束时,Topics API 会刷新用户的热门主题,并根据用户活动确定观察到这些主题的调用方。
- 稍后,当调用方 B 再次调用 Topics API 时,它可以在响应数组中为此用户获取
Home & Garden或Sports/Tennis主题(或 5% 的概率获取随机主题)。 - 调用方 A 只能访问主题
Home & Garden,因为它从未观察到主题Sports/Tennis。这意味着,第三方只能在用户感兴趣的特定情境(应用或网站)中了解用户的兴趣主题。
派生主题
“主题”摘要卡会根据用户活动推断出用户感兴趣的主题。主题是从预定义的开源分类中选择的。Topics 会在每个周期内刷新一次用户的五大热门主题,以及在该周期内观察到这些主题的调用方。Topics 分类器模型会根据用户活动派生主题:网页访问的主机名、Android 设备上的应用信息。
调用方访问用户感兴趣的主题
该 API 仅会返回调用方在最近三个周期内观察到的主题。最多可向调用方返回三个主题,每个最近三个周期(如果调用方观察到该周期的主题)对应一个主题。调用方可以使用返回的主题来补充任何情境信息,也可组合使用这些主题来帮助为用户找到更相关的广告。
周期数
Topics API 必须确保它提供的感兴趣主题始终是最新的。系统会根据用户在某个时间段(称为“周期”,默认为一周)内的活动来推断他们感兴趣的主题。每个用户都有自己的时段(时段是“按用户”),初始开始时间是随机的。
Topics API 会在每个周期计算一次用户的 5 个热门主题,并确定哪些调用方使用设备端信息观察到这些主题。系统会从用户在每个周期内最感兴趣的前五个主题中随机挑选一个主题作为该时间段的主题。为了进一步加强隐私保护并确保所有主题都有代表性,从兴趣分类所有可能的主题中随机选择一个主题的概率为 5%。
实践中的 Web 主题
在网络上,主题是从用户访问的网页的主机名推断出来的。例如,根据网站 dogs.example 推断出的主题可能是 /宠物与动物/宠物/狗。
下图显示了一个经过简化的示例,展示了 Topics API 如何帮助广告技术平台选择适当的广告。此示例假定用户的浏览器已有可将网站主机名映射到主题的模型。
浏览器会根据调用 Topics API 的代码的上下文确定调用方的来源。实际上,这意味着 Topics 用户从其来源在 iframe 中调用 API,或者在向其来源发出的 fetch 中包含主题。
例如,供应方平台 (SSP) 可嵌入到多个发布商网站上。然后,SSP 便可从其来源在 iframe 中调用 Topics API,以便观察与这些发布商网站上的用户相关联的主题。然后,这些主题可以与需求方平台 (DSP) 共享,以帮助其为用户选择相关广告。
API 如何确定哪些调用方可以看到哪些主题
API 调用方仅会接收最近观察到的主题,而用户感兴趣的主题在每个周期(在 Chrome 的实现中设置为 1 周)刷新一次。这意味着,该 API 会提供一个滚动窗口,在该时段内,给定调用方可以接收观测到的主题。
下表概述了用户在单个周期内的假设浏览记录(虽然小得不太现实),其中显示了与用户访问过的网站相关联的主题,以及每个网站上存在的 API 调用方(在网站上包含的 JavaScript 代码中调用 document.browsingTopics() 的实体)。
| 网站 | 主题 | 网站上的 API 调用方 |
|---|---|---|
| running.example | Running & WalkingAthletic Shoes |
adtech1.example adtech2.example |
| dogs.example | Dogs |
adtech1.example |
| holiday.example | Hotels & Accommodations |
adtech2.example |
| sunglasses.example | Sunglasses |
[无] |
该周期结束时(默认情况下为一周),Topics API 会生成浏览器在这周内的热门主题。
- adtech1.example 现在符合接收
Running & Walking、Athletic Shoes和Dogs主题的条件,因为它在 running.example 和 dogs.example 上观察到这些主题。 - adtech1.example 不符合针对该用户接收
Hotels & Accommodations主题的条件,因为它未出现在用户最近访问的与该主题相关的任何网站上。 - adtech2.example 看到了
Running & Walking、Athletic Shoes和Hotels & Accommodations主题,但没有看到Dogs主题。
该用户访问了 sunglasses.example,其中包含 Sunglasses 主题,但该网站并未调用 Topics API。这意味着,此时该 API 不会针对任何调用方返回 Sunglasses 主题。
在第二周,该用户访问了另一个网站:
| 网站 | 主题 | 网站上的 API 调用方 |
|---|---|---|
| cameras.example | Camera & Photo Equipment |
adtech2.example |
此外,系统会将 adtech2.example 中的代码添加到 sunglasses.example 中:
| 网站 | 主题 | 网站上的 API 调用方 |
|---|---|---|
| sunglasses.example | Sunglasses |
adtech2.example |
这意味着,除了第 1 周的 Running & Walking、Athletic Shoes 和 Hotels & Accommodations 外,adtech2.example 现在还能收到 Camera & Photo Equipment 和 Sunglasses 主题,但直到下一个周期(第 3 周)才能收到。这样可确保第三方能够了解到的用户过往详情(在本例中,是对时尚感兴趣)不会比通过 Cookie 了解到的多。
又过了两周,如果该用户未访问包含 adtech2.example 中的代码且涵盖这些主题的任何网站,那么 Running & Walking、Athletic Shoes 和 Hotels & Accommodations 可能会从 adtech2.example 的符合条件的主题列表中删除。
分类器模型
Topics 使用分类器模型将网站主机名映射到零个或多个主题(分析其他信息,例如完整网址或网页内容,可能有助于投放更具相关性的广告,但也可能会降低隐私保护)。
分类
主题是从分类中选择的。这些主题是由 Chrome 精心挑选出来的,我们的目标是将主题分类变成由可信的生态系统贡献者维护的资源。分类需要足够小,以便许多用户的浏览器都将与每个主题相关联。最终目标是让分类法由外部方提供,并希望其中纳入业界反馈和想法。
为避免敏感类别,主题必须公开、经过人工挑选,并且及时更新。Chrome 使用的分类已经过人工挑选,排除了通常被视为敏感的类别,例如种族或性取向。
主题分类
我们会为 5 万个热门网站手动整理主题,并使用这份整理好的主机名和主题替换列表来训练分类器模型。对于热门网站,主题是从替换列表中访问的,而不是通过使用分类器模型访问的。您可以在本地计算机上查看替换列表。
chrome://topics-internals 页面上的“分类器”面板会列出模型版本、其路径以及与列出的每个主机相关联的主题。Chrome 对 Topics API 的实现会下载一个表示模型的 TensorFlow Lite 文件,以便在用户设备上本地使用。
用户最感兴趣的前五个主题是如何选择的
该 API 会为每个周期返回一个主题,最多返回三个。如果返回了三个,其中会包含当前周期和之前两个周期的主题。
- 在每个周期结束时,浏览器会整理出一个包含满足以下条件的网页的列表:
- 用户在周期内访问了该网页。
- 网页包含调用
document.browsingTopics()的代码。 - 该 API 已启用(例如,未被用户禁止或未被响应标头禁止)。
- 用户设备上的浏览器使用 Topics API 提供的分类器模型将每个网页的主机名映射到主题列表。
然后,document.browsingTopics() 方法从每个周期的前五个热门主题中返回一个随机主题,并且从主题的完整分类中随机选择其中任一个主题的概率为 5%。在 Chrome 中,用户也可以移除各个主题,或清除其浏览记录,以减少该 API 返回的主题数。用户也可以选择停用该 API。
您可以在 chrome://topics-internals 页面中查看当前周期内观测到的主题的相关信息。
后续步骤
另请参阅
请查看我们的资源,以便更好地了解 Web 版 Topics API。
- 观看 Topics 的演示、协作和演示视频。
- 请参阅 Chrome 标志列表,这些标志可让开发者自定义 Topics API 以进行测试。
- 了解用户和开发者如何控制该 API。
- 查看相关资源,获取技术解说和支持。提问、互动和分享反馈。