스토리에서 완성본까지 이어지는 영상 자동화 체인 손그림 안내
스토리에서 완성본까지 이어지는 영상 자동화 체인 손그림 안내
AI로 제작한 손그림 안내 이미지

짧은 영상을 “한 번 생성”하는 도구는 많다. 어려움은 그다음이다. 장면이 이어져야 하고, 캐릭터·배경이 흔들리면 안 되며, 비용·승인·실패 재시도가 파이프라인 안에 있어야 한다. video-auto(Chained Video Studio) 작업은 그 문제를 에이전트 오케스트레이션 + Electron 도구 + 외부 생성기로 나눠 붙잡은 실험이다.

이 글은 출시 후기가 아니라, 로컬 저장소에 남은 운영 계약과 검증된 산출물 기준으로 적은 회고다. 성과 수치나 미공개 API 키는 쓰지 않는다.

한 줄로 말하면

코딩 에이전트가 지능(오케스트레이터·디렉터·리뷰어)을 맡고, Electron/Node는 도구와 상태만 제공한다. 미디어는 Grok Imagine, Google Flow(Gemini Flow), Kling 등 외부 제공자가 만들고, 이 앱은 체인(순서·게이트·체크포인트) 을 소유한다.

Sora는 경로에서 제외했다. 제공자 표는 README 기준으로 grokWeb / grokApi / geminiFlow / klingApi / klingFal / klingWeb이다.

두 개의 제어면

CLAUDE.md가 못을 박아 둔 경계가 있다.

일 · 하네스 · 진입점

멀티 씬 필름 제작 · Claude production skills · shot-studio (plan → assets → render → post)

Electron 앱 코드 변경 · 앱 개발 하네스 · AGENTS.md → harness manifest

유료·비가역 단계(렌더 등)는 shot-studio 승인 게이트 뒤에 둔다. shot-plan 등을 직접 호출해 게이트를 우회하지 않는다.

병렬로 OpenMontage 흡수형 /video 경로도 있다. research·prompts·QA는 팬아웃하고, last-frame 릴레이만 순차로 두는 하이브리드다. 보드·체크포인트·코스트 스크립트(om:*)가 “지금 어느 스테이지인지”를 사람에게 보여 준다.

실제로 남긴 것

문서에 적힌 검증 산출물 예시는 다음과 같다.

  • 최종 컷: runs/chain/black-file-twelve-faces/out/...-final-cut.mp4
  • 프로덕션 레저: 同 프로젝트 ledger.json
  • 편집 가능한 타이틀 AEP
  • 두 번째 검증 레저: runs/chain/skyduel/ledger.json

즉 “데모 GIF 한 장”이 아니라, 런 디렉터리 + 레저 + 게이트가 남는 구조를 목표로 했다.

스토리 → 영상 E2E는 대략 이런 명령으로 묶인다.

npm run produce -- --story "..." --scenes 6 --yes --provider grokWeb
npm run produce:status -- --project <projectId>
npm run produce:stitch -- --project <projectId>

Three.js를 본선으로 쓰지 않은 이유

선택지 제목에 “Three.js 렌더”가 있었지만, video-auto 본 저장소의 중심은 생성형 비디오 체인 + ffmpeg 스티치 + 에이전트 게이트다. Three.js/WebGL 언급은 관련 학습 스펙 문서에 스치듯 나타날 뿐, 프로덕션 경로의 기본 렌더러로 고정되어 있지 않다. 회고에서 과장하지 않기 위해 본선은 체인 자동화로 적는다.

배운 점

  1. 파이프라인 없는 생성은 재현되지 않는다. Rule Zero — 모든 프로덕션은 manifest 스테이지를 탄다.
  2. 병렬과 순차를 섞어야 한다. 이미지·리서치는 병렬, 컷 연속성(릴레이)은 순차.
  3. 비용·연속성 게이트를 스킬 밖에 두면 반드시 우회된다. 진입점을 shot-studio 하나로 모은 이유다.
  4. 사람에게는 보드가 필요하다. dry-run·gate·ship 샘플이 온보딩을 대신한다.
  5. 캐릭터/월드 락 없이 씬을 늘리면 얼굴과 소품이 먼저 붕괴한다.

한계

  • 브라우저 로그인 기반 제공자(grokWeb 등)는 세션·UI 변경에 취약하다.
  • 외부 API 요금·쿼터는 레저로 추적해도 “창작 품질”을 보장하지 않는다.
  • Electron 앱 UX와 에이전트 스킬이 이중으로 있으면, 문서가 어긋날 때 드리프트가 생긴다. 변경 이력표를 CLAUDE/AGENTS에 남긴 이유다.

다음에 같은 일을 한다면

  1. 스토리 입력 → plan-only로 SCENE_TABLE 승인 → 그다음 gen.
  2. provider는 한 프로젝트에 하나만 기본값으로 고정하고, 폴백은 명시적 게이트 뒤에.
  3. 최종물은 mp4만이 아니라 ledger + review 아티팩트를 함께 아카이브.

영상 자동화의 핵심은 모델 이름이 아니라, 에이전트가 같은 계약을 다시 실행할 수 있는가에 있었다.