原生廣告

原生廣告會配合周圍內容和視覺設計,調整過格式,更有機會吸引使用者瀏覽和點擊。原生廣告廣告空間支援行動應用程式、電腦和行動版網站。如要進一步瞭解原生廣告,請參閱「原生廣告總覽」一文。

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!
映像檔 應用程式的螢幕截圖或其他相關圖片 需要 1,200 x 627 像素或 600 x 600 像素,視發布商所需的顯示比例而定。 <遊戲 Flood-It! 的螢幕截圖。>
Body 應用程式的主要文字 需要 90 個半形字元 騙局簡單,令人驚訝的 = 令人賞心悅目且充滿魅力!
應用程式圖示 應用程式圖示 需要 128 x 128 像素 <Flood-it! 應用程式圖示>
行動號召 偏好的使用者動作 Recommended 15 個半形字元 安裝
星級評等 代表應用程式在應用程式商店中評分的星號數量 (0 至 5 顆星) Recommended 0 到 5 年 4.5
價格 應用程式的費用 Recommended 15 個半形字元 免費

文字長度附註

如果買方傳送的文字素材資源 (例如內文) 超過建議的字元數上限,Google 或發布商可能會截斷文字或將其刪除。請注意,截斷限制是中文、日文和韓文的一半大小。例如,英文的廣告標題數量上限為 90 個,中文則為 45 個。

圖片大小注意事項

發布商可以:

  • 在單一尺寸 (高度或寬度) 中對稱地裁剪主要圖片,高度最多 20%。
  • 縮放圖片,而不變更顯示比例。
  • 如果圖片的顯示比例與高度和寬度隱含的差異明顯不同,系統可能會篩選。

內容廣告範本

下表列出內容廣告範本的欄位。發布商可以使用這些欄位建立原生內容廣告。

欄位 說明 是否必要或建議? 是否一律顯示? 建議圖片大小/字元數量上限 * 範例
廣告標題 廣告標題 需要 25 個半形字元 最低抵押貸款利率
映像檔 廣告主要圖片 需要 1,200 x 627 像素或 600 x 600 像素,視發布商所需的顯示比例而定。 <廣告的主要圖片>
Body 廣告素材 需要 90 個半形字元 Brooklyn 回家的溫馨地點,價格便宜,而且比想像更快!
標誌 廣告主的標誌或其他相關小型圖片 Recommended 128 x 128 像素 <NY Mortgage Inc. 的標誌>
行動號召 使用者偏好的動作 Recommended 15 個半形字元 取得報價
廣告主 廣告主或品牌的識別文字 需要 25 個半形字元 紐約抵押貸款公司

影片應用程式安裝廣告範本

欄位 說明 是否必要或建議? 是否一律顯示? 建議圖片大小/字元數量上限* 範例
影片 播放影片廣告所需的所有必要素材資源都屬於影片 VAST 回應。 必要 - 包含 Flood-It! 的 VAST XML 網址影片廣告
廣告標題 應用程式名稱 必要 25 個半形字元 Flood-It!
圖片 在影片廣告獲得點擊或載入期間,播放器中顯示的圖片 (縮圖)。 必要 應與影片的長寬比一致 (例如:16x9 影片的大小為 1280x720,640x480 影片則為 4x3)。 Flood-It! 遊戲的螢幕截圖或觀看影片
內文 應用程式的主要文字 必要 90 個半形字元 騙局簡單,令人驚訝的 = 令人賞心悅目且充滿魅力!
應用程式圖示 應用程式圖示 必要 128 x 128 像素 Flood-it! 應用程式圖示
行動號召 偏好的使用者動作 必要 15 個半形字元 安裝
星級評等 代表應用程式在應用程式商店中評分的星號數量 (0 - 5 顆星) 建議 0 - 5 4.5
價格 應用程式的費用 建議 15 個半形字元 免費

限制

  • 影片:所有影片都必須採用 VAST 網址或 VAST 代碼的形式。您「無法」指定 WebM、MP4 等原始影片檔案。

  • 文字長度:如果買方在回應中指定 body 等文字素材資源,Google 或發布商可能會截斷或刪減該文字素材資源。請注意,截斷限制是中文、日文和韓文的一半大小。例如,英文的廣告標題數量上限為 90 個,中文則為 45 個

  • 圖片大小:發布商可進行以下操作:

    • 在單一尺寸 (高度或寬度) 中對稱地裁剪主要圖片,高度最多 20%。
    • 縮放圖片,而不變更顯示比例。

應用程式安裝廣告範例

原生影片廣告

