RTB

From Справочник сервиса Kadam.net
Revision as of 00:00, 14 February 2019 by FuzzyBot (Talk | contribs) (Обновление для соответствия новой версии исходной страницы.)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search
Other languages:

Введение

RTB аукцион (SSP) предоставляет владельцам рекламных площадок возможность вести торги в реальном времени выбирая самые выгодные предложения, которые предоставляют рекламодатели.

Как работает RTB (real-time bidding)

Real-time bidding (торги в реальном времени) являются взаимодействием уровня серверсервер между рекламным инвентарем на аукционе SSP (sell-side platform) и продавцами (рекламными площадками) по протоколу http post. Весь рекламный инвентарь, который удовлетворяет требования, доступен владельцам площадок посредством RTB инфраструктуры.
Ниже описанный принцип работы аукциона дает краткое понятие о процессе (более детализированное описание смотрите в разделе “Описание рабочего процесса”):

    1. RTB SSP (Real-time bidding sell-side platform) получает рекламный запрос от продавца и отбирает список покупателей для аукциона
    2. RTB SSP отправляет запрос покупателям из выбранного списка
    3. Каждый покупатель из списка получает запрос и оценивает свою возможность участия в торгах, отвечает на запрос
    4. RTB SSP проводит аукцион на основании полученных ставок от покупателей
    5. RTB SSP «доставляет» рекламное объявление победителя торгов среди рекламодателей продавцу рекламного места на площадке
    6. RTB SSP отсылает результаты торгов участникам аукциона

О документе

Документ описывает подключение DSP (demand-side platform) или рекламодателя к RTB SSP (sell-side platform). Интерфейс SSP разработан в соответствии со спецификацией протокола OpenRTB v.2.3
http://www.iab.net/media/file/OpenRTB-API-Specification-Version-2-3.pdf

Термины и определения

Bid request – запрос от RTB SSP отсылаемый покупателям (рекламодателям) для выставления на торг своих рекламных предложений
Bid response – ответ покупателя к RTB SSP в качестве ставки для торгов
CPM (Cost per mille) – цена за одну тысячу показов рекламного объявления
RTB (Real-time bidding) – торги в реальном времени, принцип поставки рекламы продавцу рекламного места в реальном времени
SSP (sell-side platform) – система торгов в реальном времени, представляющая интересы продавцов (владельцев площадок)
DSP (demand-side platform) - рекламная система представляющая интересы покупателей (рекламодателей)
Впечатление - тизер, баннер, отдельное рекламное объявление

Описание рабочего процесса

Каждый запрос к покупателю (рекламодателю) сопровождается следующими шагами:
1. Выбор покупателя в реальном времени
После получения запроса на показ рекламы от продавца (площадки) RTB аукцион выбирает список покупателей для выставления рекламных ставок. Выбираются ставки, которые имеют наибольшие шансы для победы в аукционе.
2. Запрос на ставки (bid request) от RTB SSP
RTB аукцион отправляет запросы выбранным покупателям (рекламодателям). Запрос содержит техническую информацию необходимую для “поставки” рекламного объявления, а также набор таргетингов по данному запросу. Если один и тот же покупатель (рекламодатель) имеет несколько объявлений, которые совпадают с таргетингами запроса от продавца рекламного места, то RTB аукцион включает в торги все подходящие под запрос поступающие ставки.
3. Ответ от покупателя (bid response)
Покупатель получает запрос от RTB аукциона и оценивает возможность участия в торгах. В качестве ответа покупатель отсылает предложение с ценой ставки или не отвечает на запрос, если у него нет предложений по данному запросу. Покупатель должен ответить на запрос в рамках отведенного интервала времени, иначе потеряет возможность участия в торгах. В случае наличия нескольких предложений для торгов, покупатель должен ответить на запрос ответов с ценой на каждое свое предложение, которое он готов выставить на торг.
4. Аукцион
Когда получены все ставки (в отведенное время на принятие ответов от покупателей), происходит аукцион. Продавцы имеют возможность указать минимальную цену для площадки, на которой они продают место. В связи с этим, каждая победившая ставка должна быть выше, чем минимальная цена, которую выставляет продавец места на площадке. Все материалы проходят обязательную модерацию в системе RTB SSP.
5. Нотификация о результатах
RTB SSP отправляет уведомления о результатах каждому участнику в каждом отдельно взятом аукционе.

Запросы к DSP

Запрос к DSP (или покупателю) представляет собой набор информации:

    - о рекламной площадке;
    - о посетителе этой рекламной площадки;
    - об устройстве, с которого посетитель зашел;
    - о списке рекламных мест под рекламу;

Запрос к DSP представлен в json формате, то есть [content_type] => application/json.

Пример запроса DSP/покупателю

Определение объекта
Ниже приводятся определения различных объектов, задействованных в запросе.
Объект запроса предложения
Объект ставки предложения высшего уровня содержит глобально уникальную ставку предложения или ID аукциона. Этот обязательный «ID» атрибут требует, по крайней мере, один «imp» (например, impression) объект. Другие атрибуты являются необязательными, поскольку обмен может устанавливать значения по умолчанию. Колонка «по умолчанию» определяет, как дополнительные параметры должны быть интерпретированы, если явные значения не предусмотрены.

Поле Тип По умолчанию Описание
id string - Уникальный идентификатор ставки запроса, обеспечивающийся путем обмена
imp array of objects - Массив объектов впечатления. Несколько аукционов впечатлений могут быть указаны в одной ставке предложения. Для правильной ставки требуется, по крайней мере, одно предложение.
site object - см. объект сайта
device object - см. объект устройства
user object - см. объект пользователя
ext object - Этот объект является прототипом, который может содержать пользовательские JSON, согласованные сторонами в сделке OpenRTB, поддерживающей гибкость стандартов, определенных в данной спецификации. Описано в примере запроса к DSP / покупателю
at int 2 Принцип аукциона. Если "1", то первый аукцион. Если "2", то второй аукцион. Дополнительные виды аукционов могут быть определены в соответствии с бизнес правилами биржи.

Объект впечатления
Объект «imp» описывает позицию объявления или впечатления на аукционе. Колонка «По умолчанию» определяет, как дополнительные параметры должны быть интерпретированы в случае, если явные значения не предусмотрены.

Поле Тип По умолчанию Описание
id string - Уникальный идентификатор для этого впечатления в контексте ставки предложения (как правило, стоимость начинается с 1, и увеличивается до n величины за n количество показов).
banner Object - Ссылка на объект баннера. Любой баннер или видео объект (или оба, если впечатление позволяет) должны быть включены в представление объекта; оба объекта не обязательно включать. См. Объект баннера
ext object - Этот объект является прототипом, который может содержать пользовательские JSON, согласованные сторонами в сделке OpenRTB
bidfloor float 0 Минимальная ставка для каждого материала, который будет передан в ответе на запрос.
bidfloorcur string RUB Валюта, в которой указана минимальная ставка.

Объект баннера
Объект баннера должен быть включен непосредственно в представление объекта в случае, если впечатление выставлено на аукцион и является отображающимся или мультимедийным. Колонка «По умолчанию» показывает, как дополнительные параметры должны быть интерпретированы, если явные значения не предусмотрены.

Поле Тип По умолчанию Описание
w int32 - Ширина впечатления в пикселях. Некоторые типы объявлений, не ограниченные размером этой области, не требуется, но настоятельно рекомендуется включать эту информацию тогда, когда это возможно.
h int32 - Высота впечатления в пикселях. Некоторые типы объявлений, не ограниченные размером этой области, не требуется, но настоятельно рекомендуется включать эту информацию тогда, когда это возможно.

Объект сайта
Объект сайта должен быть включен, если объявление поддерживает контент, как часть веб-сайта. Запрос ставки не должен содержать и объект сайта, и приложение объекта. Если параметр не указан, его следует рассматривать как неизвестный. Как минимум, это полезно для обеспечения URL страницы или ID сайта, но это не является обязательным.

Поле Тип По умолчанию Описание
id string - ID сайта для обмена
page string - URL страницы, на которой будут показываться впечатления.
domain string - Домен сайта, используемый для блокировки стороны рекламодателя. Например, "foo.com".
cat Array of strings - Массив IAB категорий контента для общего сайта. См. Таблица 6.1 «Категории контента» спецификации OpenRTB 2.1
pagecat Array of strings - Массив IAB категорий контента для текущей страницы. См. Таблица 6.1 «Категории контента» спецификации OpenRTB 2.1
content object - См. Объект контента

Объект контента
Сам объект контента и все его параметры являются необязательными, поэтому значение по умолчанию не предусмотрено. Если параметр не указан, его следует рассматривать как неизвестный. Этот объект описывает контент, в котором появляется впечатление. Этот объект может быть полезен в ситуации, когда синдицированный контент содержит впечатления, не обязательно совпадающие с общим контентом издателя. Обмен может или не может дать полного понимания о той странице, где контент работает в результате метода синдикации.

Поле Обязательное? Тип По умолчанию Описание
keywords Необязательно string - Разделенный запятыми, список ключевых слов, описывающих контент.

