Библиотека
гайд · июнь 2026
// безлюдный конвейер рилсов

Reels-автопайплайн: идея - публикация, меня нет вообще

Полная схема безлюдного конвейера рилсов: ты вводишь тему, Claude Code пишет сценарий, Qwen TTS синтезирует голос, faster-whisper тайминги, Playwright субтитры-караоке, Gemini Omni рисует движущийся фон, музыка из банка + ffmpeg, автопостинг IG Reels + YT Shorts. Без съёмки.

Что ты сейчас смотрел
Рилс, который ты досмотрел, я не снимал и не монтировал. Я не вставал перед камерой. Голос в ролике не мой. Фон, который двигается вокруг меня, я не рисовал. Я задал одну тему в терминале и закрыл ноутбук. Это полностью безлюдный конвейер: идея - сценарий - синтез голоса - монтаж - фон-нейросеть - публикация. Человек участвует ровно в одном месте: ты вводишь тему и нажимаешь старт. Дальше восемь моделей передают работу друг другу по цепочке.
0

Карта пайплайна: 8 звеньев, порядок строгий

#ЗвеноМодель / инструментЧто делаетЗамена
1Тема - сценарийClaude Code (Opus)пишет текст, сам разбирается в хуках, ставит CTA с кодовым словомDeepSeek / GPT (хуже держит структуру)
2ГолосQwen3-TTS (клон по референсу)озвучивает текст сценария твоим тембромElevenLabs / OpenAI TTS (платно)
3Транскрипт под субтитрыfaster-whisper large-v3размечает синтезированный голос по словам (тайминги)WhisperX
4СубтитрыPlaywright - PNGкараоке слово-за-словом поверх видеоdrawtext (хуже)
5Фон-нейросетьGoogle Gemini Omniдостраивает движущийся фон/графику вокруг говорящегоKling / Runway (другой принцип)
6B-roll / вставкиPlaywright HTML-сценыкарточки, счётчики, графики по текстуготовые футажи
7Музыка + сведениебанк треков + ffmpeg sidechainмузыка под голос, дакинг, финал -14 LUFSEpidemic / Artlist
8ПубликацияMeta Graph API + YT Data APIпостит IG Reels + YT Shorts по расписаниюручная загрузка

Главное отличие от «сними себя одним дублем»: тут нет шага съёмки. Звено 1 даёт текст, звено 2 превращает его в голос, звено 5 рисует тебя в кадре с фоном. Камеру ты не достаёшь.

1

Claude Code пишет сценарий и сам разбирается в хуках

Ты вводишь одну тему. Например: «автопайплайн рилсов». Всё. Дальше Claude Code:

  1. Поднимает тренды ниши (Virlo MCP / архив): какие хуки сейчас держат досмотр.
  2. Сам формулирует хук на первые 4 секунды (не из шаблона - разбирается, почему хук работает: петля-загадка, упрёк-вопрос, личная боль от первого лица).
  3. Пишет тело: 5 сегментов, польза по ходу, вишенка в конце.
  4. Ставит финальный CTA с кодовым словом (ПАЙПЛАЙН) и привязывает его к лендингу.

Ключевое из ролика: «Claude Code сам написал сценарий, разобрался, что такое хуки и как с ними работать». Это не подстановка в шаблон. Промпт-агент держит канон хуков, re-hooks на 15 и 30 секунде, сэндвич-структуру. На выходе - script.json: текст + тайм-разметка по сегментам + THUMBNAIL_HOOK для обложки.

# Запуск одной командой claude -p "Сделай рилс по теме: автопайплайн рилсов. \ Профиль ниши и канон хуков в profile.yaml. \ Выход: script.json (хук + 5 сегментов + CTA-кодовое-слово)."

Ты эту команду ввёл - и ушёл. Всё остальное ниже происходит без тебя.

2

Голос. Qwen TTS вместо твоего

