Os anúncios nativos são formatados para se ajustar ao conteúdo e ao design visual, aumentando a probabilidade de serem vistos e clicados pelos usuários. O inventário de anúncios nativos está disponível em apps para dispositivos móveis, além de sites para computadores e dispositivos móveis. Para saber mais sobre anúncios nativos, consulte a Visão geral de anúncios nativos.
Os anúncios nativos são compatíveis com o Authorized Buyers e o Open Bidding.
Confira o fluxo de trabalho para anúncios nativos:
- É feita uma chamada de anúncio nativo para o Google. A chamada especifica um ou ambos os modelos de anúncios nativos abaixo, cada um especificando os campos nativos preferidos.
- O Google envia aos compradores uma solicitação de lance RTB contendo uma lista dos campos que estão sendo solicitados.
- Os compradores interessados respondem com os campos solicitados.
- O Google realiza um leilão para selecionar o lance vencedor e envia os recursos do criativo fornecidos pelo comprador ao editor.
- 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 é compatível com a especificação OpenRTB em JSON e Protobuf.
Para anúncios nativos do Protobuf do OpenRTB, os seguintes campos serã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 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 Protobuf em vez de strings.
Se você usar a implementação do Protobuf do OpenRTB, não receberá
BidRequest.imp[].native.request
e precisará responder com
BidResponse.seatbid[].bid[].adm_native
. As respostas de lance com BidResponse.seatbid[].bid[].adm
são filtradas. Os códigos de recursos não são necessários para respostas de lance do Protobuf do OpenRTB.
Se você usa um SDK do comprador para renderizar anúncios nativos,
será necessário incluir uma imagem type
no declared_ad
ao
enviar criativos para revisão.
Modelos de anúncios nativos
O Google é compatível com os dois modelos de anúncios nativos mais comuns para anúncios nativos em vídeo e que não são de vídeo:
- Modelo de anúncio de instalação de apps: promova e gere instalações de apps para dispositivos móveis.
- Modelo de anúncio de conteúdo: combinação mais genérica de texto e imagens para anúncios de marca ou da Web.
- Modelo de anúncio em vídeo de instalação de apps
- Modelo de anúncio de conteúdo em vídeo
Existem outros modelos que podem ter um conjunto diferente de requisitos para campos, dimensões e tamanhos.
Modelo de anúncio de instalação de apps
Campos obrigatórios e recomendados
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 exigidos pelo proponente.
- Os campos marcados como Recommended não são obrigatórios pelo proponente, e o editor pode ou não exibi-los se fornecidos (por exemplo, avaliação com estrelas).
- A call-to-action (CTA) é sempre marcada como Recommended porque um padrão é atribuído se não é enviado pelo proponente, mas sempre é exibido se enviado.
A tabela a seguir lista os campos de um modelo de anúncio de instalação de apps. 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 exigida pelo editor. | <Uma captura de tela do jogo Flood-It!> |
Body | Texto principal do app | Obrigatório | Não | 90 caracteres | Enganosamente simples e desafiador = agradavelmente viciante! |
Ícone do app | O ícone do app | Obrigatório | Não | 128 x 128 px | <Ícone do app Flood-it!> |
Call-to-action | Ação preferencial do usuário | Recomendados | Sim | 15 caracteres | Instalar |
Star rating | Número de estrelas (0 a 5) que representam a avaliação do app na app store | Recomendados | Não | 0 a 5 | 4.5 |
Preço | Custo do app | Recomendados | Não | 15 caracteres | Sem custo financeiro |
Observações sobre o tamanho do texto
Se um comprador enviar um recurso de texto (corpo do texto, por exemplo) maior que o número máximo sugerido de caracteres, o texto poderá ser truncado e reduzido 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ítulo é 90 para inglês e 45 para chinês.
Observações sobre o tamanho da imagem
Os editores podem:
- Corte a imagem principal 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 daquelas implícitas pela 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. Os editores usam esses campos para criar anúncios nativos de conteúdo.
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 | As menores taxas de hipoteca |
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 exigida pelo editor. | <Imagem principal do anúncio> |
Body | O conteúdo do anúncio | Obrigatório | Não | 90 caracteres | Seu lar doce lar no Brooklyn. Mais barato e antes do que você imagina! |
Logo | Logotipo do anunciante ou outra imagem pequena relevante | Recomendados | Não | 128 x 128 px | <logotipo da NY Mortgage Inc.> |
Call-to-action | Ação preferida do usuário | Recomendados | Não | 15 caracteres | Receba uma cotação |
Advertiser | Texto que identifica o anunciante ou a marca | Obrigatório | Não | 25 caracteres | NY Mortgage Inc. |
Modelo de anúncio em vídeo 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 |
---|---|---|---|---|---|
Video | É 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 URL do Flood-It! anúncio em vídeo |
Título | O título do app | Obrigatório | Sim | 25 caracteres | Inundação! |
Imagem | É uma imagem (miniatura) exibida no player antes do clique no anúncio em vídeo ou enquanto ele está carregando. | Obrigatório | Não | Precisa corresponder à proporção do vídeo (por exemplo, 1.280 x 720 para vídeos de 16 x 9 e 4 x 3 para vídeos de 640 x 480). | Uma captura de tela do jogo Flood-It! ou pelo vídeo |
Body | Texto principal do app | Obrigatório | Não | 90 caracteres | Enganosamente simples e desafiador = agradavelmente viciante! |
Ícone do app | O ícone do app | Obrigatório | Não | 128 x 128 px | Ícone do app Flood-it! |
Call-to-action | Ação preferencial do usuário | Obrigatório | Sim | 15 caracteres | Instalar |
Star rating | Número de estrelas (0 a 5) que representam a avaliação do app na app store | Recomendados | Não | 0 a 5 | 4.5 |
Preço | Custo do app | Recomendados | Não | 15 caracteres | Sem custo financeiro |
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, ele poderá ser truncado e cortado 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ítulo é 90 em inglês e 45 para chinês.Tamanho da imagem: os editores podem:
- Corte a imagem principal de maneira 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
Modelo de anúncio de conteúdo em vídeo
Campo | Descrição | Obrigatório ou recomendado? | Sempre exibido? | Tamanho de imagem recomendado/número máximo de caracteres * | Exemplo |
---|---|---|---|---|---|
Video | É 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 URL do Flood-It! anúncio em vídeo |
Título | O cabeçalho do anúncio | Obrigatório | Sim | 25 caracteres | As menores taxas de hipoteca |
Imagem | É uma imagem (miniatura) exibida no player antes do clique no anúncio em vídeo ou enquanto ele está carregando. | Obrigatório | Não | Precisa corresponder à proporção do vídeo (por exemplo, 1.280 x 720 para vídeos de 16 x 9 e 4 x 3 para vídeos de 640 x 480). | Uma captura de tela do vídeo |
Body | O conteúdo do anúncio | Obrigatório | Não | 90 caracteres | Seu lar doce lar no Brooklyn. Mais barato e antes do que você imagina! |
Logo | Logotipo do anunciante ou outra imagem pequena relevante | Recomendados | 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 | Receba uma cotação |
Advertiser | Texto que identifica o anunciante ou a marca | Obrigatório | Não | 25 caracteres | NY Mortgage Inc. |
Campos meta
Os seguintes metacampos são compartilhados por todos os modelos de anúncios suportados:
Buffer de protocolo em tempo real do Authorized Buyers | Equivalente do OpenRTB do Authorized Buyers | 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 leva à
página de destino. Para anúncios nativos, recomendamos usar click_link_url como campo para definir o destino a que o usuário vai ir. É obrigatório usar esse campo no caso de páginas de destino dinâmicas. |
Ad.click_through_url |
Bid.adomain |
Precisa ser definido se o bidder pretende dar lances. Esse é o conjunto de URLs de destino para o snippet, incluindo os URLs que o usuário acessará se clicar no anúncio exibido, além dos URLs visíveis no anúncio renderizado. Não inclua chamadas intermediárias para o servidor de anúncios que não estejam relacionadas à página de destino final. Um BidResponse que retorna um snippet ou anúncio em vídeo, mas declara que não há Para anúncios não nativos, ele não é usado para rastreamento de cliques ou qualquer outra funcionalidade de anúncio. Ele é usado apenas como uma declaração de URL de destino. Para anúncios nativos, se |
NativeAd.click_tracking_urls |
Link.clicktrackers |
Opcional. URLs adicionais que permitem aos anunciantes rastrear os cliques do usuário no anúncio. |
Ad.ad_choices_destination_url |
BidExt.ad_choices_destination_url |
Link para uma página de preferências ou desativação de anúncios. Se presente, um ícone padrão das 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 na resposta do lance. |
Ad.impression_tracking_url |
NativeResponse.imptrackers |
A impressão nativa precisa ser rastreada com
impression_tracking_url no protótipo de lances em tempo real do Authorized Buyers
ou nos imptrackers nativos no OpenRTB. |
Campos obrigatórios e recomendados
required_fields
e recommended_fields
são especificados pelo editor. Mostramos como converter esses campos de bits para determinar se um campo é obrigatório ou recomendado.
Um campo de bit usa cada bit de um valor binário para armazenar uma instrução
verdadeiro ou falso, equivalente ao envio de muitos indicadores booleanos, como
is_logo_required
, is_header_required
etc., mas todos
empacotados juntos.
Exemplo
Para este exemplo, usaremos um valor required_fields
de
1085
.
Primeiro, encontre o valor binário equivalente:
10000111101
Depois de ter o valor binário, é possível verificar os bits para ver se um campo é obrigatório (1) ou não é obrigatório (0).
A tabela abaixo mapeia os campos para seu local no valor binário. Leia o binário da direita para a esquerda, com o 1 bit correspondente ao local mais à direita do valor binário.
Campo | Posicionamento de valores binários (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 valor binário de exemplo 10000111101
, o 1 bit
(mais à direita) é 1
, significando um valor obrigatório. De acordo com a
tabela, o 1 bit corresponde a HEADLINE
.
O de 2 bits (segundo valor da direita) é 0
, o que significa que não é obrigatório. Os 2 bits correspondem a BODY
.
Veja todos os campos obrigatórios interpretados no nosso 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 do NativeAdTemplate
Ao receber uma solicitação de lance com inventário nativo, ela conterá um BidRequest.adSlot[].native_ad_template preenchido.
A mensagem NativeAdTemplate
fornece especificações para:
- Campos obrigatórios ou recomendados.
- dimensões de imagens, logotipos e ícones de apps.
- 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 da versão nativa
Ao dar lances em inventário nativo, um comprador precisa preencher
BidResponse.ad[].native_ad
com os 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
JSON do OpenRTB
Protobuf do OpenRTB
Solicitações de lance de vídeo
Exemplos de respostas do lance
Os valores nessa resposta não correspondem às solicitações correspondentes acima. No entanto, se o modelo na solicitação sugerir campos obrigatórios/opcionais, as respostas seguirão esses requisitos.