네이티브 광고

네이티브 광고는 주변 콘텐츠와 시각적 디자인에 맞게 형식이 지정된 광고로, 사용자가 보고 클릭할 가능성이 더 높습니다. 네이티브 광고 인벤토리는 데스크톱, 모바일 웹사이트뿐만 아니라 모바일 앱에서도 사용할 수 있습니다. 네이티브 광고에 대한 자세한 내용은 네이티브 광고 개요를 참고하세요.

네이티브 광고는 Authorized Buyers와 공개 입찰 모두에서 지원됩니다.

네이티브 광고의 워크플로는 다음과 같습니다.

  1. Google에 네이티브 광고가 호출됩니다. 호출할 때 아래의 네이티브 광고 템플릿 중 하나 또는 둘 다를 지정하여 각각 원하는 네이티브 필드를 지정합니다.
  2. Google은 구매자에게 요청 중인 필드 목록이 포함된 RTB 입찰 요청을 보냅니다.
  3. 관심이 있는 구매자가 요청된 필드를 사용하여 응답합니다.
  4. Google은 입찰을 실행하여 낙찰된 입찰을 선택하고 구매자가 제공한 광고 애셋을 게시자에게 보냅니다.
  5. 게시자가 애셋을 네이티브 광고로 조합하고 사이트 디자인에 맞게 스타일을 지정합니다.

메시지 형식

Google은 JSON 및 Protobuf 모두에서 OpenRTB 사양을 지원합니다.

OpenRTB Protobuf 네이티브 광고의 경우 다음 필드가 사양과 다릅니다.

JSON 사양
(PROTOCOL_OPENRTB_2_4)
JSON 유형 OpenRTB 구현
(PROTOCOL_OPENRTB_PROTOBUF_2_4)
OpenRTB 유형
BidRequest.imp[].native.request string BidRequest.imp[].native.request_native NativeRequest
BidResponse.seatbid[].bid[].adm string BidResponse.seatbid[].bid[].adm_native NativeResponse

OpenRTB 필드는 문자열이 아닌 Protobuf 메시지입니다.

OpenRTB Protobuf 구현을 사용하는 경우 BidRequest.imp[].native.request를 수신하지 않으며 BidResponse.seatbid[].bid[].adm_native로 응답해야 합니다. BidResponse.seatbid[].bid[].adm인 입찰 응답이 필터링됩니다. OpenRTB Protobuf 입찰 응답에는 애셋 ID가 필요하지 않습니다.

구매자 SDK를 사용하여 네이티브 광고를 렌더링하는 경우 검토를 위해 광고 소재를 제출할 때 declared_ad에 이미지 type를 포함해야 합니다.

네이티브 광고 템플릿

Google에서는 비동영상 및 동영상 네이티브 광고를 위한 가장 일반적인 두 가지 네이티브 광고 템플릿을 지원합니다.

다른 템플릿도 있으며 필드, 측정기준, 크기에 대한 요구사항이 다를 수 있습니다.

앱 설치 광고 템플릿

아래 표에는 필수 또는 권장 라벨이 붙은 입력란이 나와 있습니다. 다음 규칙이 적용됩니다.

  • 필수로 표시된 입력란은 입찰자가 필수 입력란입니다.
  • 권장으로 표시된 필드는 입찰자가 필요하지 않으며, 제공된 경우 게시자가 해당 필드 (예: 별표 평점)를 표시할 수도 있고 표시하지 않을 수도 있습니다.
  • 클릭 유도 문구 (CTA)는 입찰자가 전송하지 않으면 기본값이 할당되므로 항상 권장으로 표시됩니다. 하지만 전송되는 경우에는 항상 표시됩니다.

다음 표에는 앱 설치 광고 템플릿의 필드가 나와 있습니다. 모바일 앱은 이 필드를 사용하여 기본 앱 설치 광고를 만듭니다.

