Проект: Longreader — читалка лонгридов внутри Telegram  Публичный пост
11 марта 2025  513
Longreader — читалка лонгридов внутри Telegram
https://t.me/ReadWatchLaterBot

Привет, вастрики! Мы с друзьями собрались попрограммировать и что-то получилось :) Дальше рассказ будет от нас троих: @khadmat96, @dreamwa1ker и меня.

Расскажите о себе и сути проекта?

@nbrzvsk: последние 7 лет идентифицирую себя как продакт :))) в этом году появился интерес создать что-то своё. Одна из мыслей которая получила развитие с этим проектом — про telegram mini apps. Дуров и команда сделали мощную платформу, почти не уступающую по возможностям нативным приложениям. Гипотеза в том, что людям которые сидят в телеге будет удобно выполнять повседневные задачи тоже в телеге, а платформа мини приложений дает кучу возможностей и очень простую активацию — не надо качать приложение и аутентифицироваться.

@khadmat96: Всем привет! Я разработчик под мобилки на всём подряд, а временами ещё и был менеджером. Наш проект - приложуха на базе Телеги для удобного чтения статей.

Суть простая: бот в Телеге позволяет сохранять статьи "на потом". Отправляешь или пересылаешь ему сообщение со ссылкой, а он парсит текст, убирает лишнее и сохраняет. Читать можно сразу или позже в минималистичной веб-аппе. Если остановился читать на середине, при следующем заходе аппа сама проскроллит статью до места, где ты остановился.

Удобно, когда натыкаешься на интересный лонгрид, но читать прямо сейчас некогда. Это что-то вроде Saved Messages, но не в виде одной огромной свалки, а в виде удобного чата+аппы под конкретную задачу.

@dreamwa1ker: Привет! Я Паша, занимаюсь QA и саппортом. На одной из встреч ребята предложили поучаствовать в новом проекте. Всегда было интересно попробовать настроить инфру и CI/CD в продакшен проекте, так что я предложил взять эту задачу на себя. Так и началось мое участие тут :)

Нужно закинуть в бота ссылку
Нужно закинуть в бота ссылку

Бот её спарсит и сохранит
Бот её спарсит и сохранит

И покажет красиво, а еще сохранит прогресс
И покажет красиво, а еще сохранит прогресс

Как появилась идея? Что вдохновило?

@nbrzvsk: На идею читалки лонгридов вдохновила моя собственная задача — хочу читать больше лонгридов :) Задача давно решена, есть как зарекомендовавшие себя продукты типа Pocket от Mozilla, так и например модный калифорнийский стартап Matter, пропогандирующий “будь умным, читай лонгриды”.

Спусковым крючком “начать чето делать” стали 3 момента:

  1. бесят подписки! платить 10-20$ в месяц за простейшую (как казалось) читалку меня душит жаба
  2. желание протестить вайб кодинг с Cursor — последний раз я программировал что-то серьезнее формы сбора данных на лендинге лет 7 назад. Стало очень интересно, насколько моего бекграунда хватит, чтобы ставить задачки пытливому, но вечно косячащему, за то работающему за гроши эйай агенту
  3. на рынке телеграм веб апп таких решений еще не видно, хотя лонгриды часто появляются в каналах: посты, новости, ссылки на статьи. Сходу удобный UX — просто перешли ссылку боту

@khadmat96: А у меня пару месяцев назад появился интерес поковыряться с апи телеги, посмотреть как работают боты внутри. Я начал делать что-то вроде текстового квеста с картинками, в котором ты нажимаешь на кнопки и получаешь в награду ничего :)) Когда-то я его закончу :)

Как Коля упомянул в начале, мы не чужие друг другу люди, знакомы уже много лет, сейчас живем в разных странах, но периодически созваниваемся поболтать. На одном из звонков я рассказал про свои дела с ботами и поделился черновиком текущего проекта. А Коля в ответ поделился идеей read it later аппы, и нам показалось, что звёзды сошлись, вот она - возможность заиспользовать функциональность телеги, чтобы сделать реальный проект, решающий какую-то задачу. Начали работать над идеей и в процессе привлекли Пашу, с которым мы тоже дружим много лет.

Что вошло в прототип и сколько времени на него было потрачено?

@nbrzvsk: я сделал вебапп со списком статей, экраном чтения, seamless auth с помощью телеги, и хотелось еще попробовать нативный шеринг. Довольно много времени и сил ушло на парсинг статей по ссылке. Итого получилось где-то 40-50 часов активной работы за месяц, в свободное от основной работы время. Для продакта, который первый раз в жизни вбивал “yarn dev” в консоли я очень доволен результатом :)))

@khadmat96: Я занимался только ботом и ещё поднимал на старте впс-ку, на которой крутился(и крутится) этот бот и монга. Бота писал на котлине. И ещё сделал буквально парочку мелких задач на фронте. В текущую версию бота вошла очень простая функциональность:

  • Перед началом взаимодействий рассказать что это вообще такое
  • Парсить входящие сообщения и определять являются ли они урлом
  • Отправлять урл бэкенду на парсинг
  • Логировать действия юзеров, чтобы худо-бедно строить воронки. Можно сказать - аналитика :)

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

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

  • сервисы backend, frontend и telegram-bot собираются в образы в GitHub Actions;
  • на хосте эти сервисы + база поднимаются в контейнерах при помощи Docker Compose;
  • базово настроен Nginx для маршрутизации трафика между сервисами.

Какой технологический стек вы использовали? Почему?

Vibe coding: Cursor Agent + Sonnet 3.5 -> 3.7
Frontend: нынче модные Next JS + shadcn
Backend: Python + FastAPI + MongoDB + Trafilatura для парсинга
Telegram bot: Kotlin + Telegram Bot API
DevOps: Docker Compose, GitHub Actions, Nginx

