Объявления AMPHTML поверх RTB

На этой странице описано, как начать использовать объявления AMPHTML с RTB. Ознакомьтесь с ресурсами ниже, чтобы получить дополнительную информацию об объявлениях AMPHTML и инструментах, которые помогут вам начать работу.

Высокоуровневый подход

Запрос ставки RTB

Запрос ставки RTB указывает, поступает ли запрос со страницы AMP, а также требования к объявлениям AMPHTML.

OpenRTB

AMP-страница

message SiteExt {
  enum AmpPage {
    // This is not an AMP page.
    DIALECT_HTML = 0;

    // This is an Amp page.
    DIALECT_HTML_AMP = 1;
  }

  // Whether this is an AMP page or not. Omitted if unknown.
  optional AmpPage amp = 1;
  enum VisibilityState {
    VISIBILITY_STATE_UNKNOWN = 0;

    // The page is at least partially visible. For example, in the foreground
    // tab of a non-minimized window.
    VISIBILITY_STATE_VISIBLE = 1;

    // The page is not visible to users. For example, when the page is in a
    // background browser tab, or in a minimized window.
    VISIBILITY_STATE_HIDDEN = 2;
  }

  // The visibility state of the web page containing the ad slot.
  // See https://www.w3.org/TR/page-visibility/.
  // [AdX: BidRequest.page_visibility]
  optional VisibilityState page_visibility = 2 [default =
    VISIBILITY_STATE_UNKNOWN];

  // Information about a browser window's user activation state. See
  // https://html.spec.whatwg.org/multipage/interaction.html#the-useractivation-interface.
  message UserActivation {
    // Indicates whether a user has completed an interaction since page load.
    optional bool wasact = 1;

    // Indicates whether a user is currently interacting with the page.
    optional bool isact = 2;
  }

  // User activation information from the browser for the current request, if
  // the request is for a web page.
  optional UserActivation uact = 5;

  // The set of possible web navigation types that predicate a page load. Each
  // of these types may have different performance characteristics. For example,
  // users going back and forth might experience a faster site than users
  // performing navigation for the first time or submitting forms. See
  // https://w3c.github.io/navigation-timing/#dom-performancenavigationtiming-type.
  enum NavigationType {
    NAVIGATION_TYPE_UNKNOWN = 0;

    // Navigation started by clicking a link, entering the URL in the browser's
    // address bar, form submission, or initializing through a script operation
    // other than reload and back_forward.
    NAVIGATION_TYPE_NAVIGATE = 1;

    // Navigation is through the browser's reload operation, location.reload(),
    // or a Refresh pragma directive like
    // <meta http-equiv="refresh" content="300">.
    NAVIGATION_TYPE_RELOAD = 2;

    // Navigation is through the browser's history traversal operation.
    NAVIGATION_TYPE_BACK_FORWARD = 3;

    // Navigation is initiated by a prerender hint (deprecated). See
    // https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/rel/prerender.
    NAVIGATION_TYPE_PRERENDER = 4;
  }

  // The type of browser navigation that led to the current page. Unset for
  // non-web ad requests.
  optional NavigationType ntype = 6;

  // Indicates that the request is using semi-transparent branding,
  // which means only a truncated version of the request URL will
  // be provided. This decision is made by the publisher, see
  // https://support.google.com/admanager/answer/4584891#urls for context.
  optional bool is_semi_transparent_request = 3;

  // The domain of the partner (of the site owner) with ownership
  // of some portion of ad inventory on the site. The partner's ads.txt file
  // will be hosted here. More detail at
  // http://iabtechlab.com/wp-content/uploads/2021/03/ctv-app-ads-explainer-guide.pdf
  optional string inventorypartnerdomain = 4;
}

Требования к объявлениям AMPHTML

// Ad Exchange extensions for the Imp object.
message ImpExt {
...
  // Possible requirement types for AMP ads.
  enum AmpAdRequirementType {
    // AMP ad requirements unknown.
    UNKNOWN_AMP_AD_REQUIREMENT_TYPE = 1;
    // AMP ads are not allowed.
    AMP_AD_NOT_ALLOWED = 2;
    // Either AMP ads or non-AMP ads are allowed;
    // AMP ads are not early rendered.
    AMP_AD_ALLOWED_AND_NOT_EARLY_RENDERED = 3;
    // Either AMP ads or non-AMP ads are allowed;
    // AMP ads are early rendered.
    AMP_AD_ALLOWED_AND_EARLY_RENDERED = 4;
    // AMP ads are required.
    // Ads that are non-AMP may be rejected by the publisher.
    AMP_AD_REQUIRED = 5;
    // Exchange-specific values above 500.
  }
  optional AmpAdRequirementType ampad = 8
    [default = UNKNOWN_AMP_AD_REQUIREMENT_TYPE];
}

Авторизованные покупатели с назначением ставок в режиме реального времени

AMP-страница