필드 설명 필수 또는 권장 여부 항상 표시 여부 권장 이미지 크기/최대 문자 수
광고 제목 앱 제목 필수 지원됨 25자 Flood-It!
이미지 앱의 스크린샷 또는 기타 관련 이미지 필수 No 1200px x 627px 또는 600px x 600px(게시자가 요구하는 가로세로 비율에 따라 다름) <Flood-It! 게임 스크린샷>
본체 앱의 기본 텍스트 필수 No 90자(영문 기준) 재미있을 만큼 간단하지만 짜릿하게 도전하는 것은 매우 중독성이 있습니다.
앱 아이콘 앱 아이콘 필수 No 128 x 128 px <Flood-it! 앱 아이콘>
클릭 유도 문구 선호하는 사용자 액션 추천 지원됨 15자 설치
별표 평점 앱 스토어에서 앱의 평점을 나타내는 별표 수 (0~5) 추천 No 0~5명 4.5
가격 앱 가격 추천 No 15자 무료

텍스트 길이 관련 참고사항

구매자가 제안된 최대 문자 수보다 긴 텍스트 애셋 (예: 본문 텍스트)을 전송하면 Google 또는 게시자에 의해 텍스트가 잘리고 생략될 수 있습니다. 중국어, 일본어, 한국어에서는 잘림 제한이 절반입니다. 예를 들어 제목 한도는 영어의 경우 90개, 중국어의 경우 45입니다.

이미지 크기 관련 참고사항

게시자는 다음을 할 수 있습니다.

  • 기본 이미지를 한 크기 (높이 또는 너비)까지 최대 20% 까지 대칭으로 자릅니다.
  • 가로세로 비율을 변경하지 않고 이미지 크기를 조정합니다.
  • 높이 및 너비로 암시되는 것과 가로세로 비율이 상당히 다른 이미지는 필터링될 수 있습니다.

콘텐츠 광고 템플릿

다음 표에는 콘텐츠 광고 템플릿의 필드가 나와 있습니다. 게시자는 이러한 필드를 사용하여 네이티브 콘텐츠 광고를 만듭니다.

필드 설명 필수 또는 권장 여부 항상 표시 여부 권장 이미지 크기/최대 글자 수 *
광고 제목 광고 헤더 필수 지원됨 25자 최저 주택담보대출 금리
이미지 광고의 기본 이미지 필수 No 1200px x 627px 또는 600px x 600px(게시자가 요구하는 가로세로 비율에 따라 다름) <광고 기본 이미지>
본체 광고 콘텐츠 필수 No 90자(영문 기준) 사랑하는 브루클린의 집을 만나보세요. 생각보다 저렴하고 빠르게 집을 지을 수 있습니다.
로고 광고주의 로고 또는 기타 관련된 작은 이미지 추천 No 128 x 128 px <NY Mortgage Inc. 로고>
클릭 유도 문구 사용자의 기본 액션 추천 No 15자 견적 받기
광고주 광고주 또는 브랜드를 식별하는 텍스트 필수 No 25자 뉴욕 모기지(NY Mortgage Inc.)

동영상 앱 설치 광고 템플릿

필드 설명 필수 또는 권장 여부 항상 표시 여부 권장 이미지 크기/최대 글자 수 *
동영상 동영상 광고를 재생하는 데 필요한 모든 애셋을 포함하는 동영상 VAST 응답입니다. 필수 No - Flood-It!이 포함된 VAST XML의 URL 동영상 광고
광고 제목 앱 제목 필수 지원됨 25자 Flood-It!
이미지 동영상 광고가 클릭되기 전이나 로드되는 동안 플레이어에 표시되는 이미지 (썸네일)입니다. 필수 No 동영상의 가로세로 비율과 일치해야 합니다 (예: 16x9 동영상의 경우 1280x720, 640x480 동영상의 경우 4x3). Flood-It! 게임 스크린샷
본체 앱의 기본 텍스트 필수 No 90자(영문 기준) 재미있을 만큼 간단하지만 짜릿하게 도전하는 것은 매우 중독성이 있습니다.
앱 아이콘 앱 아이콘 필수 No 128 x 128 px Flood-it! 앱 아이콘
클릭 유도 문구 선호하는 사용자 액션 필수 지원됨 15자 설치
별표 평점 앱 스토어에서 앱 평점을 나타내는 별표 수 (0~5) 추천 No 0~5명 4.5
가격 앱 가격 추천 No 15자 무료

