Telegram-бот для скачивания и обработки контента из Instagram с использованием искусственного интеллекта (AI)

В этой статье расскажу, как разработать Telegram-бота, который за несколько секунд скачивает любой контент из Instagram (например Reels, посты, сторис, хайлайты), извлекает текст с изображений через OCR, транскрибирует аудио с помощью Whisper и генерирует свежие сценарии с помощью AI для рилсов. Бот решает проблему быстрой обработки медиа для блогеров, SMM-специалистов и креаторов, позволяя им мгновенно получать новые идеи и сценарии для контента.

Иллюстрация от Анна Лукьяновой. Название от меня «ClipMagic»
Иллюстрация от Анна Лукьяновой. Название от меня «ClipMagic»

Создал этого бота, в первую очередь для себя, когда стал сталкиваться с контентом, который сложно понять без нормального перевода. Рилсы на разных языках — от английского до сербского и французского — стали появляться чаще, а я никак не мог уловить все детали, что делали креаторы в США и Европе. Кроме того, меня бесило, что Instagram не позволяет скачать контент без водяных знаков или вообще скачивать его, а обходные пути с добавлением символов в ссылку часто не работали.

Первоначально я сделал простой инструмент, чтобы скачать видео, извлечь из него текст и перевести его, а со временем, кончено, добавил ChatGPT. Теперь он транскрибирует, переводит контент и генерирует идеи на основе оригинального текста. Это не универсальное решение, которое нужно принимать буквально, а инструмент для размышлений, доработки идей и порой даже для смеха, когда иишка выдает неожиданные «перлы».

Основные функции бота для работы с Instagram

1. Как скачать контент из Instagram с помощью Telegram-бота?

Бот принимает ссылки на разные типы публикаций:

  • Reels (короткие видео)
  • Stories (истории)
  • Посты (фото и видео)
  • Highlights

Как это работает:

  • Бот анализирует ссылку и определяет тип контента.
  • Для загрузки используется библиотека instagrapi.
  • При достижении лимита запросов аккаунта бот автоматически переключается на другой аккаунт (ниже будет приведен кусок кода с логикой выбора аккаунта).
  • Также бот принимает картинки с текстом и видео (до20 мб)

2. Извлечение аудио из видео Instagram с помощью ИИ

  • Видео сохраняется во временной папке.
  • С помощью библиотеки MoviePy аудиодорожка извлекается и сохраняется в формате WAV.
  • Извлечённое аудио отправляется пользователю для дальнейшей обработки.

3. Как работает транскрибация видео с помощью модели Whisper?

  • Модель Whisper преобразует аудио в текст.
  • Транскрибированный текст можно использовать для перевода или дальнейшего анализа.

4. Перевод текста из Instagram на русский с помощью ИИ

  • Бот переводит текст (из транскрибации или OCR) с помощью API (Yandex, Google или OpenAI).
  • Определяется исходный язык, и если он не русский, текст переводится.

5. Распознавание текста на изображениях Instagram с помощью OCR-технологий

  • С использованием pytesseract или облачного сервиса Yandex OCR бот извлекает текст из изображений.
  • Это полезно для работы со скриншотами, инфографикой и другими изображениями.

6. Генерация идей для контента с помощью ИИ в Telegram-боте

  • Бот передаёт исходный текст (транскрипцию или OCR) в OpenAI API.

7. Оплата услуг и реферальная система для пользователей Telegram-бота

  • Подписка оформляется прямо в Telegram с использованием Telegram Payments и ЮKassa.Пользователь может приглашать друзей, получая бонусы за успешные регистрации (например, бесплатный месяц подписки).

Попробовать можно ТУТ

Иллюстрация от Анна Лукьяновой. Название от меня «Швейцарский нож»
Иллюстрация от Анна Лукьяновой. Название от меня «Швейцарский нож»

Техническая архитектура бота и использованные технологии для обработки контента

  • aiogram
  • ARQ
  • Redis
  • PostgreSQL
  • instagrapi
  • moviepy
  • Whisper
  • Yandex OCR
  • OpenAI API
  • Платёжные системы (Telegram Stars, ЮKassa)

Как работает система оплаты в Telegram-боте

