Licytowanie w aukcji w celu zakupu boksu reklamowego

Nabywca reklam (DSP i reklamodawcy) może być zainteresowany uczestnictwem w aukcji reklam w ramach Protected Audience API w witrynie wydawcy, aby kierować reklamę na grupę zainteresowań zdefiniowaną przez Ciebie w witrynie reklamodawcy. Uczestnicząc w aukcji Protected Audience, możesz docierać do zidentyfikowanych klientów w innych witrynach przy jednoczesnym zapewnieniu ochrony prywatności.

W aukcji w ramach Protected Audience API określasz zasady tak, aby wygenerować stawkę, a przeglądarka oblicza stawkę na podstawie tej logiki. W przeciwieństwie do innych architektur aukcji, w których składa się stawkę bezpośrednio, a nie w sposób logiczny.

Logikę generowania stawek podajesz w funkcji JavaScriptu w generateBid(), a plik jest przechowywany na Twoim serwerze. Gdy dodasz użytkownika do grupy zainteresowań, lokalizacja tego pliku jest przekazywana do konfiguracji grupy zainteresowań jako biddingLogicUrl.

Podczas aukcji przeglądarka pobiera logikę określania stawek podaną w polu biddingLogicUrl i uruchamia funkcję generateBid() w przypadku każdej grupy zainteresowań w bezpiecznym, wyodrębnionym środowisku, które ma ograniczoną komunikację z kontekstem zewnętrznym. Podczas wykonywania generateBid() przeglądarka przekazuje do funkcji sygnały jako argumenty. Sygnały te zawierają różne informacje z różnych źródeł, m.in. dane własne wydawcy, dane sprzedawcy czy dane w czasie rzeczywistym. Możesz użyć tych sygnałów do obliczenia stawki, a wartość jest zwracana z wywołania funkcji generateBid(). Po przesłaniu stawek przeglądarka wykona mechanizmy oceny sprzedawcy w każdej z nich, aby obliczyć wynik trafności sprzedawcy.

generateBid()

Poniżej znajdziesz opis argumentów funkcji generateBid() oraz struktury stawki zwracanej przez funkcję:


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)
  };
}

Argumenty

Funkcja generateBid() przyjmuje te argumenty:

Argument Rola

interestGroup

Obiekt przekazany przez kupującego reklamy. Grupę zainteresowań można zaktualizować za pomocą dailyUpdateUrl.

auctionSignals

Właściwość argumentu konfiguracji aukcji przekazana do navigator.runAdAuction() przez sprzedawcę. Zapewnia to informacje o kontekście strony (np. o rozmiarze reklamy i identyfikatorze wydawcy), typie aukcji (pierwsza lub druga cena) i innych metadanych.

perBuyerSignals

Właściwość argumentu konfiguracji aukcji, która jest przekazywana przez sprzedawcę. Dzięki temu możesz dostarczać sygnały kontekstowe dotyczące strony z serwera kupującego, jeśli sprzedawca jest platformą SSP, która wysyła do serwerów kupujących wywołanie określania stawek w czasie rzeczywistym i zwraca odpowiedź, lub jeśli strona wydawcy kontaktuje się bezpośrednio z serwerem kupującego. Jeśli tak, kupujący może zechcieć sprawdzić podpis kryptograficzny tych sygnałów w usłudze generateBid(), aby zabezpieczyć się przed manipulacją.

trustedBiddingSignals

Obiekt, którego klucze to trustedBiddingSignalsKeys grupy zainteresowań, a jego wartości są zwracane w żądaniu trustedBiddingSignals.

browserSignals

Obiekt utworzony przez przeglądarkę, który może zawierać informacje o kontekście strony (np. hostname bieżącej strony, które sprzedawca mógłby sfałszować) oraz dane dotyczące samej grupy zainteresowań (np. rejestr tego, kiedy grupa wcześniej wygrała aukcję, aby umożliwić ograniczenie liczby wyświetleń na urządzeniu).

directFromSellerSignals

Sygnały, które na pewno będą pochodzić od określonego sprzedawcy (w przeciwieństwie do auctionSignals i sellerSignals), które mogą pochodzić od dowolnego uczestnika obecnego w kontekście miejsca wykonywania runAdAuction.

Sygnały dotyczące przeglądarki

Obiekt browserSignals ma te właściwości:

{
  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
}
Właściwość Opis

topWindowHostname

Nazwa hosta, z którego zostało wykonane wywołanie runAdAuction().

seller

Sprzedawca, do którego składana jest oferta. W aukcji komponentu ta wartość jest sprzedawcą komponentu.

topLevelSeller

Sprzedawca najwyższego poziomu w aukcji komponentu, który bierze udział tylko w aukcji komponentu.

requestedSize

