オークションで入札して広告スロットを購入する

広告購入者(DSP や広告主)は、パブリッシャー サイトで Protected Audience 広告オークションに参加し、広告主サイトで定義したインタレスト グループをターゲットに広告を表示することに関心があるかもしれません。Protected Audience オークションに参加することで、プライバシーに配慮した方法で、特定した顧客に他のサイトでリーチできます。

Protected Audience オークションでは、入札額を生成するロジックを指定すると、ブラウザがそのロジックを使用して入札額を計算します。これは、ロジックを提供するのではなく、入札単価を直接送信する他のオークション アーキテクチャとは対照的です。

入札生成ロジックは generateBid() JavaScript 関数で指定し、ファイルはサーバーでホストされます。ユーザーをインタレスト グループに追加すると、このファイルの場所が biddingLogicUrl としてインタレスト グループの構成に渡されます。

オークション中、ブラウザは biddingLogicUrl フィールドで指定された入札ロジックを取得し、外部コンテキストとの通信が制限された安全な分離環境で、各インタレスト グループに対して generateBid() 関数を実行します。generateBid() が実行されると、ブラウザはシグナルを引数として関数に渡します。これらのシグナルには、パブリッシャーのファーストパーティ データ、販売者のデータ、リアルタイム データなど、さまざまなソースからのさまざまな情報が含まれています。これらのシグナルを使用して入札単価を計算できます。値は generateBid() 呼び出しから返されます。入札が送信されると、ブラウザは各入札に対して販売者のスコアリング ロジックを実行し、販売者の望ましさスコアを計算します。

generateBid()

以下に、generateBid() 関数の引数と、関数から返される入札額の構造について説明します。


generateBid(interestGroup, auctionSignals, perBuyerSignals,
    trustedBiddingSignals, browserSignals, directFromSellerSignals) {
  return {
    ad: adObject,
    adCost: optionalAdCost,
    bid: bidValue,
    bidCurrency: 'USD',
    render: {
      url: renderURL,
      width: renderWidth,
      height: renderHeight
    },
    adComponents: [
      {url: adComponent1, width: componentWidth1, height: componentHeight1},
      {url: adComponent2, width: componentWidth2, height: componentHeight2},
      // ...
    ],
    allowComponentAuction: false,
    modelingSignals: 123 // 0-4095 integer (12-bits)
  };
}

引数

generateBid() は次の引数を取ります。

引数 ロール

interestGroup

広告購入者が渡すオブジェクト。インタレスト グループは dailyUpdateUrl で更新できます。

auctionSignals

販売者が navigator.runAdAuction() に渡す オークション構成引数のプロパティ。これにより、ページのコンテキスト(広告サイズやパブリッシャー ID など)、オークションのタイプ(ファーストプライスまたはセカンドプライス)、その他のメタデータに関する情報が提供されます。

perBuyerSignals

販売者が渡す オークション構成引数のプロパティ。販売者がバイヤーのサーバーにリアルタイム ビッダー呼び出しを行い、レスポンスをパイプバックする SSP である場合、またはパブリッシャー ページがバイヤーのサーバーに直接接続する場合、バイヤーのサーバーからページに関するコンテキスト シグナルを提供できます。その場合、購入者は改ざんを防ぐために、generateBid() 内のシグナルの暗号署名を確認することが望ましいでしょう。

trustedBiddingSignals

キーがインタレスト グループの trustedBiddingSignalsKeys で、値が trustedBiddingSignals リクエストで返されるオブジェクト。

browserSignals

ブラウザによって作成されたオブジェクト。ページ コンテキスト(現在のページの hostname など。販売者はこれを偽装する可能性があります)とインタレスト グループ自体のデータ(グループが以前にオークションで落札した日時を記録して、デバイス上のフリークエンシー キャップを可能にするなど)に関する情報が含まれている場合があります。

directFromSellerSignals

runAdAuction が実行されるコンテキストに存在する任意の参加者から取得できる auctionSignalssellerSignals とは異なり、特定の販売者から取得されるシグナル。

ブラウザ シグナル

browserSignals オブジェクトには次のプロパティがあります。

{
  topWindowHostname: 'publisher.example',
  seller: 'https://ssp.example',
  topLevelSeller: 'https://www.top-level-ssp.com',
  requestedSize: {width: 100, height: 200},  /* if specified in auction config */
  joinCount: 3,
  recency: 3600000,
  bidCount: 17,
  prevWinsMs: [[timeDeltaMs1,ad1],[timeDeltaMs2,ad2],...],
  wasmHelper: ...
  dataVersion: 1,
  adComponentsLimit: 40
}
プロパティ 説明

topWindowHostname

