Обход аптечных сайтов по расписанию: баннеры, выделенные SKU, цены и позиции в выдаче. Те же строки и те же скриншоты-доказательства, что сдаёт агентство, — только каждый день и с датами начала и окончания акции.
В агентстве есть выделенный сотрудник, который обходит фиксированный список адресов, заносит активности конкурентов в таблицу и делает скриншоты. Платим за FTE именно за то, что кто-то смотрит.
Человек физически не может обойти все площадки каждый день, поэтому акция попадает в таблицу тогда, когда её заметили. Дата начала — это дата обхода, а не дата запуска. Короткие акции пропускаются целиком. Расширить список площадок или запросов — значит докупить ещё FTE.
Каждая площадка обходится по расписанию, новый срез сравнивается с предыдущим. Видно что появилось, что исчезло и где сдвинулась цена — с точностью до дня. Добавить площадку или запрос — это строка в списке, а не ещё один человек.
У вас уже есть рабочий прототип на n8n. Он показывает, что извлечение решается, и заодно показывает, где именно оно упирается.
Модель читает скриншот страницы так же, как его читает сотрудник агентства. HTML нужен только чтобы добрать ссылки и то, что не влезло в кадр.
Промо — это событие с началом и концом. Обход повторяется, срез сравнивается с предыдущим, и строка живёт с датами, а не появляется один раз.
Название с сайта сопоставляется с номенклатурой, площадка — с сетью. Дальше строка ложится в аналитический слой, а не в отдельную таблицу.
Список площадок, страниц и поисковых запросов даёт e-com — это ваш рабочий инструмент, а не наша разработка. Всё остальное между входом и выходом делает сервис.
Первый — то, чего у агентства нет в принципе. Второй — ровно то, что агентство сдаёт сейчас. Оба живут в DataLens поверх слоя, своего интерфейса мы не строим. Третий — внутренний: состояние обхода и справочников, от которого зависит, можно ли верить первым двум.
Главный экран, потому что он появляется только при ежедневном обходе. Агентство сдаёт состояние на момент, когда посмотрело; здесь видно событие — акция началась в среду, а не «была замечена в конце месяца». Свои SKU в ленте тоже есть: выпадение из выдачи по ключевому запросу — такое же событие, как чужой баннер. Отдельного приложения под это нет — дашборд собирается в DataLens поверх слоя, как и всё остальное по продажам.
К каждой строке приложен снимок страницы на момент обхода — то же, что прикладывает агентство, только не выборочно.
Сорок семь коротких акций — это то, что при обходе раз в период не попадает в отчёт вообще.
Тот же набор полей, что в вашей Google-таблице: площадка, бренд, SKU, тип активности, обычная и акционная цена, скидка, даты. Это то, что должно поехать в первую же неделю — чтобы было чем сравниваться с последней сдачей агентства. Справа — третий тип активности с вашего слайда, приоритизация в выдаче, которой в прототипе нет. Скриншот-доказательство живёт ссылкой в строке — так же, как агентство сдаёт его папкой на диске.
| Площадка | Бренд и SKU | Активность | Обычная | Акционная | Скидка | Период |
|---|---|---|---|---|---|---|
| ЕАПТЕКА | Lacalut · Aktiv, 75 мл | Баннер на главной | 449 | 337 | −25% | с 24.08 |
| Здравсити | R.O.C.S. · Sensitive, 74 мл | Выделенная карточка | 389 | 329 | −15% | 21.08 — 31.08 |
| Аптека.ру | President · Sensitive, 75 мл | Спецпредложение | 412 | 349 | −15% | с 23.08 |
| Ригла | Sensodyne · Мгновенный эффект, 75 мл | Выделенная карточка | 459 | 389 | −15% | 18.08 — 24.08 |
| Планета Здоровья | Splat · Ultracomplex, 100 мл | Спецпредложение | 299 | 229 | −23% | 04.08 — 15.08 |
| Горздрав | Parodontax · Классический, 75 мл | Баннер категории | 379 | 319 | −16% | 10.08 — 23.08 |
| Апрель | Асепта · Sensitive, 75 мл | Выделенная карточка | 356 | 299 | −16% | с 19.08 |
| Аптека.ру | Colgate · Elmex Sensitive, 75 мл | Баннер категории | 495 | 396 | −20% | 12.08 — 26.08 |
Период закрывается автоматически, когда размещение перестаёт находиться при очередном обходе. «С 24.08» означает, что акция ещё идёт.
Список запросов ведёт e-com. Позиция снимается тем же обходом и живёт как ряд, а не как разовый замер.
Сдачи агентства за прошлые месяцы — готовый эталон. Сверяемся построчно, как только поехали первые площадки.
Единственный экран, который делаем мы, — служебный, для того, кто следит за обходом. Две вещи, от которых зависит всё остальное. Слева — прошли ли площадки сегодня: если площадка отдала капчу, её строки за день просто отсутствуют, и это надо видеть, а не узнавать из пустого отчёта. Справа — сопоставление названий с сайта с номенклатурой: пока SKU не сопоставлен, строка есть, но встать рядом с продажами не может.
Несопоставленные строки не пропадают — они видны в активностях, но в слой не уходят, пока не станет понятно, к какому SKU их отнести. Чаще всего это новая фасовка или другое написание бренда на витрине.
Прокси и хранение скриншотов — единственная растущая статья. Видна здесь же, чтобы решение «добавить площадку» принималось с ценником.
Разница не в парсере — он одинаковый. Разница в том, куда уходит строка на выходе.
Те же таблицы и скриншоты, только дешевле и чаще. Это ровно то, что заказано, и это работает с первых недель. Но живёт отдельным файлом, и чтобы связать активность конкурента с продажами, кто-то всё равно сводит руками.
Строки парсера описывают те же SKU и те же сети, что строки продаж. Соответствия для этого уже заводятся в инициативе по demand planning — значит промо конкурента ложится рядом с вторичкой по той же неделе и той же сети без дополнительной работы по сведению.
Что это даёт практически: когда наше промо не отработало, видно, что происходило в это время на той же полке. Дальше это вопрос к аналитикам, а не к нам, — но данных для него сегодня нет ни у кого.
Эталон готов заранее: сдачи агентства за прошлые месяцы. Как только поехала первая площадка, есть с чем сверяться построчно — и не нужно ждать конца проекта, чтобы понять, работает ли это.
Обход, извлечение по скриншоту, скриншот в архив. Строки выходят в том же наборе полей, что сдаёт агентство, — и сразу сравниваются с его последней сдачей.
Обход становится ежедневным, срез сравнивается с предыдущим. Появляется то, чего в ручном сборе не было: дата начала и дата окончания размещения, а не дата, когда его заметили.
Добавляется третий тип активности — позиции в выдаче по списку запросов от e-com. Параллельно названия с сайтов сводятся к номенклатуре, а площадки к сетям, и строки начинают уходить в слой.
Все площадки под обходом, устойчивость к защите от ботов, повторы. Месяц идёт параллельно с агентством: сходится ли построчно и что находится сверх его сдачи.
Промпт извлечения у вас уже написан и работает — эту часть мы забираем, а не разрабатываем. Поэтому бэкенд здесь полный, а ML половина: у него не парсинг, у него сведение названий с витрин к номенклатуре.
Фронтенда в кейсе нет и он не нужен: лента изменений и таблица активностей собираются в DataLens поверх слоя, а служебная страница обхода — это список со статусами и очередь подтверждений, её пишет бэкенд.