판매자 가이드: 광고 입찰 실행

Protected Audience API 광고 입찰을 위한 Seller API 가이드 및 참조입니다.

이 도움말에서는 실험용 Protected Audience API의 현재 버전에서 사용되는 광고 입찰에 관한 기술 참조를 확인할 수 있습니다.

Protected Audience API의 전체 수명 주기에 관한 내용은 개발자 가이드를 참고하고 판매자가 기기 내 입찰을 실행하는 방법에 관한 자세한 내용은 Protected Audience API 설명을 참고하세요.

개발자가 아니신가요? Protected Audience API 개요를 참고하세요.

Protected Audience API 광고 입찰이란 무엇인가요?

Protected Audience API 광고 입찰은 브라우저가 사용자 기기에서 실행하여 광고를 선택하는 작은 JavaScript 프로그램 모음입니다. 개인 정보를 보호하기 위해 판매자와 구매자의 모든 광고 입찰 코드는 외부 세계와 통신할 수 없는 격리된 JavaScript 워크렛에서 실행됩니다.

Protected Audience API 광고 입찰의 6단계
이 다이어그램은 Protected Audience API 광고 입찰의 각 단계를 간략히 보여줍니다.
  1. 사용자가 광고를 게재하는 사이트를 방문합니다.
  2. 판매자의 코드가 navigator.runAdAuction()를 실행합니다. 여기에서 판매할 광고 공간과 입찰할 수 있는 사용자를 지정합니다. 판매자는 각 입찰에 점수를 부여하는 스크립트인 scoreAd()도 포함해야 합니다.
  3. 초대된 구매자의 코드가 실행되어 입찰가, 관련 광고 소재의 URL, 기타 데이터를 생성합니다. 입찰 스크립트는 구매자의 키/값 서비스에서 잔여 광고 캠페인 예산과 같은 실시간 데이터를 쿼리할 수 있습니다.
  4. 판매자의 코드는 각 입찰가에 점수를 매기고 낙찰자를 선택합니다. 이 로직은 입찰가 값과 입찰가의 선호도를 반환하는 기타 데이터를 사용합니다. 문맥 낙찰자를 이길 수 없는 광고는 거부됩니다. 판매자는 실시간 데이터에 자체 키/값 서비스를 사용할 수 있습니다.
  5. 낙찰된 광고는 불투명 값으로 반환되며 울타리 프레임에 표시됩니다. 판매자와 게시자 모두 이 값을 볼 수 없습니다.
  6. 입찰 결과가 판매자와 낙찰자에게 보고됩니다.

입찰은 언제 진행되나요?

Protected Audience API는 단독으로 실행하거나 프로그래매틱 입찰과 함께 실행할 수 있습니다. 복수 판매자의 프로그래매틱 입찰에서 다음 사항이 적용됩니다.

  1. 사용자가 참여 사이트를 방문합니다.
  2. 프로그래매틱 입찰은 사용 가능한 광고 슬롯의 문맥 광고를 찾기 위해 다른 판매자가 실행합니다.
  3. Protected Audience API 입찰이 실행됩니다.
  4. scoreAd()는 구매자의 입찰가를 첫 번째 입찰 결과와 비교합니다.

문맥적 낙찰가를 이기지 못하는 입찰가는 거부됩니다.

Protected Audience API 광고 입찰은 누가 실행하나요?

광고 공간을 판매하기 위해 입찰을 실행하는 여러 당사자가 있습니다.

예를 들면 다음과 같습니다.

  • 콘텐츠 게시자: 자체적으로 웹사이트에 광고 콘텐츠를 호스팅합니다.
  • 공급측 플랫폼 (SSP): 게시자와 협력하고 다른 서비스를 제공합니다.
  • 서드 파티 스크립트: 게시자를 대신하여 광고 입찰에 참여하도록 합니다.

Protected Audience API를 사용하는 판매자는 다음 세 가지 작업을 수행해야 합니다.

  • 게시자 규칙 적용: 자격 요건을 충족하는 구매자 및 입찰가
  • 입찰 로직 실행: 워크렛에서 실행되는 JavaScript로 각 입찰의 선호도 점수를 계산합니다.
  • 입찰 결과를 보고합니다.

이러한 작업은 판매자가 JavaScript 함수 navigator.runAdAuction()를 호출하여 광고 입찰을 시작할 때 판매자가 제공한 코드에서 프로그래매틱 방식으로 실행됩니다.

API 함수

runAdAuction()

판매자는 navigator.runAdAuction()를 호출하여 사용자의 브라우저에 광고 입찰을 시작하도록 요청합니다.

예를 들면 다음과 같습니다.

const auctionConfig = {
  seller: 'https://ssp.example',
  decisionLogicUrl: ...,
  trustedScoringSignalsUrl: ...,
  interestGroupBuyers: ['https://dsp.example', 'https://buyer2.example', ...],
  auctionSignals: {...},
  sellerSignals: {...},
  sellerTimeout: 100,
  perBuyerSignals: {
    'https://dsp.example': {...},
    'https://another-buyer.example': {...},
    ...
  },
  perBuyerTimeouts: {
    'https://dsp.example': 50,
    'https://another-buyer.example': 200,
    '*': 150,
    ...
  },
  componentAuctions: [
    {
      'seller': 'https://some-other-ssp.example',
      'decisionLogicUrl': ...,
      ...
    },
    ...
  ]
};

