Что получится в результате
Соберем ИИ-агента, который помогает готовить видео к публикации: расшифровывает ролик, делает главы, title, description, shorts-идеи, субтитры и задачи редактору.
Первая рабочая версия будет делать так:
- видео или ссылка на видео попадает в таблицу `video_queue`;
- n8n забирает новую строку;
- workflow получает transcript или отправляет файл на расшифровку;
- LLM выделяет тему, структуру, таймкоды и ключевые моменты;
- агент готовит 3 варианта заголовка, описание, главы и теги;
- спорные или слабые элементы попадают в `needs_review`;
- редактор ставит `approved`, `needs_edit` или `rejected`;
- approved-метаданные можно отправить в YouTube Studio/API или в задачу редактору;
- идеи для Shorts попадают в отдельный лист `shorts_queue`;
- все действия пишутся в `video_log`.
В первой версии агент не публикует видео сам, не меняет title/description без редактора, не ставит кликбейт, не использует чужие материалы без прав и не вырезает Shorts автоматически без проверки.
Что понадобится
- n8n Cloud или self-hosted n8n.
- Google Sheets.
- Google Drive или другая папка для видеофайлов.
- YouTube Data API, если хотите обновлять метаданные через API.
- API для расшифровки аудио или готовые субтитры.
- API-ключ LLM-провайдера.
- Редактор, который подтверждает заголовки, описание и главы.
- 1-2 тестовых видео.
Шаг 1. Определите сценарий первой версии
Не начинайте с автопубликации на YouTube.
Для первого прототипа выберите сценарий:
видео уже записано, агент готовит пакет публикации, редактор проверяет, затем человек публикует или подтверждает обновление через API
Пакет публикации:
- title;
- description;
- chapters;
- tags;
- subtitles draft;
- 3-5 идей для Shorts;
- checklist перед публикацией.
Проверка: агент отвечает за подготовку, а не за финальное решение.
Шаг 2. Создайте таблицу проекта
Создайте Google Sheet:
YouTube video AI agent
Добавьте листы:
video_queue
transcripts
metadata_drafts
chapters
shorts_queue
editor_review
video_log
settings
test_cases
Проверка: у n8n есть доступ на чтение и запись.
Шаг 3. Создайте очередь видео
В листе `video_queue` сделайте колонки:
video_id
source_type
source_url
drive_file_id
youtube_video_id
video_title_raw
language
duration_seconds
status
created_at
processed_at
error
Статусы:
- `new`;
- `transcribed`;
- `draft_ready`;
- `needs_review`;
- `approved`;
- `published`;
- `error`.
Пример:
VID-1001
drive
https://drive.google.com/file/d/...
drive-file-123
Запись вебинара про AI-агентов
ru
1840
new
2026-05-22
Проверка: тестовое видео есть в очереди со статусом `new`.
Шаг 4. Создайте настройки
В листе `settings` добавьте:
key
value
comment
Заполните:
default_language | ru | язык видео
max_title_length | 90 | ограничение заголовка
max_description_length | 4500 | запас до лимита YouTube
chapters_min_gap_seconds | 10 | минимальный интервал между главами
shorts_min_seconds | 20 | минимальная длительность шорта
shorts_max_seconds | 60 | максимальная длительность шорта
auto_publish_allowed | no | в первой версии всегда no
Проверка: ограничения вынесены из prompt в настройки.
Шаг 5. Создайте лист transcripts
В листе `transcripts` сделайте колонки:
transcript_id
video_id
language
source
transcript_text
segments_json
confidence
created_at
`segments_json` хранит таймкоды:
[
{"start": 0, "end": 12, "text": "Сегодня разберем, что такое AI-агенты"},
{"start": 12, "end": 42, "text": "Начнем с простого примера"}
]
Проверка: transcript хранит не только текст, но и сегменты с временем.
Шаг 6. Создайте лист metadata_drafts
В листе `metadata_drafts` сделайте колонки:
draft_id
video_id
title_1
title_2
title_3
description
tags
thumbnail_brief
pinned_comment
editor_notes
confidence
review_status
approved_by
created_at
approved_at
Статусы:
- `draft`;
- `approved`;
- `needs_edit`;
- `rejected`;
- `done`;
- `error`.
Проверка: у каждого видео есть отдельный черновик метаданных.
Шаг 7. Создайте лист chapters
В листе `chapters` сделайте колонки:
chapter_id
video_id
start_time
title
description
review_status
created_at
Формат `start_time`:
00:00
02:15
08:40
Правила YouTube chapters:
- первая глава начинается с `00:00`;
- таймкод и название стоят в описании;
- главы идут по порядку;
- между главами должен быть нормальный интервал, для первой версии держите минимум 10 секунд.
Проверка: главы можно вставить в description как обычные timestamp-строки.
Шаг 8. Создайте лист shorts_queue
В листе `shorts_queue` сделайте колонки:
short_id
video_id
start_time
end_time
hook
short_title
caption_text
reason
review_status
created_at
Проверка: идеи Shorts отделены от основного описания видео.
Шаг 9. Создайте workflow обработки видео
Назовите workflow:
YouTube video draft
Добавьте узлы:
- `Schedule Trigger`;
- `Google Sheets` - чтение `settings`;
- `Google Sheets` - чтение `video_queue`;
- `Filter` по `status = new`;
- `Split In Batches`;
- `Google Drive` или `HTTP Request` - скачать видео или аудио;
- `Transcription API` - получить transcript;
- `Code` - нормализовать сегменты;
- `LLM` - подготовить metadata;
- `LLM` - подготовить chapters и shorts;
- `Code` - проверить JSON и ограничения;
- `Google Sheets` - запись `transcripts`;
- `Google Sheets` - запись `metadata_drafts`;
- `Google Sheets` - запись `chapters`;
- `Google Sheets` - запись `shorts_queue`;
- `Google Sheets` - обновление `video_queue`;
- `Google Sheets` - запись `video_log`.
Проверка: workflow создан и запускается вручную.
Шаг 10. Получите transcript
Если видео уже на YouTube и у вас есть доступ к captions, можно работать с caption track через YouTube Data API.
Если видео лежит в Drive, используйте speech-to-text.
Минимальный результат:
{
"video_id": "VID-1001",
"language": "ru",
"segments": [
{
"start": 0,
"end": 14,
"text": "Сегодня разберем, как устроены AI-агенты."
}
],
"full_text": "Сегодня разберем, как устроены AI-агенты..."
}
Проверка: есть полный текст и таймкоды.
Шаг 11. Очистите transcript
В узле `Code` удалите мусор:
- повторяющиеся междометия;
- длинные паузы;
- технические фразы вроде “проверка микрофона”;
- дубли сегментов;
- пустые сегменты.
Но не переписывайте смысл.
Проверка: transcript стал читаемее, но таймкоды не съехали.
Шаг 12. Подготовьте prompt для метаданных
System prompt:
Ты редактор YouTube-канала.
Готовь метаданные только по transcript.
Не придумывай факты, которых нет в видео.
Не делай кликбейт.
Не обещай результат, которого нет в содержании.
Верни только валидный JSON.
User prompt:
Transcript:
{{transcript_text}}
Ограничения:
title <= {{max_title_length}} символов
description <= {{max_description_length}} символов
Верни JSON:
{
"title_1": "вариант заголовка",
"title_2": "вариант заголовка",
"title_3": "вариант заголовка",
"description": "описание с кратким содержанием, без выдуманных ссылок",
"tags": ["tag1", "tag2"],
"thumbnail_brief": "что написать/показать на обложке",
"pinned_comment": "короткий закрепленный комментарий",
"editor_notes": "что проверить редактору",
"confidence": 0.0
}
Проверка: LLM возвращает JSON без Markdown.
Шаг 13. Подготовьте prompt для глав
System prompt:
Ты делаешь главы для YouTube-видео.
Используй только transcript segments.
Первая глава должна начинаться с 00:00.
Главы должны идти по порядку.
Название главы короткое и понятное.
Верни только JSON.
User prompt:
Segments:
{{segments_json}}
Верни JSON:
{
"chapters": [
{
"start_seconds": 0,
"start_time": "00:00",
"title": "Вступление",
"description": "коротко о чем часть"
}
]
}
Проверка: первая глава начинается с `00:00`.
Шаг 14. Подготовьте prompt для Shorts
System prompt:
Ты ищешь фрагменты для YouTube Shorts.
Выбирай только места, где есть законченная мысль, пример, ошибка, чеклист или сильный тезис.
Не придумывай цитаты.
Верни только JSON.
User prompt:
Segments:
{{segments_json}}
Ограничения:
shorts_min_seconds = {{shorts_min_seconds}}
shorts_max_seconds = {{shorts_max_seconds}}
Верни JSON:
{
"shorts": [
{
"start_seconds": 120,
"end_seconds": 165,
"hook": "первое предложение для удержания",
"short_title": "короткий заголовок",
"caption_text": "текст для субтитров/описания",
"reason": "почему этот фрагмент стоит вырезать"
}
]
}
Проверка: каждый short длится от 20 до 60 секунд.
Шаг 15. Проверьте JSON и ограничения
Добавьте узел `Code`.
Правила:
- title не длиннее `max_title_length`;
- description не длиннее `max_description_length`;
- tags не больше 15;
- chapters отсортированы по времени;
- первая глава `00:00`;
- между главами не меньше `chapters_min_gap_seconds`;
- shorts не пересекаются хаотично;
- у shorts есть hook и reason;
- нет выдуманных ссылок;
- нет обещаний вроде “гарантированно заработаете”.
Проверка: плохой JSON не попадает редактору как готовый результат.
Шаг 16. Запишите transcript
В `transcripts` добавьте строку:
transcript_id: video_id + дата
video_id
language
source: youtube_caption или speech_to_text
transcript_text
segments_json
confidence
created_at
Проверка: transcript можно открыть и проверить вручную.
Шаг 17. Запишите metadata draft
В `metadata_drafts` добавьте:
draft_id
video_id
title_1
title_2
title_3
description
tags
thumbnail_brief
pinned_comment
editor_notes
confidence
review_status: draft
created_at
Проверка: редактор видит 3 варианта title и один черновик description.
Шаг 18. Запишите главы
В `chapters` добавьте строки по каждой главе.
Пример:
CH-001
VID-1001
00:00
Вступление
О чем видео и какой результат получит зритель
draft
2026-05-22
Проверка: главы можно собрать в блок:
00:00 Вступление
02:15 Что такое AI-агент
08:40 Как собрать workflow
Шаг 19. Запишите Shorts-идеи
В `shorts_queue` добавьте строки.
Проверки:
- `start_time` меньше `end_time`;
- длительность 20-60 секунд;
- фрагмент не начинается на середине предложения, если transcript позволяет это увидеть;
- reason объясняет ценность фрагмента.
Проверка: редактор может открыть исходное видео по таймкоду и принять решение.
Шаг 20. Обновите video_queue
После успешной обработки:
status: draft_ready
processed_at: текущая дата
Если ошибка:
status: error
error: текст ошибки
Проверка: повторный запуск не создает второй draft для того же видео без причины.
Шаг 21. Проверьте пакет редактором
Редактор открывает:
- `metadata_drafts`;
- `chapters`;
- `shorts_queue`;
- исходное видео;
- transcript.
Проверить:
- title не кликбейт;
- description соответствует видео;
- главы начинаются с `00:00`;
- таймкоды корректные;
- tags не спамные;
- shorts не вырывают мысль из контекста;
- нет нарушений авторских прав;
- нет медицинских, финансовых или юридических обещаний без оснований.
После проверки поставить:
review_status: approved
approved_by: имя
approved_at: дата
Или:
review_status: needs_edit
editor_notes: что исправить
Проверка: без `approved` агент не обновляет YouTube.
Шаг 22. Создайте workflow для approved-метаданных
Назовите workflow:
YouTube metadata apply approved
Он делает:
- читает `metadata_drafts`;
- берет только `review_status = approved`;
- собирает description с chapters;
- обновляет видео через YouTube Data API или создает задачу редактору;
- записывает результат в `video_log`.
В первой версии безопаснее создавать задачу редактору:
обновить title/description/tags вручную в YouTube Studio
Проверка: если `auto_publish_allowed = no`, workflow не вызывает YouTube update API.
Шаг 23. Соберите description с chapters
Формат:
Краткое описание видео...
Главы:
00:00 Вступление
02:15 Что такое AI-агент
08:40 Как собрать workflow
Ссылки:
...
Не добавляйте ссылки, которых нет в approved-списке.
Проверка: chapters находятся в description и начинаются с `00:00`.
Шаг 24. Подготовьте субтитры
Если transcript достаточно качественный, создайте `.srt` или `.vtt`.
Минимальный SRT-блок:
1
00:00:00,000 --> 00:00:04,000
Сегодня разберем, как устроены AI-агенты.
Если используете YouTube Data API captions, учитывайте, что caption track связан с конкретным videoId.
Проверка: файл субтитров открывается и таймкоды идут по порядку.
Шаг 25. Создайте задачи по Shorts
Назовите workflow:
YouTube shorts tasks approved
Он берет `shorts_queue` со статусом `approved` и создает задачи монтажеру.
Текст задачи:
Вырезать Short из VID-1001
Таймкод: 02:00-02:45
Hook: “Главная ошибка при запуске AI-агента”
Caption: ...
Причина: сильный тезис и законченный пример
Проверка: монтажер получает конкретный таймкод и смысл фрагмента.
Шаг 26. Сделайте regression test
В листе `test_cases` сделайте колонки:
case_id
transcript_sample
expected_has_00_00_chapter
expected_min_titles
expected_short_count_min
expected_status
enabled
Добавьте тесты:
- короткое видео до 60 секунд;
- длинный вебинар;
- видео без явных разделов;
- видео с рекламной вставкой;
- видео с техническим мусором в начале;
- transcript с плохим качеством;
- видео на русском;
- видео на английском;
- видео с финансовыми обещаниями;
- видео с чужими цитатами.
Создайте workflow:
YouTube video regression test
Он прогоняет test cases и проверяет, что chapters, title и shorts создаются по правилам.
Проверка: изменение prompt не ломает chapters и ограничения.
Минимальная проверка результата
Прототип работает, если выполняются все пункты:
- видео попадает в `video_queue`;
- transcript сохраняется в `transcripts`;
- metadata draft создается в `metadata_drafts`;
- chapters начинаются с `00:00`;
- shorts идеи имеют таймкоды и reason;
- редактор может поставить `approved` или `needs_edit`;
- без `approved` YouTube не обновляется;
- approved-пакет можно перенести в YouTube Studio;
- ошибки пишутся в `video_log`;
- regression test проверяет базовые правила.
Что нельзя автоматизировать в первой версии
- публикацию видео без редактора;
- изменение title/description на боевом канале без approval;
- генерацию кликбейта;
- использование чужих фрагментов без прав;
- автоматическую нарезку Shorts без просмотра;
- обещания результата в заголовке;
- удаление видео;
- массовое обновление старых роликов без тестового прогона.
Частые вопросы
Можно ли сразу обновлять YouTube через API?
Да, но сначала лучше создавать задачу редактору. Когда качество title, description и chapters станет стабильным, можно включить API-обновление только для approved-строк.
Что делать, если transcript плохой?
Ставить `needs_review`. Плохая расшифровка ломает title, chapters и shorts, поэтому ее нужно исправить до генерации метаданных.
Как сделать главы, чтобы они работали на YouTube?
Добавьте timestamp-строки в description, первая строка должна начинаться с `00:00`, главы должны идти по порядку и иметь название.
Почему LLM не должен сам придумывать ссылки?
Потому что ссылка в description ведет зрителя наружу и может быть ошибочной или небезопасной. Все ссылки должны идти из approved-списка или добавляться редактором.
Какой минимум нужен для запуска?
Листы `video_queue`, `transcripts`, `metadata_drafts`, `chapters`, `shorts_queue`, n8n workflow, transcription, LLM prompts, editor approval и ручной перенос approved-пакета в YouTube Studio.