제한사항

  • 동영상: 모든 동영상은 VAST URL 또는 VAST 태그 형식이어야 합니다. WebM, MP4 등과 같은 원본 동영상 파일은 지정할 수 없습니다.

  • 텍스트 길이: 구매자가 응답에서 body과 같은 텍스트 애셋을 지정하면 Google 또는 게시자에 의해 텍스트 애셋이 잘리고 생략될 수 있습니다. 자르기 제한은 한국어, 중국어, 일본어에서 크기의 절반입니다. 예를 들어 제목 한도는 영어에서는 90, 중국어에서는 45입니다.

  • 이미지 크기: 게시자는 다음을 수행할 수 있습니다.

    • 기본 이미지를 한 크기 (높이 또는 너비)까지 최대 20% 까지 대칭으로 자릅니다.
    • 가로세로 비율을 변경하지 않고 이미지 크기를 조정합니다.

앱 설치 광고의 예

네이티브 동영상

동영상 콘텐츠 광고 템플릿

필드 설명 필수 또는 권장 여부 항상 표시 여부 권장 이미지 크기/최대 글자 수 *
동영상 동영상 광고를 재생하는 데 필요한 모든 애셋을 포함하는 동영상 VAST 응답입니다. 필수 지원됨 - Flood-It!이 포함된 VAST XML의 URL 동영상 광고
광고 제목 광고 헤더 필수 지원됨 25자 최저 주택담보대출 금리
이미지 동영상 광고가 클릭되기 전이나 로드되는 동안 플레이어에 표시되는 이미지 (썸네일)입니다. 필수 No 동영상의 가로세로 비율과 일치해야 합니다 (예: 16x9 동영상의 경우 1280x720, 640x480 동영상의 경우 4x3). 동영상 스크린샷
본체 광고 콘텐츠 필수 No 90자(영문 기준) 사랑하는 브루클린의 집을 만나보세요. 생각보다 저렴하고 빠르게 집을 지을 수 있습니다.
로고 광고주의 로고 또는 기타 관련된 작은 이미지 추천 No 128 x 128 px NY Mortgage Inc. 로고
클릭 유도 문구 사용자의 기본 액션 필수 No 15자 견적 받기
광고주 광고주 또는 브랜드를 식별하는 텍스트 필수 No 25자 뉴욕 모기지(NY Mortgage Inc.)

메타 필드

다음 메타 필드는 지원되는 모든 광고 템플릿에서 공유됩니다.

Authorized Buyers 실시간 프로토콜 버퍼 Authorized Buyers OpenRTB 또는 설명
NativeAd.click_link_url Link.url 사용자가 광고를 클릭할 때 브라우저에서 호출할 URL입니다. 최종적으로 방문 페이지로 연결되는 리디렉션 체인의 첫 번째 단계가 될 수 있습니다. 네이티브 광고의 경우 click_link_url를 필드로 사용하여 사용자가 최종적으로 방문하는 도착 페이지를 설정하는 것이 좋습니다. 동적 방문 페이지의 경우 이 필드를 사용해야 합니다.
Ad.click_through_url Bid.adomain

