Communitygithub.com

marsik641/space-shorts

Шаги 2–4 конвейера ролика — в worktree ролика произвести вертикальный космический Shorts (≤ 30 с, только EN) для The Universe Inside Out — факты, визуальный бриф, сценарий, шоты, hero-кадры и черновое видео на одобрение, затем финал через общую очередь двух рендер-ПК до release (MP4 + publish_en.md) и влитие ветки в main. Использовать при «делаем вариант N», «/make-video», «запускай ролик про X», «пакет к загрузке».

What is space-shorts?

space-shorts is a Claude Code agent skill that шаги 2–4 конвейера ролика — в worktree ролика произвести вертикальный космический Shorts (≤ 30 с, только EN) для The Universe Inside Out — факты, визуальный бриф, сценарий, шоты, hero-кадры и черновое видео на одобрение, затем финал через общую очередь двух рендер-ПК до release (MP4 + publish_en.md) и влитие ветки в main. Использовать при «делаем вариант N», «/make-video», «запускай ролик про X», «пакет к загрузке».

Works with✓Claude Code✓Codex CLI✓Cursor
npx skills add https://github.com/marsik641/space-shorts/tree/HEAD/.agents/skills/make-video

Ask in your favorite AI

Open a new chat with this agent skill pre-loaded.

Documentation

/make-video — шаги 2–4: от выбора до влитого релиза

Вход: выбор пользователя из ideas-файла этой worktree («/make-video N» + правки) или объект, названный пользователем. Выход = DoD (AGENTS.md, «Конвейер чатов»): out/<ep>/release/ — мастер <ep>_en_1080x1920p60.mp4 и publish_en.md, два файла — передан пользователю; визуальный QA принят; всё закоммичено; ветка влита в main (video_wt.py finish); worktree убрана. Планка — docs/quality.md: кино, а не инфографика; факты — в словах, зрелище — в картинке; финал до 6 ч GPU. Только EN, цель 29–29,5 с, максимум 30,0 с (docs/shorts_format.md). Ссылки: процесс — docs/pipeline.md; одобрение — docs/approval.md; пакет — docs/publish.md; роли — docs/workflows.md; библиотека — docs/spacekit.md; время — docs/timings.md; очередь — docs/render_queue.md; агенты, коммиты, грабли — AGENTS.md. Команды — Git Bash из корня своей worktree; <ep> = epNNN_<slug>.

Шаг 0 — worktree, очередь, коммиты

  • Ветка video/epNNN… после /next-video — продолжать в ней. Чат в основной копии без /next-video — python tools/video_wt.py start → Claude EnterWorktree с path / Codex workdir.
  • Blender, TTS, музыка, сборка — только через очередь: задание поставлено — чат продолжает текстовую работу.
  • После каждого блока — коммит type(<ep>): … с трейлером модели. Конец хода — чистое дерево.

