采用实时出价的 AMPHTML 广告

本页面介绍了如何开始使用 AMPHTML 广告 实时出价。查看下面的资源以了解更多信息 AMPHTML 广告和工具可帮助您轻松上手。

概要方法

实时出价请求

实时出价请求会指明请求是否来自 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];
}

Authorized Buyers 实时出价

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

在<ph type="x-smartling-placeholder"></ph>中 OpenRTB 3.0 以及随附的广告 通用模型: 由 IAB 发布的最新规范草案,其中包括以下内容。

出价 字段 Attr 类型 说明
请求 Site.amp amp integer Site.amp 字段指示网页是否呈现 在 AMP 中,未知时应将其省略:
0 = 网页不是 AMP 网页
1 = 网页是使用 AMP HTML 构建的
请求 ampformat rend integer AMP 格式规范指明了相关要求和呈现方式。 AMPHTML 广告的行为:
1 = AMP 广告要求未知
2 = 不允许使用 AMP 广告
3 = 可以是 AMP 广告,也可以是非 AMP 广告;AMP 广告未提前呈现
4 = 可以是 AMP 广告,也可以是非 AMP 广告,且 AMP 广告会提前呈现
5 = 必须选择 AMP 广告。非 AMP 广告可能会被发布商拒绝
500+ = 广告交易平台特定的值;应事先通知出价方
响应 display curl 字符串 在出价响应中,已添加 display.curl,以便能够提交 广告素材,包括对 AMPHTML 广告的支持。
广告素材标记所在的网址。适用于以下广告素材类型: AMP 广告、VAST 以及 DAAST 和原生。通常, adm 或 curl 中的一个在给定广告中有效。

Authorized Buyers 实时出价

Authorized Buyers 出价中的 BidResponse.Ad.amp_ad_url 字段 响应接受指向 AMPHTML 广告内容的网址。存在相同的字段 作为扩展,在 Google 的 OpenRTB 的 Bid 对象中 实施。

// 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 将不会呈现。

使用 Authorized Buyers 时,如果出价方返回 非 AMPHTML 广告映射到需要 AMPHTML 广告的广告位。

服务器端提取

若要提前呈现 AMPHTML 广告,必须呈现 AMPHTML 广告内容 而无需从客户端进行其他跃点这旨在避免 广告延迟和额外的客户端调用导致用户体验不佳。

出价工具在竞价中胜出后 服务器到服务器请求,检索位于相应网址上的 AMPHTML 广告内容 在 amp_ad_url 中提供。广告素材服务器必须响应并返回 在 300 毫秒以内。

从广告素材服务器返回的 AMPHTML 广告将被注入到 然后再呈现请注意,有效的 AMPHTML 广告不能包含 iframe 或其他 <amp-ad> 代码。请参阅 AMPHTML 广告规范

仅限 Beta 版的功能:如果您需要此功能,请与您的客户支持团队联系

在服务器到服务器检索 AMPHTML 广告期间( amp_ad_url),Authorized Buyers 可以传递 HTTP 标头和 IP 从用户浏览器传送到广告素材服务器这样可确保广告素材 服务器会接收与标准客户端 提取。在某些情况下,IP 地址可能会被截断为仅前 3 个字节 (IPv4) 或前 6 个字节 (IPv6)。如果您需要,请与您的客户支持团队联系 功能。以下是 HTTP 标头示例:

<ph type="x-smartling-placeholder">

展示跟踪网址和 Click 宏

实时出价买方通常会将展示跟踪代码作为结构化字段添加到 出价响应(即 Bid.burl, OpenRTB 2.5)。

使用 Authorized Buyers 时,这些代码将在客户端触发;amp-pixel 在广告素材呈现时触发跟踪网址。amp-analytics 可以处理渲染之外的更高级跟踪用例。

AMPHTML 广告必须包含有效的 Click 宏, 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-pixelamp-analytics 这个应用场景所需的组件如果您的用例无法通过 amp-analyticsamp-pixel,打开 讨论的 GitHub 问题 备选选项我们欢迎各种新扩展程序, 许多不同的公司。请参阅 详细 指南技术 指南

用于测试的 AMP 广告网址示例

您可以使用以下示例 AMPHTML 广告内容进行测试:

资源

AMP 项目和 Google 发布了许多资源,以帮助您顺利上手:

在 AMP 中制作广告
向 IAB / OpenRTB Group 提交实时出价 (RTB) 专用提案