.NET Fest: полная программа конференции на сайте. Присоединяйся к самому большому .NET ивенту
×Закрыть

DOU Проектор: NewsKit — Telegram-бот для фільтрування новин, створений 11-класниками

Усім привіт! Мене звати Дмитро Лопушанський, мені 16 років. Я — МАНівець і учень 11 класу СЗШ № 8 м. Львова з поглибленим вивченням німецької мови. Займаюся програмуванням майже 3 роки і за цей час створив уже декілька проектів. Зараз розвиваю NewsKit — чат-бот у Telegram, який надсилає добірку свіжих фільтрованих новин у зручний час з обраних новинних веб-сайтів.

Ідея

Під час навчання в IT-школі GoITeens на курсах Back-End та Front-End розробки 1 рік тому в мене з’явилася ідея створити помічника, який би сортував новини, які я люблю читати з цікавих мені сайтів. Я читаю переважно про нові гаджети, технології та ІТ-світ. Щоденне відвідування безлічі сайтів, які публікують цікаві новини на ці теми, стало вже моєю звичкою. Але постійний моніторинг новинних сайтів і блогів забирав багато часу. Часто траплялося так, що на цих веб-сайтах з’являлися зовсім недоречні або просто нецікаві статті. Тоді виникла ідея створити проект, який би вирішував цю проблему і допоміг багатьом іншим людям, які теж хотіли б читати всі найцікавіші для них новини з різних сайтів в одному місці.

Так виникла ідея NewsKit, і головною фішкою мого майбутнього проекту стала ідея фільтрації. Марк Ластовський, 16-річний учень 11 класу Львівської академічної гімназії, з яким ми разом вчилися на IT-курсах, теж приєднався до проекту.

Марк Ластовський і Дмитро Лопушанський

NewsKit — чат-бот у Telegram, який надсилає добірку свіжих фільтрованих новин у зручний час з обраних новинних веб-сайтів.

Чат-бот підтримує на цей момент понад 40 веб-сайтів та будь-які ключові слова користувача. Він може надсилати персоналізований новинний дайджест в будь-який час з точністю до хвилини. Завдяки постійному моніторингу новинних сайтів, бот допоможе не пропустити жодної новини і дасть змогу дізнатися про появу свіжої статті одразу ж після її публікації на веб-ресурсі.

DOU теж підтримується, і не треба щогодини оновлювати стрічку. NewsKit це зробить замість вас і повідомить, коли знайде щось новеньке та цікаве :)

Як працює бот

Спочатку користувач обирає мову спілкування, їх є поки що три: українська, російська та англійська, скоро стане доступна також німецька. Далі юзер має вибрати тематику новин, яка його цікавить (якщо цікавить щось особливе, то всі такі ключові слова можна одразу додати до свого переліку). Після цього обирається мова новин (мова статей, які надсилаються і які користувач може зрозуміти, новини не перекладаються). Потрібно також обрати сайти, з яких ви хочете читати новини. Наприкінці вибираєте час отримання новин. У звичайній версії NewsKit — це 9:00,12:00, 21:00, щогодини та одразу після публікації.

Цей бот буде також мати платну Premium-версію, яку ми випустимо вже незабаром. Детальніше про неї буде далі.

Після першого налаштування можна також додати ліміт новин у підбірці, додати сайти, з яких приходитимуть новини без фільтрації, змінити часовий пояс чи вказати особистий час отримання новин. Також можна змінити будь-які параметри, які було вказано раніше.

Фічі

Запросивши 2-х друзів, можна отримувати новинні добірки в будь-яку годину. Можна вказати 07:21, 09:15, 22:10 — немає ніяких обмежень.

Про людей, які від’їжджають за кордон чи живуть не в Україні, ми теж подумали. Доступна функція зміни часового поясу. Бот добирає новини з українських, російських, англійських та німецьких сайтів.

Теми

NewsKit — це рішення як для любителів новин, так і для професіоналів (наприклад, журналістів). Теми «Технології» та «Програмування» в нас є одними з найбільш детально опрацьованих.

Або припустимо, що бухгалтеру важливо постійно відслідковувати останні зміни у чинному законодавстві. Достатньо зайти в NewsKit та обрати потрібні теми.

На цей момент усі найпопулярніші запити щодо тем підтримуються. Проте, якщо ви не знайшли те, що вас цікавить, ви завжди можете додати ключові слова власноруч за допомогою простого слова-команди «Додай». Виглядає це таким чином: «Додай податки, пдв, закон». Після того, як опублікується нова стаття за цими ключовими словами, користувач її отримає в раніше заданий ним час.

На всі питання та поради ми завжди відповідаємо. Тож, якщо користувач чогось не розуміє, то можна написати боту, він це перешле нам, а ми з радістю допоможемо!

Premium-підписка

Зараз відбувається важлива розробка, яка стане основою платної Premium-підписки, яка буде коштувати 29 грн/міс. Це сортування та аналіз контенту соцмереж та платформи Telegram. Як це буде виглядати?

Багато людей підписані на велику кількість Telegram-каналів, Facebook-сторінок, які постійно «спамлять» стрічку. Проте відписуватися від них не хочеться, бо інколи трапляються цікаві пости. Що ж тоді можна буде зробити? Користувач з Premium-підпискою NewsKit зможе надіслати боту посилання на потрібні канали чи сторінки, і весь контент звідти почне аналізуватися. NewsKit надішле людині лише ті пости, які підійдуть їй за обраними темами і ключовими словами. Це значно зекономить час і полегшить життя.

Також Premium-підписка дасть можливість користувачам читати 70% новин офлайн, отримувати новини в особисто встановлений час та змінювати вигляд новинної підбірки (наприклад, отримувати одним повідомленням). Ціна є досить невеликою, тому всі, хто хоче підтримати розробників і кому подобається NewsKit, зможуть собі дозволити Premium :)

Реалізація

NewsKit ми розробляємо вже майже 1 рік. Бот написаний мовою Python 3. Ми використовуємо базу даних Postgres та бібліотеку psycopg2 для роботи з нею. На нинішньому етапі код NewsKit складається з чотирьох частин:

  • bot.py — відповідає за роботу самого бота у Telegram. Відбувається постійна взаємодія з Telegram Bot Api. Програма отримує запити методом getUpdates і відповідає на них.
  • parse.py — кожні 10 хв парсить всі сайти, які ми підтримуємо, визначає нові статті на цих сайтах, записує їх у базу даних та розсилає деяким користувачам (час отримання яких — «Одразу»).
  • timesend.py — щохвилини перевіряє, кому потрібно надіслати новини, переводячи час отримання новин кожного користувача у локальний час (NewsKit підтримує різні часові зони, тому ми написали спеціальні функції, які визначають локальний час).
  • app.py — наша Flask-аплікація для переадресації під час переходу на новинну статтю та форми для переадресації на оплату Premium-підписки.

Для парсингу статей використовуємо бібліотеку bs4, яка дозволяє швидко витягувати контент зі статичних сайтів. Зараз працюємо над додаванням підтримки динамічних сайтів, парсинг яких відбуватиметься через Selenium та Chrome webdriver. Сподіваємося незабаром додати можливість парсингу основних соцмереж (груп та профілів користувачів).

Паралельно працюємо над тим, щоб витримувати ще більшу кількість запитів. Поступово хочемо перевести серверну частину на вебхук і додати воркери, які розбиратимуть запити із сформованої черги способом FIFO.

Premium-підписка реалізована через сервіс LiqPay.

Піар-кампанія

Над NewsKit ми працюємо вже майже рік, проте лише декілька тижнів тому ми почали активно розкручувати та поширювати бот.

Насамперед ми пишемо журналістам та іншим людям, які працюють з новинами. Розказуємо про NewsKit у радіо- та телеефірах, пітчимо на конкурсах стартапів. Про NewsKit було вже опубліковано декілька статей на українських веб-ресурсах. Запускаємо рекламу в соцмережах, плануємо брати участь у конкурсах чат-ботів.

