응답 만들기

애플리케이션이 Google로부터의 입찰 요청을 실행한 후에는 반드시 응답이 작성되어 전송되어야 합니다. 아래는 응답 작성을 위한 애플리케이션 코딩 방법에 대한 설명입니다.

  1. BidResponse 메시지 작성
  2. 입찰 응답 예제
  3. 광고 소재 지정
  4. 매크로 지정
  5. 게시자 제한

BidResponse 메시지 작성

Ad Exchange는 BidRequest를 HTTP POST의 메시지 본문으로 전송합니다. 애플리케이션이 전송하는 응답에서는 Content-Type 헤더가 application/octet-stream으로 설정되고 메시지 본문이 직렬화된 프로토콜 버퍼로 구성되어야 합니다. 프로토콜 버퍼는 BidResponse 메시지이며 realtime-bidding.proto에서 정의됩니다. 애플리케이션은 파싱이 가능한 BidResponse을 반환해야 하는데, 모든 BidRequest에 대한 응답으로 이렇게 반환해야 합니다. 파싱이 불가능한 시간 제한과 응답은 오류로 간주되고, Google은 오류율이 높은 입찰자를 차단합니다.

realtime-bidding.proto다운로드 페이지에서 얻을 수 있습니다.

노출에 대해 입찰할 때마다 buyer_creative_id 필드( BidResponse)에서 광고 소재에 대한 고유 식별자를 지정합니다. 애플리케이션을 만들 때 제출하려는 광고 소재의 유형에 맞는 식별자를 체계적으로 생성하는 방법을 정해야 합니다.

유사한 광고 소재도 크기, 명시된 URL, 광고 소재 속성 또는 제휴업체 유형 중 하나 이상이 다르면 buyer_creative_id에 대해 고유한 값을 가져야 합니다. 다시 말해서 아래에 해당하는 2개의 광고에는 서로 다른 광고 소재 ID를 부여해야 합니다.

  • 외견상 또는 동작의 차이가 있는 경우
  • 다른 이미지를 표시하는 경우
  • 다른 방식으로 표시하는 경우(예: 이미지로 구성된 광고와 플래시로 표현되는 광고)

노출에 대해 입찰을 하지 않으려면 processing_time_ms 필드만 설정하고 다른 모든 필드는 빈 칸으로 두세요.

귀하가 선택한 고유 식별자는 buyer_creative_id 필드( BidResponse)를 거칩니다. 귀하가 반환하는 모든 buyer_creative_id는 항상 동일한 광고 소재와 연결되어야 합니다. 귀하가 생성하는 식별자 문자열은 64바이트로 제한됩니다.

권장사항

  • 서버에서 지속적인 HTTP 연결(일명 'HTTP 킵얼라이브' 또는 'HTTP 연결 재사용')을 사용. 시간 제한을 최소 10초로 설정합니다. 대부분의 경우 높은 값으로 설정할수록 좋습니다. Google은 애플리케이션의 초기 지연 시간 테스트에서 이를 인증합니다. 왜냐하면 Ad Exchange가 빠른 속도로 요청을 전송하고 요청별로 별도의 TCP 연결을 구축하는 지연 비용을 피해야 하기 때문입니다.
  • 입찰자 코드가 지원이 중단된 필드를 의존하지 않도록 설정. 이렇게 하면 오류가 발생하여 입찰에 실패할 수 있습니다.

맨 위로

입찰 응답 예제

아래 예에는 BidResponse 프로토콜 버퍼가 TextFormat::SerializeToString()와 함께 생성된 텍스트 형식으로 나와 있습니다.

protocol_version: 1
ad <
  html_snippet: "<img src='my-image-adserver.com/1234567'/>"
  click_through_url: "my.click-through.com"
  buyer_creative_id: "my-creative-1234ABCD"
  vendor_type: 113
  category: 3
  adslot <
    id: 1
    max_cpm_micros: 1500000
  >
>
processing_time_ms: 3
중요: 텍스트 형식을 실제 응답에서 반환해서는 안 됩니다. 항상 Bid Response 객체를 직렬화하세요.

아래의 C++ 코드를 이용해 BidResponse 메시지를 만들고 직렬화하세요.

BidResponse bid_response;
// 입찰 응답에 입찰 정보를 입력
string post_response;
if (bid_response.SerializeToString(&post_response)) {
  // post_response를 콘텐츠로 POST에 응답
} else {
  // POST에 오류 반환
}

