Anúncios nativos

Os anúncios nativos são formatados para se ajustarem ao conteúdo e aos recursos visuais ao redor design, aumentando a probabilidade de serem visualizados e clicados pelos usuários. Anúncio nativo está disponível em apps para dispositivos móveis, bem como em sites para dispositivos móveis e computadores. Para mais informações sobre anúncios nativos, consulte Visão geral de anúncios nativos anúncios.

Os anúncios nativos são compatíveis com Authorized Buyers e Open Bidding

Veja o fluxo de trabalho dos anúncios nativos:

  1. Uma chamada de anúncio nativo é feita ao Google. A chamada especifica um ou ambos os modelos de anúncios nativos abaixo, cada um especificando o campos nativos.
  2. O Google envia aos compradores uma solicitação de lance RTB contendo uma lista dos campos que estão sendo solicitados.
  3. Os compradores interessados respondem com os campos solicitados.
  4. O Google realiza um leilão para selecionar o lance vencedor e envia o os recursos do criativo fornecidos pelo comprador ao editor.
  5. O editor monta os recursos em um anúncio nativo e os estiliza para se adequar ao design do site.

Formatos de mensagem

O Google suporta Especificação do OpenRTB em JSON e Protobuf.

Para anúncios nativos em Protobuf do OpenRTB, os seguintes campos são diferentes da especificação:

Especificação JSON
(PROTOCOL_OPENRTB_2_4)
Tipo de JSON Implementação do OpenRTB
(PROTOCOL_OPENRTB_PROTOBUF_2_4)
Tipo do OpenRTB
BidRequest.imp[].native.request string BidRequest.imp[].native.request_native NativeRequest
BidResponse.seatbid[].bid[].adm string BidResponse.seatbid[].bid[].adm_native NativeResponse

Os campos do OpenRTB são mensagens do Protobuf, e não strings.

Se você usar a implementação de Protobuf do OpenRTB, não vai receber BidRequest.imp[].native.request e responder com BidResponse.seatbid[].bid[].adm_native. Respostas de lance com BidResponse.seatbid[].bid[].adm foram filtradas. Os códigos de recurso não são necessários para o OpenRTB Respostas de lance do protobuf.

Se você usar um SDK do comprador para renderizar anúncios nativos, você precisa incluir uma imagem type no declared_ad ao enviar criativos para revisão.

Modelos de anúncios nativos

O Google oferece suporte aos dois modelos mais comuns de anúncios nativos para anúncios que não são de vídeo e anúncios nativos em vídeo:

Existem outros modelos, e eles podem ter um conjunto diferente de requisitos para campos, dimensões e tamanhos.

Modelo de anúncio de instalação de apps

As tabelas abaixo mostram os campos rotulados como Obrigatório ou Recomendado. Aplicam-se as seguintes regras:

  • Os campos marcados como Obrigatórios são obrigatórios para o bidder.
  • Os campos marcados como Recomendado não são obrigatórios para o bidder, e o o editor poderá ou não exibi-los se forem fornecidos (por exemplo, marcar com estrela classificação).
  • A call-to-action (CTA) é sempre marcada como Recomendada porque padrão será atribuído se não for enviado pelo proponente, mas sempre será serão exibidos, se enviados.

A tabela a seguir lista os campos de um modelo de anúncio de instalação de aplicativo. Os aplicativos para dispositivos móveis usam esses campos para criar anúncios nativos de instalação de apps.

Campo Descrição Obrigatório ou recomendado? Sempre exibido? Tamanho de imagem recomendado/número máximo de caracteres Exemplo
Título O título do app Obrigatório Sim 25 caracteres Inundação!
Imagem Uma captura de tela do app ou outra imagem relevante Obrigatório Não 1.200 px x 627 px ou 600 px x 600 px,dependendo da proporção necessária pelo editor. <Uma captura de tela do jogo Flood-It!>
Corpo Texto principal do app Obrigatório Não 90 caracteres Simplesmente simples e desafiadores = deliciosamente viciante!
Ícone do app O ícone do app Obrigatório Não 128 x 128 px <Flood-it! ícone do app>
Call-to-action Ação do usuário preferida Recomendado Sim 15 caracteres Instalar
Star rating O número de estrelas (0 a 5) representando classificação do app na app store Recomendado Não 0 a 5 4,5
Preço Custo do app Recomendado Não 15 caracteres Gratuito

Observações sobre o tamanho do texto

Se um comprador enviar um recurso de texto (corpo do texto, por exemplo) maior que o máximo sugerido de caracteres, o texto pode ficar truncado e cortadas pelo Google ou pelo editor. Observe que o truncamento têm metade do tamanho em chinês, japonês e coreano. Por exemplo, o o limite de títulos é 90 para inglês e 45 para chinês.

Observações sobre o tamanho da imagem

Os editores podem:

  • Corte a imagem principal de forma simétrica em até 20% em uma dimensão (altura ou largura).
  • Dimensione a imagem sem alterar a proporção.
  • Imagens com proporções significativamente diferentes das implícitas por altura e largura podem ser filtradas.

