Поиск целевой аудитории ВКонтакте

Как найти целевую аудиторию (ЦА) ВКонтакте?

  1. Найдите группу которая точнее всего характеризует Вашу ЦА. Численность группы до 1000 человек. Например для тематике «квесты в реальности» можно выбрать группу http://vk.com/roomstory.
  2. Запускаете мой скрипт, он делает следующее:
    1. Собирает всех подписчиков целевой группы.
    2. Ищет все группы на которые подписаны люди из пункта 1.
    3. Подбирает группы в которых содержится максимальное число подписчиков из пункта 1.
  3. Вы получаете все группы в которых вступили люди из ЦА.

Скрипт работает достаточно быстро (на 1000 человек уходит 2-3 минуты). Аналоги скрипта абсолютно ВСЕ платные. Так что принимаю благодарности в виде комментариев и лайков.

Результаты работы скрипта:

МОСКОВСКИЙ ЛАБИРИНТ moslabirint
Квесты в реальности Москвы | BEST QUEST bestquest
Quest Finder — всё о квестах в реальности questfinder
World of Quests | Мир квестов в реальности worldofquests
ЛАБ.33 lab33
Супермаркет зомби (Клуб квестов) questclub24
Серьёзные игры | Квесты Москвы в реальности request_ru
Волонтерим volonterim
CityQuest — квесты в реальности cityquestru
Кубикулум — игра-квест cubiculum_quest
RoomQuest roomquestmoscow
ТЕМНОТА | ТЕХНОЛОГИЯ КВЕСТА temnota_game
QuestMakers — квесты в реальности! questmakers
Все квесты в одном месте г. Москва vsequests
ТЕХНОЛОГИЯ КВЕСТА | ВСЕ В ОДНОМ МЕСТЕ! questreality
Rabbit Hole — квесты «выберись из комнаты» holequest
QuestPlay «Большой куш» questplay
Запертые. Квест в реальности. zapertye
Квесты и перфомансы в реальности Wember wemberquests

Скрипт:

<?
  header('Content-Type: text/html; charset=UTF-8');
  ini_set('display_errors','On');
  error_reporting('E_ALL');

  function vk_query($url, $params) {
    	$ch = curl_init();
      curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
      curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
    	curl_setopt($ch, CURLOPT_HEADER, false);
      curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
    	curl_setopt($ch, CURLOPT_URL, $url);
      curl_setopt($ch, CURLOPT_REFERER, $url);
      curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
    	curl_setopt($ch, CURLOPT_POST, true);
      curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($params));
      $result = curl_exec($ch);
      curl_close($ch);
      return $result;
  }

if (empty($_SESSION['access_token'])){

    $client_id = ''; // ID приложения
    $client_secret = ''; // Защищённый ключ
    $redirect_uri = 'http://w7.ru/tools/vk/audience.php'; // Адрес сайта

    $url = 'http://oauth.vk.com/authorize';

    $params = array(
        'client_id'     => $client_id,
        'redirect_uri'  => $redirect_uri,
        'scope' => 'offline',
        'response_type' => 'code'
    );

    echo $link = '<p><a href="' . $url . '?' . urldecode(http_build_query($params)) . '">Аутентификация через ВКонтакте</a></p>';

if (isset($_GET['code'])) {
    $result = false;
    $params = array(
        'client_id' => $client_id,
        'client_secret' => $client_secret,
        'code' => $_GET['code'],
        'redirect_uri' => $redirect_uri
    );

    $token = json_decode(file_get_contents('https://oauth.vk.com/access_token' . '?' . urldecode(http_build_query($params))), true);

    if (isset($token['access_token'])) {
        $_SESSION['access_token'] = $token['access_token'];
        get_cabinet();
    }
}
} else get_cabinet();