광고 소재 지정

입찰에서 낙찰이 이루어지면 입찰 응답에서 html_snippet 필드를 이용해 게재할 광고 소재를 지정합니다.

귀하의 서버에서 호스팅되는 광고를 지정하세요. 이때 BidResponsehtml_snippet 필드에서 HTML 스니펫을 이용하면 됩니다. 이 경우 스니펫은 웹페이지에 삽입된 iframe에 들어가고, 그 결과로 페이지가 로드될 때 광고를 가져와서 렌더링합니다. iframe에서 광고가 올바르게 렌더링되도록 스니펫을 만들어야 합니다. 이때 크기는 입찰하는 광고 슬롯에 맞는 크기여야 합니다.

올바르게 게재되는 유효한 HTML 범위 안에서 HTML 스니펫에 임의의 값을 입력할 수 있습니다. 한 가지 방법은 광고 렌더링의 일환으로 서버에서 가져오는 URL의 인수에 추가 정보를 입력하는 것입니다. 이렇게 하면 노출에 대한 임의 데이터를 귀하의 서버로 전달할 수 있습니다.

입찰 응답에서 반환되는 HTML 스니펫에 대한 대부분의 정책은 외부 애드서버를 이용한 광고에 대한 정책과 동일합니다. 자세한 내용은 Ad Exchange 구매자 프로그램 가이드라인, 외부 애드서버를 이용한 광고 게재 요건Ad Exchange 광고에서 클릭 후 연결 URL 명시하기를 참조하시기 바랍니다.

맨 위로

매크로 지정

광고 소재를 지정하는 HTML 스니펫은 매크로라고 하는 특수한 구조를 1개 이상 포함할 수 있습니다. 광고 게재 시 값이 매크로를 대체합니다. 낙찰에 성공할 경우 광고에 대해 지불할 비용을 정하는 용도로 클라이언트 애플리케이션에서 WINNING_PRICE 매크로를 사용할 수 있습니다. 이 매크로를 파싱하려면 가격 확인에 대한 암호를 해독하는 애플리케이션을 구현해야 합니다. 변경사항에 대한 자세한 내용은 가격 확인 암호 해독하기 페이지를 참조하세요.

HTML 스니펫의 일부로 매크로를 %%MACRO%% 형식으로 지정하세요. 여기서 MACRO는 아래 표에 나온 지원되는 매크로 중 하나입니다.

Google은 외부 애드서버를 통해 게재되는 광고의 문안에서 CLICK_URL_UNESC 또는 CLICK_URL_ESC 매크로를 사용할 것을 요구합니다. Google은 클릭 추적을 위해 CLICK_URL 매크로를 사용합니다.

누군가 클릭했을 때 URL을 불러올 수 있도록 매크로를 광고 안에 포함시켜서 활용하세요. 이 가져오기의 반환 값은 귀하가 CLICK_URL에 추가하는 다른 URL로 리디렉션됩니다.

지원되는 매크로는 아래와 같습니다.

매크로 설명
CACHEBUSTER 할당되지 않은 임의의 4-바이트 정수에 대한 문자열 표시
CLICK_URL_UNESC 광고에 대한 언이스케이프 클릭 URL. 스니펫에서, 제3자 클릭 URL의 이스케이프 버전은 정확히 다음 매크로를 따라야 합니다.
 
예를 들어 제3자 클릭 URL은 다음과 같습니다. http://my.adserver.com/some/path/handleclick?click=clk
매크로 시동에 따라오는 제3자 클릭 URL의 단일 이스케이프 버전으로 다음의 코드를 사용할 수 있습니다.
 
<a href="%%CLICK_URL_UNESC%%http%3A%2F%2Fmy.adserver.com%2Fsome%2Fpath%2Fhandleclick%3Fclick%3Dclk"></a>
 
광고 게재 시 이는 다음으로 확장됩니다.
 
<a href="http://google-click-url?...&ad_url=http%3A%2F%2Fmy.adserver.com%2Fsome%2Fpath%2Fhandleclick%3Fclick%3Dclk"></a>
 
URL은 우선 Google에 클릭 등록을 하고, 제3자 클릭 URL에 리디렉션 됩니다.
CLICK_URL_ESC

광고에 대한 이스케이프 클릭 URL. 다른 서버를 통해 값을 전달한 이후 리디렉션 될 경우 CLICK_URL_UNESC 대신 이를 사용하세요.

예를 들어, 다음의 코드를 HTML 스니펫에 이용할 수 있습니다.

<a href="http://my.adserver.com/click?google_click_url=%%CLICK_URL_ESC%%"></a>

광고 게재 시 이는 다음으로 확장됩니다.

<a href="http://my.adserver.com/click?google_click_url=http://google-click- url%3F...%26ad_url%3D"></a>

이는 my.adserver.com에 클릭을 등록하며, google_click_url 로그인 매개변수로 전달된 URL로의 리디렉션이 여기서 이루어지게 됩니다. 이때 my.adserver.comgoogle_click_url 매개변수를 언이스케이프 한다고 가정합니다.

더블 이스케이프 URL을 %%CLICK_URL_ESC_ESC%% 뒤에 추가할 수 있습니다. my.adserver.com에 의해 언이스케이프 된 이후 google_click_url에 추가된 URL의 단일 이스케이프 버전이 남게 됩니다. google_click_url이 패치될 때 한 번 더 언이스케이프 되며 이후 리디렉션 됩니다.

CLICK_URL_ESC_ESC

광고에 대한 이스케이프 URL. 다른 서버를 통해 값을 전달한 이후 리디렉션 될 경우 CLICK_URL_UNESC 대신 이를 사용하세요.

예를 들어, 다음의 코드를 HTML 스니펫에 이용할 수 있습니다.

<a href="http://my.adserver.com/click?google_click_url=%%CLICK_URL_ESC_ESC%%"></a>

광고 게재 시 이는 다음으로 확장됩니다.

<a href="http://my.otheradserver.com/click?google_click_url=http%3A%2F%2Fmy.adserver.com%2Fclick%3Fgoogle_click_url%3Dhttp%3A%2F%2Fgoogle-click-%20url%253F...%2526ad_url%253D"></a></code>

SITE 콘텐츠 UR에서 URL을 이스케이프한 도메인 또는 익명 인벤토리의 익명 ID
SITE_URL 사용 정지. 인식기능을 제공하는 SITE 매크로에 의해 대체됨.
TZ_OFFSET 시간대 오프셋.
WINNING_PRICE

계정 통화의 마이크로(micros)로 인코딩된 노출 비용(CPM 보다는 CPI 우선). 예를 들어 낙찰 CPM인 미화 5달러는 CPM 5,000,000마이크로 또는 CPI 5,000마이크로에 해당합니다. 이 경우 WINNING_PRICE의 디코딩된 값은 5,000입니다.

광고 게재 시 노출 비용이 제시되지 않으면, 매크로는 문자열 UNKNOWN으로 대체됩니다.

WINNING_PRICE_ESC URL 이스케이프된 WINNING_PRICE

매크로에서 이스케이프 하는 URL은 다음의 규칙을 사용합니다.

  • 빈 칸은 더하기 기호(+)로 대체됩니다.
  • 영문 및 숫자(0~9, a~z, A~Z)와 !*,-./:_~와 같은 문자는 변경되지 않습니다.
  • 그 외의 모든 문자는 %XX로 대체되는데, 여기서 XX는 해당 문자를 나타내는 16진수입니다.

맨 위로

게시자 제한

게시자는 자신이 허용하는 광고에 대한 제한사항을 전달하기 위해 BidRequest를 이용합니다. 이때 다음 두 개의 필드에서 제한사항을 강화해야 합니다.

  • allowed_vendor_type
  • excluded_sensitive_category

위 필드 중 하나는 광고의 허용된 기능을 지정하고, 다른 필드는 허용되지 않은 기능을 지정합니다. 중단된 기능을 지닌 광고는 반환하지 마세요. 제휴업체 유형과 같이 허용된 기능에 대해서는 제휴업체 유형이 BidRequestallowed_vendor_type 목록에 있는 경우에만 광고를 반환하세요. 자세한 내용은 BidRequest 프로토콜 버퍼에 대한 정의에서 이 필드에 대한 의견을 참조하세요.

