Привет!
Я сделал (еще один) саммаризатор каналов в телеграмме - бот FeedCraft.
По заветам make — решил свою проблему, теперь сам им активно пользуюсь и очень доволен.
У меня много каналов, которые я не читаю, но хотел бы быть в курсе, что там происходит. С помощью бота я собрал их в один список и стал регулярно читать дайджесты. И это сработало: раз в три дня я читаю один пост по теме, пробегаю глазами — и если что-то цепляет, иду читать оригинал.
В результате я таки стал читать эти каналы с интересной для меня информацией - и трачу на это меньше времени и когнитивных усилий.
Вот несколько примеров:
- Дайджест по дата-сайенс, который я читаю: t.me/TLDR_data_science
- Дайджест по крипте: https://t.me/TLDRishnaya
- Дайджест по каналам жены — десяток штук по когнитивным наукам, которые она выбрала (я и сам теперь пролистываю, попадаются интересные штуки, которые я так бы и не увидел никогда): t.me/tldr_brain_science
Что умеет бот
Бот позволяет собрать список каналов и получать по ним дайджест. Можно добавить каналы поштучно или сразу всю «папку». Сейчас в бесплатной версии — до 5 каналов в дайджесте, публикация каждые 3 дня. Можно выбрать время публикации.
В платных вариантах (за “звезды” телеграм):
- несколько списков с большим числом каналов;
- публикация дайджеста в свой канал;
- кастомный промпт;
- разная частота публикаций;
- свой хедер/футер.
Также есть опция с неограниченным количеством списков и каналов, где пользователь использует свой Gemini API ключ (на случай отказа Gemini — есть fallback на OpenAI). Тут можно настроить всё, что угодно: частоту, промпт, оформление, публикацию в свой канал.
Кто пользуется
Пока пара друзей. Написать код оказалось легче, чем рассказать о нём. Даже этот пост я оттягивал несколько недель.
Но результат есть — я реально читаю больше интересного, и трачу на это меньше времени и усилий.
Подробности по созданию:
Похожий бот есть Squeezy, но я начал делать свой бот до того, как увидел этот, к тому же у меня получились некоторые фичи, которых нет у других.
Вначале я сделал более сложный, на мой взгляд, проект - получение и сохранение данных не только из каналов, но и из чатов. Там было получение данных через юзер-сессию, своя база данных, поиск по ней, даже RAG прикрутил (не сработало).
Пообщавшись с другом, решил сделать попроще - закрыть более простую потребность. Все равно заняло 3-4 недели.
- Сбор каналов — через RSSHub. Для «закрытых» — через telegram-сессию.
- Вайбкодил с помощью cline и Gemini 2.5.
- Узнал про Шотган @glebkudr из чата и стал тоже использовать его в своем проекте, спасибо, Глеб!
- Еще удобная фича из Шотгана - промпт поиска багов. Что-то действительно нашлось.
- Для некоторых штук (деплой, мониторинг, идеи) пользовался “проектом” в ChatGPT - загружал туда весь репозиторий одним файлом и задавал по нему вопросы
- Удобно добавлять фичи, которые несут за собой большие изменения - кнопочки появляются, локализация пишется, строчки в базе данных добавляются.
- Тесты тоже писал с помощью LLM, но надо всё равно проверять глазами, хотя как старт — хорошо. Писал их в Google CLI, тогда он только появился, хотелось попробовать. Сейчас бы, может, начал с тестов, а потом писал под них код.
- Я почти не использовал dev-rule.md (зря). Взял часть из шотгана и добавил кусочек, который помогал избегать регрессий:
- Every time I correct you mark patch code with
# IMPORTANT:
commentary.- Be extremely careful when changing code that contains
# IMPORTANT:
annotations. Always double-check if you are about to remove or change them.- Every time you're pointed to the fact that you accidentally introduced a regression, make sure to add
# IMPORTANT:
commentary when returning status quo.
- Все изменения в коде я смотрел глазками и тестировал ручками, если это было возможно. Не совсем тот вайбкодинг получился, как про него пишут.
Неожиданные трудности
- В целом получилось достаточно много наворотов. Вроде бы рекомендуется запускаться с простым функционалом, а потом допиливать - у меня это не получилось:(
- Телеграм поддерживает урезаный markdown, с этим пришлось бодаться. Также, если пост длинный - надо было следить, чтобы при разбиении на несколько постов теги не разрезались, такое телеграм не прощает.
- Хотел добавить оплату не только “звездами”, но и по-человечески, но официально телеграм позволяет оплату картами только для реальных товаров. Хотя у многих ботов есть оплата картами - это нарушение условий пользования телеграм.
В целом, повторюсь, я стал читать больше интересного, и трачу на это меньше времени и усилий. Надеюсь, кому-то это тоже поможет.
Если подписка кажется дорогой, хочется каких-то других условий и фич - напишите мне, я пойду навстречу.
Добро пожаловать в клуб Суммаризаторы без продаж ) @sumai_news_bot
О, забыл! Еще была морока с фичей - задать желаемое время получения дайджеста: пришлось спрашивать у пользователя его часовой пояс или время - и уже привязываться к нему, телеграм этих данных не отдает.
Что такое dev-rule.md и шотган?
Подскажи, ты кластеризуешь посты, или объединяешь в один большой текст и скармливаешь LLM?
Я делаю один большой текст, но в нем для каждого сообщения указываю автора, дату, источник.