Конкуренти

Ми вважаємо, що це додатки Flipboard, Google News, Apple News, Feedly, сайт ukr.net та RSS-стрічки. На ринку ботів та новинних асистентів нам вдалося знайти лише боти, які спеціалізуються суто на певному сайті (наприклад, TechCrunch асистент та бот ABC News). Вони не є прямими конкурентами, адже працюють лише в межах одного веб-ресурсу.

Щодо названих вище додатків, їхня українська локалізація дуже обмежена. На мою думку,новинним додатком, який найкраще локалізований для України, є Google News, який хоча б підтримує кілька десятків українських сайтів. Нашою перевагою на цьому етапі є якраз нішевість — робота на українському ринку. Окрім цього, ми пропонуємо можливість пошуку за ключовими словами та можливість відстежування конкретних слів на всіх медіаресурсах, які ми підтримуємо. Такого функціоналу немає у названих вище додатків.

Але такі можливості має сайт ukr.net. Як NewsKit може конкурувати з українським медіагігантом? Персоналізація новин. Укрнет — це довга стрічка новин, розсортованих за тематикою. Прочитати всі новини, які пропонує укрнет до цікавих тем, неможливо, оскільки статей надто багато. NewsKit, залежно від поставленого ліміту, обиратиме головні новини і надсилатиме їх користувачеві, щоб той не лише не пропустив важливого, але й одночасно не був перенасичений хвилею новин (ми постійно покращуємо цей алгоритм).

Багато людей також підписані на RSS-стрічки. Проблема RSS полягає у надмірній кількості новин, знову ж — без фільтрації. Але це не означає, що NewsKit не може надсилати великий обсяг інформації. Якщо користувач так захоче, то командою /chooseall завжди можна налаштувати потрібне.

Плани на майбутнє

Ми щодня додаємо новий функціонал і покращуємо той, що вже існує. До найближчих планів належать:

  • Підтримка соцмереж (планується фільтрування постів у соцмережах), завершення функції Premium.
  • Фільтрування Telegram-каналів (пости на обраних каналах теж будуть фільтруватися і надсилатися, звичайно, з посиланням на першоджерело).
  • Розділ «Популярні новини».
  • Вибрані новини (позначені зірочкою, для перегляду чи прочитання пізніше).
  • Створення ланцюжка подібних новин (наприклад, написаних з приводу однієї і тієї ж події).
  • Вихід на міжнародний ринок.
  • Підтримка ще більшої кількості веб-сайтів.
  • Додавання нових функцій до Premium-підписки.

Також думаємо над виходом з платформи Telegram та створенням сайту, звичайно, зі збереженням нашого функціоналу.
Плануємо монетизовувати проект через трафік, який ми спрямовуємо на новинні сайти, а також через Premium-підписку.

І насамкінець...

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

Ми намагаємося створити крутий продукт, який би допоміг багатьом людям. Переконані, що є ще багато можливостей для вдосконалення. Ми тішимося з кожного відгуку: як позитивного, так і конструктивного негативного. На кожен відгук відповідаємо та розглядаємо всі побажання щодо функціоналу продукту.

Можливі шляхи співпраці можна обговорити особисто з нами або ж командою /feedback безпосередньо в боті.

NewsKit доступний за посиланням: t.me/newskit_bot

LinkedIn

15 комментариев

Подписаться на комментарииОтписаться от комментариев Комментарии могут оставлять только пользователи с подтвержденными аккаунтами.

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

Где-то помню был стартап, разрабатывающий систему перевода голоса с видео в текст титров, так вот, после получения инвестиций они делали этот самый перевод вручную, пока создают продукт для автоматизации(точно не помню название компании, но помню что ко-фаундер отсюда)

Можете посмотреть в сторону сервисов схожих с этим azure.microsoft.com/...​u/try/cognitive-services — тут возможности очень широкие и по анализу текстов и картинок, но только они платные, но это нормально — имея какую-то монетизацию вы все покроете.

