Новостной агент

Агент следит за источниками, сам отсеивает повторы и шум и присылает только то, что важно — а публикует то, что вы одобрили

Это новостной отдел из одного агента на вашем сервере: он ходит по вашим источникам — сайтам, лентам, Telegram-каналам, поиску, карточкам товаров — собирает материалы, объединяет повторы одной новости и обрабатывает их с помощью ИИ (краткое содержание, оценка значимости, темы, компании и люди, сюжеты, перевод). Дальше он поднимает оповещения по вашим правилам, присылает утренние сводки и готовит публикации, которые вы одобряете. Важное отличие: в интерфейсе нет ни одной формы редактирования — вы наблюдаете и отдаёте команды своему ИИ-агенту (чат с Pastukhov Agent), а он меняет настройки; если чат не подключён, готовую команду можно скопировать и отправить напрямую, без интерфейса. Всё живёт на ваших серверах, а настройки — обычные текстовые файлы под контролем версий. А если чего-то не хватает, любой шаг можно расширить своим кодом на Python: свой сборщик новостей, свой поставщик ИИ, свой канал доставки или своя цель публикации.

Агент ведёт новости сам: вы наблюдаете и отдаёте команды, а настройки меняет ваш ИИ-агент

Пятнадцать способов следить за источниками — сайты, ленты, Telegram-каналы, поиск, карточки товаров, подкасты, видео и свой сборщик на Python

Один аккуратный сборщик: не чаще одного запроса в минуту к одному сайту, повторно — только если страница изменилась

Повторы одной новости объединяются в одну карточку, у неё остаются все адреса-источники

Сырые страницы сохраняются целиком — видно, откуда взялся каждый факт

Мониторы следят за конкретными значениями (цена, наличие, заголовок), а не за страницей целиком

У каждого значения — история и график, а у изменения — снимки «до и после»

Событие появляется только с доказательством: что было, что стало и на сколько

Краткое содержание строго по материалам со ссылками на конкретные цитаты

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

Темы, компании, люди и товары определяются автоматически, а материалы об одном событии собираются в сюжет

Правила без программирования: дерево условий по источникам, тегам, словам и значимости

Защита от шума включена сразу: не больше трёх оповещений в час, тихие часы и пауза на повторы

Каждое подавленное оповещение записано с причиной — тишина всегда объяснима

Одна утренняя сводка вместо потока сообщений — по расписанию и по вашим темам

Восемь каналов доставки: почта, Telegram, Slack, Discord, Microsoft Teams, вебхук, вызов API и канал своим кодом

Канал не отправит ни одного сообщения, пока вы не проверите его тестовым сообщением

Черновик публикации готовится по материалам, но выходит только после вашего одобрения

Придуманные цитаты отбрасываются, а черновик без подтверждений не создаётся вовсе

Готовые ленты для читателей в трёх форматах, с токеном и только для опубликованного

Всё на вашем сервере, а настройки — обычные текстовые файлы под контролем версий

Свой код на Python расширяет любой шаг: сбор, обработку, оповещения, публикацию — без правки самого продукта

Одно поле поиска на всё: материалы, события, сюжеты, сущности и настройки — один запрос, а найденное открывается в своём экране

Тихий в простое: когда новостей нет, продукт не тратит процессор и освобождает память — он спокойно живёт рядом с другими сервисами

Источники: пятнадцать способов следить за новостями

Дашборд новостей: плитка «0/4 Источников в порядке · 3 с ошибками» и панель «Проблемные источники» с тремя записями и пометкой «сеть»

Ленты, обычные страницы и списки, поиск по запросу, карта сайта, публичные Telegram-каналы, приём материалов письмом, файлы-документы, Reddit, YouTube, подкасты, Fediverse, отзывы и свой сборщик на Python — выбирайте то, где живут ваши новости

Ленту можно не искать вручную: агент сам найдёт её по адресу сайта, включая привычные преобразования для YouTube, GitHub, Reddit и Mastodon

Список источников переносится одним файлом из любой программы чтения (файл со списком источников, понятный таким программам) и так же выгружается обратно

У каждого источника своё расписание, свои заголовки и даже свой канал связи, а состояние видно словами: «Активен», «Серия неудач», «Ошибка», «Приостановлено»

Вежливый сбор и архив сырых страниц

Входящие: лента собранных материалов с источником и датой, сверху — сюжеты с пометкой «1 материал об одном · 1 источник» и кнопкой «Открыть сюжет»

Все источники ходят в сеть через одного аккуратного сборщика: по умолчанию не чаще одного запроса в минуту к одному сайту — вас не заблокируют за жадность

Повторный запрос уходит только если страница изменилась: если сайт ответил «не изменилось», страница не скачивается заново

Каждая скачанная страница сохраняется целиком, а одинаковые тексты не размножаются — из события всегда видно, откуда взялся факт

Удалённую страницу можно поднять из внешнего веб-архива, а короткий анонс из ленты дотягивается до полного текста статьи

Повторы: одна новость — одна карточка

Карточка сюжета: материалы об одном событии объединены в одну запись — «1 материал · 1 источник · 1 домен» и список материалов с датой и источником

Одна и та же новость из разных источников не превращается в десять записей: повторы объединяются в одну карточку

Объединение идёт по трём признакам по очереди: внешний номер материала, адрес страницы и совпадение текста в пределах 72 часов

У объединённой записи остаются все адреса, из которых она пришла, — видно, кто написал первым и кто подхватил

Короткий анонс из ленты дотягивается до полного текста статьи, если страница открыта; если закрыта — остаётся то, что было, без ошибки

Мониторы: что именно изменилось

Карточка монитора: кнопки «Проверить сейчас», «Изменить расписание», «Настроить таргетинг», блок «Конфигурация» с селекторами полей и блок «Состояние» с серией неудач

Монитор следит не за страницей целиком, а за выбранными значениями: цена, наличие, заголовок и любое другое поле

Поля описываются словами, а агент показывает, что нашёл, — разбирать страницу вручную не нужно

У каждого значения есть история и график, а у изменения — снимки «до и после» со своим сроком хранения

Порог срабатывания не даёт дёргать вас из-за копеек, а базовую линию можно сбросить в любой момент

События с доказательствами

Событие №2: оценка «8/10 · Существенное», разделы «Резюме», «Различия», «Подтверждения» с хешем исходного тела и таблица доставок

Событие появляется только вместе с доказательством: что было, что стало, абсолютная и относительная разница

К каждому событию приложены цитаты и ссылка на архивную копию страницы — можно проверить самим

Карточка события показывает изменение построчно и все отправки, которые по нему ушли

Событие можно отметить прочитанным или скрыть из ленты — скрытие влияет только на видимость, данные не теряются

ИИ-обработка: краткое содержание, значимость, темы

Список событий за 30 дней: строка с оценкой «8/10 · Существенное» и пометкой «Резюме недоступно» — ИИ-резюме в демо не настроено

Краткое содержание строится строго по материалам и подкрепляется ссылками на конкретные цитаты

Если опоры в тексте нет, честно ставится пометка — ИИ ничего не додумывает

Значимость оценивается от 0 до 10 и раскладывается по полосам: шум, стоит знать, важно, критично

Темы определяются автоматически, а необработанное событие честно помечается «Не оценено», а не получает выдуманное число

Сюжеты и сущности: что с чем связано

Материал во «Входящих»: источник, дата, метки industry, wire, marketplace-policy, команда «Перевести материал #128 на английский» и ссылка «Открыть сюжет»

Материалы об одном и том же событии собираются в сюжет с состояниями «Новый», «Развивается», «Затухает» и «Архив»

Считается число независимых источников: видно, новость написал один сайт или её подхватили десятки

Компании, люди и товары распознаются автоматически и собираются в реестр сущностей с историей упоминаний

Перевод материалов на другие языки помогает читать иностранные источники без сторонних программ

Правила: свой фильтр событий

Дашборд, блок «Что сказать агенту»: восемь правил простыми словами — «Следить за конкурентом», «Следить за ценой», «Утренний дайджест», «Меньше шума» и другие

Правило собирается из условий без программирования: по монитору, источнику, тегам, теме, значимости, словам и сущностям

Порядок проверки фиксирован, а каждое решение попадает в журнал — видно словами, почему правило не сработало

Правило можно проверить на прошлом событии до включения — ничего не сломается в бою

Правило умеет помечать, скрывать, направлять в сводку, запускать публикацию и вызывать вебхук

Оповещения и защита от шума

Аналитика: панели «Аномалии» и «Здоровье доставки» с диаграммой «Доставлено / Ошибки / Мёртвая очередь / Подавлено / В ожидании», а также «Стоимость» по дням

У каждой полосы значимости свои каналы: критичное уходит в Telegram, а «стоит знать» — в сводку

Защита от шума включена сразу: не больше трёх оповещений в час и пауза 30 минут на повтор по тому же монитору

Одинаковые изменения приходят один раз за сутки, а тихие часы с 23:00 до 08:00 откладывают сообщения до утра, а не выбрасывают их

Оповещение может дождаться подтверждения вторым источником, а каждое подавление записывается с причиной

Сводки вместо потока сообщений

Доставка №5: дайджест turist-weekly-traveltech со статусом «УСПЕХ», HTTP 200 и раскрытыми блоками «Текст сообщения», «Запрос» и «Ответ»

Вместо десятка сообщений подряд приходит одна подборка — например, утренний дайджест по расписанию

Для каждого правила выбирается «Сразу» или «В сводку» — важное не утонет в общей подборке

Сводки собираются по темам и источникам, а расписание настраивается под ваш рабочий день

