
Insight Bot: итоги года для Telegram-канала в формате сторис

Миссия проекта:
Дать автору любого Telegram-канала посмотреть на свой канал со стороны — так же легко и весело, как Spotify Wrapped показывает итоги года в музыке.
Задачи, которые я перед собой поставила:
— сделать бота, которому достаточно прислать ссылку на канал;
— превратить анализ текста в колоду красивых карточек, которыми хочется
поделиться в сторис, на подобие итогов года в музыкальных сервиссах;
— анализ контента на русском и английском языках;
— выдержать наплыв пользователей при запуске чтобы бот не упал;
— монетизация и маркетирг: бесплатная ограниченная колода и полный анализ за год канала платно
МОЯ РОЛЬ
Проект полностью мой — от идеи до запуска. Что я делала:
Продукт.
Придумала формат: колода сторис-карточек с ярлыками: архетип канала по Юнгу, хронотип («сова», «жаворонок»), уровень токсичности, языковой возраст.
Дизайн
Нарисовала в Figma фоны и вёрстку всех карточек колоды, всего 57 штук. Русскую и английскую версии вех карточек. Цифры и слова бот накладывает на мои фоны автоматически.
Все карточки в Figma
Разработка
Собрала бота на Python: чтение каналов, разбор текста (определение языка, леммы, имена, города, эмоции, мат), генерация карточек, очередь, оплата. Разрабатывала вместе с ИИ-ассистентом Claude: я ставила задачи, принимала решения и проверяла результат
Масштабирование
После первого запуска бот не выдержал наплыв: Telegram ограничивал чтение каналов. Для второй версии нашла способ читать каналы через пул из 40 ботов-читателей, лимиты которых складываются, — потолок вырос в разы.
Запуск и эксплуатация
Сервер, оплаты, прокси, покупные аккаунты для просмотра каналов, рассылки пользователям, дашборд со всеми метриками, оповещения об ошибках.
КАК ЭТО РАБОТАЕТ
Присылаешь боту ссылку на канал — через полминуты получаешь колоду.
Стек технологий
Бот: aiogram 3.x
Telegram-клиент: Telethon (пул из 3 аккаунтов)
NLP: pymorphy3, Natasha NER, NLTK
Визуализация: matplotlib, wordcloud
База данных: SQLite (WAL mode)
Мониторинг: Prometheus, Sentry
Ключевые решения
— Пул аккаунтов — 3 Telethon-аккаунта с автоматической ротацией при FloodWait, приоритетная очередь для отложенных анализов
— Двухуровневый кэш — in-memory + диск (`cache/`) для минимизации запросов к API
— Потокобезопасные графики — только OOP API matplotlib
— Атомарные платежи — единая транзакция для обновления баланса + записи платежа, уведомление админа при сбое
— Ленивая загрузка NLP — модели pymorphy3/Natasha (~2с) загружаются при первом использовании, не при импорте
Конвейер анализа
боты-читатели — 10 ботов (Telethon bot-сессии), читают посты по id пачками по 100; без реакцийTelethon-аккаунт — основной: реакции и хиты для платных (параллельно ботам), запасное чтение; @ltdnt: только закрытые каналыпул разбора — 2 процесса ProcessPoolExecutor, прогреты при старте: pymorphy3, natasha, spaCyосновной цикл — asyncio-цикл бота: подсчёты Counter, build_v2_card_data, чтение SQLiteнейросеть — внешний API (Groq, модель Qwen): фраза, архетип, темыпоток рендера — 1 поток + Chromium (Playwright): HTML → JPEG, облака слов, эмодзи
🆓 Бесплатно — по последним 100 постам:
🪪 Обложка и канал в цифрах
☁️ Облако слов и самое частое слово
🧒 Языковой возраст
💎 Полный анализ (за ⭐️) — до года канала:
Всё из бесплатного, плюс:
👤 Главный герой канала
😀 Палитра эмоций
📚 Словарный запас за год
🤬 Облако мата и токсичность
🌙 Хронотип
✨ Канал в одной фразе
🎭 Архетип Юнга
❤️ Реакции и хиты
🏁 Итоги года с редкостью ваших архетипов
КОЛОДА
— Обложка: сколько постов и с какой скоростью пишет канал
— Облако слов и самое частое слово
— Архетип по Юнгу: Шут, Мудрец, Бунтарь… и насколько он редкий
(«реже, чем у 94% каналов»)
— Хронотип: по времени постов — Сова, Жаворонок, Лунатик.
— Токсичность и облако мата — самая популярная для репостов карточка
— Языковой возраст: «канал звучит на 23 года»
— Визитка года: всё главное на одном кадре для сторис
Бот не генерирует карточки с нуля, он получает бекграунды куда вписывает уникальный текст
Карточки и используемые для анализа библиотеки Python
Очередь и защита
• Умная очередь: места для бесплатных, никто не ждёт вечно, /queue и /cancel• Заявки и анализы переживают перезапуск, колода не приходит дважды
• Любая ошибка сразу приходит админу в Telegram
• Запасная нейросеть на случай лимита основной
• Сторож аккаунтов и читателей, внешний пульс
• Аудит перед запуском и закрытие всех находок
• /close и /open закрывают бота без перезапуска