입찰자가 입찰하려는 경우 설정해야 합니다. 이는 스니펫의 도착 URL 집합입니다. 여기에는 사용자가 표시된 광고를 클릭하면 연결되는 URL 및 렌더링된 광고에 표시되는 모든 URL이 포함됩니다. 최종 방문 페이지와 관련이 없는 광고 서버에 대한 중간 호출을 포함하지 마세요. 스니펫 또는 동영상 광고를 반환하지만 click_through_url을 선언하지 않는 입찰 응답은 삭제됩니다. html_snippet, video_url 또는 native_ad가 설정된 경우에만 이 필드를 설정합니다. 이 데이터는 도착 URL 선언으로 사용됩니다. 예를 들어 게시자가 차단한 URL을 사후 필터링하거나 광고 카테고리를 지정하는 데 사용됩니다. 네이티브 광고를 사용하는 경우 위의 NativeAd.click_link_url를 참고하세요.

네이티브 광고가 아닌 경우 클릭 추적 또는 기타 광고 기능에 사용되지 않으며 도착 URL 선언으로만 사용됩니다.

네이티브 광고의 경우 NativeAd.click_link_url를 설정하지 않으면 click_through_url의 첫 번째 값이 사용자를 방문 페이지로 안내하는 데 사용됩니다. 또한 모든 값이 도착 URL 선언으로 사용됩니다 (기본이 아닌 경우와 유사).

NativeAd.click_tracking_urls Link.clicktrackers 선택사항입니다. 광고주가 광고의 사용자 클릭을 추적할 수 있도록 하는 추가 URL입니다.
Ad.ad_choices_destination_url BidExt.ad_choices_destination_url 광고 관심설정 또는 선택 해제 페이지 링크 표준 AdChoices 아이콘이 네이티브 광고 소재에 추가되고 이 URL에 연결됩니다. 이는 네이티브 광고에서 지원되지만 입찰 응답에서 네이티브 메시지에 포함되지는 않습니다.
Ad.impression_tracking_url NativeResponse.imptrackers 네이티브 노출은 Authorized Buyers 실시간 입찰 프로토콜 또는 OpenRTB의 네이티브 노출 추적기에서 impression_tracking_url로 추적해야 합니다.

required_fieldsrecommended_fields는 게시자가 지정합니다. 이 비트 필드를 변환하여 필드가 필수인지 또는 권장인지 확인하는 방법을 보여줍니다.

비트 필드는 바이너리 값의 각 비트를 사용하여 true 또는 false 문을 저장합니다. 이는 is_logo_required, is_header_required 등과 같은 많은 불리언 신호를 보내는 것과 동일하지만 모두 함께 패키징됩니다.

이 예에서는 1085required_fields 값을 사용합니다.

먼저 등가 바이너리 값을 찾습니다. 10000111101

바이너리 값이 있으면 비트를 확인하여 필드가 필수인지 (1) 필요하지 않은지 (0) 확인할 수 있습니다.

아래 표에서는 필드를 바이너리 값 내 해당 위치에 매핑합니다. 오른쪽에서 왼쪽으로 바이너리를 읽습니다. 이때 1비트는 바이너리 값의 가장 오른쪽에 있는 위치에 해당합니다.

필드 바이너리 값 배치 (오른쪽에서 왼쪽으로)
HEADLINE 1
BODY 2
CALL_TO_ACTION 4
ADVERTISER 8
IMAGE 16
LOGO 32
APP_ICON 64
STAR_RATING 128
PRICE 256
STORE 512
VIDEO 1024

예시 바이너리 값 10000111101를 보면 1비트(가장 오른쪽)는 필수 값을 나타내는 1입니다. 표에 따르면 1비트는 HEADLINE에 상응합니다.

2비트 (오른쪽에서 두 번째 값)는 필요하지 않음을 나타내는 0입니다. 2비트는 BODY에 상응합니다.

다음은 이 예에서 해석된 모든 필수 입력란입니다.

설명 필수 여부
1 VIDEO 지원됨
0 STORE No
0 PRICE No
0 STAR_RATING No
0 APP_ICON 아니요
1 LOGO 지원됨
1 IMAGE
1 ADVERTISER
1 CALL_TO_ACTION 지원됨
0 BODY No
1 HEADLINE 지원됨

NativeAdTemplate 메시지