Właściwość requestedSize zaleca rozmiar ramki na potrzeby aukcji. Sprzedawca ustawia żądany rozmiar w konfiguracji aukcji, a wartość staje się dostępna dla licytujących w polu generateBid(). Licytujący, którzy biorą udział w aukcji, mogą wybrać inny rozmiar treści reklamy, a następny rozmiar zostanie odpowiednio przeskalowany, aby zmieścić się w kontenerze elementu.

joinCount

Pole joinCount podaje, ile razy to urządzenie dołączyło do tej grupy zainteresowań w ciągu ostatnich 30 dni, gdy grupa zainteresowań była stale przechowywana (czyli nie ma przerw w pamięci grupy zainteresowań na urządzeniu z powodu rezygnacji z subskrypcji lub wygaśnięcia członkostwa).

recency

W polu recency podany jest czas (w minutach) od momentu dołączenia tego urządzenia do grupy zainteresowań do chwili obecnej

bidCount

Liczba przypadków, w których dana grupa zainteresowań przesłała stawkę.

prevWinsMs

Pole prevWinMs zawiera najskuteczniejsze reklamy w danej grupie zainteresowań oraz czas od ich poprzednich wygranych (w milisekundach). Obiekt reklamy zawiera tylko pola renderURL i metadane.

wasmHelper

obiekt WebAssembly.Module na podstawie biddingWasmHelperURL grupy zainteresowań.

dataVersion

Wartość wersji danych z odpowiedzi kupującego w usłudze klucza/wartości.

adComponentsLimit

Maksymalna liczba komponentów reklamy, które może zwrócić generateBid()

Obliczanie stawki

Aby obliczyć wartość stawki, kod w funkcji generateBid() może korzystać z właściwości parametrów funkcji.

Na przykład:

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

Zwracanie stawki

generateBid() zwraca obiekt z następującymi właściwościami:

Właściwość Rola
ad Dowolne metadane reklamy, np. informacje, które sprzedawca chce uzyskać o określonej stawce lub reklamie. Sprzedawca wykorzystuje te informacje podczas aukcji i decyzji.
adCost Wartość liczbowa służąca do przekazywania kosztu kliknięcia lub konwersji reklamodawcy raportującego z metody generatebid do wartości reportWin. Dokładność tej liczby jest ograniczona do 8-bitowej mantysy i 8-bitowego wykładnika. Każde zaokrąglanie jest wykonywane stochastycznie.
adComponents Opcjonalna lista maksymalnie 20 komponentów reklam składających się z kilku elementów, pobrana z właściwości adComponents argumentu grupy zainteresowań przekazanego do navigator.joinAdInterestGroup().
allowComponentAuction Wartość logiczna wskazująca, czy tej stawki można użyć w aukcji składowej. Jeśli nie zostanie określony, domyślna wartość to „false”.
bid Stawka numeryczna, która weźmie udział w aukcji. Sprzedawca musi mieć możliwość porównywania stawek różnych kupujących, dlatego stawki muszą być określone w jakiejś jednostce wybranej przez sprzedawcę (np. „USD za tysiąc”). Jeśli stawka wynosi zero lub jest ujemna, dana grupa zainteresowań w ogóle nie weźmie udziału w aukcji sprzedawcy. Dzięki temu mechanizmowi kupujący może wdrażać dowolne reguły reklamodawcy dotyczące możliwych miejsc, w których mogą się pojawiać jego reklamy.
bidCurrency Waluta stawki, używana do sprawdzania waluty.
render Słownik opisujący kreację, która powinna zostać wyrenderowana, jeśli ta stawka wygra aukcję. Obejmuje to m.in.:
  • url: adres URL kreacji.
  • width: szerokość kreacji. Ten rozmiar będzie dopasowywany do deklaracji w grupie zainteresowań i zastąpiony makrami rozmiaru reklamy występującymi w adresie URL kreacji. Gdy reklama jest wczytywana w obramowanej ramce, wewnętrzna ramka ramki (tj. rozmiar widoczny dla kreacji) zostanie zablokowana w tym rozmiarze i nie będzie można zobaczyć zmian rozmiaru ramki wprowadzonych przez mechanizm umieszczania.
  • height: wysokość kreacji. Więcej szczegółów: width.

modelingSignals

Liczba całkowita od 0 do 4095 (12-bitowa) przekazana do reportWin() z szumem zgodnie z opisem w schemacie szumu i grupowania. Nieprawidłowe wartości, takie jak wartości ujemne, nieskończone i NaN, będą ignorowane i nie będą przekazywane. Przekazanych jest tylko 12 najniższych bitów.


Kupujący może wykorzystać sygnały dostępne w funkcji generateBid(), w tym dane z własnych danych o kupujących uzyskanych w momencie tworzenia grupy zainteresowań (userBiddingSignals), aby uzyskać wartość przekazywaną do funkcji raportowania wygranej kupującego, co umożliwi trenowanie modelu ML.