Каждый раз, когда клиент спрашивает «сколько стоит реклама в Директе?», начинается одна и та же история. Открываю сайт, выписываю услуги, придумываю ключевые фразы, иду в Wordstat, потом в прогноз бюджета, копирую цифры в табличку. На один проект уходит от часа до трёх. А потом клиент меняет регион — и начинай заново.
Я решил это автоматизировать. Написал два Python-скрипта, которые делают всё сами: от парсинга сайта до готового Excel-отчёта с прогнозом. Один скрипт берёт URL и сам генерирует семантику, второй — работает с готовым списком ключей. Рассказываю, как это устроено и зачем нужен ИИ в процессе.
Проблема: ручной прогноз — это боль
Типичный процесс оценки бюджета выглядит так:
- Открываю сайт клиента, изучаю услуги и продукты
- Составляю список ключевых масок вручную
- Проверяю частотность в Wordstat (по 10 фраз за раз, с капчей)
- Иду в «Прогноз бюджета» Яндекс Директа
- Копирую результаты в Excel
- Считаю суммы, CPC, CTR
- Оформляю для клиента
На один регион — минимум час. Клиент хочет Москву, Питер и ещё пять городов? Умножай на семь. А ещё бывает, что маски подобрал неточно — и прогноз получается мимо. Слишком общие запросы дают завышенные цифры, слишком узкие — занижают.
Решение: два скрипта для двух сценариев
Я разделил задачу на два инструмента, потому что в реальной работе бывают разные ситуации:
python yandex_forecast.py --url https://site.ru --geo Москва🌐yandex_forecast.py
Полный автопилот. Даёшь URL сайта — скрипт сам парсит страницу, генерирует ключевые маски, прогоняет через Wordstat и Forecast API, выдаёт Excel.
python forecast_from_masks.py --input masks.xlsx --geo Москва📝forecast_from_masks.py
Для случаев, когда маски уже есть. Берёт Excel-файл с фразами и минус-словами, получает прогноз и формирует отчёт.
Оба скрипта работают через Яндекс Директ API v4 — Forecast и Wordstat. Это то же API, что использует интерфейс Директа, только без ручного кликанья.
Как работает полный пайплайн
Самое интересное — первый скрипт, который превращает URL в готовый прогноз. Вот что происходит под капотом:
URL сайта
→
Парсинг
→
Маски
→
AI-уточнение
→
Wordstat
→
Forecast
→
Excel
Шаг 1. Парсинг сайта
Скрипт заходит на посадочную страницу и собирает всё, что может пригодиться для понимания бизнеса:
- Title, H1, H2, H3 — заголовки обычно содержат ключевые услуги
- Продукты и услуги — ищет элементы по типичным CSS-паттернам карточек товаров
- Meta keywords — если они есть на сайте
- Ссылки на разделы каталога — переходит на глубину 1, собирает названия подкатегорий
Результат — структурированный словарь с данными сайта. Не идеально (сайты слишком разные), но для генерации первичных масок — достаточно.
Шаг 2. Генерация ключевых масок
Здесь работает класс MaskGenerator. Он берёт данные парсинга и строит маски через несколько подходов:
- Готовые фразы — из H1-H3 берутся как есть, если содержат 2-5 слов
- Кросс-комбинации — услуга + объект. Например, «строительство» + «клиника» = «строительство клиник»
- Конвертация глаголов — «строим» превращается в «строительство», «проектируем» в «проектирование»
- N-граммы — из длинных заголовков извлекаются осмысленные куски по 2-3 слова
Потом серия фильтров: убираются прилагательные без существительных, маски из одних стоп-слов, дубликаты (где слова в разном порядке). К каждой маске добавляются коммерческие модификаторы — «купить», «заказать», «цена», «стоимость», «под ключ».
Шаг 3. AI-уточнение масок
Механическая генерация даёт много масок, но не все из них нишевые. Если задать API-ключ Anthropic, скрипт отправляет данные сайта в Claude и просит сгенерировать маски, которые действительно отражают специфику бизнеса.
Например, для сайта клиники механический генератор может выдать слишком общее «медицинские услуги», а ИИ предложит «лицензирование медицинской деятельности» или «проектирование стоматологического кабинета» — маски, которые ближе к реальным запросам целевой аудитории.
AI-уточнение — опциональный шаг. Скрипт работает и без него, просто с механическими масками. Но с ИИ качество прогноза заметно выше: меньше мусора, точнее попадание в нишу.
Шаг 4. Wordstat и Forecast
Дальше маски уходят в Яндекс API. Wordstat расширяет семантику: по каждой маске возвращает вложенные запросы с частотностью. Forecast даёт прогнозные данные — показы, клики, расход, CTR, CPC для позиции «спецразмещение».
Скрипт батчит запросы (10 фраз на Wordstat, 100 на Forecast), обрабатывает ответы и собирает всё в единый список с метриками.
✈
Подписаться на каналЧестно про рекламу и маркетинг
Разбираю реальные кейсы, делюсь цифрами и инструментами в Telegram-канале. Без воды и мотивационных цитат.
Что на выходе: Excel-отчёт
Результат — Excel-файл с тремя листами:
Лист «Данные» — полная таблица со всеми ключевыми фразами:
Маска Ключевая фраза Wordstat Показы Клики Расход CPC строительство клиник строительство клиник под ключ 320 1 540 89 15 230 ₽ 171 ₽ строительство клиник строительство клиник цена 180 870 52 8 910 ₽ 171 ₽ проектирование клиник проектирование медицинского центра 90 420 31 6 820 ₽ 220 ₽ ИТОГО 2 830 172 30 960 ₽ 180 ₽
Лист «Сводная» — агрегация по маскам с формулами итогов. Видно, какие направления самые дорогие и где больше всего трафика.
Лист «Параметры» — метаданные отчёта: URL, регион, количество фраз, дата, источник данных.
Второй скрипт: когда маски уже готовы
forecast_from_masks.py — для ситуаций, когда я уже собрал семантику вручную или получил от клиента. Формат входного файла простой:
- Столбец A — ключевая маска
- Столбец B — минус-слова (необязательно)
Скрипт автоматически определяет, где начинаются данные (пропускает строку с заголовками), и работает дальше по тому же пайплайну: Forecast API → Excel-отчёт.
Полезная фича — GEO-пресеты. Вместо перечисления 16 ID регионов для «Москва + 300 км» можно просто написать --geo мск300. Пресет раскроется в нужный список автоматически.
Технические детали для тех, кому интересно
Параметр yandex_forecast.py forecast_from_masks.py Источник масок URL сайта или текстовый файл Excel-файл Парсинг сайта Да (BeautifulSoup) Нет AI-уточнение Да (Claude API) Нет Wordstat Да (опционально) Нет Forecast API Да Да Минус-слова Нет Да (из Excel) GEO-пресеты Да Да
Оба скрипта используют Яндекс Директ API v4 (JSON-формат). Авторизация — через OAuth-токен. Для агентских аккаунтов можно указать логин клиента через параметр --login.
Зависимости минимальные: requests, beautifulsoup4, openpyxl, lxml, python-dotenv. Никаких тяжёлых фреймворков.
Что это даёт в цифрах
5 мин вместо 1-3 часов
7 регионов за один запуск
3 листа готовый Excel-отчёт
0 ручного копирования
Главный выигрыш — не только скорость, но и повторяемость. Можно запускать один и тот же скрипт для разных клиентов, сравнивать прогнозы по регионам, быстро обновлять данные через месяц. Раньше обновлённый прогноз значил «делай всё заново», теперь — «запусти скрипт ещё раз».
Выводы и рекомендации
Автоматизация прогноза бюджета — это не про «заменить маркетолога роботом». Это про то, чтобы не тратить время на рутину и сосредоточиться на анализе. Скрипт не примет решение за вас, но он соберёт все данные в один Excel за минуты.
Что я рекомендую:
- Начните с forecast_from_masks.py — если у вас уже есть семантика, просто загоните её в Excel и получите прогноз
- Используйте AI-уточнение — механические маски слишком общие, Claude помогает сделать их нишевыми
- Не забывайте про минус-слова — второй скрипт поддерживает их из коробки, это сильно повышает точность прогноза
- Сравнивайте регионы — запустите скрипт для нескольких городов и покажите клиенту разницу в бюджетах
Я собрал шаблоны, которые использую в работе с клиентами: медиаплан, учёт рабочего времени, аналитические отчёты. Скачайте бесплатно на странице шаблонов.
Написать мнеНужна помощь с настройкой рекламы или автоматизацией аналитики? Напишите — разберёмся вместе.
Шаблоны для маркетинга
Профессиональные шаблоны для организации работы:
медиапланирование, учёт времени, аналитические отчёты
E-mail *
Получить материалы
Поставив галочку, вы даете согласие на обработку персональных данных. Подробнее об обработке данных в Политике.
Сообщение От сайта до бюджета за 5 минут: автопрогноз для Яндекс Директа появились сначала на ПАВЕЗЛО.