Reel Studio — 비디오 제작 과정
모든 스타일에 대해 프로세스는 동일합니다. 비디오의 모양과 소리는 스타일에 따라 결정되며, 대상, 포맷, 음성, 이미지 소스는 스튜디오 설정에서 가져옵니다. 일반적인 animated-video 스킬은 더 넓은 방법(브레인스토밍, 보드, 무음 테스트, 검토)을 담당하며, 이 스킬과 스타일은 차이가 있는 부분에서 우선 적용됩니다. 추천과 함께 질문하여 "예"가 완전한 답변이 되도록 하세요. 아이디어를 구상하고 프로젝트 보드에 저장하는 것은 content-ideas 스킬이 담당하며, 이 과정이 시작되기 전에 수행됩니다.
작업 공간
projects/<id>/— 프로젝트: 제작자가 비디오를 만드는 하나의 채널(스튜디오의 프로젝트 선택기, 프롬프트는 현재 열려 있는 프로젝트를 알려줍니다).config/폴더는 설정(Ajustes)을 보관합니다:profile.json,voice.json,account.json(Instagram, Mi cuenta).account/폴더는 해당 계정에서 다운로드한 파일입니다. 요청하지 않은 다른 프로젝트 폴더는 건드리지 마세요.projects/<id>/videos/<slug>/— 하나의 비디오: 해당 스타일의 템플릿에서 복사된 Remotion 프로젝트입니다.title.txt(스튜디오에서의 이름),style.txt(스타일 ID),audio/vo.txt(내레이션, 음성으로 전달되는 그대로),audio/beats.json(대본 구조),src/format.json(크기, fps, 음량),CREDITS.md,caption.md,out/(렌더링 파일, 보드, 버전 관리되지 않음).formats/<id>/format.json— 포맷: 비디오의 유형(생성된 음성 또는 제작자 녹음 음성 위의 모든 애니메이션, 제작자가 카메라를 보며 애니메이션과 함께 말하는 방식 등), 화면에 표시되는 내용과 편집 방식. 비디오는format.txt에 포맷을 명시합니다(없으면 기본값: animated).skill은 자체 지침을 가리키고,overlay는 스타일 템플릿 위에 추가되는 파일을 가리킵니다."footage": true는 비디오가footage/폴더의 녹화본으로 시작됨을 의미합니다("voiceOnly": true: 오디오만 사용됨).styles/<id>/style.json— 스타일: 팔레트와 각 색상의 의미, 글꼴, 모양, 움직임, 이미지, 피해야 할 사항.skill은 자체 지침을 가리키고,template은 새 비디오가 복사하는 Remotion 프로젝트를 가리킵니다.config/(루트) — 모든 프로젝트에서 공유하는 설정:images.json(이미지 소스),social.json(스크래퍼).tools/— 공유 스크립트.LESSONS.md— 과거 비디오에서 얻은 교훈.projects/<id>/inspiration/<account>/— 프로젝트의 Inspiración 페이지에서 연구한 다른 계정의 릴:account.json(analysis.text: 해당 계정에 효과적인 내용), 각 릴별reel.json(측정항목, 캡션),transcript.json,analysis.json(후크, 구조, 시각 자료, CTA, 참고할 점),hook.jpg(처음 3초),sheet_NN.jpg(초당 1프레임). 요청 시 각도와 후크로 사용하되, 제작자 프로필에 맞게 조정하고 대본을 절대 복사하지 마세요.
설정은 스튜디오에서 가져옴
Reel Studio는 프로필(언어, 플랫폼, 대상, 길이, 캡션 규칙), 비디오 포맷, 음성, 이미지 소스를 매 턴마다 프롬프트에 제공합니다. 이 설정들은 이 스킬과 스타일보다 우선합니다. 음성 ID나 설정, 크기, 프레임 속도, 음량 목표를 하드코딩하지 마세요.
API 키는 작업 공간의 .env에 저장됩니다(Ajustes에서 설정, 각 키의 용도 옆에 표시: Voz, Extracción de datos). 도구들은 이 키들을 읽습니다. 절대 키를 출력하거나 채팅에서 요청하지 마세요. 키가 누락된 경우 제작자에게 Ajustes에서 추가하도록 요청하세요.
Python: 표준 라이브러리만 사용하는 도구는 python3(Windows에서는 python)으로 실행합니다: tts.py, el_words.py, standin_words.py, commons.py, openverse.py, pexels.py, pixabay.py, unsplash.py, generate_image.py. 패키지가 필요한 도구는 작업 공간의 가상 환경, ../../../../.venv/bin/python(Windows: ../../../../.venv/Scripts/python.exe)으로 실행합니다: cutout.py, audio/mix.py, sheet.py (snap.sh는 이 파일을 사용하거나, venv가 없으면 ffmpeg 사용). 컷아웃을 만드는 스타일은 venv가 필요합니다(Ajustes → Requisitos에서 설치). 아래 경로는 비디오 폴더를 기준으로 합니다.
시작하기 전에
비디오의 포맷을 읽으세요: formats/<format.txt의 ID>/format.json과, 있다면 해당 스킬도 읽으세요. 이 스킬은 해당 유형의 비디오 제작 방법을 설명하며, 아래 단계와 차이가 있는 경우 우선 적용됩니다(예: 제작자 녹화본이 있는 경우 대본 작성이나 음성 생성이 필요 없으며, 편집이 둘 다 제공합니다). 비디오의 스타일을 읽으세요: styles/<style.txt의 ID>/style.json과, 있다면 해당 스킬도 읽으세요. 포맷은 색상, 글꼴, 테두리를 결정하지 않습니다. 이는 스타일의 역할입니다. LESSONS.md(일반 부분과 스타일별 부분)를 읽으세요. 스킬이나 템플릿이 없는 스타일은 기본 스타일의 템플릿(template/)을 기반으로 하고, 모양만 style.json에 따라 변경됩니다. 시작할 때 이를 알리세요.
단계
- 새 비디오 — 스튜디오가 첫 메시지에서 생성합니다(폴더, 제목, 스타일, 포맷, 크기). 터미널 또는 일반 대화에서:
scripts/new-video.sh <slug> [style] [format]. - 대본 —
video-script스킬(후크, 답변 유지, 타이밍, 체크리스트)을 사용하여, 보드에서 가져온 아이디어 노트로 시작합니다. 플랫폼, 언어, 대상, 길이는 프로필에서 가져옵니다. 단어 수는 음성의 측정된 속도 × 목표 초입니다. 목표는 달리 명시되지 않는 한 도달입니다. 숫자는audio/vo.txt에서 문자로 표기하고("mil cuarenta y dos"),src/captions.ts의DISPLAY에서 다시 숫자로 매핑합니다. 승인을 받으세요.audio/vo.txt와audio/beats.json을 작성합니다. - 그림 — 새 에이전트로 비트당 하나의 그림을 브레인스토밍합니다(animated-video → find the pictures). 영화 전체에 걸쳐 시스템을 나타내는 하나의 반복적인 물리적 모티프를 선호합니다(카드 카탈로그 캐비닛 = 서버, 서랍 = 레코드). 그림은 대본의 질문을 열린 상태로 유지합니다: 첫 프레임이 질문을 제기하고, 어떤 그림이나 화면 제목도 내레이션이 도착하기 전에 답을 보여주지 않습니다. 컨셉 승인을 받으세요.
- 음성 —
python3 ../../../../tools/tts.py audio/vo.txt audio/vo.mp3, 그 다음ffmpeg -y -i audio/vo.mp3 -ar 48000 public/vo.wav, 그리고python3 ../../../../tools/el_words.py audio/vo.alignment.json public/vo.wav(src/words.json,src/vo_env.json생성). 음성이 없을 때:python3 ../../../../tools/standin_words.py audio/vo.txt src/words.json(음성 속도에 맞춰 타이밍, 대체용으로 표시). 음성에 변화가 있을 때 먼저 짧은 샘플을 만드세요. 반환된 오디오를 그대로 사용하세요(요청하지 않는 한 일시 정지를 자르지 마세요). 모든 생성은 문자를 소모합니다: 이유 없이 재생성하지 마세요. - 이미지 — 사용 가능한 검색 및 브라우징 도구를 사용하여 웹에서 자유롭게 검색합니다. 모든 사이트가 소스가 될 수 있습니다. 프롬프트는 선택적 API 통합을 나열하지만, 허용 목록이나 필수 순서는 아닙니다. 해당 API는 활성화되고 구성된 경우에만 사용합니다. 무료 웹 검색에는 소스 설정이 필요 없습니다. 다운로드는
assets/src/에 저장됩니다(버전 관리되지 않음). 모든 이미지를CREDITS.md에 기록합니다(제목, 작성자, 알려진 경우 라이선스, 원본 링크, 라이선스를 절대 임의로 작성하지 마세요). 스톡 이미지로 해결되지 않을 때는 정확한 동작의 휴대폰 사진을 요청하세요(단색 배경, 좋은 조명). 이미지 처리 방식은 스타일에 따릅니다. - 빌드 —
src/lib.ts의ACTS에서 각 액트의 첫 단어 앞 약 0.08초를 잘라내고,src/captions.ts에서 의미 단위로 캡션을 작성(대본과 단어 단위로 확인)하며,src/film/scenes.tsx에서 액트당 하나의 장면을 만듭니다. 모든 시간은 큐(cue('phrase'),at('phrase'))에서 가져오므로, 새 음성은 영화의 타이밍을 다시 조정합니다. 크기와 프레임은src/lib.ts(W,H,FPS,f())에서 가져오며, 절대 리터럴 숫자를 사용하지 마세요. 컴포넌트는 스타일에 따라 다릅니다. - 보드 —
./snap.sh out/board <sec> …명령어로 스틸 이미지와sheet.png를 렌더링합니다. 비트당 주요 프레임을 보여주고 승인을 받으세요. 시간을 그대로 전달합니다(zsh에서는 공백으로 구분된 목록이 하나의 변수에서 분할되지 않습니다). - 사운드 —
audio/mix.py의 큐 시트, 장면이 사용하는 동일한 큐의 시간 사용;../../../../.venv/bin/python audio/mix.py→public/mix.wav;src/Root.tsx에서audio: true설정. 어떤 사운드를 사용할지는 스타일에 따릅니다. 전달 시 어떤 사운드가 합성인지 알리세요. - 무음 테스트 — 첫 번째 전체 컷 전:
ffmpeg -i out/<name>.mp4 -vf "fps=2,scale=270:-1,tile=8x5" out/mute/sheet_%02d.png그리고 해당 시트만 새 에이전트에게 전달합니다(캡션 무시, 다시 설명, 혼란 및 깨짐 목록 작성). 수정 후 스틸 이미지를 다시 확인합니다. - 렌더링 — macOS와 Linux에서 먼저 고아 렌더러를 정리합니다:
ps -A -o pid=,ppid=,command= | awk '$2==1 && /chrome-headless-shell/ {print $1}' | xargs kill. 그 다음CONCURRENCY=3 ./render.sh <name>→out/<name>.mp4, 포맷의 음량으로 정규화됩니다. 지속 시간, 음량, 첫 번째 및 마지막 프레임을 확인합니다. 프로필의 캡션 규칙과 크레딧으로caption.md를 작성합니다. 시작 부분은 답변을 제공하기보다 후크 질문을 제기합니다. 비디오나 캡션이 사람들에게 특정 단어를 댓글로 달아 무언가를 받도록 요청하는 경우, ManyChat 또는 InstantDM에 붙여넣을 내용을 문자열로automatizacion.json(Reel Studio → Instrucciones automatización)에 작성합니다:keyword(정확한 단어),reply(댓글에 대한 공개 응답),dm(직접 메시지),link(링크). 각 항목은 그대로 복사되므로 내부에 메모를 넣지 마세요. 누락된 것은 비워두고 링크는 절대 임의로 만들지 마세요. 경로, 공개된 이슈, 건너뛴 확인 사항, 합성 또는 발명된 내용, 크레딧을 보고합니다.
비디오 이후
고객 프로젝트, 비디오, 환경 설정, 사용자 정의 스타일 및 개인 교훈은 로컬에 유지되며 애플리케이션 저장소에서 무시됩니다. 렌더링 후를 포함하여 이를 커밋하거나 푸시하지 마세요. 무시된 데이터를 강제로 추가하지 마세요. 고객 콘텐츠를 위한 별도의 저장소는 제작자의 명시적 요청이 필요합니다.
수정 비용이 발생한 내용을 LESSONS.md에 한 줄씩 이유와 함께 추가합니다. 일반 부분 또는 스타일별 부분 아래에 추가합니다.
게시된 비디오의 수치가 돌아오면 video-script → Review로 읽습니다. 아이디어에서 게시까지 빠르게 진행하는 것이 중요합니다. 많은 비디오가 실패할 것이고 각각이 무언가를 가르쳐 주기 때문에, 새 버전은 최소한만 변경합니다: 승인된 내용을 유지하고, 테스트 중인 내용만 변경합니다(새 후크, 사람들이 떠난 지점의 컷), 변경된 내레이션에 대해서만 음성을 재생성합니다. 요청하지 않은 개선 사항을 추가하지 마세요.