Свой трекер позиций в Яндексе: как мы заменили платные сервисы собственным дашбордом
Мы ведём SEO и лидогенерацию для нескольких клиентов одновременно, и каждому нужно честно показывать одно и то же: где сайт стоит в Яндексе по целевым запросам, в нужном регионе, и куда позиции двигаются от среза к срезу. Раньше для этого мы платили сторонним сервисам мониторинга. В какой-то момент посчитали и поняли: под нашу узкую задачу дешевле и удобнее сделать свой инструмент. В этом кейсе рассказываем, что не устроило в готовых сервисах, что мы построили взамен и как это работает каждый день.
Что было до: чужие сервисы за подписку плюс наценка
Готовые трекеры позиций устроены примерно одинаково: есть абонентская плата за аккаунт и есть стоимость самих съёмов. Съём позиции стоит денег, потому что сервис под капотом дёргает поисковую выдачу, и в эту цену зашита его маржа. Пока проект один и запросов немного, это терпимо. Но когда проектов несколько, а в каждом сотни ключей, и снимать надо регулярно, набегает ощутимая сумма, причём за функционал, которым мы пользуемся на 10 процентов.
Что конкретно нас не устраивало:
Двойная оплата. Подписка за аккаунт и сверху списания за каждый съём позиций. Платишь за вход и платишь за работу.
Наценка за запрос. Сервис зарабатывает с каждого снятия позиции, поэтому итоговая цена съёма заметно выше, чем если ходить в поисковый API напрямую.
Гора лишнего. Конкуренты, кластеризация, аудиты, отчёты на десятки страниц. Нам из всего этого нужны были позиции и частотность, остальное только усложняло интерфейс.
Чужие правила. Лимиты, тарифные сетки, экспорт по их формату. Свои данные мы хотели держать у себя и доставать как нам удобно.
Задача: только позиции и частотность, ничего лишнего
Мы сформулировали требования предельно узко, чтобы не делать второй комбайн:
Позиции в Яндексе по списку ключей для каждого сайта, с привязкой к региону (Москва, Санкт-Петербург, Крым и Симферополь, города-миллионники).
Частотность Wordstat по тем же ключам, чтобы видеть не только место в выдаче, но и вес запроса: расти по высокочастотнику и по хвосту это разные истории.
История срезов с дельтами: насколько ключ вырос или просел между замерами.
Несколько проектов сразу в одном окне, без отдельного аккаунта и оплаты под каждого клиента.
Автоматический сбор по расписанию, чтобы не снимать руками.
Главный аргумент в пользу своего решения был экономический. Яндекс отдаёт позиции через поисковый API за прозрачную стоимость запроса. Если убрать посредника, мы платим только за сам запрос в Яндекс, без подписки и без чужой наценки. Для агентства, которое и так работает с аналитикой и лидогенерацией каждый день, это очевидная экономия на дистанции.
Что мы сделали
Собрали компактный дашборд мониторинга позиций. Это наш внутренний продукт, как и таск-трекер AgencyOS: пишем такие инструменты под себя, потому что так быстрее и дешевле, чем подстраиваться под чужой. Внутри: проекты с доменом и регионом, списки ключей, ручной и плановый сбор, история срезов и наглядная динамика.
Стек намеренно простой и дешёвый в эксплуатации: Python без тяжёлых зависимостей, хранение в SQLite, позиции и частотность снимаются через API Яндекса. Весь интерфейс тёмный, с крупными цифрами и графиком по последним срезам, чтобы за пару секунд считывать картину по проекту. Такие задачи мы закрываем в рамках разработки веб-приложений.
На обзоре проекта сразу видно ключевые метрики: сколько ключей в работе, сколько найдено в топ-100, сколько в топ-10, средняя позиция и время последнего среза. График показывает, как средняя позиция, число ключей в топ-10 и средняя частотность менялись по дням.
Как это работает каждый день
Логика сбора заточена под то, чтобы не переплачивать и не дёргать API лишний раз:
Расписание. Планировщик снимает позиции по проекту с заданным интервалом (например, раз в 3, 7 или 10 дней). Не надо помнить про ручные прогоны.
Отложенный сбор позиций. Позиции по умолчанию снимаются через отложенный режим API, который дешевле синхронного поиска. Срочность нам не нужна, а экономия на объёме есть.
Бережём Wordstat. Частотность обновляется не чаще одного раза в 30 дней на ключ. Спрос так часто не меняется, а каждое лишнее обращение это деньги.
Несколько клиентов разом. Все проекты в одном окне, у каждого свой регион и свой интервал. Добавить нового клиента это пара минут: домен, регион, список ключей.
История по дням собирается в матрицу: строка это ключ, столбец это дата среза, в ячейке позиция и дельта к прошлому замеру. Зелёным подсвечивается рост, красным просадка. По такой таблице за минуту видно, какие запросы выстрелили, а где надо доработать страницу.
Семантика как фундамент
Мониторинг позиций бессмысленен без правильного списка ключей, поэтому любой проект у нас начинается не с трекера, а с семантики. Как лидген-агентство мы сначала разбираемся со спросом: что и как люди ищут, какие запросы коммерческие, какие частотные, что есть в Wordstat по теме. Из этого собирается полное семантическое ядро, и уже отобранные ключи попадают в трекер на отслеживание. Подробнее про этот подход мы писали в материале про лидогенерацию.
Дальше связка простая: семантика задаёт, что продвигаем, SEO-продвижение двигает страницы, а дашборд показывает, сработало или нет. Если интересно, как устроен рост в выдаче в целом, у нас есть пошаговый разбор, как продвинуть сайт в Яндексе, и отдельный материал про то, почему сайт в индексе, а позиций нет.
Доступ и безопасность
Дашборд встроен в нашу рабочую экосистему: вход идёт по тем же логину и паролю, что и наш таск-трекер, отдельных аккаунтов плодить не нужно. Данные клиентов лежат у нас, а не у стороннего сервиса, и доступ к ним есть только у команды.
Сколько это экономит
Главный результат это снятая абонентка и убранная наценка. Теперь в расходах остаётся только стоимость самих запросов в API Яндекса, и она фиксированная и прозрачная. Чем больше проектов и ключей мы ведём, тем заметнее разница с подписочными сервисами, где каждый новый клиент это плюс к абонентке и плюс к стоимости съёмов.
Помимо денег выиграли в удобстве: интерфейс показывает ровно то, что нам нужно, новый проект заводится за минуты, история и дельты всегда под рукой, а сбор идёт сам по расписанию. Инструмент маленький, но закрывает задачу на 100 процентов и не просит ежемесячной платы за воздух.
Частые вопросы
Чем свой трекер лучше готовых сервисов мониторинга?
Для узкой задачи (позиции плюс частотность по своим проектам) свой инструмент дешевле в эксплуатации: нет абонентской платы и нет наценки за каждый съём, остаётся только стоимость запроса в API. Плюс интерфейс ровно под наш процесс и данные хранятся у нас. Готовые сервисы выигрывают, когда нужен большой комбайн с конкурентами и аудитами, но нам этот функционал не требовался.
За что именно идёт оплата при своём решении?
Только за обращения к API Яндекса: съём позиций и обновление частотности Wordstat. Никакой подписки за сам дашборд нет, он работает на нашем сервере. Чтобы не переплачивать, позиции снимаются в отложенном режиме, а частотность обновляется не чаще раза в 30 дней на ключ.
Можно ли отслеживать позиции по разным регионам?
Да, регион задаётся для каждого проекта отдельно: Москва, Санкт-Петербург, Крым и Симферополь, города-миллионники и любой другой регион Яндекса. Для локального бизнеса это критично, потому что выдача в разных городах отличается.
Как часто снимаются позиции?
По расписанию, с интервалом, который мы задаём под проект: обычно раз в 3, 7 или 10 дней. Можно снять срез и вручную в любой момент, например после крупных правок на сайте.
Закажете такой инструмент под наш бизнес?
Да, мы разрабатываем подобные внутренние сервисы и автоматизацию под конкретные задачи. Если у вас есть рутина, которую готовые сервисы закрывают дорого и с лишним, опишите её нам, и мы предложим решение в рамках разработки веб-приложений.
Нужен честный мониторинг позиций и рост в Яндексе без переплат за чужие сервисы? Возьмём проект под ключ: соберём семантику, настроим продвижение и покажем динамику в цифрах. Это наша услуга SEO-продвижения.