Communitygithub.com

SiuZheng/make-video

에이전트가 YouTube 동영상(롱 폼, 쇼츠)을 엔드-투-엔드로 제작합니다. 레모션(Remotion) 코드 애니메이션, 제미나이(Gemini) 음성, 전문가 수준의 효과 라이브러리를 사용하며, 사용자가 먼저 대본과 장면별 계획을 승인한 후에야 제작을 시작합니다.

make-video란 무엇인가요?

이 스킬은 사용자가 YouTube 동영상을 만들고자 할 때, 아이디어나 간단한 요청만으로도 전체 제작 과정을 자동화하는 강력한 에이전트 도구입니다. 롱 폼(16:9)과 쇼츠(9:16)를 모두 지원하며, Remotion 기반의 코드 애니메이션과 Gemini TTS 음성 내레이션, 그리고 전문가 수준의 효과 라이브러리를 활용하여 고품질 영상을 제작합니다. 핵심 프로세스는 크게 7단계로 구성됩니다: 사용자 브리핑 → 대본 및 장면별 계획 승인(드래프트) → 음성 녹음 → 외형 제작 → 본격 빌드 → 자동 및 리뷰어 에이전트 검수 → 최종 렌더링 및 전달. 특히 '드래프트 단계에서 모든 것을 계획하고 사용자가 승인한 후에야 빌드 시작'하는 원칙을 철저히 지켜, 렌더링 시간 낭비를 방지합니다. 또한 전용 리뷰어 에이전트가 고정된 10개 항목 체크리스트로 드래프트, 애니메틱, 최종 컷을 점수화하여 9/10 이상일 때만 사용자에게 전달하므로, 사용자는 완성된 결과물만 받아보게 됩니다. 이 스킬은 Claude Code, Cursor, Codex 등 다양한 AI 코딩 에이전트 플랫폼에서 사용할 수 있도록 설계되었습니다.

지원 대상~Claude Code~Codex CLI~Cursor✓Gemini CLI
npx skills add https://github.com/SiuZheng/make-video-skill/tree/main/make-video

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

동영상 만들기

사용자가 YouTube 동영상을 여러분과 함께 만듭니다: 롱 설명 영상(16:9)과 쇼츠(9:16), Remotion으로 코드 애니메이션, Gemini 음성으로 내레이션, 종종 캐릭터 스프라이트가 등장합니다. 이 스킬이 전체 프로세스입니다. 도구들은 <videokit>에 위치합니다. 이 스킬의 레포지토리에 있는 videokit 폴더입니다(실행하기 전에 references/toolkit.md를 읽으세요). 만약 <videokit>이 실제 경로로 대체되지 않았다면, 사용자에게 레포지토리를 클론한 위치(vk.py 파일이 있는 폴더)를 물어보고 그 경로를 사용하세요.

사용자는 다음 세 가지를 가장 중요하게 생각하며, 이것이 프로세스가 이렇게 구성된 이유입니다:

  1. 드래프트 승인 전에는 아무것도 빌드하지 않습니다. 사용자는 먼저 이야기와 각 장면이 어떻게 보이고 들릴지(전환, 애니메이션, 조명, 음향 효과, 품질)를 확인하고 싶어 합니다. 계획을 바꾸는 데는 몇 분이 걸리지만, 렌더링을 바꾸는 데는 몇 시간이 걸립니다.
  2. 전문가 수준으로 보여야 합니다. 모션 블러가 적용된 동기화된 전환, 부드러운 모션, 깊이감, 실제 조명, 모든 동작에 맞는 사운드, 깔끔한 1080p. references/pro-look.md에 이것이 실제로 의미하는 바와 어떤 컴포넌트가 이를 수행하는지 설명되어 있습니다.
  3. 완성된 영상을 받길 원하며, 질문의 연속을 원하지 않습니다. 리뷰어 에이전트가 과정 중에 질문에 답하고 고정된 10개 항목 체크리스트에 따라 작업물을 평가합니다. 사용자는 9/10 점수를 받은 후에야 영상을 받습니다. references/review.md가 그 방법입니다: 누가 무엇을 결정하는지, 체크리스트, 프롬프트, 그리고 언제 멈출지에 대한 내용이 있습니다. 리뷰는 변경이 저렴한 초기(드래프트, 애니메틱)에 이루어지며, 마지막에만 이루어지지 않습니다.

단계

각 ✋는 정지점입니다: 계속 진행하기 전에 답변을 기다리세요. ✋ 사용자: 사용자가 결정합니다. ✋ 리뷰어: 리뷰어 에이전트가 결정합니다(전체 동영상에 대해 하나의 에이전트가 SendMessage로 계속 진행됩니다 - review.md).

0. 브리핑 ✋ 사용자

요청만으로 알 수 없는 내용을 AskUserQuestion으로 물어보세요(호출당 최대 4개 질문; 남은 것은 두 번째 호출로). 주제가 특정 답변을 암시하더라도 다음 중 어떤 것도 가정하지 마세요:

  • 형식: 롱 영상(16:9, 1920×1080) · 쇼츠(9:16, 1080×1920, 3분 미만) · 둘 다(롱 영상과 그것에서 편집한 3-5개의 쇼츠).
  • 내레이션: AI 음성(Gemini TTS; 샘플을 보내드립니다) · 내레이션 없음(음악 + 화면 속 텍스트) · 사용자 자신의 녹음.
  • 룩: 주제에 맞는 3-4가지 구체적인 스타일을 제안하세요(예: 실제 조명이 있는 시네마틱 코드 드로잉 우주; 깔끔한 플랫 모션 그래픽; 손글씨 낙서; 동화책 종이 오려내기). 각 스타일을 한 줄로 설명하세요.
  • 캐릭터: 기존 캐릭터 스프라이트(<videokit>/sprites에 있음; python vk.py characters로 목록 확인) · 이미지 생성 도구(예: Gemini, Nano Banana, 비용 발생)로 생성된 새 캐릭터 · 이모지 · 코드로 그린 캐릭터 · 없음.
  • 기타 모든 에셋 (소품, 오브젝트, 아이콘, 배경) - 매번 별도로 물어보세요: 코드로 그림(무료; 이펙트 라이브러리 룩) · 이모지(무료; Emoji 컴포넌트, 다른 모든 것과 같이 조명 처리) · 이미지 생성 도구(예: Gemini, 비용 발생)로 생성 · 드래프트에서 에셋별로 결정하는 혼합. 모든 동영상에서 물어보세요. 생성된 그림은 사용자가 여기서 선택했을 때만 만들어집니다.
  • 음악: 오리지널 스코어(분위기: 경이 / 긴장 / 장난기 / 웅장함) · 이 동영상을 위해 음표 하나하나 작곡된 스코어(테마, 코드, 장면에 맞춘 히트 - toolkit.md "작곡된 스코어") · 사용자 자신의 노래(오디오와 가사를 보내면 됨 - 절대 다운로드하지 마세요) · 없음.

또한 주제, 길이, 언어가 명확하지 않으면 결정하세요. 그런 다음 프로젝트를 생성하세요: python -X utf8 vk.py new <폴더> --title "..." --format long|short|both (videokit 폴더에서 실행; 프로젝트는 그 옆에 생성됩니다).

1. 드래프트 ✋ 리뷰어, 그 다음 ✋ 사용자

주제를 조사하고(모든 사실을 확인하고, 오늘 날짜에 의존하는 것은 기록), script.md를 작성하고(내레이션, "> " 줄당 하나의 녹음된 라인), 그런 다음 프로젝트에 이미 있는 템플릿에서 plan.md를 작성하세요. references/draft.md가 각 섹션을 설명합니다. 핵심은 장면별 테이블입니다: 모든 샷에 대해 내레이션, 보여지는 것(그리고 캐릭터가 하는 일), 카메라와 애니메이션, 들어오고 나가는 전환, 조명과 색상, 음향 효과, 음악. 또한 룩, 모션, 조명, 전환 및 사운드 계획, 품질 사양, 쇼츠("both"인 경우), 출처가 있는 사실, 비용이 포함됩니다. 2-3개의 후크 옵션도 작성하세요(각각 첫 번째 라인과 첫 번째 프레임). 쇼츠의 경우 draft.md의 "처음 3초" 규칙을 따릅니다: 1초 안에 놀라움, 프레임 0에서 동작과 사운드, 밝은 첫 프레임. 실제 쇼츠 데이터는 조회수가 그곳에서 결정된다는 것을 보여줍니다. 사용자 자신의 데이터는 references/channel-numbers.md에 있습니다.