try {
  const auctionResultPromise = navigator.runAdAuction(auctionConfig);
} catch (error) {
  // Handle error.
}

runAdAuction()는 광고 입찰 결과를 나타내는 URN (urn:uuid:<something>)으로 확인되는 프라미스를 반환합니다. 이는 렌더링을 위해 울타리 프레임에 전달될 때만 브라우저에서 디코딩할 수 있습니다. 게시자 페이지에서는 낙찰된 광고를 검사할 수 없습니다.

decisionLogicUrl 스크립트는 각 개별 광고와 연결된 입찰가 및 메타데이터를 한 번에 하나씩 고려한 다음 수치적 선호도 점수를 할당합니다.

숙박 시설 auctionConfig

seller
필수
예: 'https://ssp.example'
역할: 판매자의 출처입니다.
decisionLogicUrl
필수
예: 'https://ssp.example/auction-decision-logic.js'
역할: 입찰 워크렛 JavaScript의 URL입니다.
trustedScoringSignalsUrl
선택사항
예: 'https://ssp.example/scoring-signals'
역할: 판매자의 신뢰할 수 있는 서버의 URL입니다.
interestGroupBuyers
필수
예: ['https://dsp.example', 'https://buyer2.example', ...]
역할: 입찰에 참여하도록 요청된 모든 관심분야 그룹 소유자의 출처입니다.
참고: 판매자는 모든 관심분야 그룹의 입찰을 허용하도록 interestGroupBuyers:를 지정할 수 있습니다. 그런 다음 관심분야 그룹 소유자 포함 여부 이외의 기준에 따라 광고가 승인되거나 거부됩니다. 예를 들어 판매자가 광고 소재를 검토하여 정책 준수 여부를 확인할 수 있습니다.
auctionSignals
선택사항
예: {...}
역할: 페이지 컨텍스트, 입찰 유형 등에 관한 판매자 정보
sellerSignals
선택사항
예: {...}
역할: 게시자 설정, 문맥 광고 요청 등을 기반으로 하는 정보
sellerTimeout
선택사항
예: 100
역할: 판매자의 scoreAd() 스크립트의 최대 런타임 (밀리초)입니다.
perBuyerSignals
선택사항
예:
{'https://dsp.example': {...}, 'https://another-buyer.example': {...}, ... }
역할: 서버에서 각 특정 구매자의 페이지에 관한 문맥 시그널을 제공합니다.
perBuyerTimeouts
선택사항
예: 50
역할: 특정 구매자의 generateBid() 스크립트의 최대 런타임 (밀리초)입니다.
componentAuctions
선택사항
예:
[{'seller': 'https://www.some-other-ssp.com', 'decisionLogicUrl': ..., ...}, ...]
역할: 구성요소 입찰을 위한 추가 구성입니다.

decisionLogicUrl

decisionLogicUrl는 입찰 구성 객체의 속성으로 runAdAuction()에 전달됩니다. 이 URL에는 scoreAd() 함수의 스크립트가 포함되어야 합니다. 이 로직은 광고의 선호도를 확인하기 위해 광고마다 한 번 실행됩니다.

scoreAd(adMetadata, bid, auctionConfig, trustedScoringSignals, browserSignals) {
  ...
  return desirabilityScoreForThisAd;
}

browserSignals

browserSignals는 브라우저가 알고 있고 판매자의 입찰 스크립트에서 확인할 수 있는 정보를 포함하여 브라우저에서 생성하는 객체입니다.

{
  topWindowHostname: 'publisher.example',
  interestGroupOwner: 'https://dsp.example',
  renderUrl: 'https://cdn.example/render',
  adComponents: ['https://cdn.com/ad-component-1', ...],
  biddingDurationMsec: 12,
  dataVersion: 1 /* DValue from the seller's Key/Value service response. */
}

입찰이 시작되기 전에 판매자는 사용 가능한 광고 슬롯에 가장 적합한 문맥 광고를 찾습니다. scoreAd() 로직의 일부는 문맥 낙찰자를 이길 수 없는 광고를 거부합니다.

scoreAd()

scoreAd()는 다음 인수를 사용합니다.

인수 역할
adMetadata 구매자가 제공한 임의의 메타데이터입니다.
auctionConfig navigator.runAdAuction()에 전달된 입찰 구성 객체입니다.
bid 숫자 입찰가입니다.
trustedScoringSignals 판매자의 신뢰할 수 있는 서버에서 입찰 시 가져온 값으로, 판매자의 광고에 대한 의견을 나타냅니다.

자주 묻는 질문(FAQ)

입찰 낙찰자는 어떻게 결정되며 누가 선택하나요?

판매자는 각 광고의 선호도 점수를 결정하는 점수 산정 로직을 제공하고 브라우저는 가장 높은 점수를 낙찰된 광고로 선택합니다.

판매자는 scoreAd() 함수에 로직을 포함하고 브라우저는 외부 코드와의 통신이 제한된 워크렛에서 함수를 실행합니다. 브라우저 자체는 광고에 점수를 매기지 않습니다. 점수 로직을 실행하고 점수가 가장 높은 입찰가를 선택하는 책임은 전적으로 브라우저에 있습니다.

모든 Protected Audience API 참조

API reference guides are available:

The Protected Audience API explainer also provides detail about feature support and constraints.