Skip to content

Repository files navigation

yt-pipeline — конвейер faceless-объяснителей

CI License: MIT Node.js 20+ Remotion 4.0

Стадии: topics → new → research → script → storyboard → voice → subs → render → thumbs → upload. Три человеческих чекпоинта вшиты в конвейер: выбор темы (после topics), правка сценария (после script), disclosure + публикация (после upload — видео заливается ПРИВАТНЫМ черновиком).

Бесплатный режим (без единого API-ключа)

  • LLM (research/script/storyboard): конвейер вызывает установленный Claude Code в официальном headless-режиме (claude -p) — работает твоя OAuth-подписка, ключ не нужен. Требование: claude установлен и один раз выполнен вход. Расход идёт из лимитов подписки.
  • Голос: Edge TTS (нейроголоса Microsoft, бесплатно, без ключа): pip install edge-tts. Голос по умолчанию — en-US-AndrewMultilingualNeural; варианты: ChristopherNeural, GuyNeural, en-GB-RyanNeural (python -m edge_tts --list-voices).
  • Порядок после voice в бесплатном режиме: subs (строит subs.srt и duration.txt) -> sync (подгоняет тайминги сцен под реальную длину озвучки) -> render.
  • Для продакшена рекомендация прежняя: клон СВОЕГО голоса в ElevenLabs (сильный анти-слоп сигнал); Edge — для тестов и черновиков.

Установка

  1. Node.js 20+ (проверка: node -v).
  2. npm install в папке проекта (ставит Remotion; первый рендер докачает headless-браузер).
  3. (опционально) cp .env.example .env — ключи нужны только для ElevenLabs/API/upload:
    • ANTHROPIC_API_KEY — console.anthropic.com (ресёрч, сценарий, раскадровка);
    • ELEVENLABS_API_KEY + ELEVENLABS_VOICE_ID — elevenlabs.io → Voices (лучше клон своего голоса: вкладка Voice Cloning, ~20 минут чистой записи);
    • YT_CLIENT_ID/SECRET — нужны только для стадии upload: Google Cloud Console → создать проект → включить YouTube Data API v3 → OAuth client (Desktop app).
  4. Для upload дополнительно: npm i googleapis.

Прогон готового пилота (LEGO) — без единого ключа

node pipeline.mjs status 2026-07-lego     # что уже есть на конвейере
node pipeline.mjs render 2026-07-lego     # out/2026-07-lego.mp4 (пока без озвучки)
node pipeline.mjs thumbs 2026-07-lego     # 3 обложки в out/
npm run studio                            # живой предпросмотр сцен в браузере

С ключом ElevenLabs добавь озвучку и пересобери:

node pipeline.mjs voice 2026-07-lego && node pipeline.mjs subs 2026-07-lego && node pipeline.mjs render 2026-07-lego

Полный цикл нового видео

node pipeline.mjs topics                          # 5 кандидатов недели -> topics.md   [ТЫ: выбери]
node pipeline.mjs new costco "Costco's $1.50 hot dog economics"
node pipeline.mjs research costco                 # факт-лист с источниками
node pipeline.mjs script costco                   # черновик в фирменном стиле        [ТЫ: правка]
node pipeline.mjs storyboard costco               # сценарий -> scenes.json
node pipeline.mjs voice costco && node pipeline.mjs subs costco
node pipeline.mjs render costco && node pipeline.mjs thumbs costco
node pipeline.mjs upload costco                   # приватный черновик                [ТЫ: disclosure + publish]

Голос: три бэкенда

бэкенд что это когда
cosyvoice Fun-CosyVoice 3 (Alibaba, open-source): zero-shot клон ТВОЕГО голоса с 10-30-сек записи, кросс-языковой (референс по-русски -> речь по-английски твоим тембром), локально и бесплатно лучший анти-слоп вариант; нужен GPU ~8GB (CPU работает, но медленно)
edge нейроголоса Microsoft без ключа тесты и черновики
elevenlabs платный клон/голоса по API если не хочешь поднимать локальный сервер

Поднять CosyVoice (на Windows — через WSL2, нативно мешает sox/pynini):

git clone --recursive https://github.com/FunAudioLLM/CosyVoice.git && cd CosyVoice
conda create -n cosyvoice -y python=3.10 && conda activate cosyvoice
pip install -r requirements.txt
python -c "from huggingface_hub import snapshot_download; snapshot_download('FunAudioLLM/Fun-CosyVoice3-0.5B-2512', local_dir='pretrained_models/Fun-CosyVoice3-0.5B')"
python runtime/python/fastapi/server.py --model_dir pretrained_models/Fun-CosyVoice3-0.5B --port 50000