드래프트 리뷰: plan.md와 script.md로 리뷰어를 시작하세요(review.md, "시작하기"). 리뷰어가 찾은 모든 결함과 2점 미만으로 평가된 항목에 대해 드래프트가 수정할 수 있는 모든 것을 수정하고, 후크 선택을 드래프트에 적용하고, out/review/decisions.md에 적용한 것과 적용하지 않은 것을 기록하세요.

그런 다음 사용자에게 보여주세요: 채팅에 짧은 요약(몇 줄의 이야기, 간결한 목록의 장면들, 사용자가 결정해야 할 사항, 리뷰어의 예상 점수를 한 줄로)과 plan.md 링크. 승인 또는 변경을 요청하고, 수정하고, 사용자가 진행하라고 할 때까지 반복하세요. 그 전에는 녹음, 생성 또는 애니메이션을 하지 마세요 - 이것은 사용자의 규칙입니다.

2. 음성 (내레이션이 있는 경우)

  • 기본 음성(video.json: Gemini "Kore", speed 1.2)은 질문이 필요 없습니다. 새 음성 또는 스타일: vk.py voice samples → 샘플 전송(SendUserFile) → ✋ 사용자: 사용자가 귀로 선택합니다(에이전트는 들을 수 없으므로 리뷰어에게 보내지 않습니다). video.json에 speed와 함께 설정하세요.
  • vk.py voice record (캐시됨; 동일한 라인은 다른 프로젝트에서 무료로 재사용됨), 그런 다음 vk.py words (단어 타이밍 + 각 라인이 스크립트대로 말하는지 확인; 플래그가 지정된 것은 청취).
  • Gemini 402 = 선불 크레딧이 소진됨: 중지하고 사용자에게 알리세요.

3. 룩 ✋ 리뷰어

  • 승인된 드래프트의 에셋 목록이 지정한 방식(코드, 이모지, Gemini 또는 기존)으로 모든 에셋을 만듭니다:
    • 기존 스프라이트는 scripts/build.py의 CHARACTERS / PROP_DIRS에 들어갑니다;
    • 생성된 에셋(승인된 경우에만): 이미지 생성 도구(예: Gemini, Nano Banana), 투명 PNG로 잘라서 같은 방식으로 가져옵니다(toolkit.md, "Gemini 그림");
    • 이모지: <Emoji char="🚀" .../> (fx/emoji.tsx) 장면의 림 라이트와 접촉 그림자 포함;
    • 코드: fx 라이브러리(LitSphere, Sun, shapes, DrawPath...)로 장면에 그려집니다.
  • 3-4개의 스타일 프레임을 만드세요 - 드래프트의 핵심 순간들, 완전히 조명 처리됨 - 연락처 시트로(vk.py stills ...) 리뷰어에게 보냅니다("과정 중 선택"): 룩을 승인하거나 변경할 사항을 말합니다. 답변을 기록하세요.

4. 빌드

  1. scripts/build.py: 드래프트에서 채웁니다 - 일시 정지, 큐(c.at(line, 'phrase')), MOVES (각 섹션이 도착하는 방식), effects() (모든 이벤트에 대한 사운드), music() (분위기, 강도 곡선, 악센트 - 또는 작곡된 스코어), ambience(), YouTube 텍스트. vk.py build를 실행하세요.

  2. 장면: src/scenes/에 장면당 하나의 파일, 큐에 대해 이야기 시간(초)으로 작성되며, src/fx 사용(카메라, 깊이 레이어, 조명, 파티클, 운동 텍스트, 캐릭터 트랙). src/Video.tsx에 전환과 함께 나열하세요. 캐릭터를 액션 안에 유지하세요(서 있기, 타기, 가리키기, 화면에 반응하기) - 그냥 떠다니는 캐릭터는 채우기로 읽힙니다. 먼저 모든 샷을 배치하고 - 큐에 맞춰 배치되고 이동하는 - 그런 다음 조명과 풍부함 패스를 수행하세요. 움직임은 캐릭터 이상을 의미합니다: 배치부터 각 샷에는 표류하거나 이동하는 카메라, CamLayer 깊이 밴드 및 움직이는 다른 무언가가 있습니다. 캐릭터 뒤에 정적인 세계가 있는 쇼츠가 20/20을 받았지만, 움직이는 상태에서 보니 너무 평범하다고 평가된 적이 있습니다.

  3. 애니메틱 ✋ 리뷰어: vk.py animatic은 전체 동영상을 절반 크기, 실제 사운드, 모션 블러 없이 렌더링하고(30초 쇼츠 약 1.5분) 페이싱 검사를 실행합니다. 리뷰어에게 보냅니다(애니메틱 프롬프트). 후크, 타이밍 및 명확성을 지금, 정리 작업 전에 수정하세요.

  4. 쇼츠("both"인 경우): build.py에서 kit.shorts.build를 통해 사양, src/shorts/에 쇼츠당 하나의 장면.

  5. 풍부함 패스: references/pro-look.md의 "Make it rich"에 따라 샷별로 진행하고, 샷이 평범한 곳에 효과를 추가하세요. 각 샷에는 다음이 필요합니다:

    • 깊이가 있는 배경;
    • 볼 수 있는 빛;
    • 세계에 앉아 있는 주제;
    • 앞에 있는 무언가;
    • 절대 고정되지 않는 카메라;
    • 배경 생동감;
    • 마무리;
    • 사운드.

    모든 동영상은 풍부하게 느껴져야 하므로 이것은 작업의 일부이며 추가 사항이 아닙니다. 절제 규칙을 유지하여 깔끔하게 유지하고, 텍스트에는 효과를 적용하지 마세요.

5. 확인 (깨끗해질 때까지 반복)

vk.py qa는 모든 큐와 모든 전환 중간점을 연락처 시트(out/qa/)로 렌더링한 다음 자동 검사를 실행합니다 → out/qa/<comp>_checks.md: YouTube/TikTok 버튼 및 제목 아래 텍스트, 44px보다 작음, 겹치거나 프레임 밖으로 나감(페이지 자체에서 측정); 최신 렌더링에서 이미지가 거의 변하지 않는 늘어짐, 배경이 정지된 샷(프레임의 25% 미만 움직임), 음성의 간격, 프레임 가장자리를 따라 드러난 스트립, 루프 이음새 및 음량. 나열된 모든 문제를 수정하고 "확인할 가치 있음" 각각을 살펴보세요. 그런 다음 references/pro-look.md의 체크리스트에 따라 시트를 검토하세요 - 전환 중간, 조명 방향, 장면 속 캐릭터, 평범한 프레임 없음(평평하거나 비어 보이는 것은 풍부하게 만듦) - 수정하고 다시 실행하세요(vk.py qa --auto는 검사만 다시 실행하며 약 1분 소요). 전체 렌더링 전에 짧은 테스트 렌더링(vk.py render --frames 0-150)을 수행하여 실제 모션과 렌더링 속도를 확인하세요. 렌더링은 프레임이 변경되지 않은 4초 청크를 재사용하므로 수정 후에는 렌더링을 다시 실행하기만 하면 됩니다(--fresh는 캔버스 드로잉을 변경하거나 비디오 파일을 교체한 후에만).

6. 최종 ✋ 리뷰어

  • vk.py final (각 쇼츠에 대해 vk.py final --comp Short-<id>): 1080p H.264, v1/v2...로 백업, 크기, fps, 코덱, -14 LUFS 및 트루 피크 확인. 전화 미리보기나 720p 사본 없음 - 1080p 파일만 제공합니다. 그런 다음 vk.py qa --auto로 검사합니다.
  • 최종 리뷰 (review.md, "라운드와 중단 시점"): 리뷰어가 체크리스트로 점수를 매기고 제목을 선택합니다. 결함과 최우선 수정 사항을 수정하고, 결정을 기록하고, 다시 렌더링하고, 이전 버전과 비교할 새 버전을 보냅니다. 18/20 이상, 0점 항목 없음, 미해결 결함 없음이면 통과합니다. 3라운드 후에 중단하거나, 라운드에서 새로운 것을 찾지 못하고 점수가 유지되면 더 일찍 중단합니다.
  • TikTok (사용자가 쇼츠를 거기에도 게시하는 경우): vk.py final --platform tiktok → "<제목> (TikTok).mp4": 그레인 없음, 먼지 절반, 더 높은 비트레이트와 약간의 샤픈. TikTok이 모든 업로드를 강하게 재인코딩하기 때문입니다.
  • 썸네일(src/Thumbnail.tsx → 1280×720 jpg), captions.srt, youtube.md (제목, 챕터가 있는 설명, 태그, AI 음성 공개); 쇼츠용 shorts.md.

7. 전달

완성된 동영상이 약 30MB 미만이면 SendUserFile로 보내고(보통 쇼츠가 그렇습니다); 그렇지 않으면 클릭 가능한 경로를 제공합니다(TikTok 컷은 보통 더 큽니다: 경로를 제공하세요). 장면별로 무엇이 포함되어 있는지와 검사 결과를 요약하세요: 리뷰어의 최종 점수(및 이전 라운드), 2점 미만 항목, 리뷰어의 채널 노트(채널 전체에 관한 사항 - 사용자의 판단), 리뷰어가 사운드를 미터로만 판단했다는 점(사용자가 직접 사운드를 확인하는 것이 최종 점검)을 알리세요. 업로드 노트를 추가하세요. 그런 다음 프로젝트 메모리 노트를 저장하거나 업데이트하세요(무엇이 만들어졌는지, 어디에, 사용자가 내린 결정). 사용자가 나중에 게시된 쇼츠의 성과를 물으면 해당 행을 references/channel-numbers.md에 추가하세요.

항상 적용되는 규칙

references/house-rules.md에 상시 규칙이 있습니다 - 동영상당 한 번 읽으세요. 요약: API 키를 절대 출력하지 않음; 명확한 동의 없이 Gemini 이미지 사용 금지; 노래 다운로드하거나 다른 아티스트의 가사를 화면에 표시하지 않음; "그냥 묻는" 질문에는 답변만, 빌드하지 않음; 빌드 전 드래프트; 1080p만; 리뷰어는 단계별 질문에 답하고, 브리핑, 드래프트, 새 음성, 비용 및 공개적인 사항은 사용자에게 남깁니다.

참고 자료

  • references/review.md - 리뷰어 에이전트: 누가 무엇을 결정하는지, 10개 항목 체크리스트, 각 단계의 프롬프트, 결정 로그, 중단 시점.
  • references/draft.md - 드래프트(plan.md) 작성 및 제시 방법, 쇼츠의 처음 3초 규칙 포함.
  • references/channel-numbers.md - 사용자 자신의 YouTube 통계용 템플릿(쇼츠당 체류율, 각 오프닝 성과) 및 Studio 읽는 방법.
  • references/pro-look.md - 전문가 표준: 전환, 애니메이션, 조명, 파티클, 타이포그래피, 사운드, 품질 검사, 렌더링 성능 및 각각의 컴포넌트.
  • references/toolkit.md - videokit 명령어(자동 검사, 애니메틱, TikTok 컷), 프로젝트 레이아웃, 스토리 클록, build.py 훅, 쇼츠, 뮤직 비디오, Windows 주의사항.
  • references/house-rules.md - 상시 규칙과 그 이유.

관련 스킬