影片內容廣告範本

欄位 說明 是否必要或建議? 是否一律顯示? 建議圖片大小/字元數量上限* 範例
影片 播放影片廣告所需的所有必要素材資源都屬於影片 VAST 回應。 必要 - 包含 Flood-It! 的 VAST XML 網址影片廣告
廣告標題 廣告標題 必要 25 個半形字元 最低抵押貸款利率
圖片 在影片廣告獲得點擊或載入期間,播放器中顯示的圖片 (縮圖)。 必要 應與影片的長寬比一致 (例如:16x9 影片的大小為 1280x720,640x480 影片則為 4x3)。 影片的螢幕截圖
內文 廣告素材 必要 90 個半形字元 Brooklyn 回家的溫馨小家庭,價格便宜,而且比想像更快!
標誌 廣告客戶的標誌或其他相關小型圖片 建議 128 x 128 像素 NY Mortgage Inc. 的標誌
行動號召 使用者偏好的動作 必要 15 個半形字元 取得報價
廣告客戶 廣告客戶或品牌的識別文字 必要 25 個半形字元 紐約抵押貸款公司

中繼欄位

所有支援的廣告範本都會共用以下中繼欄位:

Authorized Buyers 即時通訊協定緩衝區 對等 Authorized Buyers OpenRTB 說明
NativeAd.click_link_url Link.url 使用者點選廣告時,瀏覽器會呼叫的網址。 可以是重新導向鏈結中最終導向到達網頁的第一步。針對原生廣告,我們建議使用 click_link_url 做為欄位,設定使用者最終前往的目的地。如果是動態到達網頁,您必須使用這個欄位。
Ad.click_through_url Bid.adomain

如果出價方要出價,則必須設定。這是程式碼片段的一組到達網頁網址,包括使用者點選廣告後會前往的網址,以及所有顯示在顯示廣告中的網址。請勿加入向廣告伺服器發出的中繼呼叫,與最終到達網頁無關。如果 BidResponse 傳回程式碼片段或影片廣告,但並未宣告任何 click_through_url,系統就不會將其捨棄。只有在已設定 html_snippetvideo_urlnative_ad 時,才需要設定這個欄位。這項資料會用來當做到達網頁網址宣告,例如用來篩選發布商封鎖的網址或廣告分類。使用原生廣告時,請參閱上述 NativeAd.click_link_url

如果是非原生廣告,則不會用於點擊追蹤或任何其他廣告功能,只會用做到達網頁網址宣告。

針對原生廣告,如未設定 NativeAd.click_link_url,系統會使用 click_through_url 的第一個值將使用者導向到達網頁。此外,所有值都會做為到達網頁網址宣告 (類似非原生案例)。

NativeAd.click_tracking_urls Link.clicktrackers 選用設定。可讓廣告客戶追蹤廣告點擊 的其他網址。
Ad.ad_choices_destination_url BidExt.ad_choices_destination_url 連結至廣告偏好設定或停用頁面。如果有,系統會在原生廣告素材中加入標準的 AdChoices 圖示,並連結到這個網址。原生廣告支援這項參數,但並非出價回應中的原生訊息的一部分。
Ad.impression_tracking_url NativeResponse.imptrackers Authorized Buyers 即時出價通訊協定或 OpenRTB 中的原生曝光追蹤程式應使用 impression_tracking_url 追蹤原生曝光。

required_fieldsrecommended_fields 是由發布者指定。我們將說明如何翻譯這些位元欄位,以判斷欄位是必要還是建議欄位。

位元欄位會使用二進位值的每一位元儲存 true 或 false 陳述式,等同於傳送 is_logo_requiredis_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
0 PRICE
0 STAR_RATING
0 APP_ICON
1 LOGO
1 IMAGE
1 ADVERTISER
1 CALL_TO_ACTION
0 BODY
1 HEADLINE

NativeAdTemplate 訊息

收到包含原生廣告空間的出價要求時,其中會包含已填入的 BidRequest.adSlot[].native_ad_templateNativeAdTemplate 訊息提供以下規格:

  • 此為必填欄位或建議的欄位。
  • 圖片、標誌和應用程式圖示的尺寸。
  • 廣告顯示樣式的規格。
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 通訊協定緩衝區

影片出價要求

出價回應範例

請注意,這些回應中的值並非與上述對應的要求相符。不過,如果要求中的範本建議必填/選填欄位,則這裡的回應會遵循這些規定。

非影片出價回應

Google

OpenRTB JSON

OpenRTB 通訊協定緩衝區

影片出價回應