В ролике: «Голос не мой - это Qwen TTS, озвучил текст от Claude Code». Это важная замена камеры. Раньше ты записывал свой голос на телефон. Теперь голос синтезируется.

  • Модель: Qwen3-TTS-1.7B (клон по референсу) - локально на Mac (mlx-audio), бесплатно.
  • На вход: текст из script.json + 10-15 сек референса твоего голоса (один раз записал - используешь всегда).
  • На выход: voice.wav, твой тембр, читает текст сценария.
# Локальный синтез (mlx-audio), клон по референсу from mlx_audio.tts.generate import generate_audio generate_audio( text=script_text, model="mlx-community/Qwen3-TTS-12Hz-1.7B-Base-bf16", ref_audio="ref/timur_10s.wav", # один раз записанный референс ref_text="текст того же референса", file_prefix="voice" ) # -> voice.wav (твой голос, но это синтез)

Зачем это меняет всё: нет голоса - нет съёмки - нет «приди в кадр, поставь свет, сделай дубль». Сценарий сразу становится звуком. Если не хочешь клон - OpenAI TTS или ElevenLabs, но это платно и без локального контроля. Дальше voice.wav - это и есть аудиодорожка ролика. Всё видео строится вокруг неё.

3

Тайминги по словам (faster-whisper)

Синтезированный голос прогоняется через faster-whisper large-v3 с word-level таймингами. Парадокс: текст мы и так знаем (он из сценария), но нам нужны точные тайминги КАЖДОГО слова, чтобы субтитры зажигались синхронно с озвучкой.

from faster_whisper import WhisperModel model = WhisperModel("large-v3", device="cpu", compute_type="int8") segments, _ = model.transcribe("voice.wav", language="ru", word_timestamps=True, vad_filter=True) # -> transcript.json: {word, start, end} по каждому слову

transcript.json читают три следующих звена: субтитры (звено 4), синхронизация B-roll (звено 6), брифинг под фон (звено 5).

4

Субтитры караоке (Playwright - PNG)

Формат A: караоке слово-за-словом. Активное слово подсвечивается янтарём, остальные белые. Inter ExtraBold, мягкое гало, без чёрной обводки (дёшево выглядит).

  • Генератор HTML по transcript.json - Playwright рендерит PNG-секвенцию с прозрачным фоном - ffmpeg накладывает на видео.
  • Тайминги берутся из звена 3 ровно по словам.
# Рендер слоя субтитров, потом overlay python3 render_subs.py --transcript transcript.json --out subs/ ffmpeg -i base.mp4 -i subs/frame_%05d.png \ -filter_complex "[1:v]format=rgba[s];[0:v][s]overlay=0:0" \ -c:v libx264 -crf 18 composite_subs.mp4
5

Фон-нейросеть. Та самая «другая нейросеть для видео»

Это про фразу из ролика: «Фон, который двигается вокруг меня, - другая нейросеть для дизайна/разработки видео».

Модель: Google Gemini Omni. Это видео-РЕДАКТОР, а не генератор с нуля. Приём называется «реактивная сцена»:

  • Берёт говорящего (тебя или синтез-аватар) и достраивает вокруг движущийся фон / графику / окружение студии.
  • Триггер построения в полный рост из крупного плана: He stands full-body in a vast studio + графика around him.
  • Кириллица на объектах в кадре РЕНДЕРИТСЯ (можно слово на футболке, реквизит в фон).
  • Конкретные диегетические правки бьют размытый рестайл: одна фраза - один объект в сцене.
Грабли из практики
«Unusual activity» - это античит-гард Omni, не отказ. Ждёшь и делаешь retry, не переписываешь промпт.

Чем это отличается от старого пайплайна: раньше фон был просто blur-pad - размытая копия твоего же видео (gblur в ffmpeg). Тут фон осмысленно строится нейросетью под смысл каждой фразы. Это и есть «двигается вокруг меня».

Гео-РФ
Gemini Omni напрямую из России недоступен - нужен прокси/зарубежный контур.
6

B-roll вставки (Playwright HTML)

Поверх говорящей головы - реальные cut-away и HTML-сцены: счётчики цифр, карточки имён/компаний, графики, listicle-тикеры. Тип выбирается из транскрипта автоматически:

  • упомянута цифра - counter-animate / chart-card;
  • имя собственное - named-entity-card;
  • шаги процесса - flow-diagram.

