Как сделать агрегатор новостей в телеграм
Собирает обновления в ваших Telegram-каналах и шлёт краткими дайджестами в назначенное время.
Привет, трибуна VC!
Сейчас команда работает над отдельным приложением Feedgram, в основе которого будут те же простые идеи:
Месяцы общемировой пандемии обострили проблему количества и качества потребляемой информации. Медиа алчно включились в негативную повестку и начали соревноваться в градусе накала страстей своих публикаций, сея всеобщую тревожность, подозрительность, стрессы и отвлечение от важных дел. Психологи постоянно твердят: ограничьте поток новостей. Бот помогает сделать это безболезненно.
Было решено сразу: в Feedgram никогда не будет насаждаться возвращаемость юзеров пресловутыми рекомендательными механиками (как в YouTube или Instagram), а наоборот будет транслироваться идея отказа от переизбытка контента.
И, конечно же, в сервисе никогда не будет никакой редакционной политики и специального ранжирования постов — все источники настраиваются пользователем.
Сегодня важно соблюдать информационную гигиену, минимизировать количество push-уведомлений и меньше тревожиться по пустякам. При этом каждый день оставаясь в курсе происходящего.
Вопрос к читателям: а вы соблюдаете информационную гигиену? Если да, то как?
Спасибо! И приятного использования:
Разрешите поинтересоваться: а зачем вы на вашем сайте-одностраничнике размером в полтора экрана и с 11-тью предложениями текста, отключили правый клик?
Настройка стояла по умолчанию, даже не замечали) Теперь выключили и можно кликать. Так лучше?
Так не лучше, так надо☝
Хорошо, больше не будем
Бот огонь 🔥 Установил и порекомендовал.
Планируете дайджест для чатов делать?)
Рады слышать, он будет еще лучше 😉
Дайджест для чатов — отличная идея! Как именно вы это видите?
В идеальном мире бот мог бы обрабатывать содержимое длинных чатов и выдавать некое саммари. Примерно об этом речь?)
Да, рекламу хотелось бы отфильтровывать, но, во вселенной телеграма она часто замаскирована под стиль обычного поста. Более того, часто партнерские материалы могут быть реально содержательны и интересны. Рассматриваем возможность сделать отключаемую функцию "Без постов со ссылками", но по этому сценарию тоже есть вопросы.
Да, я про саммари. Не знаю, как это можно сделать, но было бы круто.
Рекламную модель монетизации сейчас точно не планируем — это, как минимум, идёт вразрез с принципом "меньше количества, больше качества контента".
Идея крутая! Лендинг топ!
Да, стремимся к фиче по группированию новостей по темам, чтобы из разных выбранных юзером источников формировалось единое полотно текста, например "Всё о короне" и т.д. Через несколько обновлений выкатим)
просто отпишитесь от 90% каналов, а на остальных поставьте mute.
+100500
Каналы не несут никакой пользы. Они сначала создают ощущения контроля над ситуацией - читаешь гигабайт инфы ежедневно, вроде в курсе всего. А потом они создают зависимость, боишься отписаться - а вдруг что-то важное пропустишь и жалеть будешь.
Раз в квартал сношу к хуям всю накопленную в телеге мишуру, вместе с чатами.
А так же, уже несколько месяцов как отключил уведомления телеги _вообще_, теперь я что-то узнаю только если целенаправленно открою приложение.
Разделяю эту позицию.
"теперь я что-то узнаю только если целенаправленно открою приложение"
Если не секрет, как теперь потребляете новостной контент?
Вдумчиво читаю только вц.ру.
Отличное решение! Кстати, был такой кейс, что юзер сначала перешел на чтение дайджестов в Feedgram, а потом отказался и от них, осознав, что новостной контент только и делает что создаёт шум.
Идея крутая, давно хотел такое. А можно не раз в день, а раз в неделю, например?
Планируете ли добавлять rss?
Сами давно хотели и теперь расчистили весь новостной шум)
А можно не раз в день, а раз в неделю, например?
Будет можно в одном из следующих обновлений, и настройка будет уже в удобном веб-интерфейсе.
RSS — да, и вообще стремимся к возможности парсить любые медиа (а не только их TG-каналы)
За любые медиа вообще дикий плюс. Откройте донат какой-нибуль для развития проекта :)
Еще интересно было бы уметь задаваь тематики каналов и делать дайджесты по разным тематикам в разное время.
Например, спорт и политику я хочу утром, IT в обед, юмор вечером :)
Будет скоро вместе с удобным веб-интерфейсом настройки дайджестов.
Рад видеть знакомые проекты! Сам давно пользуюсь, идея своевременная и интересная. Удачи в развитии создателям!
Это только начало) Следите за эфиром 🤟
А что, если будет краткая (действительно краткая) сводка новостей за два дня / четыре дня / за всю неделю? Как считаете, будет удобно?
Тоже не работает. Если запросить внеплановый апдейт через /update , тоже ничего не показывает. Но я успел от всех каналов отписаться, поэтому шума точно меньше стало, однозначно)
Заинтересовался, запустил, первым делом уткнулся в то, что нет настройки выбора языка
Бот забирает язык телеграма, но выбор языка — будет в ближайшем обновлении 👌
И добавьте смену часового пояса, выбрала по ошибке другой, поменять не могу(
Да, это тоже в следующем апдейте
А исходники планируете где-нибудь выложить?
И переехать в силиконовую долину тогда уж?
Это просто бот, который по API проходит по заголовкам новостей - задача уровня студенческой работы, какие там исходники, циклов python?
При чем тут силиконовая долина? Просто хотелось посмотреть, есть идеи для фич, которые можно было бы добавить в такой бот. Плюс форкнуть и у себя захостить в случае чего.
— есть идеи для фич
Как вариант, читать не толко telegram-каналы, но и rss-ленты те же. Я пока пользуюсь feed reader bot, но все чаще думаю о том, чтобы сделать что-то свое, более компактное по контенту, чтобы как раз присылать саммари N-раз в день.
Также можно подумать над сбором контента. Это уже довольно спорная идея (и я пока не знаю, как бы реализовал ее в саммари боте), я, например, делал бота для сбора данных с реддита, не хотел, чтобы пользователи переходили на реддит с каждым постом, поэтому там, где возможно, контент поста переносил в телеграф, то есть пользователь в рамках приложения без открытия браузера мог посмотреть контент.
Также, наверное, надо пофиксить state-machine бота, а то он зависает на команде, и не понятно, как ее отменить (на скрине).
Также, если бы код бота был выложен, я бы посмотрел на его шедулер, насколько он эффективен и честен.
Также список каналов в /list лучше, наверное, делать со ссылкой на канал.
Бота еще можно сделать мультиязычным, но это потребует еще больше вещей хранить в базе и проверять на каждый запрос (я для своих ботов такое хранил в редисе).
Да-да, бот сейчас примитивный (это сделано осознанно, чтобы быстро потестировать гипотезы внутри Telegram-сообещства). Но, в будущем продукт усложнится: сам будет формировать саммари новостей по темам на основе разных источников. В силиконовую долину тоже приедем, но позже)
Пока не думали об этом. Пока добиваемся стабильной работы бота. Вчера вот после этой публикации уже падал в первый же день(
Прикол. Сначала эти каналы (не все) тырят откуда-то информацию, в том числе с подобных агрегаторов, а потом с этих каналов снова уходит в агрегатор) А так занятно, молодцы.
"а потом с этих каналов снова уходит в агрегатор"
Более того: бот — отличное решение для редакторов, чтобы могли собирать персональный дайджест для нужд издания)
Делаю тоже самое, но не с новостями, а с мемами
Да, кстати, думаем над фичей, чтобы видеть небольшие превьюшки изображений в дайджесте.
"Делаю тоже самое, но не с новостями, а с мемами"
А как именно делаете?
Класс) Это, конечно, немного тайм-киллер, но в техническом плане: за 3 минуты тапов по лайкам и дизлайкам он правда начал выкатывать персонально смешные мемы) Как это работает?)
ща-ща-ща, все расскажем на Трибуне.
А зачем этот бот вообще нужен? Какую боль он закрывает?
Агрегаторы удобны, когда источники разбросаны и вместо чтения разных сайтов, все новые посты показывается в одном месте. ред.
Спасибо за вопрос!
— А зачем этот бот вообще нужен? Какую боль он закрывает?
Убрать из жизни постоянные пуши: они отвлекают. Да, действительно, по идее можно просто отключить звук в канале, но мы предлагаем юзеру осознанно выделять всего несколько минут на чтение новостей в определённое время. Это дисциплинирует. А удобство — в едином полотне текста.
— Агрегаторы удобны, когда источники разбросаны
Абсолютно согласны с этим. Телеграм-бот — это только MVP сервиса, который в будущем как раз и будет генерировать дайджест из разных источников (сайтов, соцсетей, TG, и прочих).
Зачем ваш бот если есть папки? Вырубаешь пуши. Заходишь в них тогда когда нужно. Ничего не отвлекает
хаос же, нет? Глядя на цифры непрочитанных в нескольких папках — расстраиваешься(
Никакого хаоса. Всем папкам свое время.
Вы сами ответили на свой вопрос. Вы работаете в СМИ, т.е. у вас проффдеформация :) я тоже раньше работал и ничего нельзя было пропускать. Но даже в нашей ситуации нужен был инструмент для сбора разрозненной информации из разных источников, для создания дайджестов.
Кстати, о фильтрации рекламных постов для дайджеста) Такая функция тоже планируется, хотя сегодня много брендированного контента, который действительно интересен. Так что сделаем эту функцию отключаемой.
Идея отличная, давно искал подобного бота. Хотя, проблему с хаосом каналов частично решает система папок, введенная недавно командой телеграм.
Папки действительно клёвые. Ботом мы просто вместо юзера берём и собираем дайджесты. Экономим пару минут, и то приятно) Плюс визуально — никакой кучи непрочитанных постов.
бот лично у меня не работает. подписался на него, добавил пару каналов и на следующий день ничего не пришло.
пишет, что обновлений в заявленных каналах не было, но новые посты явно были.
в общем, есть еще, над чем поработать.
Круто! Давно думал о таком сервисе, а вы сделали! Спасибо!
Оказалось, что многие хотели использовать подобное решение) Кстати, аналогов — полно. Но, все они насаждают рекомендации и только бОльшее потребление информации. Мы, в отличие от них, за минимизацию.
Инновации никакой нет) Feedgram — просто еще один сервис для агрегирования новостей, но уже персонального. ред.
Перестал работать на следующий день.
Перед тем как использовать, подумай, что какой-то левый бот будет иметь списочек всех твоих подписок ;-)
Не всех) а тех, которые юзер добавил в бота. Хотя подумать, конечно, надо!
Но, вообще, если читать каналы даже без бота, то ведь об этом уже итак знает телеграм?
Дайджест новых стилей и сайтов digital-компаний за ноябрь от Embacy: Vevo, Winamp, Worldcoin и другиеВсем привет! Сегодня 1 декабря, а значит, что это дайджест новых стилей и сайтов digital-компаний, которые вышли в ноябре. Пишу его я, Вадим Орлов, основатель Embacy.
Одно время, когда ВК начал пихать в ленту свои рекомендации (неотключаемые вообще никак), я пользовался адблоком, альтернативными андроид-клиентами (kate mobile), но все эти полумеры напрягали.
В телеге же, как только количество каналов подросло, очень напрягала необходимость заходить в каждый. И, когда их набралось штук 30, я стал забивать на некоторые, т.к. утомлялся туда-сюда по ним перемещаться.
Плюс, как-то внезапно, много каналов начали спамить крос-сылками с рекламой. И ладно, если это партнерские посты из схожих по тематике каналов. Чаще это были всякие курсы английского, питона, а иногда вообще скам про казино или крипту.
Идея и реализация
Так появилась мысль сделать агрегатор телеграм-каналов с фильтрацией по ключевым словам (которые в рекламных постах достаточно часто попадаются).
Я в курсе про функционал группировки каналов в некоторых клиентах, но по некоторым причинам он мне не подходит:
группировка работает только на уровне клиента. Т.е. сгруппированные в мобильном приложении каналы не будут сгруппированы в веб-версии или другом клиенте
нельзя (по крайней мере я не нашел) группировать чаты и каналы
фильтрация спама и рекламы недоступна
я собирался экспортировать агрегированный контент в rss (об этом во второй части статьи)
Погуглив существующие инструменты для работы с телегой, я остановился на питоновской библиотеке telethon. Ее ключевой особенностью была возможность работать в режиме клиента, а не бота (об этом ниже, в нюансах).
Что еще капотом:
telethon как telegram-клиент
asyncio для асинхронности
peewee и sqlite3 для хранения инфы кто на что подписался.
Сами посты из подписок не сохраняются, пересылаются на лету
Название придумал быстро: я люблю соединять слова, так что агрегатор телеграма быстро превратился в Телегрегатор.
Нюансы агрегатора
Процесс установки и использования самой библиотеки я не буду расписывать, в доках все достаточно подробно. Остановлюсь на нескольких технических нюансах, которые всплыли в процессе создания Телегрегатора:
Как следствие из п.2, возможности бота (кастомные клавиатуры и команды) оказались мне недоступны (или я не нашел, как клиентом это делать). Если знаете как - напишите в комментах. Так что пришлось велосипедить с обработкой пользовательских команд.
Была идея, что пользователю надо общаться с ботом, а тот уже под капотом передает команды клиенту (подписаться на канал), но это показалось слишком сложным для mvp.
Как попробовать?
Сейчас процесс выглядит так:
Получаете название канала (либо инвайт-ссылку, для приватных каналов), который хотите добавить в агрегатор.
Создаёте новый канал (приватный или публичный), который будет выступать в роли потока (ленты)
Телегрегатор поздоровается и покажет доступные команды.
Отправляете команду /join @имя_канала (из. п.1), после чего Телегрегатор подписывается на нужный канал. Можно указать пачку каналов, через пробел (займет некоторое время, ограничение порядка 50 каналов в минуту).
Потоков может быть несколько. Вы можете добавлять для каждого потока фильтры по стопсловам (это пока тестовая функция, так что если вдруг что-то перестало работать - сбросьте фильтры).
Ограничения и планы
Видимо, это особенности протокола. Если заметите странное поведение - напишите мне.
В планах добавить следующий функционал:
показать случайный пост из случайного канала
топ самых популярных каналов (самых редких, как вариант)
предлагает случайный канал
Я люблю находить годноту в телеге. Порой, в канале всего человек 200, и о нём вообще не узнать, кроме как по рекомендациям друзей.
Сам пользуюсь Телегрегатором где-то полгода, решил поделиться, вдруг кому-то зайдет. Из своего аккаунта я удалил все подписки, теперь ими рулю через потоки, полет нормальный.
Исходный код пока грязный, так что публиковать не стал.
все-так бот или клиент?
Как я уже писал выше, есть альтернативный способ реализации задуманного мной функционала:
Я должен взаимодействовать с ботом, отправляя ему команды о создании потока, после чего он сам создает нужный канал, добавляет туда меня, выставляет нужные права. Дальнейшее управление каналом тоже происходит через бота. Если такая схема выглядит удобнее - дайте знать.
Часть вторая, про RSS
В процессе работы над Телегрегатором появилась мысль экспортировать это все в RSS-ленту. Я многократно встречал статьи, в т.ч. на Хабре, как автор читает вообще всё через rss, собирая его из разных источников. Кто-то пошел дальше: из rss собирает подборку и формирует ежедневную рассылку на почту. Планирую прийти к такому варианту. Если вы имеете такой опыт - отпишитесь, пожалуйста, в комментах, очень интересна ваша реализация.
Удивительно, что при таком количестве ботов у медиа, мне не попался ни один необычный, увлекательный кейс.
Лина Туомас, из агрегатора глянца BigMag, исследовала взаимоотношения ботов и новостных изданий.
На волне популярности ботов было решено, что агрегатору глянца BigMag тоже непременно нужен собственный бот. Поиски идеального референса затянулись и до сих пор продолжаются, но определённая картина о ботах для диджитал медиа уже сложилась.
Зачем нам Телеграм Бот?
Скорость роста аудитории в Телеграм просто невероятная: без венчурного капитала и с нулевым бюджетом на маркетинг за два с половиной года своего существования приложение достигло 100 миллионов активных пользователей по всему миру и ежедневневно прибавляет по 360 тысяч новых!
Западные новостные медиа осознали, что на данный момент ключевое место для связи со своими читателями — это мессенджеры. Время проведенное в них превышает время проведенное в социальных сетях. Прогрессивно мыслящие медиа учитывают это. Quartz, например, запустил приложение, которое превращает потребление новостей в интерактивный диалог. Это весело и отличается от всего, но опять же требует загрузки отдельного приложения, в то время как распространять и вовлекать в свой контент посредством платформы с многомиллионной аудиторией — лучшая идея, путь с наименьшим сопротивлением!
Месседжинг — это новый чёрный в медиа!
Аудитория диджитал медиа устала от приложений, особенно новостных (обычно в среднем используется не больше, чем два новостных приложения) и она перегружена информационным потоком в социальных сетях. Выход — достучаться до своей аудитории через мессенджеры. СМИ и сервисы-агрегаторы создают новостных ботов для мгновенной доставки контента своим подписчикам.
К примеру успешный кейс: The BBC, который заблокирован в Иране, запустил канал в Телеграм и через две недели его аудитория насчитывала 100 тысяч подписчиков и по некоторым статьям количество переходов достигало больше 800,000.
Как работают боты для диджитал медиа.
Рассмотрим на примере @Forbesbot и @TechCrunchBot. Оба сделаны одной компанией Chatfuel, которая предлагает платформу для самостоятельного создания ботов в Telegram и с помощью которой уже создано более 120,000 ботов, обслуживающих более 5 миллионов человек. Платформа позволяет создать более продвинутого бота, не базового, который просто отправляет пользователю информацию основываясь на двух вариантах ответа, а дающего возможность углубиться в конкретную тему, отфильтровать новостной поток или даже задать вопрос.
Пользовательские команды бота Forbes
Пользовательские команды бота TechCrunch
Бот работает автоматически, без помощи редакторов. Как только ты подписываешься, то сразу начинаешь получать порцию самых популярных новостей дважды в день, либо набрав любой поисковый запрос, получаешь последние релевантные статьи. Если подписаться на конкретную тему, то статьи по запросу будут приходить по мере их публикации на сайте. Бот может поддерживать элементарные диалоги, но пока со многими даже топовыми запросами не справляется.
Пользовательский сценарий бота
Бот-агрегатор новостей
Уже существуют сервисы, которые помогают монетизировать ботов, например, томская компания Interweb создала рекламную платформу Botrevenue, которая позволяет рассылать рекламу подписчикам ботов в Telegram. А так же существуют сервисы по аналитике, позволяющие оценивать трафик и интенсивность использования — Botan.
Привет моим верным подписчикам и лиге вэб разработчиков! В данном посте я поведаю о:
- паре забавных случаев, возникших при разработке новой версии моего агрегатора котиков и мемасиков (а так же новостей, видео, пабликов, групп, RSS и Telegram каналов );
- текущем состоянии дел и планах развития.
Около 800 дней назад я опубликовал первую версию агрегатора контента и сделал пост на пикабу. Сервис получился неплохим и мои цели удовлетворял. Я пользовался им каждый день, для просотра мемасиков и котеек. Но, к сожалению, большого интереса у пользователей не вызывал. А в комментариях знающие люди советовали весь функционал перенести на сервер, что бы на клиентских устройствах все работало максимально быстро.
Так как по своей натуре я перфекционист, то идея сделать все "красиво" не давала мне покоя и в 2017 году я наконец сдался и решился переписать все с 0, нанять хорошего дизайнера и выкатить ресурс который заткнет за пояс конкурентов :) Получилось ли у меня или это очередное фиаско, я надеюсь узнать сегодня, в комментариях к этому посту :)
Итак, начнем с пары интересных задач, которые пришлось решить при разработке.
1. Как я добавлял вывод телеграмм каналов.
В последний год появляется все больше популярных телеграм-каналов. Но лично мне не удобно читать их в приложении, хотя я не пробовал :). Я сразу запланировал, что в новой версии агрегатора обязательно должна быть возможность вывести в свою ленту посты из любых публичных телеграм-каналов вместе со всеми другими источниками.
Обилие инструкций по работе с телеграм-ботами воодушевляло и я рассчитывал, что задача не займет много времени. И еще я не понимал, почему никто не сделал аналогичного сервиса :)
Как это всегда бывает в разработке, препятствия возникли на ровном месте: оказалось, что для того, что бы бот мог читать какой-то канал, бота надо туда добавить. Поэтому вариант сразу отпал. И я перешел к чтению мануалов на основной API телеграма.
Через 30 минут изучения документации я был в отчаянии.
Несколько дней поиска привели меня к решению: использовать на сервере opensource php телеграм клиент. Дада! Можно использовать телеграм под php, и там даже есть поддержка звонков! Это чудо называется madelineProto и исходники доступны на гитхабе.
В итоге, через 3 дня настройки и две блокировки моего аккаунта из-за чрезмерного количества попыток авторизации я настроил клиент и решил задачу. Теперь у меня есть свой шлюз из telegram в web! А пользователи могут читать любые публичные телеграмм каналы у меня на сайте без регистрации и смс.
2. Парсинг youtube каналов.
С API youtube'a вообще вышло забавно. Их справка предлагает использовать php плагин от гугла для доступа к API. От их API мне нужно было не много: список видео на канале с метаданными, название канала и его логотип. У vk или fb такой запрос создается парой строчек кода и разобраться можно за пол часа.
Но у гугла свой путь разработки :)
Я смирился с тем, что плагин для доступа к API весит более 30 мегабайт. Но я еще и не смог настроить его за 3 часа!
В итоге, кликая на все подряд в справке гугла, оказалось, что плагин можно вообще не использовать, а для получения всей информации - воспользоваться стандартным get запросом, как везде. На формирование запроса мне понадобилось ровно 10 строк кода и 15 минут, вместо 30 мегабайтного плагина.
3. Что сейчас с агрегатором?
- Добавить прямые ссылки на отдельные источники
- Расширять список источников: imgur, rutube, reddit, новостные сайты.
- Привлечь ядро активных пользователей, что бы были данные для формирования ленты популярных постов;
- Добавить в ленту вывод видео и гифок, что бы сократить число внешних переходов;
- Е-маил рассылки с лучшими постами за день/неделю (естественно при желании пользователя);
- Сотрудничество с создателями контента для совместного продвижения.
5. Техническая часть.
Для тех кому интересно то под капотом следующий стек технологий:
Backend: самописный, доставшийся мне в наследство на одном из проектов и переписаный мной под свои нужды. Используется шаблонизатор smarty.
Fron-end: HTML + Angular JS 1, так же используется Jquery 2 (в 3-й версии scroll события в firefox не работают периодически) для анимаций.
Парсинг осуществляю с помощью библиотеки php-query или через API раз в 5 минут по CRON'у в порядке живой очереди с приоритетом на публичные источники. Т.е. если за 4 минуты сайт не успел пройтись по всем источникам, то скрипт останавливается. А в следующий раз в начале очереди находятся те источники, которые дольше всего не обновлялись. Очереди для публичных и персональных источников разные - по 2 минуты и на те и на другие.
Читайте также: