Гостевой пост

Автоматизируем ретаргетинг ВКонтакте — как создать объявления

В предыдущем гостевом посте веб-аналитик Николай Глушков рассказал, как с помощью языка R и Google Tag Manager автоматически создать множество списков ретаргетинга ВКонтакте и интегрировать их на свой сайт через Google Tag Manager.

В новом гостевом посте речь пойдет об автоматическом создании объявлений под каждый список ретаргетинга.

Зачем это делать?

В результате внедрения описанного алгоритма мы получим, по сути, аналог системы динамического ретаргетинга, который есть в Facebook.

Как автоматически создавать объявления?

Напомню, что мы рассматриваем автоматизацию ретаргетинга на примере сайта квестов.

Итак, первое, что нужно сделать, — получить таблицу с полями, необходимыми для создания объявления:

  • ссылка на страницу;
  • название квеста;
  • город;
  • название фотографии;
  • описание объявления (формируется как: город+число игроков+сложность).

Выгрузить таблицу можно несколькими способами:

  1. Распарсить сайт.
  2. Передать данные с сайта в Google Analytics и выгрузить их оттуда.
  3. Выгрузить данные из собственной базы.

Должна получится такая таблица в формате csv: Таблица в формате csv Далее нам нужно присоединить к этой таблице поле с идентификатором созданных на предыдущем этапе списков ремаркетинга.

Подробнее читайте в нашем посте «Автоматизируем ремаркетинг ВКонтакте с помощью R и Google Tag Manager».

Для этого:

1. Переходим по ссылке.

https://oauth.vk.com/authorize?client_id={client id}&redirect_uri=http://oauth.vk.com/blank.html&display=
popup&scope=ads&respons e_type=token

2. Получаем обновленный токен доступа.

#подключаем библиотекиlibrary("stringr")library("RCurl")library("RGA")library("RJSONIO")#импортируем нашу таблицуproduct_list<-read.csv("products.csv", header = TRUE,sep =";")#помещаем обновленный токен в переменнуюvk_token<-"xxxxxxxxxxxxx"#получаем весь список групп ретаргетингаtarget_groups <- postForm("https://api.vk.com/method/ads.getTargetGroups",                         account_id =xxxx,  #id рекламного кабинета                         extended = 1,                         access_token=vk_token  #токен)#преобразовываем ответ в формат спискаtarget_groups_list<- fromJSON( TargetGroups )#Создаем новое поле, содержащее id аудитории (пока пустое)product_list$retargeting_group_id<-""#для каждого кода ретаргетинга проверяем по названию, относится ли он#к нашему списку, и если да, помещаем значение в соответствующее полеfor(i in 1:length(target_groups_list$response) ) {   if( target_groups_list$response[[i]]$name %in% product_list$title){    product_list[product_list$title==target_groups_list$response[[i]]$name,]$retargeting_group_id<-target_groups_list$response[[i]]$id  }}

 В итоге у нас получится такой датафрейм: Финальный датафрейм Теперь осталось пробежаться по каждой строке и создать объявления: 

for ( i in 1:nrow(product_list) ){  #получаем загрузочный url для загрузки фото  upload_photo_url <- postForm("https://api.vk.com/method/ads.getUploadURL",                       ad_format = 1,                       access_token=vk_token  )  #Ставим задержку между запросами  Sys.sleep(1)  #преобразовываем ответ в формат list  upload_photo_list <- fromJSON( upload_photo_url )  #путь до  фотографии  file.name <-product_list$img_name[i]  #загружаем фото на сервер  photo_response<- postForm(upload_photo_list,                      file = fileUpload(filename = file.name, contentType="image/png"),                     .opts = list(ssl.verifypeer = FALSE),                      ad_format = 1,                      access_token=vk_token                      )  Sys.sleep(1)  #создаем пустой список с настройками объявления  list_settings <- vector(mode="list")  #отключаем RJSONIO и подулючаем jsonlite  detach("package:RJSONIO", unload=TRUE)  library("jsonlite")  list_settings[[1]]  <- list(    "campaign_id" = "xxxx", #id кампании    "category1_id" = 42, #id категории объявления    "ad_format" = 1, # формат объявления    "cost_type" = 1, # тип оплаты(за показы)    "cpm" = 11,   # стоимость 1000 показов    "impressions_limited" = 1,# ограничение до 100 показов    "name" = paste(product_list$title[i],product_list$city[i],sep=" "), # название обьявления    "title" = iconv( product_list$title[i], "CP1251", "UTF-8"), # заголовок    "description" = iconv( product_list$description[i], "CP1251", "UTF-8"), # описание    "link_url" = product_list$url[i], # ссылка на страницу    "link_domain" ="norakrolika.ru", # отображаемый домен    "photo" = fromJSON( photo_response )$photo, # загруженное фото    "retargeting_groups" = product_list$retargeting_group_id[i] # id группы ретаргетинга  )  #сериализуем полученный список  serial_data<-toJSON( list_settings ,auto_unbox=TRUE)  #Создаем объявление  created_ad <- postForm("https://api.vk.com/method/ads.createAds",                      .opts = list(ssl.verifypeer = FALSE),                      account_id = "xxxxx",                      v = "5.53",                      data = serial_data,                      access_token=vk_token  )  print(created_ad)  Sys.sleep(1)  #отключаем jsonlite и подключаем RJSONIO  detach("package:jsonlite", unload=TRUE)  library("RJSONIO")}

В коде используются две библиотеки для работы с json: RJSONIO и jsonlite. Обе одновременно работать не могут, поэтому их приходится поочередно включать и отключать.

Важно! Может возникнуть проблема с кодировкой, при создании объявления — используйте функцию iconv для нормальной работы.

В результате будут автоматически созданы объявления для каждого списка ретаргетинга: В результате будут автоматически созданы объявления для каждого списка ретаргетинга Пример объявления Пример объявления Пишите в комментариях, какие другие рутинные задачи маркетинга вы бы хотели автоматизировать.

11
0
0
Обнаружили ошибку? Выделите ее и нажмите Ctrl + Enter.

Комментарии (0)

Последние комментарии

    Чтобы оставить комментарий, нужно войти

    Чтобы оставлять комментарии, переключитесь на профиль читателя

    Подписаться

    на самую полезную рассылку по интернет-маркетингу
    Cookies policy
    Просматривая этот сайт, вы соглашаетесь с нашей политикой конфиденциальности — Принять