promo-video
영화는 여섯 단계로 제작됩니다. 각 단계는 인간이 확인하는 것으로 끝납니다. 앞서 나가지 마세요: 비용이 많이 드는 단계(빌드)는 앞 단계가 확정되었을 때만 저렴합니다. 모든 화면 이벤트가 음악과 음성에 맞춰 배치되기 때문입니다.
처음에 인간에게 계획을 한 번 설명하고(README.md에 인간용 버전이 있습니다), 그런 다음 단계를 순서대로 진행하세요. 그들의 언어로 대화하세요. 모든 프로젝트 파일을 하나의 디렉토리(<project>/: audio/, vo/, PLAN.md, elevenlabs.md, video/의 Remotion 프로젝트)에 보관하세요.
| # | 단계 | 당신이 하는 일 | 인간이 하는 일 | 참고 자료 |
|---|---|---|---|---|
| 1 | 음악 | 트랙 분석, 실제 템포와 하드 마크 찾기 | Epidemic Sound에서 트랙 선택, Create a cut으로 길이 조정, 파일 제공 | references/01-music.md |
| 2 | 스토리보드 | 안내 질문, PLAN.md 작성(음악에 맞춘 샷 테이블) | 답변, 승인 | references/02-storyboard.md |
| 3 | 음성 대본 | 대사 + 태그된 ElevenLabs 테이크 작성 | ElevenLabs에서 생성, 파일 전송 | references/03-voiceover.md |
| 4 | 음성 편집 | 테이크에서 cut_ui.py 실행, 분할, 레벨 조정, 각 대사 배치 | 브라우저 페이지에서 대사 사이 클릭, 완료 누름, 배치 테이블 확인 | references/03-voiceover.md |
| 5 | 빌드 | template/에서 Remotion 프로젝트, 장면별로, 각각 스틸 확인 | 스틸/드래프트 렌더 검토 | references/04-build.md |
| 6 | 검토 + 다듬기 | 렌더, 음량 확인, 렌더에서 review_ui.py 실행, 노트 + 프레임 읽기, 수정, 재렌더 | 검토 페이지에서 시청, 화면에 노트 남기기, 승인/변경 필요 선택 | references/05-review.md |
브라우저 자동화: 제공하되, 가정하지 마세요
1단계와 3단계는 웹사이트(Epidemic Sound, ElevenLabs)에서 이루어집니다. 브라우저 자동화 스킬이나 도구(예: ego-browser, Playwright 설정, 브라우저 MCP)가 있다면 그 부분을 직접 수행하겠다고 제안하고, 승인을 요청하기 전에 관련 사항을 분명히 설명하세요:
- 계정: 두 사이트 모두 계정이 필요합니다(Epidemic Sound은 유료 구독이며 트라이얼 제공; ElevenLabs는 무료 티어와 월별 글자 제한이 있습니다). 인간이 계정이 없으면 그들이 직접 가입합니다: 당신은 계정을 생성하지 않습니다.
- 비용: ElevenLabs는 글자 수로 청구됩니다; 40-60초 영화는 약 600-1000자이며, 재생성할 때마다 다시 청구됩니다. Epidemic 다운로드는 요금제에 포함됩니다. 예상 비용을 알려주고 먼저 물어보세요.
- 로그인과 결제는 인간의 몫: 로그인, 2FA, 캡차 및 결제 화면이 나오면 브라우저를 인간에게 넘기고(
ego-browser의task.handOff()), 인간이 완료했다고 말할 때까지 기다리세요. 절대 비밀번호를 입력하지 말고, 카드 정보를 입력하거나 저장하지 말며, API 키를 페이지나 파일에 붙여넣지 마세요. - 승인 후 당신이 할 수 있는 일: 합의된 분위기와 BPM으로 트랙 검색/필터링하고 인간이 들을 후보 트랙 열기(인간이 선택), 대상 길이로 Create a cut 클릭 및 결과 다운로드;
elevenlabs.md테이크 붙여넣기, 인간이 선택한 음성과 설정 적용, 한 번 생성, mp3 다운로드. - 그러한 도구가 없거나 인간이 거절하면: 정확한 단계(1단계 및 3단계 문서)를 제공하고 파일을 기다리세요.
선택은 항상 인간의 몫입니다: 트랙과 음성은 그들을 위해 선택되지 않습니다.
기본 규칙 (어렵게 배운 교훈)
- 보여지는 모든 것은 실제여야 합니다. 실제 예제 메쉬(실제 CAD/STEP 테셀레이트), 코드 패널의 실제 코드 및 API, 제품 자체 프론트엔드 컴포넌트로 재구축된 UI. 가짜처럼 보이는 콘텐츠는 시청자가 가장 먼저 알아차리는 것입니다. 실제 데이터를 얻을 수 없으면 말하고 물어보세요 - 지어내지 마세요.
- 음악이 시계입니다. 실제 템포를 측정하세요(
scripts/music_analyze.py가 피팅합니다; 1.2%만 틀린 추정 BPM은 스플라이스를 1/3비트 어긋나게 하여 인간이 불편함을 느끼게 합니다). 모든 시간은src/marks.ts에 있습니다; 장면은 이를 가져와 사용하며, 절대 초를 하드코딩하지 마세요. - 외부 공개 또는 비용이 드는 단계는 확인하세요: 음악 파일과 음성은 인간이 선택할 몫입니다; 당신이 그들을 위해 선택하지 마세요. 촬영하는 제품에 표시되는 API 키나 로그인 토큰을 절대 출력하지 마세요.
- 스틸로 화면을 확인하세요, 믿음으로 하지 마세요: 마크(비트 히트, 컷, 로고)에서 프레임을 렌더링하고 전체 렌더 전에 확인하세요. 전체 렌더는 몇 분 걸리지만, 스틸은 몇 초면 됩니다.
- 이전 버전을 보관하세요. 인간이 축소판이나 변형을 요청하면 프로젝트 디렉토리를 복사하고 복사본을 편집하세요(
cp -R video video_short,node_modules는 심링크). - 편집자처럼 보고하세요: 무엇이 변경되었는지, 파일 경로, 무엇을 듣거나 볼지, 그리고 몇 초에 있는지.
이 스킬의 도구들
모든 Python 스크립트는 uv run으로 실행됩니다(종속성은 각 파일에 선언되어 있으며, 설치할 것이 없습니다).
| 스크립트 | 목적 |
|---|---|
scripts/music_analyze.py track.wav --out beats.json | 실제 BPM(피팅됨), 비트/마디 그리드, 섹션, 드롭, 무음 갭 |
scripts/music_splice.py track.wav out.wav --beats beats.json --keep a:b --keep c:d | 마디 정렬, 크로스페이드 점프로 트랙 단축; 조인 확인 |
scripts/cut_ui.py take.mp3 --mode cuts --script elevenlabs.md --out vo/cuts.json | 브라우저 커팅 페이지(파형, 대사가 줄별로 표시된 스크립트, 음성 vs 일시정지, 확대/축소, 실행취소/재실행): 인간이 재생하고 대사가 끝나는 지점을 클릭한 후 완료를 누르면 탭이 닫히고 cuts.json이 당신에게 전달됩니다. --mode marks --beats beats.json은 비트 그리드에 음악의 드롭/스탭/브렉다운을 표시합니다 |
scripts/vo_cut.py take.mp3 --regions vo/cuts.json --out vo/ | ElevenLabs 테이크를 레벨링된 클립 + clips.json으로 분할합니다(또는 인간이 시간 입력을 선호하면 --lines N --ends t1,...) |
scripts/review_ui.py out/promo.mp4 --out review/review.json [--overlay overlay.json] | 브라우저 검토 페이지: 상단 모니터, 하단 타임라인 스트립(필름스트립 + 완성된 믹스의 파형 + 선택적 비트/마크/음성 라인). 인간은 특정 순간이나 범위에 노트를 남깁니다; 각 노트는 정확한 프레임을 전달합니다; 승인 또는 변경 필요로 마무리하면 review.json이 당신에게 전달됩니다 |
scripts/new_project.sh <dir> [--link-modules path] | template/에서 Remotion 프로젝트 생성(메탈 스테이지, 비트 클록, VO 믹스, 가상 카메라) |
template/tools/mesh.py | STEP/OCC 형상 -> three.js용 컴팩트 메쉬 + B-rep 에지 |
template/tools/refold.py | OCC가 읽을 수 없는 거대한 STEP 메타데이터 문자열을 비움 |
template/tools/variants.py, stages.py | 메쉬 파라미터 변형 / CAD 노트북의 모든 중간 솔리드("슬라이더를 드래그하면 모델이 따라옴" 및 "셀별" 장면용) |
필요 사항: ffmpeg, node 20+, uv. headless Chrome의 three.js용: playwright의 chrome-headless-shell(new_project.sh가 설치).