Объект устройства
Объект устройства предоставляет информацию, относящуюся к устройству, включая его оборудование, платформы, расположение. Это устройство может относиться к мобильным телефонам, компьютерам, телевизионным приставкам или другим цифровым устройствам.
Сам по себе объект устройства и все его параметры являются необязательными, поэтому значение по умолчанию не предусмотрено. Если параметр не указан, его следует рассматривать как неизвестный.
В целом, наиболее существенное поле – это IP-адрес (чтобы осуществлять гео-поиск для претендента).

Поле Тип По умолчанию Описание
ua String - Браузер-строка агента пользователя
ip String - IPv4-адрес, ближайший к устройству

Объект пользователя
Объект «Пользователь» содержит информацию, известную или полученную о человеке, пользователе устройства. Сам по себе объект пользователя и все его параметры являются необязательными, поэтому значение «по умолчанию» не предусмотрено. Если дополнительный параметр не указан, его следует рассматривать как неизвестный.

Поле Обязательное? Тип По умолчанию Описание
id Обязательно string - Уникальный ID потребителя этого пользователя в аукционе.
buyeruid Необязательно string - ID пользователя в системе DSP
yob Необязательно int32 - Год рождения как 4значное число.
gender Необязательно string - Пол, как "M" мужчины, "Ж" женщины, "O" Другое. (Ноль указывает неизвестный).

Пример запроса DSP / рекламодателю (покупателю)

{
   "id":"140835804423031",
   "imp":[ 
      {
         "id":"1",
         "banner":{
             "w":120,
             "h":120 
         },
         "ext":{
            "ad_type":10, // 10 - teaser, 20 - banner, 40 – clickunder, 70 - video 
            "limit":1 // количество тизеров для тизерного блока 
         }, 
         "bidfloor":1.2, 
         "bidfloorcur":"RUB"
       }
   ],
   "site":{
      "id":"34524253", 
      "page":"http://testdomain.ru/bolezni-u-vzrosluh.html",
      "domain":"testdomain.ru",
      "cat":[
         "IAB7"
      ],
      "pagecat":[
         "IAB7"
      ],
      "content":{
         "keywords": "лечение, детский, болезнь, остеопороз" 
      }
   },
   "device":{
      "ua":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.143 Safari/537.36",
      "ip":"95.31.8.193"
   },
   "user":{
       "id":"ssp140533010201346370"
   },
   "at":2
}

Пример валидного ответа DSP

Определение объекта
Ниже приводятся определения различных объектов, задействованных в ответе на запрос.
Объект ставки ответа
Верхний уровень объекта ставки ответа определен ниже. "ID" атрибут является отражением ID ставки запроса для записи в базу. Требуется, по крайней мере, один объект «seatbid», который включает в себя, по крайней мере, одно впечатление. Другие атрибуты являются необязательными, так как обмен может устанавливать значения «по умолчанию».

Поле Тип Определение
id String ID ставки запроса
cur String Валюта в которой делается ставка. В текущей версии доступна только “RUB”.
seatbid Array of objects Массив объектов seatbid

Объект Seat Bid
Так как ставка запроса может включать в себя несколько предложений, каждый объект "seatbid" может содержать несколько ставок, относящихся к различным предложениям. Таким образом, каждый объект «bid» должен включать ID предложения, к которому он относится, а также цену предложения.

Поле Тип Определение
Bid Array of objects Массив ставок объектов; каждая ставка объекта относится к imp объекту в ставке запроса. Один imp объект может иметь много ставок объектов.

Объект Ставки (Bid)

Поле Тип Определение
id String ID объекта ставки выбирается претендентом для отслеживания и отладки. Полезно, когда для данного места представляется несколько ставок на один показ
impid String ID объекта впечатления, к которому эта ставка применяется.
adid String ID, который ссылается на объявление, чтобы использовать его в случае, если ставка выигрывает.
ext Object Для тизерного формата. Дополнительные расширения ставки объекта.
price Float Ставка цены в тысячу показов.
nurl String Выигрыш уведомления URL. Обратите внимание, что объявление, как правило, размечено, но это не обязательно для возвращающихся через URL
adm String Часть представляющая рекламный баннер в формате HTML или рекламный видеоролик либо ссылка для кликандера
iurl String Только для ответа DSP при запросе видео. Ссылка на рекламный видеоматериал.

Пример валидного ответа DSP при запросе баннера(с html-частью):

{
  "id": "6",
  "seatbid": [
    {
       "bid": [ 
         {
            "id": 1,
            "impid": "1",
            "adid": 1085932,
            "adm": "<a target='_blank' href='http://test_url.com/test'><img src='http://test/test.gif' width='300' height='300'></a>",
            "price": 2.6269636,
            "nurl": "http://domain.ru/?dsp_win&bid=${AUCTION_PRICE}&ads=$ {AUCTION_AD_ID}&auctionID=${AUCTION_ID}"
          }
       ]
     }
   ]
}

Пример валидного ответа DSP при запросе тизера:

{
   "id":"5",
   "seatbid":[
      {
       "bid":[
          {
           "id":1,
           "adid":0,
           "impid":"1",
           "ext":{
             "ads":[
              {
                "id":1061077,
                "title":"Косточка исчезнет за неделю!",
                "text":"Найден простой способ лечения \"косточки\"! Записывай...",
                "image":"http://domain.ru/1406733540_16197_phpi61ewn.jpg",
                "cpm":6.0,
                "url":"http://domain.ru/test/test_url"
              },
              {
                "id":1083442,
                "title":"Как мыть машину 3-4 раза в год",
                "text":"Это копеечное средство тщательно скрывали автомойки!",
                "image":"http://domain.ru/1407217586_9686_phpgqddlm.jpg",
                "cpm":2.6,
                "url":"http://domain.ru/test/test_url"
              },
              {
                "id":1087092,
                "title":"Мойте машину 2 раза в год!",
                "text":"Работники автомоек скрывают это копеечное средство!",
                "image":"http://domain.ru/1407310654_12085_phpm6spfp.jpg",
                "cpm":2.5,
                "url":"http://domain.ru/test/test_url"
              }
             ]
           }, 
           "price":11.1,
           "nurl":"http://domain.ru/?dsp_win&bid=${AUCTION_PRICE}&ads=$ {AUCTION_AD_ID}&auctionID=${AUCTION_ID}"
          }
        ]
      }
    ]
}

Пример валидного ответа DSP при запросе кликандера:

{
   "id": "6",
   "seatbid": [
      {
        "bid": [
           {
             "id": 1,
             "impid": "1",
             "adid": 1085932,
             "adm": "http://test_url.com/test",
             "price": 2.6269636,
             "nurl": "http://domain.ru/?dsp_win&bid=${AUCTION_PRICE}&ads=$ {AUCTION_AD_ID}&auctionID=${AUCTION_ID}"
           }
        ]
      }
    ]
}

Пример валидного ответа DSP при запросе видео:

{
    "id": "6",
    "seatbid": [
       {
         "bid": [
            {
              "id": 1,
              "impid": "1",
              "adid": 30641
              "iurl": " http://videotest.ru/video.flv "
              "adm": "%3CVAST+version%3D%223.0%22%3E+%0D%0A%3Cad-
id%3D%2230641%22%3E+%0D%0A%3CInLine%3E+%0D%0A%3CAdSystem%3EAdSystem
+Name%3C%2FAdSystem%3E%0D%0A%3CAdTitle%3ETitle%3C%2FAdTitle%3E%0D%0A%
3CImpression%3E%0D%0A%21%5BCDATA%5Bhttp%3A%2F%2Fmyimpression.ru%2F%3Fc
ommand%3Dtrack_view%26skip%3Dtrue%5D%5D%0D%0A%3C%2FImpression%3E%0D%0
A%3CCreatives%3E+%0D%0A%3CCreative%3E+%0D%0A%3CLinear%3E+%0D%0A%3CDu
ration%3E00%3A00%3A21%3C%2FDuration%3E+%0D%0A%3CTrackingEvents%3E+%0D%
0A%3CTracking+event%3D%22firstQuartile%22%3E%21%5BCDATA%5B%24%7BTRACK_U
RL%7D%5D%5D+%0D%0A%3C%2FTracking%3E%0D%0A%3C%2FTrackingEvents%3E+%0
D%0A%3CMediaFiles%3E+%0D%0A%3CMediaFile+delivery%3D%22streaming%22+bitrate%
3D%22600%22+width%3D%22640%22+height%3D%22480%22+type%3D%22video%2Fx-
flv%22%3E%0D%0A%3C%21%5BCDATA%5Bhttp%3A%2F%2Fvideotest.ru%2Fvideo.flv%5D
%5D%3E%0D%0A%3C%2FMediaFile%3E%0D%0A%3C%2FMediaFiles%3E+%0D%0A%3C
%2FLinear%3E+%0D%0A%3C%2FCreative%3E+%0D%0A%3C%2FCreatives%3E+%0D%0A
%3C%2FInLine%3E+%0D%0A%3C%2FAd%3E+%0D%0A%3C%2FVAST%3E+"
              "price": 2.6269636,
              "nurl": "http://domain.ru/?dsp_win&bid=${AUCTION_PRICE}&ads=$ {AUCTION_AD_ID}&auctionID=${AUCTION_ID}"
             }
          ]
        }
     ]
}