Ручной запуск не сдвигает расписание, а тестовая отправка идёт боевым каналом — то есть проверяет то, чем вы пользуетесь

Каналы доставки и журнал отправок

Журнал доставки: шесть отправок с каналом, получателем, статусом («УСПЕХ», «МЁРТВАЯ ОЧЕРЕДЬ»), числом попыток и HTTP-кодом

Восемь видов каналов: почта, Telegram, Slack, Discord, Microsoft Teams, вебхук, вызов API (обращение к другой программе напрямую, без интерфейса) и канал, который отправляет сообщение вашим кодом на Python

Пока канал не проверен тестовым сообщением, он ничего не отправляет — защита от «я думал, настроено»

Журнал доставки хранит статус, число попыток, ответ сервера, тексты запроса и ответа и цепочку повторов

Отправка на внутренние и служебные адреса запрещена, а пароли и токены в настройках маскируются

Публикация с проверкой человеком

Черновик публикации №1 со статусом «ОШИБКИ»: кнопки «Одобрить и опубликовать», «Переписать короче», «Перевести и опубликовать» и сообщение о ненастроенном LLM-провайдере

Черновик готовится по материалам события или сюжета в вашем стиле: язык, тон, длина и образец текста задаются

Каждая цитата проверяется на сервере — придуманные отбрасываются, а черновик без подтверждений не создаётся вовсе

Ничего не публикуется без вашего одобрения; каждая переделка — новая версия с сохранением истории

Шесть целей публикации: Telegram-канал, письмо, лента RSS, вебхук, папка с файлами и цель, которая отправляет публикацию вашим кодом на Python; снятие публикации описано честно по каждому каналу

Ленты для читателей

Публикации: таблица черновиков с целью публикации turist-store-feed (лента), состоянием «ОШИБКИ», датами создания и публикации и колонкой ссылок

Для ваших читателей готовится лента в трёх форматах: RSS 2.0, Atom и JSON Feed

В ленту попадают только опубликованные материалы — черновики и отклонённое читатель не увидит

Адрес ленты защищён токеном; неверный или отсутствующий токен отвечает «не найдено», а не показывает содержимое

Токен можно заменить одним действием, если старый попал не туда

Экраны наблюдения и команды агенту

Экран наблюдения «Мониторы»: таблица из трёх мониторов с целью, следующей проверкой, состоянием «ОШИБКА», последней проверкой и последним изменением

Восемь экранов наблюдения: Главная, Мониторы, События, Входящие, Опубликовано, Доставка, Аналитика и Скрипты

Ни одной формы редактирования: изменения делает ваш ИИ-агент, а человек читает и отдаёт команды

Кнопка-команда подставляет готовую фразу в чат с агентом, а если чат не подключён — копирует готовую команду для отправки напрямую

Новые события, материалы и отправки появляются в реальном времени, а состояния подписаны словами, а не кодами

Поле поиска вверху боковой панели находит всё сразу — материалы, события, сюжеты, сущности и сами настройки — и открывает найденное в его экране

Аналитика и поиск по всему

Аналитика за 30 дней: график «Объём и события», панели «Доля голоса», «Тональность», «Отслеживаемое поле», «Топ источников» со средней значимостью 8/10, «Аномалии», «Здоровье доставки» и «Стоимость»

Видно, сколько новостей пришло, сколько оказалось важным и сколько шума подавила защита

Расход на ИИ учитывается по задачам, а суточная квота не даёт выйти за рамки бюджета

Качество источников сравнивается: кто даёт свежие новости, а кто шумит и повторяется

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

Надёжность: настройки в файлах и управление по API

Страница документации Management API новостного агента: описание авторизации по заголовку X-API-Key и каталог эндпоинтов /api/news/* с пояснениями

Все настройки лежат текстовыми файлами в папке проекта под контролем версий: перенос на другой сервер — это копирование папки

Изменения перечитываются на лету, а битый файл не ломает работу — остаётся последняя удачная версия с понятной ошибкой

Агенту выдаётся отдельный ключ управления, а браузер в интерфейсе может только читать и ставить отметки

Самодокументируемый справочник отдаёт команды, описания файлов настроек и одиннадцать готовых сценариев работы агента

Свои скрипты: расширить любой шаг своим кодом

Скрипты: сообщение «Виртуальное окружение не готово», пустая таблица скриптов и карточка «Расширяйте с помощью python» с перечнем точек конвейера

Свой код на Python может быть источником, поставщиком ИИ, каналом доставки или целью публикации, а может просто преобразовывать данные на любом шаге

Скрипт — обычный текстовый файл рядом с остальными настройками: его пишет и правит ваш агент, вручную ставить ничего не нужно

Каждый запуск оставляет запись: что вызывалось, зачем, чем закончилось и сколько заняло — всегда видно, почему скрипт промолчал

Ограничители на месте: срок на один запуск, предел одновременных запусков и общий выключатель, который разом останавливает все скрипты