네이티브 인벤토리가 포함된 입찰 요청을 받으면 채워진 BidRequest.adSlot[].native_ad_template이 포함됩니다. NativeAdTemplate 메시지는 다음에 관한 사양을 제공합니다.

  • 필수 또는 권장 입력란입니다.
  • 이미지, 로고, 앱 아이콘 크기
  • 광고가 렌더링되는 스타일에 대한 사양입니다.
message BidRequest {
  //...
  message AdSlot {
    //...

    message NativeAdTemplate {
      // Defines the bits used in required_fields and recommended_fields.
      // There is one bit for each of the fields in BidResponse.Ad.NativeAd
      enum Fields {
        NO_FIELDS = 0x0;
        HEADLINE = 0x1;
        BODY = 0x2;
        CALL_TO_ACTION = 0x4;
        ADVERTISER = 0x8;
        IMAGE = 0x10;
        LOGO = 0x20;
        APP_ICON = 0x40;
        STAR_RATING = 0x80;
        PRICE = 0x100;
        DEPRECATED_STORE = 0x200;
        VIDEO = 0x400;
      }

      // Bitfield describing which fields are required by the publisher. Bid
      // responses with no value for these fields will be rejected. Click
      // and view tracking urls are always implicitly required.
      optional int64 required_fields = 1;

      // Bitfield describing which fields are recommended by the publisher.
      // All recommended field are supported, but not all recommended fields
      // are required.
      optional int64 recommended_fields = 2;

      // max_safe_length indicates the maximum number of Unicode characters that
      // are guaranteed to be shown without truncation. Longer strings may be
      // truncated and ellipsized by Ad Exchange or the publisher during
      // rendering.
      optional int32 headline_max_safe_length = 3;
      optional int32 body_max_safe_length = 4;
      optional int32 call_to_action_max_safe_length = 5;
      optional int32 advertiser_max_safe_length = 6;
      optional int32 price_max_safe_length = 15;

      // The width and height from which to calculate the required aspect ratio.
      // You can provide a larger image in the response. Images that have aspect
      // ratios substantially different than those implied by the height and
      // width may be filtered.
      optional int32 image_width = 7;
      optional int32 image_height = 8;
      optional int32 logo_width = 9;
      optional int32 logo_height = 10;
      optional int32 app_icon_width = 11;
      optional int32 app_icon_height = 12;

      // Globally distinct id for the specific style, HTML, and CSS with which
      // the native ad is rendered.
      optional int32 style_id = 16;

      // Type of style layout for each native ad template.
      enum LayoutType {
        PIXEL = 0;
        FLUID = 1;
      }
      optional LayoutType style_layout_type = 17 [default = PIXEL];

      // If the style_layout_type is Pixel, width and height of the
      // entire native ad after rendering. If the style_layout_type is
      // Fluid, the style_height and style_width may optionally
      // not be populated.
      optional int32 style_height = 18;
      optional int32 style_width = 19;
    }
    repeated NativeAdTemplate native_ad_template = 51;
  }

    // NativePlacementType describes placement of native ad slot with respect to
    // surrounding context.
    enum NativePlacementType {
      PLACEMENT_UNKNOWN = 0;
      // In the feed of content - for example as an item inside the organic
      // feed/grid/listing/carousel.
      PLACEMENT_IN_FEED = 1;
      // In the atomic unit of the content - for example, in the article page or single
      // image page.
      PLACEMENT_ATOMIC_UNIT = 2;
      // Outside the core content - for example in the ads section on the right
      // rail, as a banner-style placement near the content, etc.
      PLACEMENT_OUTSIDE = 3;
      // Recommendation widget, most commonly presented below the article
      // content.
      PLACEMENT_RECOMMENDATION = 4;
    }

    optional NativePlacementType native_placement_type = 45;

  // ...
}

NativeAd 메시지

네이티브 인벤토리에 입찰할 때 구매자는 BidResponse.ad[].native_ad를 해당 BidRequest.adSlot[].native_ad_template에 선언된 필수 필드로 채워야 합니다.

message BidResponse {
  //...
  message Ad {
    //...

    message NativeAd {
      // A short title for the ad.
      optional string headline = 1;

      // A long description of the ad.
      optional string body = 2;

      // A label for the button that the user is supposed to click.
      optional string call_to_action = 3;

      // The name of the advertiser or sponsor, to be displayed in the ad
      // creative.
      optional string advertiser = 4;

      // Next tag to use: 4
      message Image {
        optional string url = 1;

        // Image width and height are specified in pixels. You may provide a
        // larger image than was requested, so long as the aspect ratio is
        // preserved.
        optional int32 width = 2;
        optional int32 height = 3;
      }

      // A large image.
      optional Image image = 5;

      // A smaller image, for the advertiser's logo.
      optional Image logo = 6;

      // The app icon, for app download ads.
      optional Image app_icon = 7;

      // The video file. Only set this field if the video field is requested.
      oneof video {
        // The URL to fetch a video ad. The URL should return an XML response
        // that conforms to VAST standards.
        string video_url = 13;

        // The VAST document to be returned.
        string video_vast_xml = 16;
      }

      // The app rating in the app store. Must be in the range [0-5].
      optional double star_rating = 8;

      // The URL that the browser/SDK will load when the user clicks the ad.
      // This can be the landing page directly, or the first step of a redirect
      // chain that eventually leads to it. For backward compatibility, if this
      // is not set, the first Ad.click_through_url is used.
      optional string click_link_url = 14;

      // The URL to use for click tracking. The SDK pings click tracking url on
      // a background thread. When resolving the url, HTTP 30x redirects are
      // followed. The SDK ignores the contents of the response; this URL
      // has no effect on the landing page for the user.
      // This field is planned to be deprecated and we are moving to the
      // repeated click_tracking_urls field.
      optional string click_tracking_url = 11;

      // The URLs to use for click tracking. This will be used throughout the
      // serving stack and will incorporate any URL in click_tracking_urls.
      repeated string click_tracking_urls = 15;

      // The price of the promoted app including the currency info.
      optional string price = 10;

    };
    optional NativeAd native_ad = 18;

    // The set of destination URLs for the snippet. This includes the URLs that
    // the user will go to if they click on the displayed ad, and any URLs that
    // are visible in the rendered ad. Do not include intermediate calls to the
    // adserver that are unrelated to the final landing page. A BidResponse that
    // returns a snippet or video ad but declares no click_through_url will be
    // discarded. Only set this field if html_snippet or video_url or native_ad
    // are set. This data is used as a destination URL declaration, for example
    // for post-filtering of publisher-blocked URLs or ad categorization.
    //
    // For non-native ads, it is not used for click tracking or any
    // other ad functionality; it is only used as a destination URL
    // declaration.
    //
    // For native ads, if NativeAd.click_link_url is not set, the first
    // value of click_through_url is used to direct the user to the landing
    // page. In addition, all values are used as destination
    // URL declarations (similar to the non-native case).
    repeated string click_through_url = 4;

    //...

    // The URLs to call when the impression is rendered. The SDK pings
    // impression urls on a background thread and ignores the contents
    // of the response.
    repeated string impression_tracking_url = 19;

    // Link to ad preferences page. This is only supported for native ads.
    // If present, a standard AdChoices icon is added to the native ad creative and
    // linked to this URL.
    optional string ad_choices_destination_url = 21;
    // ...
  }
}

입찰 요청의 예

비동영상 입찰 요청

Google

OpenRTB JSON

OpenRTB Protobuf

동영상 입찰 요청

입찰 응답 예시

이러한 응답의 값은 위의 해당 요청과 일치하지 않습니다. 하지만 요청의 템플릿에서 필수/선택사항 입력란을 제안하면 여기에 있는 응답은 해당 요구사항을 준수합니다.

비동영상 입찰 응답

Google

OpenRTB JSON

OpenRTB Protobuf

동영상 입찰 응답 수