Найти в Дзене
Python Lab

Как я перестал читать сотни каналов: пишем AI-саммаризатора на Python за 15 минут

Вы когда-нибудь ловили себя на том, что проводите по 2 часа в день, просто пролистывая ленту в Telegram? IT-новости, крипта, паблики по Python — информации море, а времени на код не остается. Я решил эту проблему радикально. Вместо того чтобы в сотый раз скроллить ленту, я написал простого бота, который сам читает каналы и присылает мне краткую выжимку (саммари) самого важного за день. В этой статье я покажу, как собрать такого ассистента на Python, используя Aiogram 3 и бесплатные нейросети. Никаких оплат зарубежных API и VPN. Установим всё одной командой: pip install telethon aiogram g4f Чтобы бот мог читать чужие каналы, нам нужны API_ID и API_HASH. Получить их можно за 2 минуты на официальном сайте my.telegram.org в разделе API Development Tools. Не бойтесь, это стандартная процедура для всех разработчиков. Мы будем использовать библиотеку g4f. Она позволяет обращаться к GPT-моделям через разные провайдеры бесплатно. Вот функция, которая превращает «стену текста» в аккуратный спис
Оглавление

Вы когда-нибудь ловили себя на том, что проводите по 2 часа в день, просто пролистывая ленту в Telegram? IT-новости, крипта, паблики по Python — информации море, а времени на код не остается.

Я решил эту проблему радикально. Вместо того чтобы в сотый раз скроллить ленту, я написал простого бота, который сам читает каналы и присылает мне краткую выжимку (саммари) самого важного за день.

В этой статье я покажу, как собрать такого ассистента на Python, используя Aiogram 3 и бесплатные нейросети. Никаких оплат зарубежных API и VPN.

Почему это идеальный Pet-проект?

  1. Практическая польза: Вы реально начнете экономить время.
  2. Технологический стек: В резюме можно смело писать: «Опыт работы с LLM (языковыми моделями), асинхронный парсинг и Aiogram».
  3. Потенциал: Таких ботов можно продавать владельцам каналов как «умный дайджест».

Что нам понадобится?

  • Python 3.10+
  • Библиотека Telethon (для чтения сообщений из каналов).
  • Библиотека g4f (бесплатный доступ к GPT-4 без ключей и оплат).
  • Библиотека aiogram (для самого бота).

Установим всё одной командой:

pip install telethon aiogram g4f

Шаг 1. Получаем доступ к "глазам" бота

Чтобы бот мог читать чужие каналы, нам нужны API_ID и API_HASH. Получить их можно за 2 минуты на официальном сайте my.telegram.org в разделе API Development Tools. Не бойтесь, это стандартная процедура для всех разработчиков.

Шаг 2. Магия нейросетей (Бесплатно!)

Мы будем использовать библиотеку g4f. Она позволяет обращаться к GPT-моделям через разные провайдеры бесплатно. Вот функция, которая превращает «стену текста» в аккуратный список тезисов:

import g4f

async def get_ai_summary(text):
response = await g4f.ChatCompletion.create_async(
model=g4f.models.gpt_4,
messages=[{"role": "user", "content": f"Сделай краткую выжимку главных новостей из этого текста на русском языке. Используй буллиты: {text}"}],
)
return response

Шаг 3. Собираем всё воедино

Основная логика проста: бот заходит в указанный канал, берет последние 10-20 постов, объединяет их и просит нейросеть выделить суть.

Важный нюанс: Для работы Telethon вам нужно будет войти в аккаунт (ввести номер телефона и код из ТГ). Это безопасно, так как скрипт работает только локально на вашем ПК.

from telethon import TelegramClient
from aiogram import Bot, Dispatcher, types
from aiogram.filters import Command

# Ваши данные
API_ID = 'ваш_id'
API_HASH = 'ваш_hash'
BOT_TOKEN = 'токен_вашего_бота'

client = TelegramClient('session_name', API_ID, API_HASH)
bot = Bot(token=BOT_TOKEN)
dp = Dispatcher()

@dp.message(Command("digest"))
async def make_digest(message: types.Message):
await message.answer("⌛️ Читаю новости и думаю... Это займет около 30 секунд.")

# Читаем сообщения из канала (например, @python_practics)
full_text = ""
async with client:
async for msg in client.iter_messages('python_practics', limit=15):
if msg.text:
full_text += msg.text + "\n\n"

# Отправляем в AI
summary = await get_ai_summary(full_text)

await message.answer(f"🤖 **Дайджест за сегодня:**\n\n{summary}", parse_mode="Markdown")

# Запуск
if __name__ == '__main__':
import asyncio
asyncio.run(dp.start_polling(bot))

Как сделать это еще лучше? (Для опытных)

Если вы хотите превратить это в серьезный проект, добавьте следующие фишки:

  1. Расписание: Используйте apscheduler, чтобы бот присылал вам дайджест ровно в 9:00 утра.
  2. Фильтрация по ключевым словам: Чтобы бот собирал новости только про "Python" или "Django".
  3. База данных: Храните историю новостей в SQLite, чтобы не присылать одно и то же дважды.

Итог

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

А какую рутину в своей жизни вы бы хотели автоматизировать? Пишите в комментариях, и я попробую разобрать это в следующей статье!