Дякуємо за фідбек та поради!
Сервіс спробуємо!

Це всьо круто, однак вам потрібно буде не обмежуватись лише ботом у телеграмі при готовому бекенді, бо можливо станеться ситуація що телеграм буде заблоковано або не працюватиме і проект може втратити свої досягнення, а загалом, це чудово, коли люди мають свої ідеї хоч вони і тривіальні для сьогодення.

Дякуємо Вам! Звичайно, що можливо все, але телеграм — це достатньо велика платформа, яка постійно розвивається, і, як показує практика, його не просто заблокувати.
Взагалі в майбутньому думаємо над виходом з телеграма у формат сайту чи додатку зі збереженням функціоналу, але поки все ж розвиваємо формат бота. Вносити зміни у нього швидше і розвиватися відповідно теж.

Было б круто расширение для бразуеров вместо главной страницы по типу muz.li

Цікава пропозиція! Подумаємо над цим))

Идея хорошая! Поставил бота, буду пробовать.
Ребятам успехов!

Однозначно молодцы!
Совет от себя — примените «on-the-fly updating» во многих сабменю, будет меньше старых сообщений и больше интерактива))
Удачи, ребята!

парсинг яких відбуватиметься через Selenium та Chrome webdriver

Не найкраще рішення, але як тимчасове цілком ок.
Подивіться, які XHR-запити шле JS в Developer Tools і емулюйте їх.

Сподіваємося незабаром додати можливість парсингу основних соцмереж (груп та профілів користувачів).

Перед тим прочитайте Terms of Use тих соц.мереж. Більшість забороняють автоматичний парсинг.

Як аналізуєте «цікавість» посту лише за наявністю ключових слів? Чи хоча б якось відміняєте їх?
Використовуєте якісь ліби чи фреймворки для машинного аналізу тексту?

Успіхів!

Не знав, що XHR можна через браузер продебажити. Дякуємо за пораду, обов’язково розберемося в цьому.
Ми не будемо копіпастити контент з соцмереж до себе в бот, а лише будемо використовувати ці дані для аналізу тексту. Користувачу будемо слати посилання на потрібне джерело (пост чи якусь іншу публікацію). Хіба це заборонено, наприклад у Facebook? Ці дані будуть лише для алгоритмів бота.
Взагалі хотіли б самі написати якусь нейронку для аналізу тексту, єдине що поки бракує таких знань. Але зараз по трошки вчимо цю сферу і в перспективі NewsKit точно працюватиме так.
А зараз виділяємо слова, які найчастіше повторяються в тексті, і виносимо їх у ключові слова конкретної статті. Відмінювання слів ще не підключили, бо не знайшли ні достатньо хороших бібліотек для пайтона по цьому, ні якісних безкоштовних API. На разі серйозних проблем з існуючим алгоритмом не виникало, бо тематику статей він визначає досить непогано (звичайно, можна завжди краще).

Хіба це заборонено, наприклад у Facebook?

Треба читати їхні правила, просто кажу, що будьте з цим обережні і вичитуйте :)

Щодо бібліотек, то думаю варто погуглити на тему nltk, NER та організації lang.org.ua з їхніми лібами, а далі думаю DOU підкаже.

Добре, почитаємо! Дякуємо!

Ребята молодцы, что сказать)
Сам недавно написал для себя бота с парсингом RSS основных новостных сайтов.
Как вы решаете вопрос с лимитом отправки сообщений ботом? Как я знаю, телеграмм штучно установил лимит не более 30 сообщений в секунду.

Дякуємо!
Насправді поки ніяк не вирішуємо це, бо NewsKit поки не шле більше, ніж 30 повідомлень в секунду. В деяких можливих місцях встановили на всякий випадок невелику затримку після надсилання повідомлення.

да в этом есть минус
аудитория 200-300 юзеров в онлайне, по отзывам — уже по немногу ложат на лопатки чат-бот

Подписаться на комментарии