function get_cabinet(){
  $group_id = 'roomstory';

  $result = json_decode(vk_query('https://api.vk.com/method/groups.getById', array(
    'group_id' => $group_id,
    'fields' => 'members_count'
  )), true);

  $group_vk_array = $result['response'][0];

  $group_vk_id = $group_vk_array['gid'];
  $group_vk_count = $group_vk_array['members_count'];

  $query_count = ceil(ceil($group_vk_count / 1000) / 25);
  $members_all = array();

  for ($i=0; $i<$query_count; $i++){
    $offset_out = $i*25000;
  		$query = "
  			var members = API.groups.getMembers({\"group_id\": $group_vk_id, \"count\":1000, \"offset\": $offset_out}).items;
  			var offset = 1000;
  			while (offset < 25000 && (offset+$offset_out < $group_vk_count)){
        members = members + API.groups.getMembers({\"group_id\": $group_vk_id, \"count\":1000, \"offset\": ($offset_out + offset)}).items;
        offset = offset + 1000;
  			};
  			return members;
  		";
    $result = json_decode(vk_query('https://api.vk.com/method/execute', array(
      'access_token' => $_SESSION['access_token'],
      'code' => "$query",
      'v' => '5.37'
    )), true);

    $members_all = array_merge($members_all, $result['response']);
  }

  $i=0;

/*

var user_ids = [1,141823452];
var user_groups = [];

var i = 0;
while (i < user_ids.length){

user_groups = user_groups + API.users.getSubscriptions({"user_id": user_ids[i], "extended": "0"}).groups.items;

i = i + 1;
}
return user_groups;

*/
  $i = 0;
   	$u_ids = $gr_all = array();

  foreach ($members_all as $u_id){
    if ($i >= 24){
        	$u_ids_str = implode(',', $u_ids);

      $query = '
        var user_ids = ['.$u_ids_str.'];
        var user_groups = [];

        var i = 0;
        while (i < user_ids.length){
          user_groups = user_groups + API.users.getSubscriptions({"user_id": user_ids[i], "extended": "0"}).groups.items;
          i = i + 1;
        }

        return user_groups;';

      $result = json_decode(vk_query('https://api.vk.com/method/execute', array(
        'access_token' => $_SESSION['access_token'],
        'code' => "$query",
        'v' => '5.37'
      )), true);

      $gr_all = array_merge($gr_all, $result['response']);

        	$u_ids = array();
        	$i = 0;

    }

    $u_ids[] = $u_id;
    $i++;
  }

  if (!empty($u_ids)){
       	$u_ids_str = implode(',', $u_ids);
    $query = '
      var user_ids = ['.$u_ids_str.'];
      var user_groups = [];

      var i = 0;
      while (i < user_ids.length){
        user_groups = user_groups + API.users.getSubscriptions({"user_id": user_ids[i], "extended": "0"}).groups.items;
        i = i + 1;
      }

      return user_groups;';

    $result = json_decode(vk_query('https://api.vk.com/method/execute', array(
      'access_token' => $_SESSION['access_token'],
      'code' => "$query",
      'v' => '5.37'
    )), true);

    $gr_all = array_merge($gr_all, $result['response']);
  }

/*
  foreach ($members_all as $u_id){
    $vk_result = vk_query('https://api.vk.com/method/users.getSubscriptions', array(
      'user_id' => $u_id,
      'extended' => 0,
      'param_v' => '5.37'
    ));
    $result = json_decode($vk_result, true);

    if ($result['response']['groups']['count'] > 0){
      $gr = $result['response']['groups']['items'];
      $gr_all = array_merge($gr_all, $gr);
    }
  }
*/

  $top_gr = array_count_values($gr_all);
    arsort($top_gr);

  $top_gr_ids = array_keys($top_gr);
  $gr_part = array_chunk($top_gr_ids, 500, true);

  $i = 0;
  $gr_all = array();

  foreach ($gr_part as $part){
    	$u_ids_str = implode(',', $part);
    	if ($i >= 9){
      $u_ids_str_a = implode(',', $gr_ids_25);
      $query = '
        var user_ids = ['.$u_ids_str_a.'];
        var user_groups = [];

        var i = 0;
        while (i < user_ids.length){
          user_groups = user_groups + API.groups.getById({"group_ids": user_ids[i], "fields": "members_count"});
          i = i + 1;
        }

        return user_groups;';

      $result = json_decode(vk_query('https://api.vk.com/method/execute', array(
        'access_token' => $_SESSION['access_token'],
        'code' => "$query",
        'v' => '5.37'
      )), true);

      $gr_all = array_merge($gr_all, $result['response']);

      $i = 0;
       		$gr_ids_25 = array();
    	}
    $gr_ids_25[] = '['.$u_ids_str.']';
    	$i++;
  }

  if (!empty($u_ids)){
    $u_ids_str_a = implode(',', $gr_ids_25);
    $query = '
      var user_ids = ['.$u_ids_str_a.'];
      var user_groups = [];

      var i = 0;
      while (i < user_ids.length){
        user_groups = user_groups + API.groups.getById({"group_ids": user_ids[i], "fields": "members_count"});
        i = i + 1;
      }

      return user_groups;';

    $result = json_decode(vk_query('https://api.vk.com/method/execute', array(
      'access_token' => $_SESSION['access_token'],
      'code' => "$query",
      'v' => '5.37'
    )), true);

    $gr_all = array_merge($gr_all, $result['response']);
  }

  foreach ($gr_all as $g){
        if ($g['members_count'] < 30000)
      $gr_print[] = $g['gid'].' '.$g['name'].' '.$g['screen_name'].'<br />';
  }

  $gr_print = array_slice($gr_print, 0, 1000);
  foreach ($gr_print as $g){
    echo $g;
  }
}
?>
Facebook Comments

Леонид Чернядьев

Увлекаюсь программированием, интернет маркетингом, прогнозированием, дизайном и версткой. Принимаю заказы на лидогенерацию. Связь через - https://www.facebook.com/lenid.chernyadyev