Два сценария следят за изменениями в маркировке «Честный знак»: один обходит источники и молча копит реестр, второй раз в период приносит готовый разбор в телеграм.
Правила маркировки меняются постоянно: новые товарные группы, сроки, разрешительный режим на кассах, автоматические штрафы по данным ГИС МТ. Пишут об этом в десятке мест: ленты информагентств, отраслевые сайты, телеграм-каналы ЦРПТ и юристов, поисковая выдача.
Читать это ежедневно невозможно, а пропускать дорого: правила вступают в силу с конкретной даты. При этом новость живёт сутки, ленты вытесняют её вниз, и через неделю нужного материала уже не найти. История изменений не копится нигде: спросить «что менялось за год» просто не у кого.
Решение целиком автоматическое, собрано в n8n. Сценарий сам обходит источники, сам отбрасывает старое и нерелевантное, сам проверяет смысл нейросетью, сам пишет отобранное в реестр и к нужному времени присылает готовый аналитический отчёт. Человек не участвует ни в одном из шагов, он получает результат.
Дальше начинается инженерия: как эту автоматику собрать, чтобы она прожила дольше месяца. Здесь главное то, что сценариев два, а не один.
Соблазн сделать одним куском большой: сходил по источникам, сразу отдал нейросети, сразу прислал сводку. Так делают в первый раз, и так система остаётся одноразовой. Поэтому сбор и показ разнесены: сборщик ходит по источникам своим ритмом и пишет в таблицу, отчёт читает эту таблицу и собирается тогда, когда нужен человеку. Между ними стоит реестр: один пишет, второй читает, и ни один не зависит от расписания другого.
Первая причина: новости не ждут. Материал живёт в ленте сутки, дальше его вытесняют. Если сбор привязан к отчёту, всё, что было между отчётами, теряется навсегда.
Вторая причина: копится собственная база. Через полгода можно спросить «что вообще менялось за год» и получить ответ, потому что данные собирались всё это время. Задним числом такую историю не восстановить ничем: её или собирали, или нет.
Третья причина: отчёт становится дешёвым. Когда данные уже лежат в таблице, поменять период, глубину или формат сводки можно правкой одного сценария, а не пересборкой всего мониторинга.
Каждая группа источников отдаёт данные по-своему: RSS приходит готовым фидом, телеграм-каналы читаются с публичной веб-версии и разбираются из HTML, поисковая выдача приходит через API. Поэтому у каждого источника своя ветка разбора, и только после приведения к общему виду начинается общая логика: фильтры, нейросеть, дедупликация, запись.
Одну и ту же новость перепечатывают по пять раз, и в реестр она попробует лечь пять раз. У каждой записи есть свой ключ, по нему сценарий понимает, что материал уже был, и второй раз не пишет. Без этой мелочи реестр за месяц превращается в кашу, и никакая нейросеть из него сводку потом не соберёт.
Если источник не ответил, сценарий не падает целиком: отваливается одна ветка, остальные доезжают, а мне приходит сообщение, что источник молчит. Чужие сбои будут обязательно, вопрос только в том, теряется из-за них весь день или один фид.
Сначала работают дешёвые фильтры: отсечь по дате, отсечь по ключевым словам. Нейросеть подключается в трёх шагах из пятидесяти с лишним: оценить, действительно ли материал про маркировку, и собрать итоговый разбор. Гонять модель по всему сырому потоку значит платить за токены без выигрыша в качестве.
Таблица не очищается после отчёта: у записи есть отметка, что она уже ушла в дайджест, а сама строка остаётся. Поэтому реестр отвечает и на разовый вопрос «что было на прошлой неделе», и на годовой «как менялись требования по нашей товарной группе».
Разбор за месяц не влезает в сообщение мессенджера, да и читать его там неудобно. Сценарий собирает документ в Google Docs, открывает доступ по ссылке и присылает в телеграм только шапку: период, глубина, сколько новостей вошло, ссылка. Дубль уходит на почту, чтобы отчёт не терялся в переписке.
Глубина периода стоит отдельным шагом в начале сценария, а не зашита в запросы. Поменять недельный дайджест на месячный или собрать разбор за квартал можно одним значением, без переделки логики.
И в реестре, и в дайджесте рядом с выводом всегда стоит ссылка на исходный материал. Сводка нейросети работает как навигация, а решение по срокам и штрафам принимают по первоисточнику, и до него должен быть один клик.
Обход источников руками, когда вспомнишь. Одна новость по пять раз, важное теряется в потоке, а через месяц материал уже не найти. История изменений не хранится нигде.
Сбор идёт по расписанию и молча копит реестр. Раз в период приходит готовый разбор: отобранные новости, сведённые в направления повестки, со ссылками на первоисточники.
1 сообщение вместо ежедневного чтения лент. Главное, что узнаёшь не постфактум, когда уже прилетело, а пока ещё можно среагировать.
Здесь предметом оказалась маркировка, но схема к ней не привязана. Цены конкурентов. Упоминания компании в сети. Новые отзывы на маркетплейсах, особенно негативные. Тендеры по вашей теме. Остатки на складе. Заказы, зависшие в статусе дольше положенного.
Схема везде одна: регулярно проверяем → копим в таблице → раз в период показываем человеку только то, что изменилось. Меняются источники и слова-фильтры, а конструкция из двух сценариев и реестра между ними остаётся той же.
Оба сценария собраны мной в n8n: разбор каждого источника, промпты, дедупликация, оформление документа. Нейросеть здесь не «пишет тексты», а стоит в трёх конкретных местах потока, где нужен смысл, а не правило.
На скриншотах рабочие сценарии и реальный реестр. Ссылка на внутренний документ в сообщении бота скрыта.
Собираю системы наблюдения под вашу тему: источники, фильтрация, реестр и отчёт, который приходит сам.