Блог про интернет-маркетинг для бизнеса

PPC

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

24
4
9
0

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

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

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

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

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

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

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

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

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

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

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

Для этого:

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 для нормальной работы.

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

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

Чтобы оставить комментарий, необходимо авторизироваться

Подписаться

на самую полезную рассылку по интернет-маркетингу

Самое

обсуждаемое популярное читаемое