Маркетолог собрал AI-монитор конкурентов: он видит тихие фичи и не шумит на деплоях
Обычный мониторинг сайтов конкурентов превращается в детектор фронтенд-деплоев: поменялся класс или URL, и в Slack летит алерт. Аналитик Garage Eight построил иначе: LLM заходит в продукт под логином пользователя и превращает интерфейс в список возможностей, а сравнивает их обычный Python-код. В Slack попадает только то, что пользователь теперь может делать нового.
AI-обработка оригинала Habr AI; редакция Hamidun News
Самые интересные изменения в продуктах конкурентов никто не анонсирует. Новую автоматизацию или AI-помощника просто включают пользователям, без пресс-релиза и без записи в сторе. Владимир Михайлов, Marketing Analyst в Garage Eight, решил ловить такие вещи автоматически. Его опыт полезен всем, кто пытался сделать мониторинг на Playwright и утонул в ложных тревогах.
Почему сравнение DOM не работает
Первая идея очевидна: снять HTML сегодня, снять завтра, сравнить. На современном SPA это даёт детектор фронтенд-деплоев, а не продуктовых изменений. Поменялся CSS-класс, testid, адрес раздела, компонент переехал, кнопку переименовали, пользователю показали другой вариант A/B-теста. Всё это сотни алертов в день, и почти все бесполезны.
Автор поменял сам вопрос. Не «что изменилось на странице», а «что пользователь теперь может делать такого, чего не мог раньше». Из этого вытекает ключевое архитектурное решение: LLM не получает два HTML-файла с просьбой «найди разницу». Модель работает раньше, на входе: исследует интерфейс и собирает структурированную модель продукта. Сравнение двух моделей делает детерминированный Python. Результат стабильный и воспроизводимый, а не зависящий от настроения модели.
Пример из статьи. Функция переехала с /analytics на /insights/analytics, DOM переписали, пользователь ничего не заметил. Структурный diff закричит «MAJOR CHANGE!». А если URL и название остались прежними, но к ручному действию добавилось расписание автоматического запуска, diff промолчит, хотя это важное изменение. Поэтому у каждой функции хранится список capabilities: schedule_action, export_report, create_custom_alert. Для них считается отдельный хеш, и именно он говорит об изменении по существу.
Пайплайн и два интерфейса
Цепочка такая: браузер с авторизованной сессией, AI Discovery, модель функций, семантический снимок, сравнение, фильтр бизнес-значимости, Slack. Публичный сайт показывает лишь витрину. Saved Views, Custom Alerts, Automation Rules и рекомендации видны только после входа, поэтому система ходит по продукту как обычный залогиненный пользователь.
К этому добавлен аналитический слой. Claude подключён через MCP к истории мониторинга с read-only инструментами: текущие функции конкурентов, NEW/UPDATED/REMOVED за период, фильтры по категориям, проверка покрытия. Получилось два режима. Slack присылает изменения сам. А на вопрос «что появилось у конкурентов за месяц, чего нет у остальных?» аналитик получает ответ обычным языком, без SQL и JSON. История ещё и синхронизируется с Google Drive как база знаний для отдельного Claude Project.
Авторизация: где ломается автоматизация
Большая часть статьи посвящена тому, как не сломаться на логине. Практичные находки:
- Состояния вместо проверки URL. Условие «в адресе нет /login» ненадёжно: SPA может на секунду показать одно и тут же перебросить на другое. Автор использует state machine (AUTH_OK, AUTH_EXPIRED, AUTH_2FA_REQUIRED, AUTH_CAPTCHA_REQUIRED, AUTH_UNKNOWN) и считает пользователя авторизованным, если найдено минимум два из трёх независимых маркеров, например меню пользователя и кнопка выхода.
- Ошибки навигации не равны провалу логина. Исключение «Execution context was destroyed» при успешном входе может спровоцировать повторную отправку формы. Состояние проверяется серией замеров, а временные ошибки пропускаются.
- Секреты не попадают в модель. Логин и пароль лежат в системном хранилище, а вводит их отдельный standalone-процесс Playwright. AI получает лишь сигнал, что сессия снова жива, и в истории запросов к модели секретов нет.
- 2FA не обходят. Если пришла СМС, система останавливается и ждёт человека. После ввода кода сессия сохраняется, и следующие запуски идут сами.
- Капча капче рознь. Невидимый reCAPTCHA-бейдж на странице не значит, что вас сейчас просят пройти проверку. Нужно различать «капча существует» и «капча блокирует вход».
- Persistent profile не равен persistent session. Один сервис выдавал auth-cookie с expires: -1, и она умирала вместе с процессом Chrome. Автор не стал с этим бороться: после автологина браузер остаётся открытым, а Playwright MCP подключается к нему через CDP (connectOverCDP).
Что забрать себе и о чём помнить
Три переносимые идеи. Первая: LLM используйте для превращения хаоса в структуру, а сравнивайте детерминированным кодом. Вторая: описывайте продукт через действия пользователя, а не через разметку. Третья: считайте секреты зоной, куда модель не заходит в принципе.
Ограничения тоже есть. В доступной части материала нет цифр: сколько стоит прогон, как часто модель пропускает или выдумывает функции, как фильтр значимости отличает важное от мелочи. Заход в чужие продукты под аккаунтом может нарушать условия использования сервиса, и это стоит проверить с юристами до запуска. Сама архитектура при этом выглядит рабочей и годится для продуктовой разведки в любой команде.
- 12 нояб. 2026 г.Дженсен Хуанг ушёл с поста CEO Nvidia: компания потеряла $1,4 трлн за две недели
- 12 нояб. 2026 г.Claude in Chrome требует разрешать каждый клик на сайтах с категорией 3
- 12 нояб. 2026 г.AWS Quick получил шесть агентов для продактов: от жалоб клиентов до спеки
- 12 нояб. 2026 г.Anthropic с 12 ноября закрывает Claude для компаний России, даже с юрлицом за рубежом
Вопросы и ответы по материалу
Что известно по теме: почему сравнение DOM не работает?
Первая идея очевидна: снять HTML сегодня, снять завтра, сравнить. На современном SPA это даёт детектор фронтенд-деплоев, а не продуктовых изменений. Поменялся CSS-класс, testid, адрес раздела, компонент переехал, кнопку переименовали, пользователю показали другой вариант A/B-теста. Всё это сотни алертов в день, и почти все бесполезны. Автор поменял сам вопрос. Не «что изменилось на странице», а «что пользователь теперь может делать такого, чего не мог раньше».
Что известно по теме: пайплайн и два интерфейса?
Цепочка такая: браузер с авторизованной сессией, AI Discovery, модель функций, семантический снимок, сравнение, фильтр бизнес-значимости, Slack. Публичный сайт показывает лишь витрину. Saved Views, Custom Alerts, Automation Rules и рекомендации видны только после входа, поэтому система ходит по продукту как обычный залогиненный пользователь. К этому добавлен аналитический слой.
Что известно по теме: авторизация: где ломается автоматизация?
Большая часть статьи посвящена тому, как не сломаться на логине. Практичные находки: Состояния вместо проверки URL. Условие «в адресе нет /login» ненадёжно: SPA может на секунду показать одно и тут же перебросить на другое. Автор использует state machine (AUTH_OK, AUTH_EXPIRED, AUTH_2FA_REQUIRED, AUTH_CAPTCHA_REQUIRED, AUTH_UNKNOWN) и считает пользователя авторизованным, если найдено минимум два из трёх независимых маркеров, например меню пользователя и кнопка выхода. Ошибки навигации не равны провалу логина.
Соберите рабочего ИИ-агента или сервис своими руками без ручного кода
В Академии Жемала Хамидуна (academy.hamidun.com) открыт бесплатный 72-часовой тест-драйв: интерактивные скетч-уроки по Claude Code и Cursor, живой Tech Radar и готовые шаблоны агентов.
Главное из мира ИИ — раз в неделю
7 ключевых событий недели, отобранных вручную. Без шума, репостов и пресс-релизов.
Готово! Проверьте почту — мы отправили подтверждение.