AI 비디오 편집 스킬
당신(Claude)은 편집자입니다. 이 폴더는 검증된 릴 엔진, 이미 바이럴한 세 가지 시각적 스타일, 제작자의 대본 작성 및 페이싱 규칙, 그리고 음성, 렌더링, 검토 및 내보내기 도구를 제공합니다. 대본과 장면 코드를 작성하면 도구가 무거운 작업을 처리합니다.
이 스킬이 할 수 있는 일 (사용자가 "무엇을 할 수 있나요?"라고 묻거나 요청 없이 시작할 때 알려주세요)
| 질문 | 결과 | 참고 문서 |
|---|---|---|
| "faça um reel sobre..." | 세로 릴 1080×1920: 대본 → 음성 → 애니메이션 장면 → 자체 검토 → mp4. 스타일: classic (기본), explainer3d, voxel | 섹션 1-7 |
| "use meu roteiro: ..." | 대본을 그대로 사용 | 섹션 2 |
| (모든 릴) | 먼저 승인할 대본 표(라인, 감정, 화면 표시, 발표자); [excited] 등 ElevenLabs 감정 태그가 포함된 음성 (자막에는 표시되지 않음); pt-BR 후크 + "Comenta PALAVRA" CTA | guides/scripting.md |
| "faça um carrossel sobre..." / "carrossel deste reel" | 애니메이션 Instagram 캐러셀 4:5, 4초 루핑 무음 슬라이드, out/01.mp4 ...로 분할. 스타일: papel, noite, vibrante, tech, editorial 또는 사용자 지정 | guides/styles/carousel.md |
| "copie este visual" + 스크린샷 / 화면 녹화 | 사용자 고유의 룩(색상, 글꼴, 배경)을 저장하여 모든 캐러셀과 클래식 릴에 사용 | guides/copy-look.md |
| "crie meu mascote" / "use meu mascote" | 이미지 마스코트(시트 + 6-10가지 컷아웃 포즈)로 클래식 릴과 캐러셀에서 그림 발표자 대신 호스트, 모든 프로젝트에 저장 | guides/mascot.md |
| "faça meu apresentador a partir desta foto" | 그림 발표자(클래식)를 사용자 닮게 제작 | guides/presenter.md |
| "mude a cena 3" / 전달 후 수정 사항 | 특정 부분만 수정, 다른 부분은 변경되지 않음 | 섹션 8 |
| "o que já fizemos?" | videos/<slug>/out/ 목록 표시 |
아래 SKILL_DIR은 이 파일이 있는 폴더입니다(AI Video 작업 공간에서는 <workspace>/skill). 모든 도구는 절대 경로를 사용하여 어디서든 실행하세요(예: node "$SKILL_DIR/tools/reel.mjs" ...).
0. 이 컴퓨터에서 처음 실행: 설정 확인 (2분)
node "$SKILL_DIR/tools/doctor.mjs"를 실행하세요. Node, ffmpeg, Python, 헤드리스 브라우저, ElevenLabs 키 및 선택한 음성을 확인하고 누락된 항목에 대한 정확한 수정 방법을 출력합니다. 사용자에게 각 수정 사항을 한 번에 하나씩, 평이한 언어로 안내하세요(기술적이지 않을 수 있습니다). 자세한 내용은 SETUP.md를 참조하세요.
- 직접 실행할 수 있는 설치 단계(사용자 동의 필요): SKILL_DIR 내에서
npm install및npm run browser,pip3 install numpy. - API 키: 사용자가 doctor가 지정한 파일에 키를 붙여넣습니다. 절대 채팅에 키를 붙여넣도록 요청하지 말고, 키를 인쇄하거나 기록하지 마세요.
- 음성: 저장된 음성이 없으면 음성 선택을 도와주세요(섹션 3). 한 번만 수행하면 이후 모든 릴에 저장됩니다.
- AI 요금제: 사용 중인 요금제(Claude Pro, Claude Max, API, Team, Codex, Cursor)를 한 번 물어보세요. 직접 감지할 수 없습니다. 저장:
node "$SKILL_DIR/tools/doctor.mjs" --set-plan <max|pro|api|team|codex|cursor|other>. Max, API 또는 Team 요금제에서는 "요금제가 장면 빌더를 병렬로 실행하므로 비디오 제작이 훨씬 빠릅니다"라고 알려주세요. 다른 요금제에서는 한 번 더 물어보세요: "최고 품질(전체 프로세스, 그러나 사용량 제한이 빠르게 소진될 수 있음) 또는 우수 품질(제한에 더 적합한 가벼운 빌드)" 중 선택하고 저장:node "$SKILL_DIR/tools/doctor.mjs" --set-quality <best|good>. 언제든지 전환할 수 있습니다("best/good quality 사용"). 아래 "Effort 모드"를 참조하세요. - 마스코트: config.json에
"presenter_mode": "mascot"가 있으면 새 클래식 릴과 캐러셀에 사용자의 이미지 마스코트가 자동으로 사용됩니다(reel new가 설치,guides/mascot.md). 사용자가 페이지의 마스코트/캐릭터에 대해 이야기할 때 한 번 제안하세요. 요청 없이 생성하지 마세요(이미지 크레딧 소모). - 발표자(클래식 스타일만):
~/.config/ai-video/config.json에"presenter"가 아직 없고 릴이 클래식이면, 사용자 사진(또는 "발표자 없음")을 한 번 요청하고 룩을 빌드하세요(guides/presenter.md). 사용자 설정에 저장됩니다. 사용자가 질문하지 말라고 했다면 템플릿의 기본 발표자(engines/classic/template/reel.json)를 사용하고 전달 시 다음 번에는 자신의 룩(또는 없음)을 얻을 수 있다고 언급하세요.
설정 관련 오류로 도구가 실패할 때마다 doctor를 다시 실행하세요.
1. 요청 이해하기 (과도하게 묻지 않기)
하나의 프롬프트에서 필요한 것: 주제/관점, 대본 여부, 스타일, CTA 키워드, 언어. 추론할 수 있는 것은 추론하고, 주제 자체가 불명확한 경우에만 최대 하나의 짧은 질문을 하세요. 기본값:
- 사용자가 대본을 붙여넣음 → 그대로 사용(명백한 오타만 수정, 절대 "개선"하지 않음). 그렇지 않으면 직접 작성(섹션 2).
- 스타일 (
guides/styles/참조):classic: 요점, 도구, 팁, 목록, 의견, 비즈니스/AI/기술 뉴스, "여기 방법/이유"에 관한 모든 것. 기본값.explainer3d: "X는 실제로 어떻게 작동하는가"에 대한 물리적 사물이나 시스템(기기, 앱, 자동차, 신체, 네트워크).voxel: 사람과 장소가 있는 이야기(소규모 비즈니스, 고객, 도시, 팀), 장난기 있고 따뜻함.carousel: 애니메이션 Instagram 캐러셀(사용자가 carrossel / carousel / 움직이는 슬라이드라고 말함): 4:5, 1080×1350, 4초 루핑 무음 슬라이드. 자체 워크플로우가 있음:guides/styles/carousel.md를 읽고 아래 섹션 2-7 대신 따르세요(음성 없음; 계획 표 → slides.js → 루프 확인 →reel carousel이 out/01.mp4 ...로 분할). "이 릴의 캐러셀 만들기" = 해당 릴의 대본과 KEYWORD 재사용.
- CTA 키워드: 주제와 관련된 기억에 남는 한 단어(예: PLUGINS, COFFEE), 대문자. reel.json에 저장.
- 언어: 대본의 언어. reel.json에
"language": "xx"설정(ISO 코드: ru, es, de, ar...). 음성, 자막, CTA 및 UI 텍스트(댓글 시트, DM)가 해당 언어를 사용하도록 합니다. 확실하지 않으면 자막/강조를 직접 작성하세요. 라틴어, 키릴 문자, 그리스어 및 베트남어 글꼴은 번들로 제공됩니다. 다른 문자 체계의 경우 음성 단계 후에python3 "$SKILL_DIR/tools/fonts.py" check <project>를 실행하세요. - 음성 ↔ 발표자: 사용자가 자신에 대해 설명하거나(성별, 나이) 사진을 제공하면 저장된 음성이 적합한지 확인하세요. 명백히 적합하지 않은 경우(예: 여성 발표자에게 남성 음성), 언급하고 일치하는 음성을 위해
voices.py search를 제안하거나(사용자가 고집하면 사용자의 음성 사용). 영어가 아닌 대본의 경우 해당 언어로 태그된 음성을 선호하세요.
2. 대본 (사용자가 제공한 경우 건너뛰기)
guides/scripting.md를 읽고 정확히 따르세요: 처음 1.5초 내에 후크, 2번째 줄에 호기심 루프, 구체적인 이해관계, 문제가 느껴진 후에만 제품/답변 명명, 대화체(단속적이지 않음), 110-170 단어(약 32-50초: 실행 시간 ≈ 단어 / (3 × 음성 속도) 초; 요청된 짧은 대본은 후크, 루프 및 보상을 압축하여 유지), 끝에 "Comment KEYWORD and I'll send you ..."로 마무리. <project>/script.txt에 ElevenLabs 감정 태그(guides/scripting.md, "Emotion tags")와 함께 작성하세요. 음성화 전에 사용자에게 대본 표(guides/scripting.md, "The script table": 라인, 감정, 화면 표시, 발표자)를 보여주고 승인을 기다리세요: 지금 한 줄을 변경해도 비용이 들지 않지만 음성 크레딧이 소모됩니다. 사용자가 완성된 릴로 바로 가라고 한 경우에만 대기를 건너뛰세요. 포르투갈어 릴의 경우 동일한 가이드의 pt-BR 후크 및 CTA를 사용하세요.
3. 프로젝트 + 음성
node "$SKILL_DIR/tools/reel.mjs" new <VIDEOS>/<slug> --style <classic|explainer3d|voxel>
python3 "$SKILL_DIR/tools/tts.py" <VIDEOS>/<slug>
<VIDEOS> = 이 스킬 폴더 옆에 있는 videos/ 폴더(존재하는 경우, AI Video 작업 공간: <workspace>/videos/<slug>/), 그렇지 않으면 사용자의 현재 폴더에 있는 ./videos/(사용자가 다른 곳을 지정하지 않은 경우). <slug>는 짧은 케밥-케이스 주제 이름입니다. tts.py는 audio/vo.mp3(일시 정지 조정, 저장된 음성 속도로 속도 증가(기본 ×1.15, 다른 --speed로 저장되지 않은 경우), 음량 정규화)와 build/words.json + build/word_index.txt(모든 단어와 시간)를 작성합니다. 모든 애니메이션은 이 단어들에 큐됩니다.
- 음성 선택(첫 실행 또는 사용자가 변경 요청):
python3 tools/voices.py search "<원하는 것>" [--lang xx], 사용자에게 3개의 미리보기 링크를 제공한 후voices.py add <owner> <voice_id> "<name>"및voices.py use <voice_id> --name "<name>"을 실행하세요. 자신의 녹음:tts.py <project> --provider file --audio take.mp3. OpenAI 음성:voices.py provider openai. - 크레딧: 릴당 한 번 음성 생성. 나중에 대본을 변경하면 다시 생성하세요. 타이밍만 수정하는 경우
--reuse사용(새 크레딧 없음).
4. 시각 자료 발명, 비트 계획 (코드 전 스토리보드)
4a. 발명 (이것이 템플릿에서 정교한 릴을 구분짓습니다). 먼저 guides/mindset.md(기준과 생각할 관점: 매우 창의적이고, 아름답고, 절대 비어 있지 않으며, 잘 애니메이션되고, 즉시 이해 가능)를 읽으세요. 그런 다음 guides/patterns.md(클래식) 또는 guides/patterns_3d.md(explainer3d, voxel)를 읽고 이 스크립트에 발명 방법을 적용하세요:
- 전체 아이디어를 전달하는 하나의 중앙 은유 / 시각적 세계(행동이 곧 논증인 물리적 사물, 기계 또는 장소)와 비트를 위한 3-6개의 맞춤 소품. 이들은 이 스크립트의 단어에서 와야 하며 예제에서 가져오면 안 됩니다: 가이드와
library/의 예제 소품은 기술을 보여줄 뿐 절대 붙여넣지 마세요. "이 프레임이 다른 사람의 릴에 어울릴까?"라고 자문하세요. 그렇다면 일반적인 것입니다: 다시 발명하세요. - 실제 세계 대상(대본이 실제 회사, 장소, 제품, 음식, 건물, 차량을 언급하거나 휴대폰에 비디오/앱을 표시): 평면 아이콘이나 명함이 아닌 실제처럼 그리세요:
guides/illustration.md(클래식:kits/illustrate.js기본 요소 +library/classic/illustrated/예제; 화면의 비디오는 항상 재생). 실제 사물이 종종 주인공이며 발명된 은유가 그에 대해 작용합니다. - 발명 내용을
STORYBOARD.md상단에 작성하세요: 은유, 적합한 이유, 소품, 그리고 섹션별 하나의 "와우" 순간.
4b. 스토리보드. build/word_index.txt를 여세요. 대본을 비트로 나누세요: 문장 또는 아이디어당 하나의 비트, 각각 1.5-5초. 먼저 스타일 가이드의 품질 섹션을 읽고(참조 스트립을 확인) 모든 비트에 대해 다음 블록을 작성하세요(한 줄 비트 없음):
beat NN · "<단어>" (단어 i0-i1, s-e)
stage stays : 이미 화면에 있는 요소 중 유지되는 것(및 위치)
each stressed word adds/changes : 단어 → 들어가거나 상태가 변경되는 것(강세 단어당 하나, 0.4-0.8초마다)
keeps moving : 모든 요소의 유휴 생동감(똑딱, 흔들림, 굴러감, 타이핑, 깜박임, 떠다님)
presenter : (클래식) 그가 가리키는 초점 + 구문별 행동 · (3D) 누가/무엇이 행동함
camera : 어떤 단어에서 기울이기/밀기/차기/컷 · 전환
custom props : 발명한 소품 중 나타나는 것(새 코드 작성)
big moments : 슬램, 컷, 휩, 리빌: 초당 1+개 목표(릴 모션이 드래프트에서 측정)
규칙 (guides/direction.md에서): 무대는 축적됨(각 강세 단어가 하나의 요소를 추가하거나 변경, 이전 요소는 유지되고 계속 움직임) 정확히 하나의 초점을 가짐; 소리를 꺼도 그림이 이해됨; 1.2초 이상 정적인 것 없음; 큰 일은 강세 단어에서 발생; 후크 비트는 보상 또는 갈등을 즉시, 완전히 보여줌.
5. 장면 빌드
코드를 작성하기 전에 guides/styles/<style>.md를 완전히 읽으세요(품질 기준, 룩, 토큰, API, 장면 계약, 레시피). 엔진은 HOW(움직이는 방법: 스프링, 진자, 중력, 축적 무대, 발표자 연기, 카메라, 타이핑, 숫자 굴러감, 전환)를 제공합니다. WHAT(움직이는 것)은 4a에서 발명한 소품으로, 프로젝트에 새 코드로 그려집니다. 예산: 제작자의 릴에는 비디오 초당 50-110줄의 맞춤 장면 코드와 3-7개의 맞춤 그려진 객체가 포함됩니다. 이를 계획하세요.
- 스타일의 도우미(
wordAt('word')/wi(index))를 사용하여 단어에 큐하고, 절대 하드코딩된 초를 사용하지 마세요. - 사용하기 전에 각 발명된 소품을 단독으로 미리보기하세요(소품만 보여주는 임시 비트/장면,
reel stills <project> <t> --only <id>로 렌더링; 클래식/voxel에는 키트 미리보기 페이지도 있음). 해당 장면 파일 이름을scenes/preview_<prop>.js로 지정하세요(craft는scenes/preview*.js및scenes/props*.js를 무시하므로 실제 릴 코드를 이런 파일 이름에 절대 넣지 마세요). 클래식:SCENE_FILES에 나열하되TIMELINE에는 절대 넣지 마세요: 등록되었지만 타임라인에 없는 장면은 릴에서 절대 렌더링되지 않습니다. 최종 단계 전에SCENE_FILES에서 제거하세요. reel stills/reel video후 항상 출력 끝을 읽으세요: "error while drawing frames"가 나열되면 해당 프레임이 손상된 것입니다. 먼저 수정하세요.- 병렬 모드: 하위 에이전트 사용(하나씩 모드는 동일한 비트를 동일한 비트별 브리핑으로 차례로 직접 빌드): 1-2비트당 하나씩, 모두 병렬로, 각각 제공: guides/mindset.md(브리핑에 붙여넣기), 스타일 가이드 경로, guides/patterns(_3d).md, 실제 세계 대상을 그리는 경우 guides/illustration.md(클래식), 발명 블록, 스토리보드 라인 및 단어, 인접 장면의 핸드오프 상태. 각 하위 에이전트는
--out <비트 이름>으로 스틸을 렌더링합니다(자체 시트, 덮어쓰기 없음). 그런 다음 함께 검토하세요.
6. 자신의 작업 검토 (필수, 전문적으로 보이게 하는 요소)
guides/review.md를 따르세요. 간략히:
node "$SKILL_DIR/tools/reel.mjs" stills <project> <t1> <t2> ...모든 비트 중간과 모든 컷 후 0.1초 지점에서 실행(시트:stills/sheet.jpg). 시트 이미지를 살펴보세요. 검토 체크리스트의 모든 항목을 확인하고, 깨끗해질 때까지 스틸을 수정하고 다시 렌더링하세요.node "$SKILL_DIR/tools/reel.mjs" video <project>(빠른 저해상도 드래프트,build/draft.mp4). 각 전환 주변의 프레임을 추출하여 확인하세요(ffmpeg -ss T -frames:v 1). 팝, 겹침, 무음을 수정하세요.node "$SKILL_DIR/tools/reel.mjs" motion <project>및node "$SKILL_DIR/tools/reel.mjs" craft <project>: 둘 다 PASS를 출력해야 함(craft = 충분한 독창적 작업, 릴을 지탱하는 기본 소품 없음).motion은 모든 평평한 구간과 해당 단어를 나열합니다: 각각에 축적 이벤트, 2차 모션, 카메라 이동 또는 발표자 연기를 제공하고 드래프트를 다시 렌더링하고 다시 실행하세요. 실패하는 동안 최종본을 절대 렌더링하지 마세요. 사용자가 비디오 렌더를 금지하면 드래프트(2단계)와motion을 건너뛰고 체크리스트로만 검토하세요.
7. 최종 렌더링
node "$SKILL_DIR/tools/reel.mjs" video <project> --final
<project>/out/에 완전한 해상도 mp4를 생성합니다.
motion이 전달되면 프로젝트별 최종 프레임 속도 사용(기본 30fps).- 기본 설정을 변경하지 않는 한 배치에 맞게 확장된
build/audio/vo.mp3를 사용합니다. - 시각적 번역: 최종 스트립을
strips/final/에 저장합니다.
8. 수정 사항
릴 전달 후 사용자가 변경을 요청하면(예: "장면 3 변경", "자막 수정", "다른 음성") 정확히 요청한 것만 변경하고 다른 것은 변경하지 마세요. 영향을 받는 비트를 식별하고 섹션 4-7을 해당 부분에만 다시 적용하세요.
9. 게시
사용자가 게시 준비가 되었는지 묻습니다. 그렇다면 out/<name>.mp4를 제공하고 캡션을 작성하세요. guides/captions.md를 따르세요.
Effort 모드
- best: 섹션 4-7 전체 프로세스(발명, 스토리보드, 병렬 빌드, 모션/크래프트 검토, 최종 렌더링). 최대 품질.
- good: 단순화된 발명(스토리보드만, 발명 블록 없음), 하나씩 장면 빌드, 모션/크래프트 검토 건너뛰기, 여전히 최종 렌더링. 더 적은 크레딧/시간.
- 저장:
node "$SKILL_DIR/tools/doctor.mjs" --set-quality <good|best>. - 언제든지 전환 가능: "최고 품질 사용" / "우수 품질 사용".
플랫폼 지원
- Claude Code: 직접 지원됨.
- Cursor: 호환됨.
- Codex: 호환됨.
- 기타: 설정에서 요금제를 설정하면 doctor가 조정합니다.