VideoMotion: AI 감독의 동영상 제작
어떤 고정 템플릿으로 만든 동영상도 비슷비슷합니다. VideoMotion은 AI에게 진정으로 필요한 것을 제공합니다: 감각(91개의 스타일 태그), 움직임 어휘(motion/dong-tu.md), 그리고 감독이 써 내려간 하나의 이야기. 당신(주 세션)이 감독이 되고, 각 장면은 vm-canh 에이전트(최신 Sonnet, effort medium)가 병렬로 제작합니다.
VV="${CLAUDE_PLUGIN_ROOT}"
PY="$HOME/.motionfly/venv/Scripts/python.exe"; [ -x "$PY" ] || PY="$HOME/.motionfly/venv/bin/python"
export PYTHONUTF8=1 HF_HUB_DISABLE_PROGRESS_BARS=1
세션 시작 시 python "$VV/tools/setup/doctor.py"를 실행하세요. SAN SANG 상태가 아니라면 vm-cai-dat 스킬을 따르세요. 각 동영상은 videos/<slug>/ 디렉토리에 저장됩니다(slug는 무표식, 하이픈 사용).
불변 규칙
- 숫자, 이름, 날짜는 출처를 밝혀야 합니다. 뉴스와 숫자는 반드시 조회해야 합니다. 직접 설정한 예시라면 "예시"라고 명시하세요. 출처는
brief.json에 기록합니다. - 베트남어에는 성조를 완전히 표기하며, 긴 대시나 이모지를 발음에 사용하지 않습니다.
- 텍스트는 HTML 텍스트여야 하며, 이미지에 텍스트를 그리지 않습니다.
그 외의 모든 것은 직업적 제안에 불과합니다.
1. Brief (브리프)
brief.json에 다음을 기록합니다: topic, audience, message(핵심 메시지 한 문장), aspect(기본값 9:16), duration_s(기본값 60), style, voice(기본값 Ngọc Huyền), music(기본값 synth:<mood>), sources, auto. 알 수 없는 것만 한 번에 한 질문씩 하고, 제안 옵션을 먼저 제시합니다. 사용자가 "전부 알아서 해"라고 말하면 auto: true로 설정합니다.
2. Style (스타일)
- 사용자가 이름을 지정하면 해당 스타일을 사용합니다(베트남어 이름 또는 slug로
styles/INDEX.md검색). - 지정하지 않은 경우, 주제에 맞는 스타일 하나, 대비되는 스타일 하나, 깜짝 스타일 하나를 추천합니다(
styles/nhip-video.md빠른 표 참조).auto인 경우 자동으로 적합한 스타일을 선택합니다. styles/<slug>.md와styles/nhip-video.md(슬라이드 태그를 동영상에 사용하는 방법)를 주의 깊게 읽으세요.- 태그에 동영상 버전 항목이 있으면 큰 아이디어, 캐릭터, 스토리보드의
look이 해당 항목을 따라야 합니다.docs/assets/styles/<slug>.jpg이미지를 확인하여 최종 목표를 파악하세요. 사용자는 이미지를 보고 스타일을 선택하며, 동영상은 이미지와 비슷하게 나와야 합니다.
3. 큰 아이디어와 대본 (유일한 승인 게이트)
큰 아이디어가 먼저입니다. 한 문장으로: 동영상이 펼쳐질 세계는 무엇이며, 어떤 축을 따라 진행되고, 어떤 관통 캐릭터 또는 사물이 있는지 설명합니다. 예: "공장은 체스판이다: 각 낭비는 적군, AI는 한 번에 세 개를 잡는 퀸이다." 이야기가 동영상에 생명을 불어넣습니다. 스타일은 단지 외형을 결정합니다.
script.json 작성:
{"title": "...", "voice": "Ngọc Huyền", "aspect": "9:16",
"scenes": [{"id": "s1", "say": "말할 문장. | 두 번째 문장은 약간의 쉼을 둡니다.", "intent": "장면 의도"}], "pron": {}}
- 1분에 약 150
170단어, 59장면. 처음 3초는 갈고리 문장입니다. - 각 장면은 1~3문장, 각 문장은 25단어 미만, 구어체.
|는 0.55초의 쉼을 만듭니다. - VieNeu 음성: 베트남어 주어가 있는 문장 사용, 5단어 미만 문장과 영어 이름으로 시작하는 문장을 피하며, 숫자는 숫자로 적습니다.
사용자에게 간단한 표(장면, 대사, 예상되는 은유적 이미지)를 보냅니다. 승인을 기다립니다(auto인 경우 생략).
4. 음성
vm-giong 스킬에 따릅니다. voice.wav, words.json이 생성되면 완료됩니다.
5. 장면 분할
words.json의 실제 음성 타임라인을 기반으로 storyboard.json을 작성합니다:
{"title": "...", "aspect": "9:16", "style": "pixel-rpg",
"idea": "큰 아이디어 문장",
"look": "2~4문장으로 공통 시각적 스타일 설명: 관통 사물의 모습, 강조 색상의 의미, 장면 전환 방식",
"scenes": [{"id": "s1", "visual": "무슨 물체가 무엇을 하고 있으며, 어떤 동사로 움직이는지",
"anchors": [{"id": "hook", "kw": "대사와 정확히 일치하는 단어", "nth": 1, "off": -0.1}],
"in": "장면 진입 방식", "out": "다음 장면으로 전환 방식"}]}
visual은 의미와 물체를 설명하며, 픽셀 레이아웃을 설명하지 않습니다. 에이전트가 직접 디자인하도록 맡깁니다.- 연속 장면 상태: 물체가 여러 장면을 거쳐 이동(진행률 막대, 캐릭터, 숫자)하는 경우 각 장면의
visual에 들어올 때와 나갈 때의 상태를 명확히 기록합니다(예: "HP 진입 9/10, 퇴장 3/10"). 에이전트들은 병렬로 실행되므로 서로의 장면을 볼 수 없습니다. - 공유 물체(캐릭터, 인터페이스 프레임, 배경 레이어)의 크기와 위치는
look에 구체적으로 설명하거나compositions/_nen.html에 미리 그려 넣습니다. - 각 문장에는 최소 하나의 앵커가 있어야 하며,
kw는say에 있는 대로 정확히 작성합니다. - 밀도 있는 장면과 숨 쉴 수 있는 장면을 섞어 배치합니다. 동일한 시각적 유형의 장면이 세 번 연속되지 않도록 합니다. 2~3개의 "와"하는 순간을 골라 더 자세히 설명합니다.
"$PY" "$VV/tools/timeline.py" <du-an>을 실행합니다.KW miss가 없을 때까지 수정합니다.
6. 배경 음악
vm-nhac 스킬에 따릅니다. 결과물은 mix.wav입니다.
7. 제작, 렌더링, 전달
vm-dung 스킬에 따릅니다: 배경, 색상, 장면을 vm-canh에 병렬로 할당, 합성, hyperframes check, 렌더링, 오디오 합성, 자막.
최종 보고: MP4 및 SRT 절대 경로, 길이, 스타일, 음성, 음악 출처, 직접 설정한 예시 위치, 참고 자료 출처.