Автоматически анализируем шаблоны объявлений конкурентов в контекстной рекламе

Работа специалистов по контекстной рекламе все больше смещается от механических процессов, таких как например генерация объявлений по шаблону, к более творческим и нестандартным: анализу конкурентов, выработке стратегии и тестированию гипотез.

Подразумевается, что творческое направление в меньшей степени поддается автоматизации и оптимизации и в целом более трудозатратно.

Например, анализ объявлений конкурентов: выявление схем, по которым написаны объявления, вхождения ключевых фраз в тексты и заголовки, выделение продающих добавок и триггеров, анализ УТП — плохо стандартизируемый процесс, и автоматизацию в него сложно внедрить, что отчасти справедливо.

Провести автоматический анализ УТП с помощью небольшого скрипта мы, конечно, не сможем. Но вычленить из заголовков и текстов объявлений некие схемы или шаблоны, по которым они написаны — вполне посильная задача. Для этого мы воспользуемся скриптом на языке Python. Знание программирования или продвинутые технические навыки нам не потребуются.

Начало работы

Исходный Excel файл должен быть обязательно в формате .xlsx (!) и содержать лист с названием ads, на листе должны присутствовать два поля: TITLE (с заголовками) и TEXT (с текстами объявлений). Файл с входными данными должен выглядеть, как на рисунке.

Начало работы

Для работы потребуются:

  1. Предустановленный пакет Anaconda со средой разработки Jupyter Notebook.

  2. Файл со скриптом ppc_sci.ad_pattern_analyser.py.

  3. Файл с заголовками и текстами объявлений для анализа ads.xlsx.

Механика работы скрипта

Как работает скрипт, лучше всего продемонстрировать на небольшом примере. У нас есть два объявления:

Примеры объявлений

Посмотрите на эти объявления и попробуйте понять, по какому шаблону они написаны, какая схема лежит в их основе.

Наверняка, вы очень быстро определили, что оба объявления написаны по единому шаблону.

В каждом из объявлений есть по два блока, которые отличаются, — это сам предмет объявления  («IPhone 8» и «щебень 5×20») и географическое уточнение («в Москве» и «в Твери»). Остальные части в обоих объявлениях идентичны.

Нахождение шаблонов

Мы можем представить шаблон объявлений в следующем формате:

Полученный шаблон

Фигурными скобками { } заменены различающиеся блоки объявлений.

При работе скрипт сравнивает каждое объявления со всеми другими. Поэтому рекомендуется брать для анализа ограниченный массив объявлений, не более чем 5-10 тысяч за один цикл. Подробнее о быстродействии расскажем чуть ниже.

При нахождении паттернов алгоритм ищет шаблоны, содержащие не менее двух слов, исключая союзы, предлоги и прочие слова, не несущие смысловой нагрузки. Это повышает результаты работы скрипта.

Запускаем скрипт

Чтобы лучше понять этот раздел, рекомендую ознакомиться с предыдущей статьей и видео о скрипте, автоматически сцепляющем URL посадочных страниц с ключевыми фразами.

Во избежание ошибок перед запуском скрипта убедитесь, что вы:

  • закрыли файл Excel, иначе скрипт не сможет сохранить в него данные;

  • создали файл правильного формата (.xlsx) и в нем есть лист ads c полями TITLE и TEXT;

  • все значения в полях с заголовками и текстами объявлений заполнили текстовыми значениями. Пропуски или не текстовые значения вызовут сбой в работе.

Для отработки скрипта необходимо создать папку и положить в нее файл со скриптом ppc_sci.ad_pattern_analyser.py, а также файл с объявлениями для анализа ads.xlsx. Также нужно создать новую рабочую тетрадь Jupyter Notebook — файл с расширением .ipynb.

Рабочая тетрадь

В пустую ячейку необходимо ввести команду %run ppc_sci.ad_pattern_analyser.py и дождаться выполнения скрипта. Время выполнения зависит от количества объявлений для анализа.

Выполнение скрипта

Появившийся текст «Листы ’ad_title_patterns’ и ’ad_text_patterns’ записан в исходный файл ’ads.xlsx’.» означает, что скрипт успешно сработал.

Выходные данные

После отработки скрипта в исходном файле должны появиться две новые вкладки с шаблонами заголовков (ad_title_patterns) и текстов объявлений (ad_text_patterns).

В результирующих вкладках будет по два поля TEXT_PATTERN/TITLE_PATTERN (шаблон) и FREQ (показатель частотности). Показатель частотности — это не количество объявлений, соответствующих данному шаблону, а показатель, который с ним напрямую коррелирует. Данные уже отфильтрованы по убыванию частотности шаблона.

Отфильтрованные данные

Про быстродействие

Если вы возьмете массив из 5000 объявлений, то для попарного сравнения (каждое с каждым) вам потребуется произвести примерно 12,5 млн операций, если же вы увеличите количество объявлений в два раза, до 10 000, то количество операций и время обработки возрастет уже в четыре раза — до 50 млн операций!

Обработка 5385 объявлений (заголовки + тексты), как видно на скриншоте, занимает в среднем 4,5 минуты.

Время, затраченное на работу

Где брать объявления конкурентов

Если вы еще не анализировали объявления конкурентов, то самое время этим заняться. У многих специалистов, плотно работающих с контекстной рекламой, установлена программа KeyCollector, которая отлично парсит объявления по заданным ключевым словам. Подробнее смотрите в официальной справке.

Если вы не хотите самостоятельно заниматься парсингом объявлений, то можете скачать уже готовую базу рекламных объявлений от «Букварикса».

Если у вас есть доступы к платным сервисам анализа конкурентов, узнайте, как можно получить тексты объявлений у них.

Область применения

Нельзя сказать, что этот скрипт относится к категории обязательных в арсенале специалиста по контекстной рекламе. Но если вы плотно занимаетесь исследованием конкурентов, в том числе анализируете, как ваши конкуренты составляют объявления, какие УТП и триггеры используют, и хотите делать это эффективно, то данный скрипт окажется весьма кстати.

Если у вас есть желание разрабатывать подобные скрипты для автоматизации рабочих процессов, записывайтесь на базовый курс PPC-Scientist.

Ваши вопросы по работе скрипта, а также предложения и идеи новых скриптов оставляйте в комментариях к статье. Всем успехов в настройке.

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: