MAATRIX / Блог / FreshRSS и Telegram: новости по вашим темам без бесконечных уведомлений

FreshRSS и Telegram: новости по вашим темам без бесконечных уведомлений

MAATRIX · 17 октября 2026 · 8 мин чтения

Новость о нужном обновлении легко пропустить среди сотни сообщений. Парадокс в том, что добавление ещё одного канала обычно увеличивает эту вероятность. Уведомлений становится больше, а внимания — столько же. Поэтому соберём систему с двумя разными привычками: спокойно читать всю подборку в FreshRSS и получать в Telegram только выбранные сообщения.

Связка состоит из агрегатора FreshRSS, небольшого сценария n8n и собственного Telegram-бота. FreshRSS отвечает за источники и тематический отбор, n8n — за расписание и защиту от повторов, бот — за доставку. Разделение полезно: список прочитанного не придётся превращать в журнал отправленных уведомлений.

Сервер для вашей новостной подборки

Для пилота FreshRSS вместе с n8n рассмотрите 2 vCPU и 4 ГБ памяти. Постоянный VPS собирает ленты и отправляет выбранные сообщения, пока ваш компьютер выключен.

ВЫБРАТЬ VPS

Сначала решите, ради чего телефон должен подать голос

Сформулируйте тему конкретно. «Новости технологий» слишком широко. «Новые стабильные версии PostgreSQL и исправления безопасности» уже позволяет выбрать источники и проверить результат. Для личного чтения можно оставить широкую подборку, а уведомления сделать значительно уже.

Добавьте несколько первичных RSS-лент: официальные блоги проектов, объявления выпусков, разделы документации. Проверьте каждую вручную. Иногда ссылка с названием RSS ведёт на страницу сайта, иногда лента обновляется редко, а иногда издатель отдаёт только короткий анонс. Система не может доставить то, чего источник не публикует.

Разделите источники по категориям, например «Базы данных», «Серверы» и «Инструменты разработки». Не подписывайтесь сразу на сотни лент. С небольшой коллекцией легче увидеть, кто приносит полезные материалы, а кто публикует каждое изменение цвета кнопки как отраслевое событие.

Настройте регулярное обновление FreshRSS штатным способом для выбранной установки. Затем закройте браузер и спустя некоторое время убедитесь, что новые записи появляются. Ручная кнопка обновления во время настройки ещё не доказывает, что сервер будет собирать новости самостоятельно.

Сделайте из поиска отдельную тематическую ленту

Найдите нужные статьи средствами поиска FreshRSS. Начните с понятных слов и выбранной категории, затем уберите очевидный шум. Проверяйте и включённые, и исключённые результаты: слишком строгий фильтр легко скрывает важную новость, в которой автор использовал другое название.

Сохраните запрос через меню пользовательских запросов. Назовите его по задаче, например «Обновления для рабочего стека». Такой запрос хранит условия поиска, а его содержимое меняется по мере поступления новых материалов. Не воспринимайте его как неизменяемую папку с навсегда выбранными статьями.

В настройках аутентификации FreshRSS включите необходимые API, затем в управлении пользовательскими запросами создайте RSS-ссылку для выбранного запроса. Современная документация рекомендует этот способ вместо передачи общего мастер-токена. Ссылка предоставляет доступ к результатам, поэтому храните её как секрет и не публикуйте в открытой инструкции. См. пользовательские запросы FreshRSS.

Откройте созданный адрес в отдельном окне и проверьте состав ленты. Здесь должны быть только те материалы, которые допустимо передавать боту. Если в подборке присутствуют закрытые источники или внутренние ссылки, сначала пересмотрите правила доступа.

Не привязывайте запрос только к непрочитанным статьям, если хотите гарантированно рассматривать все новые поступления. Вы можете прочитать запись раньше очередного запуска сценария, и она исчезнет из выдачи. Для доставки надёжнее отбирать по теме, а отправленное учитывать отдельно.

Соберите маршрут в n8n

Создайте новый сценарий и начните с ручного запуска. Добавьте RSS Read, укажите полученную ссылку и выполните узел. Посмотрите реальные поля ответа: заголовок, ссылка, идентификатор и дата могут называться и заполняться по-разному у разных источников. Узел принимает URL ленты; его параметры описаны в документации RSS Read.

Следующим узлом подготовки данных выделите небольшой набор полей: ключ записи, заголовок, URL, дату публикации и название источника, если оно доступно. Эти названия — ваша схема сценария, а не обязательные поля каждого RSS. Сопоставьте их с фактическим результатом предыдущего узла.

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

Добавьте ограничение первой загрузки. Например, при первоначальном запуске отметьте существующие записи как уже известные, не отправляя их, а затем включите доставку новых. Иначе бот торжественно сообщит о сорока прошлогодних обновлениях, которые программа только что обнаружила впервые.

