Исследовать поисковый спрос — обычная задача для SEO-специалиста: просто собираешь запросы и их частотность, смотришь сезонность и делаешь выводы. Но что если нужно исследовать целую сферу бизнеса типа авторынка, на котором представлено очень много брендов, а сроки и ресурсы ограничены? Включаем воображение и расширяем инструментарий. Делюсь своим хитрым способом.
Я Женя Кузнецов, диджитал-стратег. В рамках рабочей задачи мы с коллегами исследуем китайский авторынок в РФ, и анализ поискового спроса — часть этой работы. Я решил распарсить Вордстат за два года и собрать список всех брендов с интентами и сезонностью, а потом визуализировать в BI, чтобы увидеть наглядную динамику и тренды. Расскажу пошагово.
1. Собираем список брендов и синонимов
В Google-таблицах я составил список всех китайских брендов, представленных на рынке и хоть сколько-нибудь известные бренды из других стран для сравнения. Включил названия на английском и на русском.
Обычно пользователи ищут по русской транскрипции, но таких словоформ может быть несколько. Если к «европейцам» все уже привыкли, то с «китайцами» сложнее — чего стоит написать бренд KAIYI по-русски. Я придумывал словоформы сам и с помощью поисковых подсказок Яндекса, а потом в Вордстате проверял, пишут ли так пользователи.
2. Собираем список интентов
К собранным брендам нужны были интенты, чтобы можно было увидеть поисковые цели и сравнивать их между собой. За определением интентов я пошел в SpyWords (кстати, он доступен бесплатно, если у вас есть тариф «Оптимум» в Elama). Здесь можно посмотреть, по каким группам фраз в поиске находятся официальные сайты брендов.
Tip: эту же задачу можно решить еще так — выгружаете все фразы по одному бренду из Вордстата, кластеризуете их с помощью сервиса Разбивака и анализируете получившиеся группы.
Так мы получили список поисковых интентов:
официальный сайт,
официальный дилер,
модельный ряд,
комплектации,
цена,
купить,
кредит,
лизинг,
рассрочка,
отзывы,
обзор,
тест драйв,
сервис.
3. Перемножаем два списка поэлементно
Чтобы получить «оценку сверху» по всем кластерам запросов для каждого бренда, нужно было добавить интенты к списку всех брендов.
Есть два способа сделать это:
Вручную — сразу в Google-таблицах. Записываем все бренды в первую колонку, а интенты в первую строку таблицы и перемножаем. Но, чтобы получить список всех брендов в табличном виде, придется проделать много монотонной работы.
Автоматически — с помощью простого цикла на Python и библиотеки gspread. Спойлер: так гораздо быстрее.
1) Открываем таблицу, получаем содержимое и сохраняем в Data Frame.
2) Генерируем список ключевых фраз, перемножая список брендов со списком интентов.
4. Получаем примерную семантику
Вместо 100+ запросов, получилось 2000+ запросов без лишнего сбора и кластеризации семантики.
5. Собираем частоты и сезонности
Я загрузил запросы в KeyCollector и запустил парсинг сезонности. На сбор данных ушло примерно 4–5 часов.
Дополнительно для удобства разложил все фразы на группы — при выгрузке группа добавляется в отдельную колонку, что позволяет объединить словоформы в группы по брендам. Эту же задачу можно решить при обработке на Python — примеры дальше.
На выходе получил CSV-файл со списком запросов и популярностью по месяцам.
6. Обрабатываем данные
Ручная предобработка данных заняла бы очень много времени, поэтому я снова воспользовался Python.
1) Загрузил данные в Data Frame и сделал таблицу вертикально ориентированной при помощи метода .melt.
2) Привел даты в формат yyyy-mm-dd при помощи метода .to_datetime.
3) Составил список соответствий в формате «Часть фразы — интент», чтобы объединить в группы фразы типа «… цена» и «…купить».
4) Обработал дата-фрейм с помощью метода .map. После этого появилась колонка с поисковыми интентами.
5) Составил словарь соответствий бренд — страна, чтобы добавить страны бренда ко всем запросам.
6) Обработал дата-фрейм с помощью метода .map.
В моем примере в дата-фрейме уже есть список всех брендов, поскольку я разбил фразы на группы в интерфейсе KeyCollector, однако эту же задачу можно решить с помощью Python по аналогии с обработкой поисковых интентов, описанной выше.
Итого, получилась таблица со следующими параметрами:
7. Выгружаем данные в ClickHouse
Эту таблицу можно было бы сохранить в CSV или Google Sheets. Но я выбрал третий вариант — через ClickHouse.
1) Подключился к базе. Использовал библиотеку из справки Яндекса — в ней уже есть функции для записи и чтения.
2) Создал таблицу заново, указав типы данных. Записал туда наш DataFrame.
8. Строим чарты
Используя Data Lens, подключился к базе и построили необходимые чарты.
Собранные чарты мы объединили в дашборд и добавили туда фильтры.
Дата-аналитикам на заметку
Так за восемь не очень простых, но экономящих время шагов получилась наглядная визуализация того, что происходит со спросом на автомобильном рынке в разрезе по бренду, стране бренда и поисковому интенту в динамике.
А помог в этом набор стандартных инструментов:
KeyCollector — с его помощью можно легко и быстро собирать запросы и сезонности. К нему нужен аккаунт Яндекс Директ и proxy.
Google-таблицы: в них можно складывать результаты и визуализировать с помощью простеньких графиков.
И продвинутых средств:
Python и библиотека Pandas — можно автоматизировать некоторые рутинные задачи.
ClickHouse — место, куда можно удобно сложить собранные данные. Можно остаться и в Google-таблицах, но ClickHouse надежнее и с заделом на будущее.
Yandex Data Lens — BI-инструмент от Яндекса, в котором можно построить продвинутую визуализацию данных.
Экспериментируйте — и тогда вы сможете решать сложные задачи быстро!