Автоматизация обработки YouTube-видео для Telegram в n8n

Автоматизация обработки YouTube-видео для Telegram в n8n

1. Цель автоматизации

Задача:

Когда боту в Telegram отправляют ссылку на видео с YouTube, автоматизация:

  1. Получает ссылку из входящего сообщения.
  2. Вызывает внешний сервис для извлечения аудио или выжимки из видео.
  3. Если сервис возвращает текстовый результат (например, выжимку), то обрабатывает его (при необходимости, переводит).
  4. Если же сервис возвращает файл (например, видео/аудио), то файл загружается в Google Drive, откуда скачивается для транскрипции.
  5. На основе полученной транскрипции формируется итоговый пост, который отправляется в Telegram.

2. Область применения

Автоматизация полезна для:

  • Медиа-агентств и блогеров, которым необходимо быстро публиковать обзоры видео с YouTube.
  • Контент-менеджеров, стремящихся автоматизировать обработку и публикацию контента.
  • Маркетологов, желающих оперативно информировать аудиторию о новинках на YouTube через Telegram.

Преимущества: экономия времени, минимизация ручного труда, единообразное оформление постов.

3. Инструменты и предварительная подготовка

Платформа:

  • n8n – для построения workflow.

Сервисы и API:

  • Telegram API – получение входящих сообщений и отправка постов (не забудьте настроить креденшалы через BotFather).
  • Внешний сервис на Replit – URL для обработки видео (возвращает либо текстовый результат, либо аудио/видео файл).
  • Google Drive API – загрузка файлов в облако и их последующее скачивание (используйте OAuth2-креденшалы).
  • OpenAI API – транскрипция аудио (с помощью нод типа OpenAI) и генерация итогового текста поста.

Предварительная настройка:

  1. Настройте креденшалы для Telegram, Google Drive и OpenAI в n8n.
  2. Проверьте работу внешнего сервиса на Replit – он должен корректно обрабатывать ссылки.
  3. Создайте агента OpenAI для обработки текста и создания постов в Telegram.

4. Пошаговая инструкция по созданию workflow

В главном меню нажмите Create Workflow чтобы приступить к созданию автоматизации

4.1. Получение входящего сообщения в Telegram

Нода: Telegram Trigger

  • Нажимаем на иконку плюса в правом верхнем углу
  • В поиске находим и выбираем Telegram.
  • Тип: Telegram Trigger (updates – message).
  • Настройка: Подключите креденшалы вашего Telegram-бота.

Сначала вы должны зайти в ваш Telegram аккаунт и в поиске контактов открыть @BotFather. Через меню канала вы можете создать бота в Telegram и настроить его имя, аватарку, описание и т.п.

Когда бот будет создан, BotFather покажет вам Telegram токен, который нужен для работы с только что созданным вами чатботом.

  • Функция: Эта нода будет слушать входящие сообщения, где пользователи отправляют ссылку на YouTube-видео.

4.2. Вызов внешнего сервиса для обработки видео

Нода: HTTP Request

  • В поиске находим и выбираем HTTP.
  • Method: POST
  • URL: (ссылка на ваш Replit код)
    • Как настроить и запустить код на Replit можно посмотреть тут.
  • Включите отправку заголовков запроса Send Headers данные параметры могут отличаться в зависимости от кода, но если вы использовали код, который мы предоставляем в инструкции по настройке Replit, то вписываем:
    • Specify Headers: Using Fields Below
    • Name: X-API-Key
    • Value: s3cr3t-k3y-123
  • Включите отправку тела запроса Send Body:
  • Body Content Type: JSON
  • Specify Body: Using Fields Below
    Тут передавайте параметры video_url со значением ={{ $json.link }}.
    • Name: video_url
    • Value: ={{ $json.link }}
    • Установите опцию, чтобы получать полный ответ.
    • Убедитесь, что сервер на Replit доступен и работает.

4.3. Ветвление обработки результата

Нода: If

  • Цель: Проверить тип возвращаемого ответа, сравнивая заголовок content-type с text/plain.
  • Для передачи данных content type или любых других в дальнейшем процессе автоматизации советуем воспользоваться простым перетаскиванием блоков в режиме/формате Schema

Найдите блок content-type и зажмите на нём мышку, перетащив в нужное вам поле, и обязательно выберите параметр заполнения “Expression”.

