Недавно столкнулся с тем, что для новой ниши нужно было узнать по каким страницам сайтов конкурентов был наибольший рост позиций. Это нужно было для определения актуальных рабочих методик продвижения для данной ниши. Но было одно «но». Я понятия не имел как это сделать. Сразу на ум приходят современные съемщики позиций, которые фиксируют весь топ10 и заодно конкурентов. Но т.к. ниша была новой, то прибегнуть к ним было бы бессмысленно. Значит нужно пользоваться сервисами, сохраняющие результаты выдачи. Для себя основными такими сервисами считаю Semrush и Prodvigator. Из-за того ниша была для украинского поиска, то выбор пал на Prodvigator.
Немного про Prodvigator
В одной из своих предыдущих записей я уже описывал метод отбора доноров из статейных бирж при помощи этого сервиса. Но на всякий случай еще раз упомяну про него. Prodvigator – это крутой сервис, собирающий данные по выдаче Google и Яндекс в украинской и российской выдаче. Благодаря этому можно смотреть как любой сайт чувствует себя в поиске: на каких позициях и по каким фразам находится, по каким фразам дает рекламу, с какими сайтами конкурирует и динамику всего этого. В общем много всяких полезностей, реально упрощающих работу.
При анализе сайта через Prodvigator есть возможность посмотреть какие из страниц сайта лучше всего ранжируются. Это определяется по числу фраз в топ-100, по которым была найдена эта страница. К сожалению, в этом отчете никакая динамика не показана. Нужно заходить на отчет каждой страницы и через фильтр выбирать только те фразы, которые выросли.
Этот метод мне показался крайне долгим, т.к. нужно перебрать кучу страниц и для каждой из них фиксировать кучу данных. Нужно было что-то по проще. И я обратился к API Продвигатора. И тут меня ждало разочарование. У них есть метод, который возвращает ключевые слова и их динамику для отдельной страницы, но нет метода, который бы возвращал все найденные страницы конкретного домена. К некоторой радости есть метод domain_keywords, который возвращает ключевые слова и страницы, которые были найдены по ним. Имея навыки программирования легко можно структурировать эти данные так, как нужно. И получить для каждой страницы кроме числа фраз, по которым они ранжируются еще число фраз, по которым страница улучшила свои позиции и т.д. Если вы умеете программировать, то благодаря сервису Prodvigator можете с легкостью находить самые быстрорастущие страницы конкурентов и своих сайтов.
На этом я мог закончить. Но зачем тогда этот блог? Правильно, делиться с людьми полезностями.
Специально для этого решил написать небольшой скрипт для Google SpreadSheets, который будет доставать данные по динамике роста/падения страниц и выводить их в таблице. К слову, это мой самый первый скрипт для SpreadSheets, на который я в сумме убил где-то два часа, так что не судите строго.
Скрипт:
function topPages() {
var limit = 100;
var key = "API KEY";
var dom = "DOMAIN";
if (limit<100)
limit=100;
var numk = limit/100;
var pgs = new Array();
var elems = new Array();
for (var z=0; z<numk; z++)
{
var jsondata = UrlFetchApp.fetch("http://prodvigator.ua/api/v3/domain_keywords?query="+dom+"&token="+key+"&page="+(z+1)+"");
var object = JSON.parse(jsondata.getContentText());
for (var i = 0; i < object["result"]["hits"].length; i++)
{
if (pgs.indexOf(object["result"]["hits"][i]["url"])>-1)
{
var pid = pgs.indexOf(object["result"]["hits"][i]["url"]);
var elemid = elems[pgs.indexOf(object["result"]["hits"][i]["url"])].length;
elems[pid][elemid] = new Array();
elems[pid][elemid][0]=object["result"]["hits"][i]["region_queries_count"];
elems[pid][elemid][1]=object["result"]["hits"][i]["position"];
elems[pid][elemid][2]=object["result"]["hits"][i]["dynamic"];
elems[pid][elemid][3] = object["result"]["hits"][i]["keyword"];
elems[pid][elemid][4] = object["result"]["hits"][i]["date"];
}
else
{
var ll = pgs.length;
pgs[ll] = object["result"]["hits"][i]["url"];
elems[ll] = new Array();
elems[ll][0] = new Array();
elems[ll][0][0] = object["result"]["hits"][i]["region_queries_count"];
elems[ll][0][1] = object["result"]["hits"][i]["position"];
elems[ll][0][2] = object["result"]["hits"][i]["dynamic"];
elems[ll][0][3] = object["result"]["hits"][i]["keyword"];
elems[ll][0][4] = object["result"]["hits"][i]["date"];
}
}
}
var tt=1;
SpreadsheetApp.getActiveSheet().getRange('A'+tt).setValue("Страница");
SpreadsheetApp.getActiveSheet().getRange('B'+tt).setValue("Фраз");
SpreadsheetApp.getActiveSheet().getRange('C'+tt).setValue("Сумм. частотоность");
SpreadsheetApp.getActiveSheet().getRange('D'+tt).setValue("Улучшилось");
SpreadsheetApp.getActiveSheet().getRange('E'+tt).setValue("Новых");
SpreadsheetApp.getActiveSheet().getRange('F'+tt).setValue("Ухудшилось");
SpreadsheetApp.getActiveSheet().getRange('G'+tt).setValue("Влезли в топ3");
SpreadsheetApp.getActiveSheet().getRange('H'+tt).setValue("Влезли в топ5");
SpreadsheetApp.getActiveSheet().getRange('I'+tt).setValue("Влезли в топ10");
tt++;
var better = new Array();
var zapi = new Array();
var nu = new Array();
var bad = new Array();
var to3 = new Array();
var to5 = new Array();
var to10 = new Array();
for (var i=0; i<pgs.length; i++)
{
better[i]=nu[i]=bad[i]=to3[i]=to5[i]=to10[i]=zapi[i]=0;
for (var j=0; j<elems[i].length; j++)
{
zapi[i]+=elems[i][j][0];
if (elems[i][j][2]>0)
{
better[i]++;
if ((elems[i][j][1]<=3)&&(elems[i][j][1]+elems[i][j][2]>3))
to3[i]++;
if ((elems[i][j][1]<=5)&&(elems[i][j][1]+elems[i][j][2]>5))
to5[i]++;
if ((elems[i][j][1]<=10)&&(elems[i][j][1]+elems[i][j][2]>10))
to10[i]++;
}
if (elems[i][j][2]<0)
bad[i]++;
if (elems[i][j][2]==null)
nu[i]++;
}
SpreadsheetApp.getActiveSheet().getRange('A'+tt).setValue(pgs[i]);
SpreadsheetApp.getActiveSheet().getRange('B'+tt).setValue(elems[i].length);
SpreadsheetApp.getActiveSheet().getRange('C'+tt).setValue(zapi[i]);
SpreadsheetApp.getActiveSheet().getRange('D'+tt).setValue(better[i]);
SpreadsheetApp.getActiveSheet().getRange('E'+tt).setValue(nu[i]);
SpreadsheetApp.getActiveSheet().getRange('F'+tt).setValue(bad[i]);
SpreadsheetApp.getActiveSheet().getRange('G'+tt).setValue(to3[i]);
SpreadsheetApp.getActiveSheet().getRange('H'+tt).setValue(to5[i]);
SpreadsheetApp.getActiveSheet().getRange('I'+tt).setValue(to10[i]);
tt++;
}
tt+=3;
SpreadsheetApp.getActiveSheet().getRange('A'+tt).setValue("Страница");
SpreadsheetApp.getActiveSheet().getRange('B'+tt).setValue("Фраза");
SpreadsheetApp.getActiveSheet().getRange('C'+tt).setValue("Частотновсть");
SpreadsheetApp.getActiveSheet().getRange('D'+tt).setValue("Позиция");
SpreadsheetApp.getActiveSheet().getRange('E'+tt).setValue("Была");
SpreadsheetApp.getActiveSheet().getRange('F'+tt).setValue("Дата изменения");
tt++;
for (var i=0; i<pgs.length; i++)
{
for (var j=0; j<elems[i].length; j++)
{
SpreadsheetApp.getActiveSheet().getRange('A'+tt).setValue(pgs[i]);
SpreadsheetApp.getActiveSheet().getRange('B'+tt).setValue(elems[i][j][3]);
SpreadsheetApp.getActiveSheet().getRange('C'+tt).setValue(elems[i][j][0]);
SpreadsheetApp.getActiveSheet().getRange('D'+tt).setValue(elems[i][j][1]);
SpreadsheetApp.getActiveSheet().getRange('F'+tt).setValue(elems[i][j][4]);
if (elems[i][j][2]==null)
SpreadsheetApp.getActiveSheet().getRange('E'+tt).setValue("NEW");
else
SpreadsheetApp.getActiveSheet().getRange('E'+tt).setValue(elems[i][j][1]+elems[i][j][2]);
tt++;
}
}
}
В самом начале нужно установить три своих значения:
• limit – число фраз, по которым будут определяться страницы и динамика. Крайне желательно ставить значение кратное 100, т.к. в API Prodvigator-а выдается по 100 результатов и нужно делать смещение через пагенацию результатов.
• Key – тут нужно вставить свой ключ для API.
• Dom – домен, который будет анализироваться.
Для этого мы заходим в Drive.Google.com и создаем новый табличный документ. Затем в верхнем меню выбираем «Инструменты -> Редактор скриптов». Главное не закрывайте вкладку с табличным документом.
Затем создать новый скрипт и вставить туда код. Отредактировать три верхних переменных и запускать.
Убедитесь, что выбрана нужная функция (пункт 1 на скрине). Нажимайте на кнопку выполнения (2) и любуйтесь сообщением, что он выполняется (3), если все нормально.
В процессе выполнения открытая таблица будет заполняться данными. Выглядеть она будет приблизительно следующим образом:
Теперь вы можете легко определять динамику видимости отдельных страниц конкурентов и своих сайтов. Главное иметь ключ API для Prodvigator. Если не ошибаюсь, то для бесплатных аккаунтов дается 30 обращений к API за сутки. В таком случае бесплатно сможете сгенерировать отчет по данным из 3000 ключевых фраз. Для небольших или средних сайтов – этого вполне достаточно. Но лучше иметь платный аккаунт, где куда меньше ограничений.
Еще можно подождать в надежде, что в веб-интерфейсе Продвигатора появятся эти данные.
И еще много другого. Я например, так изучаю текущие методики в новых нишах и отслеживаю успехи новичков в уже продвинутых нишах, чтобы изучать и внедрять их идеях и закрепляться в топе.
Для кучи других регионов удачным решением будет Semrush. У них тоже есть API и исторические данные, но стоит это значительно дороже, чем у Prodvigator. Также Ahrefs недавно вернул данные по выдаче и там также есть исторические данные для США и Великобритании. По API, к сожалению, пока эти данные не предоставляются. Можно парсить интерфейс.
Как вы заметили в данный момент сайт еще в разработке. Если есть замечания или советы пишите мне в facebook. Если знаете, как после ввода reCaptcha2 авторизироваться в Ahrefs на PHP – обязательно пишите!