3 минуты вместо 3 часов: скрипт для аналитики Яндекс Директа
Каждый, кто ведёт рекламу в Яндекс Директе, знает эту боль: данные размазаны по интерфейсам, отчёт собирается руками, а на глубокий анализ времени вечно не хватает. Я веду десятки клиентских проектов и в какой-то момент понял — ручная выгрузка отнимает у команды несколько часов в неделю. При этом половина инсайтов теряется просто потому, что никто не успевает посмотреть все срезы.
Хочу рассказать, как я это решил: написал Python-скрипт, который через API Яндекс Директа за 3 минуты собирает полный аналитический отчёт в Excel — с цветовой подсветкой проблемных мест, автоматическим расчётом CPA и сортировкой «плохое вверх». Запускаешь, ждёшь пару минут, открываешь файл — сразу видишь, где деньги уходят.
Какую проблему решаем
Ситуация знакомая многим: ведёшь несколько клиентов, у каждого свои кампании, цели конверсии, бюджеты. Чтобы собрать нормальный отчёт, нужно:
- Зайти в каждый аккаунт, выгрузить статистику по кампаниям, ключам, площадкам
- Руками посчитать CPA, CTR, найти сливные элементы
- Собрать данные по полу, возрасту, устройствам, платёжеспособности — а это ещё 4 среза
- Сопоставить тексты объявлений с метриками — отдельный квест через Ads API
- Красиво оформить и отправить клиенту
На одного клиента уходит 30-40 минут. На пятерых — полдня. И это каждую неделю. А ведь самое ценное — не сбор данных, а их анализ. Именно на это времени обычно и не остаётся.
Что делает скрипт
Скрипт подключается к Яндекс Директ API, забирает данные по всем клиентам и формирует один Excel-файл с 8 листами.
+ логины
Ads API
+ подсветка
8 листов
8 аналитических срезов
На выходе получаем Excel с 8 листами. Первые 7 — это данные по каждому срезу, а восьмой — сводная аналитика с цветовой подсветкой:
Как работает цветовая подсветка
Это, на самом деле, самая полезная часть. Открываешь Excel — сразу видно, где деньги уходят впустую. Не нужно ничего считать руками, не нужно вглядываться в цифры. Логика простая:
Порог «слива» рассчитывается автоматически: есть конверсии — порог = средний CPA. Нет конверсий — порог = средний CPC × 30. Плюс все таблицы отсортированы «плохое вверх» — чтобы первым делом видеть проблемы, а не листать 500 строк.
Честно про рекламу и маркетинг
Разбираю реальные кейсы, делюсь цифрами и инструментами в Telegram-канале. Без воды и мотивационных цитат.
Подписаться на каналДемографические срезы: где утекают деньги
Отдельная история — демографические данные. В интерфейсе Директа эти срезы вроде бы есть, но собирать их руками по каждой кампании — ну, вы понимаете. Скрипт выгружает сразу по четырём измерениям: пол, возраст, устройства и платёжеспособность.
Например, я часто вижу такую картину: сегмент «Прочие» по платёжеспособности тратит в разы больше, при этом CPA в 3-4 раза выше, чем у сегментов «Очень высокая» и «Высокая». Вывод очевиден — ставки по «Прочим» нужно снижать. Без этого среза вы бы просто не увидели, куда утекают деньги.
Для руководителей: масштабирование на команду
Отдельный кайф — когда скрипт внедряется на уровне команды. У нас несколько специалистов ведут разных клиентов. Раньше каждый собирал отчёты по-своему — разный формат, разная глубина, где-то забыли про площадки, где-то не посмотрели демографию.
Сейчас формат единый. Руководитель открывает файл и точно знает, где что лежит. Новый сотрудник подключается — добавляет логин клиента в конфиг — получает тот же отчёт в том же формате. Если управляете командой маркетологов — это реально экономит нервы.
Технические детали для тех, кто хочет повторить
Стек
Python 3 + requests + openpyxl. Никаких тяжёлых фреймворков — скрипт запускается на любом компьютере, где есть Python. Из зависимостей только openpyxl для создания Excel. Поставить можно одной командой: pip install openpyxl.
Работа с API
Скрипт использует три эндпоинта Яндекс Директа:
- Reports API v5 — основной источник данных. Все отчёты: CRITERIA_PERFORMANCE, CAMPAIGN_PERFORMANCE, AD_PERFORMANCE
- Ads API — для текстов объявлений. Reports API не отдаёт тексты — нужен отдельный запрос
- Campaigns API — список кампаний перед батчевым запросом текстов (Ads API принимает максимум 10 CampaignId за раз)
Конфигурация
Настройка минимальная — указываете OAuth-токен, логины клиентов и ID целей конверсии:
CLIENTS = [
{
"login": "client-login",
"goals": ["123456789"],
},
{
"login": "second-client",
"goals": ["987654321", "111222333"],
},
]
Запускается одной командой. За 2-3 минуты — готовый Excel со всеми данными.
Обработка нескольких целей
Важный нюанс: у клиента может быть несколько целей конверсии — звонок, заявка, покупка. Скрипт выгружает данные по каждой цели отдельно, а потом суммирует конверсии по строкам. На выходе — общее число конверсий по всем целям. Это часто упускают при ручной сборке.
Защита от сбоев
В реальной работе API иногда отваливается — SSL-ошибки через корпоративный прокси, таймауты, 502-е ответы. Скрипт умеет пересоздавать HTTP-сессию при SSL-сбое и делает до 5 повторных попыток с экспоненциальным backoff. Между запросами — пауза 3 секунды, чтобы не нарваться на rate-limit.
Для собственников бизнеса: на что обратить внимание
Если вы платите за контекстную рекламу и получаете отчёты от подрядчика — вот три вещи, которые такой инструмент позволяет проверить за пару минут:
- Где сливается бюджет. Красные строки — это элементы, которые тратят деньги без конверсий. Если ваш подрядчик не может объяснить, почему они до сих пор работают — это повод задать вопрос
- Работает ли РСЯ. Срез по площадкам показывает, на каких сайтах крутятся ваши объявления. Если половина кликов идёт с мобильных игр — кажется, что-то не так
- Демография. Если вы продаёте премиальный продукт, а 60% бюджета уходит на сегмент «Прочие» по платёжеспособности с CPA в 3 раза выше среднего — ставки давно пора скорректировать
Что в итоге получилось
Было 30-40 минут на клиента, стало 2-3 минуты
Но дело не только в скорости:
- Видно всё сразу. 8 срезов в одном файле вместо ручного переключения между вкладками Директа
- Проблемы бросаются в глаза. Красные строки наверху — открыл файл и сразу видишь, где деньги уходят
- Демография в одном месте. Пол, возраст, устройства, платёжеспособность — быстро скорректировал ставки и пошёл дальше
- Тексты + метрики. Какой заголовок конвертит лучше — больше не нужно руками джойнить два отчёта
- Масштабируется. Добавляешь нового клиента — пару строк в конфиг — он уже в отчёте
Выводы и рекомендации
В планах — добавить автоматический запуск по расписанию и правила аудита: чтобы скрипт не просто собирал данные, а присылал алерты, когда что-то идёт не так.
Если вы маркетолог и хотите попробовать — скрипт написан на Python, достаточно базовых навыков, чтобы настроить его под себя. Если вы собственник бизнеса и хотите видеть такую аналитику по своему проекту — напишите мне, помогу настроить или проведу бесплатный аудит рекламы.
Хотите видеть, куда уходит ваш рекламный бюджет?
Проведу аудит вашей рекламы в Яндекс Директе и покажу точки роста.
Написать мнеМаркетинговые шаблоны для вашей работы
Я собрал шаблоны, которые использую в работе с клиентами: медиаплан, учёт рабочего времени, аналитические отчёты. Скачайте бесплатно на странице шаблонов.