Интегрировал с различными методами оплаты, что позволяет оформлять подписку прямо внутри Telegram без перехода на внешние сайты.

  • Пользователь может оплатить подписку звездами Telegram
  • Интеграция с ЮKassa позволяет отправлять инвойсы с фискальными данными через Telegram Payments. Пользователь вводит данные карты и совершает платёж без покидания мессенджера.
В общем, теперь вам вообще не нужно ни думать, ни работать — есть бот, который сделает всё за вас!)) 

Как бот распределяет нагрузку между Instagram-аккаунтами?

Ниже приведен ключевой фрагмент, демонстрирующий, как реализовал равномерное распределение нагрузки между Instagram-аккаунтами* с помощью round-robin и rate limiting.

Зачем?

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

def get_available_account(self) -> Optional[InstagramAccount]: # Фильтруем аккаунты, чтобы оставить только активные и не заблокированные active_accounts = [acc for acc in self.accounts if acc.is_active and not acc.is_blocked] logger.info(f"Всего аккаунтов: {len(self.accounts)}, активных: {len(active_accounts)}.") # Сортируем активные аккаунты по количеству действий за последний час. # Чем меньше действий, тем лучше подходит аккаунт для использования active_accounts.sort(key=lambda acc: acc.get_actions_in_last_hour()) # Если нет доступных активных аккаунтов, выводим сообщение и возвращаем None if not active_accounts: logger.error("Нет доступных активных аккаунтов.") return None # Round-robin: ищем аккаунт, который ещё не превысил лимит действий attempts = 0 # Счётчик попыток while attempts < len(active_accounts): # Если индекс текущего аккаунта выходит за границы списка, сбрасываем его в 0 if self.current_account_index >= len(active_accounts): self.current_account_index = 0 # Получаем кандидата на аккаунт candidate = active_accounts[self.current_account_index] # Проверяем, если количество действий на аккаунте меньше максимального лимита за последний час if candidate.get_actions_in_last_hour() < self.max_actions_per_hour: self.active_account = candidate # Устанавливаем этот аккаунт как активный self.current_account_index += 1 # Переходим к следующему аккаунту для следующей попытки return candidate # Возвращаем этот аккаунт как доступный else: # Если аккаунт достиг лимита по действиям, выводим информацию об этом и переходим к следующему аккаунту logger.info( f"Аккаунт {candidate.name} достиг лимита: {candidate.get_actions_in_last_hour()}/{self.max_actions_per_hour}." ) self.current_account_index += 1 # Переход к следующему аккаунту attempts += 1 # Увеличиваем счётчик попыток # Если все аккаунты превысили лимит за последний час, выводим предупреждение logger.warning("Все аккаунты превысили лимит за последний час.") return None # Возвращаем None, если не удалось найти доступный аккаунт

Итоги разработки бота и дальнейшие планы по улучшению функционала

Этот бот родился из моего личного раздражения: хотелось быстро переводить иностранный контент и скачивать ролики без танцев с бубном. Со временем он оброс фичами — от транскрибации до генерации идей через ChatGPT. Не идеальный инструмент, но удобный помощник для работы с контентом.

Что будет дальше для пользователей Telegram-бота для Instagram?

  • YouTube-контент: хочу добавить загрузку и анализ видео с YouTube по аналогии с Instagram.
  • Анализ нескольких блогеров и отправка алертов, если новый рилс набрал в 3 раза больше просмотров чем подписчиков в аккаунте ;)
  • Голосовые сообщения: планирую научить бота обрабатывать аудио из голосовых сообщений (да, даже те 20-минутные монологи от друга-философа).
  • Упрощение интерфейса: меньше кнопок, больше интуитивных команд.
  • Поддержка VK и Rutube.

Как связаться с разработчиком Telegram-бота для Instagram?

И да, если есть идеи, как его можно докрутить, буду рад обсудить!

P.S. Если встретите в боте «перлы» от ChatGPT — присылайте в комменты. Иногда его ответы стоят отдельного мема.

Вдруг вы еще не знали: Instagram — принадлежит американской компании Meta, которую признали экстремистской, запрещён на территории РФ.

Начать дискуссию