// Whether this is an AMP page or not.
enum AmpPage {
  // AMP page status unknown.
  UNKNOWN_AMP_PAGE = 0;

Требования к объявлениям AMPHTML

// Possible requirement types for AMP ads.
enum AmpAdRequirementType {
  // AMP ad requirements unknown.
  UNKNOWN_AMP_AD_REQUIREMENT_TYPE = 0;

Ответ на заявку в режиме реального времени

OpenRTB

В OpenRTB 3.0 и сопутствующей общей модели рекламы несколько дополнений для поддержки рекламы AMPHTML включены в самые последние проекты спецификаций IAB, включая следующие.

Делать ставку Поле Атрибут Тип Описание
Запрос Site.amp amp целое число Поле Site.amp указывает, отображается ли страница в AMP, опускается, если неизвестно:
0 = страница не AMP
1 = страница создана с использованием AMP HTML.
Запрос ampformat rend целое число Спецификация формата AMP определяет требования и режим отображения объявлений AMPHTML:
1 = требования к AMP-объявлениям неизвестны.
2 = AMP-объявления запрещены.
3 = разрешены как AMP-объявления, так и не-AMP-объявления; AMP-объявления не отображаются заранее
4 = разрешены как AMP-объявления, так и не-AMP-объявления, а AMP-объявления отображаются заранее.
5 = требуются AMP-объявления. Объявления, не являющиеся AMP, могут быть отклонены издателем.
500+ = значения, специфичные для биржи; должно быть доведено до сведения участников торгов заранее
Ответ display curl нить В ответ на заявку был добавлен display.curl , позволяющий отправлять креативы через URL-адрес, включая поддержку объявлений AMPHTML.
Это URL-адрес, по которому будет найдена разметка объявления. Применимо к таким типам объявлений, как AMP-объявления, VAST, DAAST и Native. Обычно в данном объявлении допустимо только одно из значений: adm или curl.

Авторизованные покупатели с назначением ставок в режиме реального времени

Поле BidResponse.Ad.amp_ad_url в ответах на запросы ставок Авторизованных покупателей принимает URL-адрес, указывающий на содержание объявления AMPHTML. Это же поле существует как расширение объекта Bid в реализации Google OpenRTB.

// The URL to fetch an AMPHTML ad. Only one of the following should be set:
// html_snippet, video_url, amp_ad_url, native_ad.
optional string amp_ad_url = 23;

Проверка действительного AMPHTML

Чтобы объявления AMPHTML отображались заранее, биржа должна их проверить и подписать, указав, что объявление написано в формате amp4ads <html amp4ads> .

Объявления, соответствующие AMPHTML, будут досрочно отображаться на страницах AMP. Объявления, которые не проверены как действительные AMPHTML, будут отображаться с той же скоростью, что и объявления без AMPHTML.

В amp_ad_url следует возвращать только объявления AMPHTML.

В будущем, если издателю потребуются только объявления AMPHTML, объявления, не подписанные как AMPHTML, отображаться не будут.

При использовании авторизованных покупателей с участников торгов по-прежнему будет взиматься плата, если они вернут объявление, не являющееся AMPHTML, в рекламное место, необходимое для размещения объявлений AMPHTML.

Извлечение на стороне сервера

Чтобы объявления AMPHTML отображались раньше, контент объявления AMPHTML должен отображаться без дополнительных переходов от клиента. Это сделано для того, чтобы избежать ухудшения пользовательского опыта из-за задержки рекламы и дополнительных вызовов на стороне клиента.

После того, как участник торгов выиграет аукцион, биржа выполнит межсерверный запрос для получения рекламного контента AMPHTML, расположенного по URL-адресу, указанному в amp_ad_url . Креативные серверы должны отвечать и возвращать контент в течение 300 мс.

Объявление AMPHTML, возвращенное с креативного сервера, будет вставлено в рекламное место и впоследствии отображено. Обратите внимание, что допустимое объявление AMPHTML не может содержать iframe или другие теги <amp-ad> . Дополнительную информацию см. в спецификации объявлений AMPHTML .

Функция только для бета-версии: если вам это нужно, свяжитесь со своей командой по работе с клиентами.

Во время получения объявления AMPHTML с сервера на сервер (указанного в amp_ad_url ) Авторизованные покупатели могут передавать HTTP-заголовок и IP-адрес из браузера пользователя на креативный сервер. Это гарантирует, что творческий сервер получит информацию, аналогичную той, которая отправляется при стандартной выборке на стороне клиента. В некоторых случаях IP-адрес может быть сокращен до первых 3 байтов (IPv4) или первых 6 байтов (IPv6). Если вам нужна эта функция, свяжитесь со своей командой по работе с клиентами. Вот пример HTTP-заголовка:

URL-адреса отслеживания показов и макросы кликов

Покупатели RTB часто включают трекеры показов в качестве структурированного поля в ответ на запрос ставки (это Bid.burl , «URL-адрес уведомления о платеже» в OpenRTB 2.5).

В случае с Авторизованными покупателями они будут уволены на стороне клиента; amp-pixel активирует URL-адреса отслеживания при отображении объявления. amp-analytics может обрабатывать более сложные случаи отслеживания, помимо рендеринга.

Объявления AMPHTML должны содержать действительный макрос кликов в AMPHTML. Обычно это выглядит примерно так:

<a href="%%CLICK_URL_UNESC%%http%3A%2F%2my.adserver.com%2Fsome%2Fpath%2Fhandleclick%3Fclick%3Dclk"></a>
<a href=”https://my.adserver.com/click?google_click_url=%%CLICK_URL_ESC%%”></a>

Креативы часто включают в код креатива пиксели , соответствующие файлам cookie . В этом случае объявления AMPHTML могут использовать компоненты amp-pixel и amp-analytics . Если ваш вариант использования не может быть реализован с помощью amp-analytics или amp-pixel , откройте проблему на GitHub , чтобы обсудить альтернативные варианты. Мы приветствуем новые расширения, которые могут широко использоваться различными компаниями. См. подробные рекомендации или техническое руководство по созданию нового расширения.

Примеры URL-адресов AMP-объявлений для тестирования

Для тестирования вы можете использовать следующий образец рекламного контента AMPHTML:

Ресурсы

Проект AMP и Google выпустили ряд ресурсов, которые помогут вам начать работу:

Создание рекламы в AMP
Предложения по RTB для IAB / OpenRTB Group