Modelo de anúncio de conteúdo

A tabela a seguir lista os campos de um modelo de anúncio de conteúdo. Editoras use esses campos para criar anúncios de conteúdo nativo.

Campo Descrição Obrigatório ou recomendado? Sempre exibido? Tamanho de imagem recomendado/número máximo de caracteres * Exemplo
Título O cabeçalho do anúncio Obrigatório Sim 25 caracteres Taxas de hipoteca mais baixas
Imagem A imagem principal do anúncio Obrigatório Não 1.200 px x 627 px ou 600 px x 600 px,dependendo da proporção necessária pelo editor. <Imagem principal do anúncio>
Corpo O conteúdo do anúncio Obrigatório Não 90 caracteres O lar do seu lar no Brooklyn. Mais barato e antes do que você imagina.
Logotipo O logotipo do anunciante ou outra imagem pequena relevante Recomendado Não 128 x 128 px <Logotipo da NY Mortgage Inc.>
Call-to-action Ação preferida do usuário Recomendado Não 15 caracteres Receber um orçamento
Advertiser Texto que identifica o anunciante ou a marca Obrigatório Não 25 caracteres Mortgage Inc. de Nova York

Modelo de anúncio em vídeo de instalação de apps

Campo Descrição Obrigatório ou recomendado? Sempre exibido? Tamanho da imagem recomendado/número máximo de caracteres * Exemplo
Vídeo É a resposta VAST de vídeo com todos os recursos necessários para reproduzir um anúncio em vídeo. Obrigatório Não - Um URL para XML VAST contendo um Flood-It! Anúncio em vídeo
Título O título do app Obrigatório Sim 25 caracteres Inundação!
Imagem Imagem (miniatura) mostrada no player antes do clique no anúncio em vídeo ou durante o carregamento. Obrigatório Não Precisa corresponder à proporção do vídeo (por exemplo, 1.280 x 720 para vídeos de 16 x 9, 4 x 3 para vídeos de 640 x 480). Uma captura de tela do jogo Flood-It! Ou, no vídeo,
Corpo Texto principal do app Obrigatório Não 90 caracteres Simplesmente simples e desafiadores = deliciosamente viciante!
Ícone do app O ícone do app Obrigatório Não 128 x 128 px Flood-it! ícone do app
Call-to-action Ação do usuário preferida Obrigatório Sim 15 caracteres Instalar
Star rating Número de estrelas (0 a 5) que representa a classificação do app na app store Recomendado Não 0 a 5 4,5
Preço Custo do app Recomendado Não 15 caracteres Gratuito