Команды из доков репо — сверься с их README (и с лицензией моделей перед коммерческим использованием). Затем запиши 10-30с своего голоса, укажи COSYVOICE_REF_AUDIO/REF_TEXT в .env и запускай voice как обычно: чанки, паузы, субтитры и sync конвейер соберёт сам. Если сервер вернёт 422 — сверь имена полей с runtime/python/fastapi/server.py своей версии.

Открытые модели (GLM-5.2, DeepSeek, Qwen, локальные)

Третий бэкенд openai говорит с любым OpenAI-совместимым API: OpenRouter, Z.ai (GLM-5.2), DeepSeek, а также локальные Ollama/vLLM — меняется только OPENAI_BASE_URL и OPENAI_MODEL. Бэкенды смешиваются по стадиям через LLM_BACKEND_: стадия research требует веб-поиска, поэтому её держим на claude-code (или api), а script/storyboard/illustrate можно гнать на дешёвой открытой модели. Качество зависит от модели: скрипт и SVG-иллюстрации — самые требовательные стадии, для них нужен фронтир-класс (GLM-5.2 подходит, мелкие локальные модели — нет).

Векторные иллюстрации (стадия illustrate + скилл svg-scenes)

Storyboard теперь расставляет заготовки VectorScene (2-5 на видео) с описанием визуальной метафоры. Команда node pipeline.mjs illustrate <slug> генерит по ним плоские векторные иллюстрации в фирменном стиле: LLM пишет SVG по скиллу .claude/skills/svg-scenes/SKILL.md, валидатор отбрасывает опасное/невалидное (одна повторная попытка встроена), рендер анимирует через классы draw/fade/rise/float/pulse. Скилл двойного назначения: пайплайн вшивает его в промпт, а Claude Code сам подхватывает из .claude/skills/, когда работаешь с проектом интерактивно. Порядок: storyboard -> illustrate -> voice -> subs -> sync -> render.

Контроль качества и пост-продакшен (v3)

Полный порядок теперь такой: topics -> new -> research -> script -> lint -> critique -> storyboard -> illustrate -> voice -> subs -> sync -> mix -> render -> thumbs -> shorts -> upload -> analytics.

  • Guard от перезаписи: research/script/storyboard не затирают твои правки — только с --force.
  • lint — механика: цифры без [S:n] (с учётом меток в конце группы предложений), запрещённые слова, темп (сцены >12с, однообразие, средняя длительность). critique — свежий LLM-контекст судит хук/темп/механику/доказательность и даёт 5 конкретных правок в critique.md.
  • Скрипт теперь выдаёт # HOOKS — 3 альтернативных холодных открытия на выбор. Storyboard делает 50–100 микро-сцен по 3–8с и пишет каждой anchor — первые слова речи в момент сцены.
  • sync при наличии якорей снапит границы сцен к реальным фразам (кадр-в-кадр), без якорей — старый пропорциональный режим.
  • mix — музыкальная подложка (своя, из assets/music, бесплатная сгенерированная в комплекте) с автодакингом по паузам речи из субтитров + вуш на смену сцен; --captions включает кинетические подписи (цифры подсвечены).
  • shorts — 2–3 вертикальных нарезки 35–60с с вжатыми субтитрами (LLM выбирает сегменты; --from N --to M — ручной режим без LLM).
  • analytics retention.csv — экспорт удержания из YouTube Studio превращается в карту провалов по сценам + запись в lessons.md (журнал уроков). Время стадий пишется в .telemetry.csv.

Правила качества (это и есть анти-слоп слой)

  • Сценарий использует только цифры из facts.md с метками [S:n]; claims со статусом inferred смягчаются или выкидываются.
  • Каждая сцена несёт плашку источника на экране (SourceTag).
  • Никакого чужого футажа: весь визуал — собственная программная графика.
  • Перед публикацией в Studio: галочка «Altered/synthetic content» (синтетический голос) — стадия upload напомнит.
  • Substance каждого видео материально другой (требование YouTube inauthentic-policy).

Стоимость на один ролик (порядок величин)

LLM-стадии ~$0.5–2 (Sonnet), ElevenLabs ~9–10k символов (тариф Creator), рендер — бесплатно, локально. Итого доллары, не десятки.

Стиль

config/style.json — голос канала, запрещённые слова, структура, палитра. Меняешь там — меняется весь конвейер. channelName замени после выбора названия.

Если рендер падает на слабой машине: RENDER_CONCURRENCY=1 node pipeline.mjs render

License

MIT — see LICENSE.

Contributing

Pull requests welcome. See CONTRIBUTING.md for the pipeline architecture and code style.

Security

Report vulnerabilities privately: see SECURITY.md.

About

YouTube faceless analytical explainer pipeline: research → script → voice → render → upload. Remotion-based, Claude/OpenAI/GLM LLM, CosyVoice/Edge/ElevenLabs TTS, SVG illustrations.

Topics

Resources

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages