Самое дорогое — найти повод
Написать текст про новость — работа с понятным концом. Время уходит до неё: открыть ленты, пролистать, вспомнить, о чём уже говорили, и выбрать одно из сотни.
Лента не заканчивается. За последние три месяца 36 источников давали в среднем 102 новых материала в сутки: аккаунты исследователей и лабораторий, англоязычные новостные ленты, русские телеграм-каналы. Прочитать всё нельзя, пропустить нужное — обидно.
Вторая половина работы ещё хуже ложится в расписание: решить, стоит ли повод поста. Это решение принимается заново каждое утро, на свежую голову и в спешке.
Поэтому автоматизировали обход и отбор, а текст остался за человеком.
Двенадцать обходов в сутки, письмо в девять утра
Система просыпается каждые два часа. Полный круг по всем источникам занимает около четырёх минут и приносит в среднем десять новых материалов — это средние по 1 128 прогонам, записанным в журнале.
В девять утра собирается сводка. Если последний обход был больше четырёх часов назад, сначала идёт свежий круг, и только потом письмо: сводка не должна собираться по вчерашним данным.
Ничего не удаляется. Материалы старше 28 дней уходят в архив и остаются доступными поиску — таких уже 13 627. Источник получает статус «ошибка» только после трёх неудач подряд, дальше его проверяют раз в сутки и возвращают в строй сами, как только он ответит.
Оценка складывается из четырёх вещей, и её можно пересчитать руками
Отбор не спрашивает модель. Оценка материала — арифметика: четыре слагаемых со своими весами, на выходе число от 0 до 1.
Так сделано ради двух вещей. Оценку видно насквозь — всегда можно сказать, почему один материал получил 0,7, а другой 0,3. И одинаковый вход даёт одинаковое число: вчерашняя сводка соберётся сегодня ровно такой же.
Заодно это быстро. За всё время система выставила 11 360 оценок — суммарно они заняли 82 секунды.
Из семнадцати тысяч материалов до письма дошли 796
С 23 февраля система собрала 17 007 материалов. Вот как распределились их оценки.
Средняя оценка по всей базе — 0,382. Средняя у тех, кто дошёл до утренней сводки, — 0,622. Жёсткого порога нет: сводка берёт верх списка в пределах квот, и в письме за 25 августа оценки шли от 0,55 до 0,81.
796 из 17 007 — примерно каждый двадцать первый. Материал попадает в сводку один раз, а потом всё равно уходит в архив по возрасту, поэтому нижняя строка живёт отдельно от верхних. Остальное система прочитала вместо человека и не показала. Ещё 593 помечены руками: 588 «использовано» (580 из них — посты собственного канала) и 5 пропущены.
Тридцать позиций с квотами по источникам
Если брать просто верх списка, письмо превращается в ленту одного человека: у самых активных авторов материалов больше, и они забирают все места.
Поэтому мест ровно тридцать и они поделены по типам источников. С одного источника берётся не больше двух материалов, окно — последние семь дней.
Шестнадцать аккаунтов: исследователи, лаборатории и их официальные каналы. Половина мест в письме отдана им.
Одиннадцать лент отраслевых изданий — там та же новость выходит развёрнутым текстом.
Восемь русскоязычных каналов: то же самое, но уже с разбором и мнением автора.
Ниже — верх реального письма за 25 августа. Слева оценка, которую поставила система.
В этом письме 25 позиций вместо тридцати: телеграм-квоту набрать не из чего — русскоязычные каналы сейчас не отвечают. Система не добирает места из других корзин — лучше короткое письмо, чем разбавленное.
К письму приложен готовый вход для работы над текстом
Список в мессенджере — только верхушка. Вторым сообщением приходит файл, в котором уже собрано всё, что нужно, чтобы сесть и написать: описание голоса автора, его прошлые посты как образец, сами новости целиком и требования площадок.
Медианный такой файл — 96 тысяч знаков. Его не читают глазами: это заготовка для работы, из которой рождается черновик.
Голосов в базе два: личный и юридический — у них разные рубрики, разный регистр и разные стоп-слова. Какой подставить, задаётся при сборке; утренняя сводка идёт с личным.
Чего эта система не делает
Здесь важно назвать вещи своими именами, иначе кейс читается как обещание.
И про надёжность. Выше — 123 собранные сводки с марта; журнал доставки ведётся с конца апреля, в нём 88 отправленных и 24 падения: 18 раз бот приходил с отозванным ключом, 6 раз не было связи с мессенджером. Восемь телеграм-источников из тридцати шести сейчас не отвечают с российского адреса, и письмо собирается из оставшихся. Перевод машинный: в сводке за 25 августа заголовок про vibe coding приехал как «совместные каналы кодирования вибрации» — поэтому рядом всегда стоит ссылка на оригинал.
Меняются источники и слова — механика остаётся той же
Внутри нет ничего про ИИ-новости: это список источников, четыре слагаемых оценки, квоты и расписание. Поменяйте список и слова — и та же машина будет следить за другой темой.
Соберём такое же наблюдение под вашу тему
Начинаем с одного разговора: за чем следить, какие слова важны, кому и в какое время приходит письмо. Первая версия собирается сразу на ваших источниках.