Как вы запускались и искали первых пользователей?

@nbrzvsk: это самая большая боль сейчас )) делали на энтузиазме, за месяц он ожидаемо поугас, хочется делать что-то и дальше, но основной вопрос — что именно и для кого. Сейчас хотим показать этот проект миру, чтобы понять, есть ли в нем какой-то интерес. Начинаем с этого поста (привет, мир!), дальше пойдем в несколько телеграм комьюнити, которые потенциально любят читать лонгриды.

@khadmat96: Пока что проектом пользуемся мы сами и наши друзья. Судя по логам - не очень активно :) Прямо сейчас, начиная с этого поста, мы будем рассказывать о проекте широкой аудитории и смотреть на результат.

С какими самыми неожиданными трудностями пришлось столкнуться?

@khadmat96: Это скорее не трудность, а забавный кек. В первый день, когда мы развернули всё на “проде”, буквально через несколько часов я заметил, что все мои статьи пропали. Я написал ребятам и сразу же пошел смотреть а что не так.
А оказалось вот что

пумпумпум
пумпумпум

Монга светилась наружу, была обнаружена и дропнута злоумышленником :) Первые грабли они такие)
Благо, что ничего ценного там не было, только мои пара статей. Никто больше к тому моменту не успел попользоваться проектом.

Получив такой опыт мы немного сняли розовые очки и поняли, что нас наверняка будут пытаться сломать разными способами. Из этого родилось текущее ограничение в 10 статей на парсинг в сутки.

@dreamwa1ker: на тот момент “прод” был очень условным. Наружу светились все сервисы, у базы еще не было ни аутентификации, ни бэкапов. После удачной попытки всё поднять, я порадовался, что всё завелось и пошел передохнуть. Вернувшись, увидел сообщения от ребят, что случилось непоправимое :D

Сколько потратили и заработали? Есть идеи как это можно монетизировать?

@khadmat96: Впс-ка на DO стоит 12$/мес, но всё ещё оплачивается из подарочных реферальных кредитов. Если появится нагрузка, то, вероятно, надо будет перейти на впс-ку подороже.
Ещё сколько-то стоят гитхаб экшнс, которые собирают нам имаджи для докера. Про них, я думаю, расскажет Паша.
Детально монетизацию мы пока не рассматривали, но как один из первых и простых вариантов - интеграция звездочек ТГ и увеличение дневных лимитов за них.

@dreamwa1ker: Actions за прошлый месяц, когда разработка была активнее и образы собирались чаще всего, мы потратили около $1.

@nbrzvsk: Да, про монетизацию мыслей много, от подписок за продвинутые фичи (прислать статью войсом как подкаст, сделать TLDR), до usage based за них же, с оплатой telegram stars или через условный tribute. Но основное, это сначала понять что есть какой-то вообще интерес.

Какие планы на будущее?

@nbrzvsk: Если в этом проекте будет фидбэк и потенциал, то развивать его. Если нет — то двинуться дальше, но пойти от рынка и потребностей пользователей. Берем нишу “юзеры телеграма” и их платформу, будем копать в сегменты, общаться и исследовать боли.

@khadmat96: Особо и нечего добавить, всё так

Нужны ли какие-то советы или помощь Клуба?

@nbrzvsk: будем рады как фидбэку о багах и неудобствах, так и более глобальные советы “как встать на путь индихакера” от тех, кто уже это сделал

@khadmat96: честный фидбек!

@dreamwa1ker: помимо фидбэка по продукту, буду рад услышать советы по настройке инфры и CI/CD, безопасности и всему такому.

Какой совет вы бы сами могли дать идущим по вашим стопам?

@nbrzvsk: база — быстрее доводить до первого результата и собирать фидбэк. Без него нужно расходовать гораздо больше ресурсов силы воли :)

@khadmat96: как можно быстрее добираться до первой обратной связи

Воспользоваться ботом можно по ссылке: https://t.me/ReadWatchLaterBot

4 комментария 👇
Pavel Petrov DevOps & Observability engineer 11 марта в 13:29

Круто что сделали такое на энтузиазме! Мне тоже кажется что Телеграм как платформа недоиспользован, хоть и понимаю некоторые причины этого.
Идея для фичи: настраиваемое "подпинывание" прочитать всё-таки сохранённое, думаю хорошо смотрелось бы в виде отправки ботом сообщения с отрезком лонгрида с того места где остановился. Может для кого-то станет основным сценарием использования чтобы есть слона по кусочкам, а лонгрид читать регулярно по паре абзацев из напоминания :)
Понятно что такое не годится для статей где нужно сильное погружение в контекст, но для таких текстов пользователь может и не включать

  Развернуть 1 комментарий

@petrovpa, классная идея! я думал в похожую сторону — чтобы аля дуолинго геймифицировать, выдавая кусочки статей как упражнение.

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

Идея с тем чтобы засылать прям сообщением в бота классная!

  Развернуть 1 комментарий

Скажите, а читалка для лонггрид постов в telegram может работать примерно так же?

Бывает, что в каналах пишут лонгриды на 2/3/... поста. И находятся они где-то там, далеко. Сложно найти.

Можно сделать так, чтобы их переслать в бот и они собирались в читаемый текст? )

Или, возможно, есть какие-то решения?

  Развернуть 1 комментарий

@nicolay, да, сохранение пересланых постов сейчас не работает, но это next thing в беклоге. Думаю если кейс нескольких постов будет актуальным и частым, то попробуем найти способ объединять в единый текст )

  Развернуть 1 комментарий

😎

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

Что вообще здесь происходит?


Войти  или  Вступить в Клуб