Часть A — до одобрения

  1. Эпизод. python tools/video_wt.py claim <slug> (slug — [a-z0-9_], ≤ 16, по каталожному имени). Скопировать episodes/_template/ → episodes/<ep>/, в episode.json — id = имя папки, languages: ["en"] (пути frames_dir/audio_dir не задавать). В конец ideas-файла: Выбран: N, <дата>, правки: …, эпизод: <ep>. Коммит feat(<ep>): эпизод из варианта N.
  2. Факты: исследователь + фактчекер (docs/workflows.md) → facts.md (каждое число со ссылкой, визуальные референсы). Коммит.
  3. Визуальный бриф visual_brief.md (роль «Постановщик»): референсы, первый кадр, money shot, палитра, свет, камера и событие каждого шота, условности, бюджет. Критик «Кино/вау» по брифу → правки. Коммит.
  4. Сценарий script_9x16.json (EN): 6–8 сегментов, якоря at (с), 29–29,5 с (≤ 30.0 жёстко), ≈ 55–70 слов; первая фраза — факт-крючок; финальная подводит к началу (петля). en_cap — цифры, | — ручные разрывы (docs/pipeline.md, «Титры и субтитры»). Голос канала — Kokoro af_heart ×0.98. Коммит.
  5. Сцена и шоты. system.py (реальные параметры → экран, условности — в docstring); недостающее — модулями spacekit/ (отдельный коммит feat(spacekit): …, регресс tools/imgdiff.py). shots_9x16.py по брифу: 6–10 шотов по 2–5 с, в каждом ≥ 3 плана глубины, ключ + контр, ореол/блум, движение камеры, моушн-блюр, фон не пустой (docs/quality.md). episode.json (edit, оверлеи en, субтитры в безопасных зонах), music_cues.json (своя тональность/лад/темп). Склейки — встык, на событиях; последний кадр = первый. Σ кадров монтажа ≤ 1799 при 60 fps. python tools/check_episode.py episodes/<ep>/episode.json. Коммит.
  6. Превью тайминга: python tools/render_queue.py submit preview episodes/<ep>/episode.json --with-tts, статус — status --json. Лист out/<ep>/9x16/sheet_prev.png; нет Traceback/OVERRUN, есть FLASH/EVENT; cue-лист — python tools/cues.py episodes/<ep>/episode.json --logs out/<ep>/9x16/logs.
  7. Hero-кадры: по шоту submit preview … --hero --shots vN --frames F,F+1,F+2 (F — лучший момент шота; 100 %, без --samples — сэмплы из кода шота, как в финале) → out/<ep>/9x16/hero/, sheet_hero.png. Критикам и владельцу — кадр F; по логу hero_vN.log — с/кадр и ETA (docs/timings.md). Сэмплы и тяжёлые эффекты подобрать в shots_9x16.py (коммит, hero заново) так, чтобы финал занял 4–6 ч, а не час.
  8. Критика (docs/workflows.md): «Кино/вау» (оценка шотов 1–10, < 8 — переделка, до 3 раундов), композиция, ритм/хук, факты (только 4 блокера docs/quality.md); опц. уникальность, звук. Правки → повтор 6–7. Отчёты — файлами в эпизоде, коммит на раунд fix(<ep>): правки по критике, раунд K.
  9. Черновое видео целиком (docs/approval.md, 1a): функция draft в шотах + эпизодный preview_movie.py через submit task. Не собирается — на одобрение без него, в сообщении «черновое видео: нет».
  10. Одобрение: сообщение по шаблону docs/approval.md + файлы (hero-кадры, черновое видео). Коммит состояния. Остановись и жди ответа. Правки — назад к нужному шагу.

Часть B — после «ок»: до DoD (без вопросов, кроме остановок из docs/approval.md)

  1. Одобрение в истории. Готовы согласованный cue-лист и publish_en.md по docs/publish.md (условности — списком). Коммит chore(<ep>): одобрено к рендеру (правки пользователя — в теле).
  2. Финал. python tools/render_queue.py submit final episodes/<ep>/episode.json --approved 'одобрение пользователя: дата, контекст чата'. Флаг записывает уже полученное согласие, а не заменяет его. Пользователю — id задания, ПК, ETA. Worker сам выбирает ПК, рендерит порциями по 120 кадров и выполняет framecheck, TTS, музыку, mix, build_edit, сборку, машинный QA и release. Чат может закрываться.
  3. Статус и сбои. status --json (прогресс — cursor/steps; кадры до конца задания лежат в снимке snapshot, не в out/<ep>/). failed — лог шага в снимке; временный сбой среды — retry JOB; правка кода/сценария — cancel JOB, правка в worktree, при необходимости новое одобрение, новое задание. Framecheck FAIL — разобрать RERENDER, удалить плохие кадры в снимке (и на remote), retry JOB --rerender-shots vN. pause/resume — между порциями. Верхний bash не убивать.
  4. Визуальный QA. needs_review = машинные проверки и пакет готовы. PNG out/<ep>/9x16/qa_en/ и мастер: не хуже hero-кадров (шум, мыло, пересвет, мерцание), безопасные зоны, субтитры, рассинхрон, петля. Чисто — python tools/render_queue.py accept JOB; дефект — правка и новое задание.
  5. Передача. Оба файла out/<ep>/release/ пользователю (Claude — SendUserFile). Исходники менялись во время рендера — сверить publish из снимка и монтажный JSON перед коммитом.
  6. Учёт. episodes/INDEX.md (шоты, приёмы, голос, тональность, хук), таблица эпизодов в README.md, ✅ темы в docs/channel.md, замеры с/кадр в docs/timings.md, уроки — в профильные доки. Коммит docs(<ep>): учёт и уроки (код эпизода, edit_9x16_en.json, publish_en.md; без out/).
  7. Влитие. python tools/video_wt.py finish — чисто → release → accept → git merge main → check_episode и тесты → ff main → out/<ep>/ переносится в основную копию. Конфликт — решить в worktree, коммит, повтор. Затем выйти из worktree (Claude — ExitWorktree keep) и из основной копии python tools/video_wt.py remove epNNN; worktree от приложения (start --here) не удалять. Только теперь — «готово».

Individual skills in this repo

This repo contains 1 individual skill — each has its own dedicated page.

Related Skills