
Telegram‑бот с новостной лентой, обучающейся на реакциях, за $5 в месяц
Автор создал Telegram‑бот, который убирает дубли, фильтрует контент по четырём уровням, переводит новости RU↔EN и подстраивается под реакции пользователей, при этом работает на Fly.io за ~$5 в месяц.
Что было сделано
В статье на Habr ML автор делится проектом — Telegram‑ботом, который собирает новости из нескольких каналов, удаляет дубли, переводит их между русским и английским, а также адаптирует выдачу под эмоциональные реакции пользователей (❤️, 🔥, 😢). Пользователь может задать четыре уровня тяжести контента, от полностью «безопасного» до «полного доступа».
Технические детали
- Хранение данных: вместо традиционного сочетания PostgreSQL + pgvector бот перешёл на встраиваемую векторную базу (SQLite + sqlite‑vector), что сократило накладные расходы и упростило деплой.
- Обучение на реакциях: каждое действие пользователя (лайк, реакция) записывается и используется в реальном времени для переобучения небольшого ранжировочного модели, построенной на LangChain‑compatible pipeline (в статье упомянуты
langchain‑compatible embeddings). - Перевод: для RU↔EN используется API DeepL (или бесплатный
huggingface‑модель). - Хостинг: всё приложение упаковано в Docker‑контейнер и развёртывается на Fly.io. При минимальном трафике стоимость инстанса составляет около $5 в месяц.
Результат
Бот успешно обслуживает несколько десятков активных пользователей, показывая только релевантные и «позитивные» новости, а при необходимости переключается в режим полного доступа. Авторы отмечают, что благодаря встраиваемой базе и небольшому объёму кода проект легко масштабировать и переносить.
Для разработчиков это отличный пример того, как можно построить персонализированную новостную ленту без тяжёлой инфраструктуры. Встроенные векторные БД позволяют избавиться от отдельного PostgreSQL, а реактивное обучение на пользовательских реакциях делает сервис более живым. При бюджете в $5 в месяц такой подход подходит для MVP и небольших стартапов, но стоит помнить о масштабируемости и защите от токсичного контента при росте аудитории.