게시자는 BidRequest와는 별도로 게시자는 특정 페이지가 방문 페이지인 광고를 웹 속성 또는 채널에서 차단할지를 지정할 수 있습니다. 이렇게 하려면 publisher-settings.proto 파일에 있는 excluded_url 필드를 이용하세요. 자세한 내용은 타겟팅 가이드의 RTB 게시자 설정 섹션을 참조하세요.

BidResponse에서 HTML 스니펫이 반환되면 BidResponse에서 vendor_type, attribute, categoryclick_through_url 필드를 정확하게 설정해야 합니다. 광고가 이러한 필드에 대한 여러 개의 관련 값을 지닐 경우, 모든 값에 적용되어야 합니다. 더 자세한 사항은 BidResponse 프로토콜 버퍼 정의에 있는 이러한 필드에 대한 내용을 참고하세요. 필드의 설정에 맞지 않는 응답은 누락됩니다.

예를 들어 BidRequest에서 excluded_attribute 필드는 다운로드 페이지에서 제공되는 creative-attributes.txt 파일의 코드를 사용합니다. 이들 코드 중 불명확한 3개는 아래와 같습니다.

  • 7 Tagging: IsTagged
    차후 리마케팅을 위해 쿠키 ID 목록을 생성할 목적으로 픽셀 또는 웹 표지를 포함하는 광고.

  • 8 CookieTargeting: IsCookieTargeted
    쿠키 ID를 기반으로 소비자를 타겟팅하는 광고. 여기서 쿠키 ID 목록은 구매자가 소유하거나 대표하는 사이트와 상호작용했던 고객 집단을 나타냅니다.

  • 9 UserInterestTargeting: IsUserInterestTargeted
    쿠키 ID를 기반으로 소비자를 타겟팅하는 광고를 차단합니다. 여기서 쿠키 ID는 구매자가 동일한 관심집단으로 정의한 소비자를 가리킵니다.

따라서 excluded_attribute 필드가 값 7을 포함하면, 목록 생성을 위한 픽셀 또는 웹 표지를 사용하는 광고를 반환하지 말아야 합니다. 또한 이러한 광고가 반환된다면 BidResponse의 속성 필드에 값 7이 설정되어야 합니다.

또한, BidRequestexcluded_sensitive_category 필드는 다운로드 페이지에서 내려받을 수 있는 ad-sensitive-categories.txt에 열거된 코드를 사용합니다. 다음은 이러한 코드에 대한 설명입니다.

  • 3 Politics
    정치 문제 또는 논란이 되고 있는 사회 문제는 포함됩니다. 특정 정당의 의견을 대변하지 않는 언론사에 대한 광고는 포함되지 않습니다.
  • 4 Dating
    만남 주선 서비스 및 온라인 데이트 커뮤니티를 포함합니다.
  • 5 Religion
    종교와 관련한 광고와 특정 종교의 교리에 찬성하거나 반대하는 광고는 포함됩니다. 점성술 또는 교파가 없는 종교는 포함되지 않습니다.
  • 7 Video Games (Casual & Online)
    비디오 게임, 온라인 게임 및 다운로드 게임은 포함됩니다. 비디오 게임 콘솔은 포함되지 않습니다.
  • 8 Ringtones & Downloadables
    벨소리와 같은 모바일 부가 기능과 데스크톱 컴퓨터용 스크린세이버, 바탕화면과 소셜 네트워크용 프로필 레이아웃 및 그래픽과 같은 다운로드 가능한 기능
  • 10 Get Rich Quick
    신속한 수익 창출을 보장하는 계획.
  • 18 Weight Loss
    체중 감량, 다이어트 및 관련 제품과 프로그램은 포함됩니다. 건강식 또는 일반 피트니스 광고는 포함되지 않습니다.
  • 19 Cosmetic Procedures & Body Modification
    주름 제거, 지방 흡입, 레이저, 제모 및 모발 이식, 문신 및 체형 교정은 포함됩니다.
  • 23 Drugs & Supplements:
    의약품, 비타민, 보조제 및 관련 유통업체를 포함합니다. 약품 관련 정보를 제공하는 자료는 포함되지 않습니다.
  • 24 Sexual & Reproductive Health
    성기능 관련 및 불임 치료 광고는 포함됩니다. 일반 임신 자료는 포함되지 않습니다.

맨 위로

 

다음에 대한 의견 보내기...

DoubleClick Ad Exchange Real-Time Bidding Protocol