Web パブリッシャー向け TMP
Web パブリッシャーは通常、ラインアイテム、ターゲティングルール、広告選択を管理するアドサーバー(GAM、Kevel、FreeWheel)を実行します。TMP は Prebid モジュールを通じてこのインフラと統合します — どのディールをアクティベートするかをアドサーバーに伝え、アドサーバーを置き換えません。今日どう機能するか
AdCP ディールで Prebid を実行するパブリッシャーは、create_media_buy を通じて定義されたパッケージを持ちます。それらをアクティベートするため、パブリッシャーはアドサーバーで対応するラインアイテムまたは PMP ディールを手動で作成します。ベンダー固有の RTD モジュールが、完全な OpenRTB BidRequest をベンダーの API に送ることでターゲティングシグナルを注入します。これは機能しますが、ベンダーごとの統合を要求し不要なデータを送ります。
TMP は、ベンダー固有の RTD モジュールを、標準プロトコルを話す単一の Prebid モジュールに置き換えます。バイヤーエージェントはコンテキストとアイデンティティを別々に評価し、パブリッシャーは GAM に指示を渡す前に結果をローカルで結合します。
Context Match
ページがロードされると、TMP Prebid モジュールは Context Match リクエストをルーターに送ります。リクエストはページコンテキストを含みます。パッケージリストは送られません — プロバイダーはこのプレースメントの同期されたパッケージセットを使います。Context Match Request
- リクエストごとにパッケージリストは送られない。プロバイダーはメディアバイセットアップからの同期されたパッケージセットを使って、このプレースメントのすべての適格なパッケージを評価する。同じパッケージがすべてのユーザーについて評価され、アイデンティティのコンテキストパスへの漏洩を防ぎ、レスポンスキャッシュを可能にする。
artifact_refsはコンテンツをタイプと値で参照する。バイヤーエージェントはアーティファクトメタデータをそのキャッシュから解決する — リクエストにインラインシグナルは不要。
Context Match Response
ルーターは各バイヤーエージェントにファンアウトしレスポンスをマージします。各バイヤーは、ターゲティングがコンテンツコンテキストに一致したパッケージのオファーと、キー値として GAM に流れるレスポンスレベルのシグナルを返します。offersはアクティベートされたパッケージごとに 1 エントリを含む。このプレースメントのプロバイダーの同期されたセットは 3 つのパッケージを含んでいた — この 2 つがキッチン/サステナビリティのコンテキストに一致し、3 つ目(pkg-display-0103)は一致せず欠如している。- web/GAM アクティベーションについては、オファーはシンプル —
package_idのみ。よりリッチなフィールド(brand、price、summary、creative_manifest、macros)はそれらを必要とする統合に利用可能だが必須ではない。 signals.targeting_kvsは、Prebid モジュールが GAM 広告リクエストに設定するキー値ペア。GAM ラインアイテムはこれらのキーで一致するよう設定される。
Identity Match
別途、TMP Prebid モジュールはユーザーのアイデンティティトークンとパブリッシャーのseller_agent_url を伴う Identity Match リクエストを送ります。このリクエストはページコンテキストを運びません。バイヤーは seller_agent_url からアクティブなパッケージセットを解決します。モジュールが(下記のように)package_ids を明示的に送るとき、構成は現在のページと独立でなければなりません(MUST) — all-active(この publisher でのそのバイヤーのすべてのアクティブパッケージ)または fuzzed(バイヤーが黙って落とす合成の存在しない ID でパディングされたランダムサンプル)のいずれか。ページ固有のサブセットは禁止されています。
Identity Match Request
request_idは context match のrequest_idと無関係。2 つは互いから導出可能であってはならない。package_idsの例は all-active モードを示す: このプレースメントの context match にあった 3 つだけでなく、サイト全体にわたるバイヤーのすべてのアクティブパッケージ。ページ固有のサブセットは禁止 — それはバイヤーがパッケージセットを比較してアイデンティティをコンテキストと相関させることを許す。fuzzed モード(バイヤーが黙って落とす合成 ID でパディングされたランダムサンプル)も許容される。identitiesはパブリッシャーが利用可能なすべてのトークン(UID2、ID5、LiveRamp、hashed email、publisher first-party)を運ぶ。各トークンは不透明 — バイヤーはそれを PII に逆変換できない。完全なセットを送ることは、異なるバイヤーが異なるグラフで解決するためマッチ率を最大化する。
Identity Match Response
バイヤーはユーザーを要求されたすべてのパッケージに対して評価し、適格なパッケージの ID と、ルーターがこのレスポンスをどのくらいキャッシュできるかを定義する TTL を返します。- 適格なパッケージのみがリストされる。リストに欠如するパッケージ(例:
pkg-display-0043、pkg-display-0103、pkg-video-0201)は不適格。バイヤーはフリークエンシーキャップ、オーディエンスメンバーシップ、購入履歴、その他のアイデンティティベースのシグナルから適格性を計算する。理由はパブリッシャーにとって不透明。 serve_window_secはルーターにこのレスポンスをどのくらいキャッシュするかを伝える。そのウィンドウ中、ルーターはバイヤーに再クエリせずにキャッシュされた適格性を返す。パブリッシャーはキャッシュされた適格性を使ってページ上のすべてのプレースメントに割り当てる。frequency_capped、audience_match、recencyフィールドはない。バイヤーの内部的な理由はバイヤーに留まる。
アクティベーション: コンテキストとアイデンティティの結合
パブリッシャーは context match と identity match をローカルで結合します。ここで 2 つの半分が一緒になります — ルーターは同じインプレッションについて両方を決して見ません。Step 1: 交差
context match からのオファーを取り、identity match の適格性でフィルターします。
2 つのパッケージのみが生き残る:
pkg-display-0041 と pkg-native-0078。
Step 2: GAM ターゲティングを設定
Prebid モジュールは context match のsignals.targeting_kvs を取り、それらをキー値ペアとして GAM 広告リクエストに設定します:
adcp_pkg 値でターゲットするよう事前設定されています。広告リクエストが adcp_pkg=pkg-display-0041 で到着すると、GAM はそれを対応するラインアイテムに一致させクリエイティブを提供します。
Step 3: GAM が選択
GAM は、TMP アクティベートされたディールと他の需要ソースの両方を含む、すべての適格なラインアイテムにわたって、独自の優先度ルール、競合排除、ペーシングロジックを適用します。TMP は GAM の広告選択を上書きしません。入力を提供します。GAM ラインアイテム設定
各アクティブパッケージについて、パブリッシャーはadcp_pkg = <package_id> をターゲットにする GAM ラインアイテムを作成します。これが TMP アクティベーションと GAM 広告選択の間のリンクです。
- ラインアイテムタイプ。
create_media_buyからのディール条件に応じて Sponsorship または Standard。保証ディールは Sponsorship、非保証ディールは Standard を使う。 - 優先度。 ディールタイプに基づいて設定。保証ディールは優先度 4-8、非保証は優先度 12-16。これは TMP 需要が GAM の選択ロジックで他のラインアイテムとどう競うかを決める。
- クリエイティブ割り当て。
sync_creativesからの事前同期されたクリエイティブを参照するか、バイヤーが提供する場合は Context Match レスポンスのクリエイティブマニフェストを使う。 - ライフサイクル。 メディアバイが終了またはキャンセルされると、対応するラインアイテムを非アクティブ化する。ルーターは 1 時間以内にパッケージを Identity Match に含めるのを停止する。
- 自動化。 パブリッシャーは、新しい
create_media_buy完了をリッスンしパッケージ詳細を GAM API 呼び出しにマップすることで、ラインアイテム作成を自動化できる。パッケージ ID、ディールタイプ、優先度、クリエイティブ参照はすべてメディアバイレスポンスから利用可能。
Prebid 統合
TMP Prebid モジュールは、ベンダー固有の RTD モジュールを置き換える Real-Time Data(RTD)モジュールです。それは TMP Prebid 提案 によって定義され、標準の Prebid RTD モジュールインターフェースに従います。完全なフローを扱います:- オークション初期化時: ページ上の各プレースメントについて TMP ルーターに Context Match リクエストを送る。
- context match レスポンス時: オファーとターゲティングシグナルを保存する。
- 時間的相関除去の後: ユーザーのアイデンティティトークンと各バイヤーのすべてのアクティブパッケージ ID を伴う Identity Match リクエストを送る。相関除去は 2 つの部分を持つ — ランダムな 100-2000ms 遅延 かつ ランダム化された順序: 各オークションは Identity Match リクエストが先に送られるか Context Match リクエストが先に送られるかのほぼ等しい確率を持つ。
- identity match レスポンス時: context match 結果と結合する。広告ユニットにターゲティングキー値を設定する。
- 入札リクエスト時: GAM は TMP ターゲティングキーで豊かにされた広告リクエストを受け取り、通常どおりラインアイテムを選択する。
Impression ID の代入
web/Prebid サーフェスでは、Prebid TMP モジュールが決定層 で、3 層の{IMPRESSION_ID} 鋳造階層 — パブリッシャー先、決定層 2 番目、TMPX デコード時のバイヤー最後 — の一部です。モジュールはパブリッシャーが既に impression_id を供給したか(adUnit.tmp.impressionId または同等のファーストパーティフック経由)を確認します。そうなら、その値を通過させます。そうでなければ、モジュールが独自に鋳造します。どちらにせよ、GAM 広告リクエストにターゲティングキー tmp_impression_id として値を公開します。これは、バイヤーのインプレッションピクセルがクロスアイデンティティ重複排除キーとして使う値です — {TMPX} が欠如するコンテキストのみのインプレッションに不可欠で、{TMPX} が存在するときでもバイヤーの重複排除パスが一様に保たれるため有用です。
形式は実装の選択。 Prebid モジュールは ULID、UUID(任意バージョン)、または任意の衝突耐性のある識別子スキームを使ってもよい(MAY) — プロトコルは形式をピン留めしません。
任意の最適化。 Prebid の enableTIDs 設定が true のとき、モジュールは別途鋳造する代わりに adUnit.transactionId を impression_id として再利用してもよい(MAY)。enableTIDs は Prebid.js 8+ でオプトアウト(プライバシー上の理由で)なので、ほとんどのデプロイは独自に鋳造する必要があります。
tmp_impression_id は意図的に hb_* プレフィックス(Prebid 自身の名前空間)を避け、TMP が発するターゲティングにこのページの他の場所で使われる adcp_* 慣例をミラーします。
シーケンス図
OpenRTB との共存
ほとんどのパブリッシャーは、OpenRTB 経由で需要を供給する Prebid ヘッダー入札と並んで TMP を実行します。2 つのシステムは補完的です。- 追加需要としての TMP。 TMP パッケージは GAM でラインアイテムとして現れ、優先度と価格で Prebid ラインアイテムと競う。GAM がイールド決定を扱う — TMP は Prebid を置き換えず、事前交渉された需要を追加する。
- 競合排除。 TMP と Prebid の需要ソースをまたいで衝突するブランドが一緒に現れるのを防ぐため、GAM 競合排除ルールを設定する。
- 収益帰属。 TMP アクティベートされたインプレッションは
get_media_buy_delivery経由で追跡され、Prebid インプレッションは既存の SSP レポートを通じて流れる。パブリッシャーは BI 層で再照合する。 - タイムアウトの独立性。 TMP と Prebid のリクエストは並列で実行される。TMP タイムアウト(50ms)は通常 Prebid タイムアウト(1000-1500ms)より速いので、TMP 結果は GAM が必要とする前に準備できる。
Web のプライバシー制約
これらの制約はすべてのサーフェスに適用されますが、web のケースについて再述する価値があります:- context match はユーザーデータを運ばない。 cookie なし、ユーザートークンなし、IP アドレスなし。プロバイダーはプレースメント上のすべてのユーザーについて同じ同期されたパッケージセットを評価する。
- identity match はページデータを運ばない。 URL なし、コンテンツシグナルなし、プレースメント ID なし。
package_idsリストは、送られるとき、現在のページと独立した構成(all-active または fuzzed)を持つ — 決してページ固有のサブセットではない。 - パブリッシャーがローカルで結合する。 ルーターは同じインプレッションについてコンテキストとアイデンティティの両方を決して見ない。ページコンテキストとユーザーアイデンティティの両方を既に持つパブリッシャーのみが交差を実行する。
- 時間的相関除去。 2 つのリクエスト間のランダムな遅延 かつ ランダム化された順序(Context Match または Identity Match が等しく先に送られる可能性)が、ネットワークレベルでのタイミングと順序ベースの相関を防ぐ。固定順序は順序を通じてペアリングを漏らすため、ランダムな遅延だけでは不十分。