Условие:

  • Левая часть: ={{ $json.headers['content-type'] }}
  • Правая часть: "text/plain"
    Оператор: equals
  • Логика:
    • Если условие истинно → получен текстовый результат (выжимка из видео).
    • Если ложно → загружается файл (видео/аудио) в Google Drive.

Первый случай (Если у YouTube-видео доступны субтитры и код их скачивает)

5. Обработка текстового результата (ветка If: текст)

5.1. Генерация выжимки через OpenAI

Нода: OpenAI 

Назначение: Создать короткую выжимку из полученных данных.

Подключите ваши OpenAI credentials

Как это сделать можете мы рассказали тут.

После в OpenAI создайте ассистента, который будет суммаризировать полученный текст, если вы его ещё не создавали.

Как его создать - можете посмотреть здесь:

  • Выберите вашего ассистента из списка
  • Входные данные: ={{ $json.data }} текст из прошлого блока

5.2. Создание поста для Telegram

Нода: OpenAI (Telegram Poster)

Назначение: Создать полноценный Telegram-пост с заголовком, описанием и ссылкой на видео.

  • Создайте и выберите ассистента для создания постов.
  • Входные данные: 
    • Через формат schema перетащите выходные данные из блока HTTP для того, чтобы передать полный текст.А также, укажите выходные данные из прошлого блока с выжимкой:                    
      ={{ $json.output }}

5.3. Отправка поста в Telegram

Нода: Telegram

  • ChatId: Используйте ID чата, полученный из первого блока Telegram Trigger:
    ={{ $('Telegram Trigger').item.json.message.chat.id }} 

Либо можете просто перетащить блок с информацией через формат schema

  • Текст сообщения:
    • Ваш только что созданный пост в прошлом блоке OpenAI {{ $json.output }}
    • Также, по усмотрению, можете в конце поста добавить ссылку на само видео - через формат schema перетащите блок с ссылкой, либо просто скопируйте и вставьте:

 {{ $('Telegram Trigger').item.json.message.link_preview_options.url }}

Второй случай (Если у YouTube-видео нет субтитров, код скачает само видео и сделает транскрибацию)

6. Обработка файла (ветка If: файл)

6.1. Загрузка файла в Google Drive

Нода: Google Drive (Upload)

Назначение: Загрузить видео/аудио в Google Drive.

  • Подключите ваши google drive credentials

Как это сделать можете посмотреть здесь:

  • Настройка:
    • Input Data Field Name: data
    • Parent Drive: Выбираете из списка ваш драйв.
    • Parent Folder: Выбираете из списка папку из вашего драйва .

6.2. Скачивание файла из Google Drive

Нода: Google Drive (Download)

  • Настройка:
    • FileId: скачиваем тот же файл, что и загружали в прошлом блоке Google Drive:  ={{ $json.id }}
    • Добавляем через Add option - Put Output File in Field: data

6.3. Транскрипция аудио через OpenAI

Нода: OpenAI (Transcribe Audio)

  • Настройка:
    • Операция: "Transcribe a Recording".
    • Вход: Бинарные данные из Google Drive под названием - data.

6.4. Генерация выжимки через OpenAI

Нода: OpenAI 

Назначение: Создать короткую выжимку из полученных данных.

Подключите ваши OpenAI credentials

В списке выберите ранее созданного ассистента, который будет суммаризировать полученный текст

  • Входные данные: ={{ $json.data }} текст из прошлого блока

6.5. Создание итогового поста

Нода: OpenAI (Telegram Poster)

Назначение: Объединить полную информацию и выжимку для публикации.

  • Выберите ранее созданного ассистента для создания постов.
  • Входные данные: 
    • Через формат schema перетащите выходные данные из блока HTTP для того, чтобы передать полный текст. А также, укажите выходные данные из прошлого блока с выжимкой:                    
      ={{ $json.output }}

6.6. Финальная отправка сообщения в Telegram

Нода: Telegram

  • ChatId: Используйте ID чата из Telegram Trigger.
  • Текст: Используйте результат из OpenAI (Создание итогового поста).

Итог

У вас должно получиться:

Готово.

Эта схема позволяет минимизировать ручной труд и мгновенно публиковать структурированные посты о новых видео на YouTube.