AMPHTML-Anzeigen mit Echtzeitgebotsfunktion

Auf dieser Seite werden die ersten Schritte mit AMPHTML-Anzeigen mit Echtzeitgeboten beschrieben. Weitere Informationen zu AMPHTML-Anzeigen und Tools finden Sie unten im Abschnitt Ressourcen.

Gesamtansatz

RTB-Gebotsanfrage

Aus der Gebotsanfrage für Echtzeitgebote geht hervor, ob die Anfrage von einer AMP-Seite stammt und welche Anforderungen für AMPHTML-Anzeigen gelten.

OpenRTB

AMP-Seite

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

Anforderungen an AMPHTML-Anzeigen

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

RTB-Funktion in Authorized Buyers

AMP-Seite

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

Anforderungen an AMPHTML-Anzeigen

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

RTB-Gebotsantwort

OpenRTB

In OpenRTB 3.0 und dem zugehörigen Advertising Common Model wurden mehrere Ergänzungen zur Unterstützung von AMPHTML-Anzeigen in die neuesten Entwürfe des IAB aufgenommen, darunter:

Gebot Feld Attr Typ Beschreibung
Anfragen Site.amp amp Ganzzahl Mit dem Feld Site.amp wird angegeben, ob die Seite in AMP gerendert wird. Wird weggelassen, wenn unbekannt, wird Folgendes weggelassen:
0 = Seite hat keine AMP-Seite
1 = Seite wurde mit AMP-HTML erstellt
Anfragen ampformat rend Ganzzahl Die AMP-Formatspezifikation gibt die Anforderungen und das Renderingverhalten für AMPHTML-Anzeigen an:
1 = Anforderungen an AMP-Anzeigen sind unbekannt
2 = AMP-Anzeigen sind nicht zulässig
3 = AMP-Anzeigen oder Nicht-AMP-Anzeigen sind zulässig; AMP-Anzeigen werden nicht frühzeitig gerendert
4 = AMP-Anzeigen oder Nicht-AMP-Anzeigen sind zulässig und AMP-Anzeigen werden frühzeitig gerendert.
5 = AMP-Anzeigen sind erforderlich. Anzeigen ohne AMP können vom Publisher abgelehnt werden.
500+ = plattformspezifische Werte; sollten den Bietern vorrangig mitgeteilt werden
Antwort display curl String In der Gebotsantwort wurde display.curl hinzugefügt, damit Creatives über eine URL gesendet werden können und AMPHTML-Anzeigen unterstützt werden.
Das ist die URL, unter der sich das Creative-Markup befindet. Gilt für Creative-Typen wie AMP-Anzeigen, VAST, DAAST und native Anzeigen. Normalerweise ist nur entweder "adm" oder "curl" in einer bestimmten Anzeige gültig.

RTB-Funktion in Authorized Buyers

Im Feld BidResponse.Ad.amp_ad_url in Authorized Buyers-Gebotsantworten ist eine URL zulässig, die auf AMPHTML-Anzeigencontent verweist. Das gleiche Feld existiert als Erweiterung im Objekt Bid in der OpenRTB-Implementierung von Google.

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

Überprüfung von gültigem AMPHTML

Damit AMPHTML-Anzeigen frühzeitig gerendert werden können, müssen sie von der Anzeigenplattform verifiziert und signiert werden, um darauf hinzuweisen, dass die Anzeige im Creative-Format „amp4ads <html amp4ads>“ geschrieben wurde.

Anzeigen mit gültigem AMPHTML-Code dürfen auf AMP-Seiten vorzeitig gerendert werden. Anzeigen, die nicht als gültiger AMPHTML-Code bestätigt wurden, werden mit derselben Geschwindigkeit gerendert wie Nicht-AMPHTML-Anzeigen.

Nur AMPHTML-Anzeigen sollten im amp_ad_url zurückgegeben werden.

Wenn ein Publisher künftig nur AMPHTML-Anzeigen benötigt, werden Anzeigen, die nicht als AMPHTML signiert sind, nicht gerendert.