runAdAuction() 呼び出しが行われたホスト名。

seller

入札が送信される販売者。コンポーネント オークションでは、この値はコンポーネント販売者です。

topLevelSeller

コンポーネント オークションの最上位の販売者。コンポーネント オークションにのみ存在します。

requestedSize

requestedSize プロパティは、オークションのフレームサイズを推奨します。販売者はオークション構成でリクエストされたサイズを設定します。この値は generateBid() で入札者が利用できるようになります。オークション内の入札者は、広告のコンテンツ サイズを別に選択することがあります。その結果のサイズは、要素のコンテナ サイズに合わせて視覚的にスケーリングされます。

joinCount

joinCount フィールドは、このデバイスが過去 30 日間にこのインタレスト グループに参加した回数です。この間、インタレスト グループは継続的に保存されています(つまり、デバイス上のインタレスト グループの保存に、離脱やメンバーシップの有効期限切れによるギャップはありません)。

recency

recency フィールドは、このデバイスがこのインタレスト グループに参加してから現在までの期間(分単位)です。

bidCount

インタレスト グループが入札を送信した回数。

prevWinsMs

prevWinMs フィールドには、インタレスト グループの落札広告と、前回の落札からの経過時間(ミリ秒単位)が含まれます。この広告オブジェクトには renderURL フィールドとメタデータ フィールドのみが含まれています。

wasmHelper

インタレスト グループの biddingWasmHelperURL に基づく WebAssembly.Module オブジェクト。

dataVersion

購入者の Key/Value サービス レスポンスの Data-Version 値。

adComponentsLimit

広告コンポーネント generateBid() が返す最大数

入札単価を計算する

入札額を計算するために、generateBid() のコードでは関数のパラメータのプロパティを使用できます。

次に例を示します。

function generateBid(interestGroup, auctionSignals, perBuyerSignals,
    trustedBiddingSignals, browserSignals) {
  return {
   //  ...
    bid: auctionSignals.is_above_the_fold ? perBuyerSignals.atf_value : perBuyerSignals.btf_value,
    // ...
  }
}

入札単価を返す

generateBid() は、次のプロパティを持つオブジェクトを返します。

プロパティ ロール
ad 広告に関する任意のメタデータ。たとえば、販売者がこの入札または広告クリエイティブについて知りたい情報など。販売者はこの情報をオークションと判断ロジックで使用します。
adCost レポートの広告主様のクリック費用またはコンバージョン費用を generateBid から reportWin に渡すために使用される数値。この数値の精度は、8 ビットの仮数部と 8 ビットの指数部に制限され、丸めは確率的に行われます。
adComponents navigator.joinAdInterestGroup() に渡されるインタレスト グループ引数の adComponents プロパティから取得される、複数の要素で構成される広告のコンポーネントのオプションのリスト(最大 20 個)。
allowComponentAuction この入札をコンポーネント オークションで使用できるかどうかを示すブール値。指定しない場合のデフォルトは「false」です。
bid オークションにかけられる数値の入札単価。販売者はさまざまな購入者の入札額を比較できる必要があります。そのため、入札額は販売者が選択した単位(「1, 000 回あたりの米ドル」など)で指定する必要があります。入札額がゼロまたは負の値の場合、このインタレスト グループは販売者のオークションにまったく参加しません。この仕組みにより、購入者は広告の掲載場所に関する広告主のルールを実装できます。
bidCurrency 入札の通貨。通貨の確認に使用されます。
render この入札がオークションで落札された場合にレンダリングされるクリエイティブを説明するディクショナリ。これには以下が含まれます。
  • url: クリエイティブの URL。
  • width: クリエイティブの幅。このサイズはインタレスト グループの宣言と照合され、広告クリエイティブの URL にある広告サイズのマクロに代入されます。広告がフェンス付きフレームに読み込まれると、フェンス付きフレームのインナーフレーム(広告クリエイティブに表示されるサイズ)はこのサイズに固定され、埋め込み側が行ったフレームサイズの変更を確認できなくなります。
  • height: クリエイティブの高さ。詳しくは、width をご覧ください。

modelingSignals

ノイズとバケット化のスキームで説明されているように、ノイズが追加された reportWin() に渡される 0 ~ 4,095 の整数(12 ビット)。無効な値(負の値、無限大の値、NaN 値など)は無視され、渡されません。下位 12 ビットのみが渡されます。


バイヤーは、generateBid() 関数内で利用可能なシグナル(userBiddingSignals でインタレスト グループの作成時にキャプチャされたファーストパーティ バイヤーのデータを含む)を使用して、バイヤーの落札レポート関数に渡される値を導き出し、ML モデルのトレーニングを有効にできます。