Рендер тот же: Playwright - PNG - ffmpeg overlay по таймингу из transcript.json. 3-5 вставок на ролик - норма.

7

Музыка и финальное сведение

  • Музыка - из банка треков (ambient-tech), НЕ синтез (синтезированная музыка забракована).
  • Свод через ffmpeg: голос -16 / -14 LUFS, музыка -28 с EQ-вырезом в районе 2.5 кГц, sidechain-дакинг (музыка приседает под голос), финал -14 LUFS.
ffmpeg -i composite.mp4 -i music.mp3 -filter_complex " [0:a]loudnorm=I=-14:TP=-1.5,asplit=2[v][trig]; [1:a]volume=0.20[m]; [m][trig]sidechaincompress=threshold=0.05:ratio=12:attack=15:release=400[md]; [v][md]amix=inputs=2:duration=first[a]" \ -map 0:v -map "[a]" -c:v copy -c:a aac FINAL.mp4
QA-гейт перед публикацией
длительность 45-90 сек (IG) / до 60 сек (YT Shorts), аудио 48 кГц, pix_fmt yuv420p, обложка как нулевой кадр, имя файла только латиница (кириллица - Meta 400).
8

Автопостинг IG + YT

  • IG Reels - Meta Graph API (создать контейнер - polling до FINISHED - media_publish).
  • YT Shorts - YT Data API videos.insert (видео до 60 сек + 9:16 - само становится Shorts).
  • Оба постятся по расписанию из schedule.yaml, одновременно (алгоритмы независимы).
  • Параллельно деплоится лендинг под кодовое слово и регистрируется keyword-flow (коммент ПАЙПЛАЙН - DM со ссылкой - бот - этот гайд).

«Вернулся - ролик готов и уже выложен». Это звено 8: к моменту, когда ты допил кофе, контейнер уже опубликован, а воронка под кодовое слово уже слушает комментарии.

9

Полный поток одной картинкой

ТЫ: ввёл тему + старт │ 1. Claude Code -> script.json (хук + сегменты + CTA-кодовое-слово) 2. Qwen3-TTS -> voice.wav (синтез голоса, НЕ запись) 3. faster-whisper -> transcript.json (тайминги по словам) 4. Playwright -> субтитры-караоке (PNG -> overlay) 5. Gemini Omni -> движущийся фон вокруг говорящего 6. Playwright -> B-roll вставки (3-5) 7. ffmpeg -> музыка из банка + sidechain -> FINAL.mp4 (-14 LUFS) 8. Meta Graph + YT Data API -> IG Reels + YT Shorts опубликованы │ ТЫ: вернулся с кофе -> ролик уже в ленте
$

Бюджет (что реально новое)

  • Claude Code - уже есть, если пользуешься (~$20-40/мес на контент).
  • Qwen3-TTS - $0, локально на Mac.
  • faster-whisper / Playwright / ffmpeg - $0, open-source.
  • Google Gemini Omni - по подписке Google AI (Gemini), оплата картой; гео-контур для РФ.
  • Музыка - банк треков (свой) или Epidemic $15/мес.
  • VPS под автопостинг + воронку - ~$20/мес (или локальный launchd на Mac).

Реальная новая статья поверх Claude Code: Gemini (Omni) + музыка + VPS. Голос, ASR, субтитры, B-roll - бесплатны и локальны.

Честный дисклеймер
Это не plug-and-play. Цепочка из 8 моделей собирается под твой стек: профиль ниши, канон хуков, референс голоса для Qwen, промпт-шаблон под Gemini Omni, калибровка субтитров. Один раз настроил - дальше «тема - старт - кофе». Но первая настройка - это работа, а не кнопка. И да: human-in-the-loop всё ещё есть в одном месте - ты задаёшь тему и решаешь, что снимать. Дальше тебя в кадре нет: голос синтезирует Qwen, фон рисует Omni, монтаж делает ffmpeg.