Bei Authorized Buyers fallen für Bieter weiterhin Kosten an, wenn sie eine Anzeige, die nicht auf AMPHTML basiert, an eine Anzeigenfläche zurückgeben, für die AMPHTML-Anzeigen erforderlich sind.

Serverseitiger Abruf

Damit AMPHTML-Anzeigen frühzeitig gerendert werden können, müssen die Inhalte ohne zusätzliche Hops vom Client gerendert werden. Damit soll eine negative Nutzererfahrung aufgrund von Anzeigenlatenz und zusätzlichen clientseitigen Aufrufen vermieden werden.

Wenn ein Bieter die Auktion gewinnt, sendet die Anzeigenplattform eine Server-zu-Server-Anfrage, um den AMPHTML-Anzeigeninhalt unter der in amp_ad_url angegebenen URL abzurufen. Creative-Server müssen innerhalb von 300 ms antworten und Inhalte zurückgeben.

Die vom Creative-Server zurückgegebene AMPHTML-Anzeige wird in die Anzeigenfläche eingefügt und anschließend gerendert. Eine gültige AMPHTML-Anzeige darf keine iFrames oder andere <amp-ad>-Tags enthalten. Weitere Informationen finden Sie in den Spezifikationen für AMPHTML-Anzeigen.

Nur Beta-Funktion: Wenden Sie sich an Ihr Account-Management-Team, wenn dies erforderlich ist.

Wenn die in amp_ad_url angegebene AMPHTML-Anzeige von einem Server zu Server abgerufen wird, können in Authorized Buyers der HTTP-Header und die IP-Adresse vom Browser des Nutzers an den Creative-Server übergeben werden. Dadurch erhält der Creative-Server Informationen, die denen eines standardmäßigen clientseitigen Abrufs ähneln. In einigen Fällen wird die IP-Adresse möglicherweise auf die ersten 3 Byte (IPv4) oder die ersten 6 Byte (IPv6) gekürzt. Wenden Sie sich an Ihr Account-Management-Team, wenn Sie diese Funktion benötigen. Hier ein Beispiel für einen HTTP-Header:

Impressions-Tracking-URLs und Klick-Makros

EZG-Käufer fügen der Gebotsantwort oft Impressions-Tracker als strukturiertes Feld hinzu. Dies ist Bid.burl, die „URL der Abrechnungsmitteilung“ in OpenRTB 2.5.

Bei Authorized Buyers werden diese clientseitig ausgelöst. Mit amp-pixel werden Tracking-URLs ausgelöst, wenn das Creative gerendert wird. Mit amp-analytics können erweiterte Tracking-Anwendungsfälle über das Rendering hinausgehen.

AMPHTML-Anzeigen müssen ein gültiges Klick-Makro im AMPHTML-Code enthalten. In der Regel sieht dies etwa so aus:

<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>

Im Creative-Code sind häufig Pixel für den Cookie-Abgleich enthalten. Für AMPHTML-Anzeigen können in diesem Anwendungsfall die Komponenten amp-pixel und amp-analytics verwendet werden. Wenn Ihr Anwendungsfall mithilfe von amp-analytics oder amp-pixel nicht erfüllt werden kann, öffnen Sie ein GitHub-Problem, um alternative Optionen zu besprechen. Wir freuen uns über neue Erweiterungen, die von vielen verschiedenen Unternehmen genutzt werden können. Weitere Informationen zum Erstellen einer neuen Erweiterung findest du in den detaillierten Richtlinien oder in einem technischen Leitfaden.

Beispiel-URLs für AMP-Anzeigen zu Testzwecken

Sie können die folgenden AMPHTML-Beispielanzeigeninhalte zum Testen verwenden:

Ressourcen

Für das AMP-Projekt und Google haben wir eine Reihe von Ressourcen veröffentlicht, die Ihnen den Einstieg erleichtern:

Anzeigen in AMP erstellen
RTB-spezifische Vorschläge an IAB / OpenRTB-Gruppe