RTB를 통한 AMP HTML 광고

이 페이지에서는 AMP HTML 광고를 실시간 입찰. 자세한 내용은 아래의 리소스를 참고하세요. AMP HTML 광고와 도구를 시작하는 데 도움이 됩니다

대략적인 접근 방식

RTB 입찰 요청

RTB 입찰 요청은 요청이 AMP 페이지에서 발생했는지 여부를 나타냅니다. AMP HTML 광고의 요구사항을 살펴보겠습니다

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

AMP HTML 광고의 요건

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

AMP 페이지

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

AMP HTML 광고의 요건

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

RTB 입찰 응답

OpenRTB

<ph type="x-smartling-placeholder"></ph> 후 OpenRTB 3.0 및 함께 제공되는 광고 일반 모델에는 AMP HTML 광고를 지원하기 위한 몇 가지 추가 기능이 IAB의 최신 초안 사양에서 확인할 수 있습니다.

입찰가 필드 Attr 유형 설명
요청 Site.amp amp 정수 Site.amp 필드는 페이지 렌더링 여부를 나타냅니다. AMP 형식, 알 수 없는 경우 생략됨:
0 = AMP가 아닌 페이지
1 = AMP HTML로 페이지가 작성됨
요청 ampformat rend 정수 AMP 형식 사양은 AMP HTML 광고의 동작:
1 = AMP 광고 요건 알 수 없음
2 = AMP 광고가 허용되지 않음
3 = AMP 광고 또는 비 AMP 광고 허용 AMP 광고는 조기에 렌더링되지 않습니다.
4 = AMP 광고 또는 AMP가 아닌 광고가 허용되며 AMP 광고가 조기에 렌더링됨
5 = AMP 광고가 필요합니다. AMP가 아닌 광고는 게시자가 거부할 수 있습니다.
500+ = 거래소별 값 입찰할 수 있는 조건을
응답 display curl 문자열 입찰 응답에 제출할 수 있도록 display.curl이(가) 추가되었습니다. AMP HTML 광고 지원을 포함하여 URL을 통해 광고 소재를 만들 수 있습니다.
이 URL에서 광고 소재 마크업이 발견됩니다. 다음과 같은 광고 소재 유형에 적용할 수 있습니다. AMP 광고, VAST, DAAST, 네이티브 광고를 지원합니다. 일반적으로 특정 광고에서는 adm 또는 curl 중 하나만 유효합니다.

Authorized Buyers RTB

Authorized Buyers 입찰의 BidResponse.Ad.amp_ad_url 필드 응답은 AMP HTML 광고 콘텐츠를 가리키는 URL을 허용합니다. 동일한 필드가 있습니다. 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;

유효한 AMP HTML 확인

AMP HTML 광고를 조기에 렌더링하려면 거래소에서 즉, 광고가 amp4ads <html amp4ads> 광고 소재 형식으로 작성되었음을 나타냅니다.

AMP 페이지에서 유효한 AMP HTML 광고가 일찍 렌더링될 수 있습니다. 광고 유효한 AMP HTML로 확인되지 않은 페이지는 AMP HTML이 아닌 광고를 게재할 수 있습니다.

amp_ad_url에는 AMP HTML 광고만 반환되어야 합니다.

향후 게시자가 AMP HTML 광고만 요구하는 경우 AMP HTML은 렌더링되지 않습니다.

Authorized Buyers에서는 입찰자가 AMP HTML이 아닌 광고를 AMP HTML 광고가 필요한 광고 슬롯에 추가합니다.

서버 측 가져오기

AMP HTML 광고를 조기에 렌더링하려면 AMP HTML 광고 콘텐츠를 렌더링해야 함 스테이트리스(Stateless) 컨테이너를 실행할 수 있습니다 이는 Google에서 광고 지연 시간 및 추가 클라이언트 측 호출로 인한 사용자 환경이 저하될 수 있습니다.

입찰자가 낙찰되면 거래소는 URL에 있는 AMP HTML 광고 콘텐츠를 가져오기 위한 서버 간 요청 amp_ad_url에 제공됩니다. 광고 소재 서버가 응답하고 300ms 이내에 콘텐츠를 전송합니다.

광고 소재 서버에서 반환된 AMP HTML 광고는 이후에 렌더링됩니다. 유효한 AMP HTML 광고에는 iframe 또는 기타 <amp-ad> 태그 자세한 내용은 AMP HTML 광고 사양을 참조하세요.

베타 전용 기능: 필요한 경우 계정팀에 문의하세요.

AMP HTML 광고( amp_ad_url)의 경우, Authorized Buyers는 HTTP 헤더 및 광고 소재 서버로 전송됩니다. 이렇게 하면 광고 소재가 서버에서 표준 클라이언트 측에서 전송한 것과 유사한 정보를 가져올 수 있습니다 경우에 따라 IP 주소가 처음 3바이트로만 잘릴 수 있습니다. (IPv4) 또는 처음 6바이트 (IPv6) 필요한 경우 계정팀에 문의하세요. 기능을 사용할 수 있습니다. 다음은 샘플 HTTP 헤더입니다.

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

노출 추적 URL 및 클릭 매크로

RTB 구매자는 종종 입찰 응답 (Bid.burl, OpenRTB 2.5)을 사용합니다.

Authorized Buyers의 경우 고객 측에서 실행됩니다. amp-pixel 는 광고 소재가 렌더링될 때 추적 URL을 실행합니다. amp-analytics 렌더링 이상의 고급 추적 사용 사례를 처리할 수 있습니다.

AMP HTML 광고는 다음 위치에 유효한 클릭 매크로를 포함해야 합니다. 확인해 보겠습니다. 일반적으로 코드 형식은 다음과 같습니다.

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

광고 소재는 종종 쿠키를 포함함 일치하는 픽셀이 있는지 확인하세요. AMP HTML 광고는 amp-pixelamp-analytics 구성요소를 살펴보겠습니다 머신러닝 모델을 사용하여 사용 사례를 amp-analytics 또는 amp-pixel, GitHub 문제에서 논의하기 사용할 수 있습니다. Google은 조직 내에서 널리 사용할 수 있는 새로운 확장 프로그램을 확인할 수 있습니다. 자세한 내용은 상세한 가이드라인 또는 기술적인 새 확장 프로그램 빌드 가이드를 참조하세요.

테스트용 샘플 AMP 광고 URL

다음 샘플 AMP HTML 광고 콘텐츠를 테스트에 사용할 수 있습니다.

리소스

AMP 프로젝트와 Google에서는 시작하는 데 도움이 되는 다양한 리소스를 공개했습니다.

AMP에서 광고 제작하기
IAB / OpenRTB 그룹에 RTB 관련 제안