Restrições

  • Vídeo: todos os vídeos precisam estar na forma de um URL VAST. ou uma tag VAST. Um arquivo de vídeo bruto como WebM, MP4 etc. não pode ser especificado.

  • Comprimento do texto: se um comprador especificar um recurso de texto, como o body na resposta, ela pode ser truncada e reduzida por pelo Google ou pelo editor. Os limites de truncamento têm metade do tamanho em chinês, japonês e coreano. Por exemplo, o limite de títulos é 90 em inglês. e 45 para chinês.

  • Tamanho da imagem: os editores podem:

    • Cortar a imagem principal de forma simétrica em até 20% em uma dimensão (altura ou largura.
    • Dimensione a imagem sem alterar a proporção.

Exemplo de anúncio de instalação de apps

vídeo nativo

Modelo de anúncio de conteúdo em vídeo

Campo Descrição Obrigatório ou recomendado? Sempre exibido? Tamanho da imagem recomendado/número máximo de caracteres * Exemplo
Vídeo É a resposta VAST de vídeo com todos os recursos necessários para reproduzir um anúncio em vídeo. Obrigatório Sim - Um URL para XML VAST contendo um Flood-It! Anúncio em vídeo
Título O cabeçalho do anúncio Obrigatório Sim 25 caracteres Taxas de hipoteca mais baixas
Imagem Imagem (miniatura) mostrada no player antes do clique no anúncio em vídeo ou durante o carregamento. Obrigatório Não Precisa corresponder à proporção do vídeo (por exemplo, 1.280 x 720 para vídeos de 16 x 9, 4 x 3 para vídeos de 640 x 480). Uma captura de tela do vídeo
Corpo O conteúdo do anúncio Obrigatório Não 90 caracteres O lar do seu lar no Brooklyn. Mais barato e antes do que você imagina.
Logotipo O logotipo do anunciante ou outra imagem pequena relevante Recomendado Não 128 x 128 px Logotipo da NY Mortgage Inc.
Call-to-action Ação preferida do usuário Obrigatório Não 15 caracteres Receber um orçamento
Advertiser Texto que identifica o anunciante ou a marca Obrigatório Não 25 caracteres Mortgage Inc. de Nova York

Campos meta

Os metacampos a seguir são compartilhados por todos os modelos de anúncios compatíveis:

Autorizado Buffer de protocolo em tempo real do comprador Autorizado Equivalente ao OpenRTB dos compradores Descrição
NativeAd.click_link_url Link.url O URL que será chamado pelo navegador quando o usuário clicar no anúncio. Pode ser a primeira etapa de uma cadeia de redirecionamento que acaba levando ao página de destino. Para anúncios nativos, recomendamos usar click_link_url como o campo a ser definido o destino para onde o usuário irá. É obrigatório usar este campo no caso das páginas de destino dinâmicas.
Ad.click_through_url Bid.adomain

Precisa ser definido se o bidder pretende dar um lance. Esse é o conjunto de URLs do snippet, incluindo os URLs que o usuário acessará se clicam no anúncio exibido e todos os URLs visíveis na imagem anúncio. Não inclua chamadas intermediárias para o servidor de anúncios que não estejam relacionadas à a página de destino final. Um BidResponse que retorna um snippet ou anúncio em vídeo mas declarar que nenhum click_through_url será descartado. Somente definido este campo se html_snippet, video_url ou native_ad foram definidos. Esses dados são usados como um URL de destino por exemplo, para pós-filtragem de URLs ou blocos de anúncios bloqueados pelo editor categorização. Consulte o NativeAd.click_link_url acima ao usar anúncios nativos.

Para anúncios não nativos, ele não é usado para rastreamento de cliques ou qualquer outro funcionalidade ele será usado somente como uma declaração de URL de destino.

Para anúncios nativos, se NativeAd.click_link_url não estiver definido, o o primeiro valor de click_through_url é usado para direcionar o usuário para a página de destino. Além disso, todos os valores são usados como URL de destino declarações (semelhante ao caso não nativo).

NativeAd.click_tracking_urls Link.clicktrackers Opcional. URLs adicionais que permitem aos anunciantes rastrear os cliques dos usuários em o anúncio.
Ad.ad_choices_destination_url BidExt.ad_choices_destination_url Vincule a uma página de preferências de anúncios ou a uma página de desativação. Se estiver presente, um padrão O ícone "Opções de anúncios" é adicionado ao criativo nativo e vinculado a esse URL. Isso é compatível com anúncios nativos, mas não faz parte da mensagem nativa no resposta do lance.
Ad.impression_tracking_url NativeResponse.imptrackers A impressão nativa deve ser rastreada com impression_tracking_url em lances em tempo real do Authorized Buyers proto ou impressões nativas no OpenRTB.

required_fields e recommended_fields são especificados pelo editor. Mostramos como para converter esses campos de bit a fim de determinar se um campo é obrigatório ou recomendado.

Um campo de bit usa cada bit de um valor binário para armazenar um valor verdadeiro ou falso equivalente, o que equivale a enviar muitos sinais booleanos, como is_logo_required, is_header_required etc., mas todas amontoadas.

Exemplo

Para este exemplo, usaremos um valor required_fields de 1085.

Primeiro, encontre o valor binário equivalente: 10000111101

Assim que tiver o valor binário, você poderá verificar os bits para ver se um campo está obrigatório (1) ou não obrigatório (0).

A tabela abaixo mapeia os campos para seus respectivos locais no valor binário. Leia o da direita para a esquerda, com o 1 bit correspondente à posição mais à direita no valor binário.

Campo Canal de valor binário (da direita para a esquerda)
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

Analisando o exemplo de valor binário 10000111101, o de 1 bit (mais à direita) é 1, que significa um valor obrigatório. De acordo com as tabela, o 1 bit corresponde a HEADLINE.

O de 2 bits (segundo valor da direita) é 0, que significa não é obrigatório. A de 2 bits corresponde a BODY.

Estes são todos os campos obrigatórios interpretados no exemplo:

Valor Descrição Obrigatório?
1 VIDEO Sim
0 STORE Não
0 PRICE Não
0 STAR_RATING Não
0 APP_ICON Não
1 LOGO Sim
1 IMAGE Sim
1 ADVERTISER Sim
1 CALL_TO_ACTION Sim
0 BODY Não
1 HEADLINE Sim

Mensagem NativeAdTemplate

Ao receber uma solicitação de lance com inventário nativo, ela terá um preenchido BidRequest.adSlot[].native_ad_template. A mensagem NativeAdTemplate fornece especificações para:

  • Campos obrigatórios ou recomendados.
  • Dimensões para imagens, logotipos e ícones do app.
  • Especificações do estilo em que o anúncio é renderizado.
.
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;

  // ...
}

Mensagem NativeAd

Ao definir lances para inventário nativo, um comprador precisa preencher BidResponse.ad[].native_ad com campos obrigatórios declarados no BidRequest.adSlot[].native_ad_template correspondente.

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;
    // ...
  }
}

Exemplos de solicitações de lance

Solicitações de lance que não são de vídeo

Google

JSON do OpenRTB

Protobuf do OpenRTB

Solicitações de lance de vídeo

Exemplos de respostas de lance

Observe que os valores nesta resposta não devem corresponder ao solicitações correspondentes acima. No entanto, se o modelo na solicitação sugerir campos, as respostas aqui vão estar em conformidade com esses requisitos.

Respostas de lance que não são de vídeo

Google

JSON do OpenRTB

Protobuf do OpenRTB

Respostas de lance de vídeo