Формат поля adm объекта ставки при запросе видео:
Рекламный видео материал должен быть представлен в соответствии со спецификацией протокола Video Ad Serving Template (VAST) 3.0 (http://www.iab.net/media/file/VASTv3.0.pdf) со вшитым макросом ${TRACK_URL} в поле <Tracking event="firstQuartile"> ... </Tracking> и закодирован в URL формат. При желании DSP может также добавить трэкинги на 1⁄2, 3⁄4 и полный просмотр видео.
Внимание! Поддерживается только Linear тип рекламного видеоматериала и только с одним медиафайлом длительностью до 30 секунд. Допустимые типы медиафайлов mp4, webm, ogg и flv.
Пример представления видео материала в формате XML и вшитым макросом:

<VAST version="3.0">
  <Ad id="30641">
    <InLine>
      <AdSystem>AdSystem Name</AdSystem> // имя рекламодателя
      <AdTitle>Title</AdTitle>           //общее название материала 
      <Impression>
      <![CDATA[http://myimpression.ru/?command=track_view&skip=true]]>
      </Impression>                      //ссылка, которая вызывается при просмотре первого кадра видео
      <Creatives>
        <Creative>
          <Linear>
            <Duration>00:00:21</Duration> //длительность видео
            <TrackingEvents>
              <Tracking event="firstQuartile">
                <![CDATA[${TRACK_URL}&furl=xxx]]>
              </Tracking> //содержит ссылку, которая вызывается при проигрывании четверти видеоролика, где xxx – подобная ссылка от DSP 
            </TrackingEvents>
            <MediaFiles>
              <MediaFile delivery="streaming" bitrate="600" width="640" height="480" type="video/x-flv">
                <![CDATA[http://videotest.ru/video.flv]]> //ссылка на рекламный видеоматериал
              </MediaFile>
            </MediaFiles>
          </Linear>
        </Creative>
      </Creatives>
    </InLine>
  </Ad>
</VAST>

После чего XML структура кодируется в URL формат и помещается в поле bid.adm. Засчитывание показа и отправка win notice происходит после просмотра 25% видеоролика.
Тизерные материалы должны быть представлены отдельными объектами в коде ответа. Поле ext.ads содержит массив объектов материалов, где:

  • id - идентификатор материала
  • title - тайтл материала
  • text - текст материала
  • url - ссылка для перехода
  • image - ссылка на изображение
  • cpm - персональный cpm материала(цена за 1000 показов)

В случае, если нет возможности указать персональный CPM материала, то ставку надо указывать в поле price. Эта ставка будет распределена равномерно между материалами в ответе DSP.
RTB SSP поддерживает стандартный набор макросов для nurl.
Исключением являются макросы ${AUCTION_AD_ID} и ${AUCTION_PRICE}.
Аукцион происходит на уровне отдельных материалов, а не на уровне блока, поэтому значение ${AUCTION_AD_ID} будет состоять из списка материалов, разделенных запятой, который победили в аукционе.
Макрос ${AUCTION_PRICE} содержать ставку выигравшего материала, фактически ставку второго из материалов в аукционе, учитывая механизм “аукциона второй цены”.
А макрос ${AUCTION_PRICE_TTL} будет содержать сумму бидов материалов из макроса ${AUCTION_AD_ID}, то-есть итоговую сумму списания за данных бид.

Синхронизация пользователей

Для DSP также доступен сервис синхронизации пользователей с KadamSSP по схеме SSP инициатор. Принцип действия следующий:

    1. KadamSSP вызывает ссылку матчинга предоставленную DSP с id пользователя в системе SSP.
    2. DSP узнает\создает куку пользователя и переадресовывает его на ссылку матчинга предоставленную SSP со своим id пользователя или если пользователь неинтересен или DSP желает хранить таблицу соответствия на своей стороне — отвечает на запрос кодом 204.
    3. KadamSSP вносит в таблицу соответствие.
    4. При следующих аукционах с участием этого пользователя DSP получит запрос с полем user.buyeruid и значением id пользователя в системе DSP.

Также, при работающем сервисе куки-матчинга и формате хранения таблицы соответствий на стороне SSP, возможна опция «Слать только сматченных» при которой в DSP отправляются только запросы с участием пользователя, для которого создана запись в таблице соответствий.