Нужен сервер под эту задачу?

Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США и РФ. Оплата картой РФ и по СБП.

АРЕНДОВАТЬ СЕРВЕР

Защита от повторов: маленькая таблица с большой пользой

Создайте в n8n таблицу данных, например rss_sent, с полями ключа, ссылки и времени отправки. Таблица нужна для памяти между запусками. Обычная переменная внутри одного выполнения эту задачу не решает: после завершения сценария следующий запуск снова увидит ту же ленту.

Перед отправкой поставьте Data Table с проверкой отсутствия строки по вашему ключу. Операция If Row Does Not Exist пропустит записи, для которых ещё нет отметки. После успешной отправки добавляйте или обновляйте строку соответствующим узлом. Возможности проверки и записи приведены в документации Data Table.

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

Не допускайте параллельного выполнения двух одинаковых запусков: оба могут одновременно увидеть отсутствие строки. Запускайте обработку последовательно, выбирайте интервал длиннее обычной длительности работы и следите за зависшими выполнениями. При дальнейшем росте задачу можно перенести на очередь и базу с уникальными ключами, но для нескольких лент это часто преждевременно.

Подключите собственного бота

Создайте бота через BotFather и сохраните его токен в учётных данных n8n. Для личных сообщений сначала откройте диалог с ботом и отправьте стартовую команду. Для группы добавьте бота туда намеренно и выдайте только необходимые права. Не используйте случайного чужого бота для передачи приватной подборки.

Определите идентификатор нужного чата через входящее тестовое сообщение, полученное вашим ботом. Не путайте его с именем пользователя. Подставьте идентификатор в узел отправки Telegram и сначала отправьте короткий тестовый текст без RSS-данных.

Формат уведомления сделайте простым: название источника, заголовок, короткий собственный комментарий при необходимости и ссылка на оригинал. Для первого запуска отключите сложную разметку. Кавычки, подчёркивания и угловые скобки из заголовков способны ломать сообщение, если включённый режим форматирования требует экранирования.

У метода отправки текста есть ограничение длины, а успешный ответ содержит сведения об отправленном сообщении. Не пересылайте полный материал целиком: короткий анонс удобнее и не превращает мессенджер в копию чужого сайта. Точные поля и ограничения описаны в Telegram Bot API.

Сохраняйте ключ исходной статьи до узла Telegram: после него результат может содержать поля сообщения, а не исходную RSS-запись. При записи в таблицу обращайтесь к подготовленным данным соответствующего элемента. Проверьте это на двух разных новостях, чтобы обе не получили один и тот же ключ.

Расписание и проверка без спама

Замените ручной запуск на расписание после проверки всей цепочки. Начните с нескольких обновлений в день или умеренного интервала, соответствующего частоте публикаций. Ежеминутный опрос редко делает недельный блог полезнее.

Выполните сценарий дважды на неизменившейся ленте. Первый запуск должен доставить разрешённые новые записи, второй — не повторить их. Затем добавьте в тестовый источник новую статью либо дождитесь настоящей публикации и проверьте, что она не потерялась из-за фильтра.

Отдельно проверьте ошибку отправки и восстановление работы. Неудачная доставка не должна получать окончательную отметку об успехе. При ограничении частоты запросов предусмотрите паузу и повтор, а не бесконечную быструю попытку. Журнал ошибок должен показывать причину без раскрытия токена и секретной RSS-ссылки.

Если уведомлений всё ещё много, сузьте тему или отправляйте подборку по расписанию. Для дайджеста нужно учитывать каждую включённую статью и отмечать её только после успешной отправки соответствующей части. Размер выдачи RSS ограничен: при редком опросе и очень активных источниках старые записи могут выйти за пределы ленты раньше обработки.

Ресурсы для личной редакции

Для совместного пилота FreshRSS и n8n разумно рассмотреть MAATRIX Uab Start с 2 vCPU и 4 ГБ памяти. Дальнейший размер зависит от числа лент, частоты выполнения и других сценариев n8n. Выберите совместимую Ubuntu или Debian, постоянное хранение баз и домены с HTTPS.

Резервируйте настройки FreshRSS, базу, сценарий n8n, его ключ шифрования и таблицу отправленных записей. Если восстановить только сценарий, бот может заново разослать весь доступный архив. Ограничьте срок хранения подробных выполнений, особенно если в них попадают приватные материалы.

VPS MAATRIX держит сборщик включённым, пока ваш компьютер выключен. Удачная настройка заметна по другому признаку: Telegram сообщает о том, что действительно хочется открыть, а остальная лента терпеливо ждёт удобного времени для чтения.

Нужен сервер под эту задачу?

Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США и РФ. Оплата картой РФ и по СБП.

АРЕНДОВАТЬ СЕРВЕР

Обсудить статью, задать вопрос или начать новую тему

Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.

Перейти в сообщество →