Анализатор объявлений Яндекс.Директа
Ctrl+A на выдаче Яндекса - вставил - получил матрицу офферов конкурентов, облако слов и аналитику заголовков. Без API и сервера.
Перед запуском рекламы нужно понять, что пишут конкуренты: какие УТП используют все подряд, что занято по категориям (цена, скорость, гарантия, опыт), что говорит только один игрок. Разобрать 20-30 объявлений по нескольким запросам вручную - 2-3 часа, и всё равно картина не складывается. SpyWords и SemRush показывают ключевые слова и бюджеты, но не тексты объявлений - а работать нужно именно с текстами.
Сделать инструмент для анализа объявлений конкурентов в Яндексе. Вход - скопированный текст выдачи, выход - матрица офферов, аналитические таблицы и HTML-отчёт для клиента.
Как это сделано
Сбор данных: Ctrl+A вместо API
API Яндекс.Директа не отдаёт объявления конкурентов - только свои. Автоматический парсинг выдачи - это постоянная борьба: Яндекс блокирует ботов, структура страниц меняется. Поэтому пользователь открывает выдачу сам, нажимает Ctrl+A, Ctrl+C и вставляет текст в форму. В одно поле можно вставить несколько страниц выдачи - дубли доменов уберутся автоматически. Форма поддерживает несколько блоков для разных запросов в одном анализе.
Парсинг скопированного текста
Скопированный текст выдачи Яндекса содержит объявления, сниппеты, быстрые ссылки и мусор вперемешку. Парсер разбивает текст по маркеру "Промо" - каждый блок одно объявление. Из каждого блока берётся последняя пара заголовок + домен со стрелкой ›. Быстрые ссылки ограничены 6 штуками. Мусорные блоки ("Быстрый ответ Алисы", "Нейропоиск" и т.п.) отфильтровываются через JUNK-список. Данные передаются в окно результатов через window.name - надёжный способ для file:// без сервера.
12 аналитических блоков на каждый запрос
По каждому запросу инструмент строит 12 блоков. Облако слов - топ-22 по частоте, размер пропорционален доле. Банальные УТП - фразы у 30%+ конкурентов (слова из самого запроса отсекает стемминг). Упоминания цен с единицами и контекстом. Призывы к действию - слова с русскими императивными суффиксами (-ите, -айте, -йтесь). Числа в заголовках, спецсимволы (★, ►, ✓), вопросы в заголовках, быстрые ссылки-лидеры, уникальные фразы с POWER_WORDS. Авто-резюме собирает всё в текстовый вывод.
Матрица офферов: кто что занял
Матрица - это то, ради чего всё делается. Строки - домены конкурентов, столбцы - 10 встроенных категорий (Цена/Выгода, Скорость, Качество, Опыт, Ассортимент, Сервис, Финансовые условия, Гарантии, Удобство, Расположение). В ячейке - слово, по которому сработало совпадение. Строка "Охват" показывает насыщенность каждой категории: красный >= 60%, жёлтый >= 30%. Сразу видно, какие ниши свободны - "Не используют" и "Редко". Домен клиента выделен отдельно, даже если не попал в топ. Можно добавить свою категорию с произвольными ключевыми словами.
Экспорт для работы и для клиента
CSV (UTF-8 BOM для Excel, разделитель ;) - для самостоятельной работы с данными. XLSX через SheetJS (lazy CDN) - лист на каждый запрос. HTML-отчёт - самодостаточный файл со всей аналитикой, включая секцию "Выводы и рекомендации" (поля "Наш вывод" + незанятые ниши матрицы). Режим отчёта прячет весь интерфейс управления - остаётся только аналитика, готовая к демонстрации или печати.
История анализов и сравнение периодов
Каждый анализ можно сохранить в localStorage: имя, проект, дата сбора. Сохранённые анализы на форме: "Открыть" (новая вкладка), "В форму" (загрузить данные для редактирования), "Удалить". Функция "Сравнить два" - выбор двух анализов одного проекта и показ diff: какие домены появились, какие ушли, у каких изменился заголовок. Защита от переполнения: предупреждение если данные > 2 МБ.
Ключевые решения
Ручной copy-paste vs API и парсер
Автоматический парсинг выдачи Яндекса: блокируется за ботовое поведение, требует прокси и постоянного обслуживания. API Директа не даёт объявления конкурентов
Пользователь делает Ctrl+A сам - это легально, быстро (10 секунд) и не требует обслуживания. Инструмент занимается только структурированием и анализом
Автоматизировать сбор - значит бесконечно чинить парсер. Автоматизировать обработку - значит один раз написать алгоритм. Ctrl+A делает пользователь, остальное - инструмент.
file:// без сервера vs веб-приложение
Веб-приложение с бэкендом: нужен хостинг, домен, авторизация, безопасность данных клиентов
Два HTML-файла, работающих с file://: нет хостинга, нет сервера, данные клиента не уходят никуда. window.name передаёт данные между вкладками без сервера
Рекламные данные клиента - конфиденциальная информация. Локальный инструмент исключает любые риски утечки, не требует политики конфиденциальности и работает без интернета.
Матрица офферов vs ручной список
Ручной список УТП конкурентов в таблице: субъективный, требует часов работы, не показывает насыщенность категорий и свободные ниши
Автоматическая матрица из 10 категорий с цветовой индикацией охвата: видно какие ниши свободны, какие перегружены, как позиционирован клиент относительно рынка
Клиент должен видеть, за что платит. Матрицу можно показать на встрече, объяснить, какая ниша свободна и почему мы туда идём. Мнение специалиста становится данными - это снижает количество правок.
Анализ 30 объявлений по 3 запросам занимает 5-7 минут вместо 2-3 часов. Матрицу офферов прикладываю к медиаплану: клиент видит, откуда взялись формулировки в объявлениях и почему мы заняли именно эти ниши. Меньше вопросов «почему именно так?» - больше времени на саму работу.
Частые вопросы
SpyWords показывает ключевые слова и примерные бюджеты, но не тексты объявлений. SemRush дорог для разового анализа одного рынка. Этот инструмент решает одну конкретную задачу: что именно пишут конкуренты в объявлениях прямо сейчас.
Данные актуальны на момент копирования - это то, что Яндекс показывает прямо сейчас. Сохранение и сравнение двух анализов помогает отслеживать динамику: кто появился, кто ушёл, кто поменял заголовки.
Фразы, которые встречаются у 30%+ конкурентов. Если фраза есть у каждого третьего - она не выделяет, а сливает в общий фон. Инструмент показывает их явно, чтобы они не попали в заголовки клиента.
Да. Кнопка "+ Своя категория" открывает форму с названием и ключевыми словами. Категория сохраняется в анализе и учитывается в матрице и HTML-экспорте.