이 페이지에서는 RTB에서 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
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 |
string | 입찰 응답에서 AMP HTML 광고 지원을 포함하여 URL을 통해 광고 소재를 제출할 수 있도록 display.curl 가 추가되었습니다.이 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 HTML인 광고는 AMP 페이지에서 조기에 렌더링할 수 있습니다. 유효한 AMP HTML로 확인되지 않은 광고는 AMP가 아닌 광고와 동일한 속도로 렌더링됩니다.
amp_ad_url
에는 AMP HTML 광고만 반환되어야 합니다.
향후 게시자가 AMP HTML 광고만 요구하는 경우 AMP HTML로 서명되지 않은 광고는 렌더링되지 않습니다.
Authorized Buyers의 경우 입찰자가 AMP HTML이 아닌 광고를 AMP HTML 광고가 필요한 광고 슬롯에 반환하는 경우에도 비용이 청구됩니다.
서버 측 가져오기
AMP HTML 광고를 조기에 렌더링하려면 클라이언트의 추가 홉 없이 AMP HTML 광고 콘텐츠를 렌더링해야 합니다. 이는 광고 지연 시간 및 추가 클라이언트 측 호출로 인한 열악한 사용자 경험을 방지하기 위한 것입니다.
입찰자가 입찰에서 낙찰되면 거래소는 서버 간 요청을 실행하여 amp_ad_url
에 제공된 URL에 있는 AMP HTML 광고 콘텐츠를 검색합니다. 광고 소재 서버는 300ms 이내에 응답하고 콘텐츠를 반환해야 합니다.
광고 소재 서버에서 반환된 AMP HTML 광고가 광고 슬롯에 삽입되고 이어서 렌더링됩니다. 유효한 AMP HTML 광고에는 iframe 또는 기타 <amp-ad>
태그가 포함될 수 없습니다. 자세한 내용은
AMPHTML 광고 사양을 참고하세요.
베타 전용 기능: 이 기능이 필요한 경우 계정팀에 문의하세요.
AMPHTML 광고 (amp_ad_url
에 지정됨)를 서버 간에 가져오는 중에 Authorized Buyers는
사용자의 브라우저에서 광고 소재 서버로 HTTP 헤더와 IP를
전달할 수 있습니다. 이렇게 하면 광고 소재 서버가
표준 클라이언트 측 가져오기에서 전송된 정보와 유사한 정보를
수신하게 됩니다. 경우에 따라 IP 주소가 처음 3바이트(IPv4) 또는 처음 6바이트 (IPv6)로만 잘릴 수 있습니다. 이 기능이 필요한 경우 계정팀에 문의하세요. 다음은 샘플 HTTP 헤더입니다.
노출 추적 URL 및 클릭 매크로
RTB 구매자는 입찰 응답에 노출 추적기를 구조화된 필드로 포함하는 경우가 많습니다 (OpenRTB 2.5의 '청구 알림 URL'인 Bid.burl
).
Authorized Buyers의 경우 클라이언트 측에서 실행되고, amp-pixel은 광고 소재가 렌더링될 때 추적 URL을 실행합니다. amp-analytics는 렌더링 이외의 고급 추적 사용 사례를 처리할 수 있습니다.
AMP HTML 광고는 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-pixel 및 amp-analytics 구성요소를 사용할 수 있습니다. amp-analytics
또는 amp-pixel
로는 사용 사례를 수용할 수 없다면 GitHub 문제를 열어 대체 옵션을 논의합니다. Google에서는 다양한 회사에서 광범위하게 사용할 수 있는 새로운 확장 프로그램을 환영합니다. 새 확장 프로그램 빌드에 관한 자세한 가이드라인 또는 기술 가이드를 참고하세요.
테스트용 샘플 AMP 광고 URL
다음과 같은 샘플 AMP HTML 광고 콘텐츠를 사용하여 테스트할 수 있습니다.
자료
AMP 프로젝트와 Google은 게시자가 시작하는 데 도움이 되는 많은 리소스를 발표했습니다.
- AMP에서 광고 만들기
- AMPHTML 광고 소재 형식 사양 (GitHub)
- AMPHTML 광고 개요 (GitHub)
- AMP HTML 광고 AMP 프로젝트의 웹사이트
- AMP HTML 광고 예
- 속도 비교: 일반 광고와 비교하여 AMP HTML 광고의 로드 속도를 확인합니다. 3G 연결 시 가장 잘 보입니다.
- IAB / OpenRTB 그룹에 RTB 관련 제안 전달