TRENDSHIFT DAILY #14 · 2026-07-25 · VIDEO-SHOTCRAFT · AI 에이전트를 "모션 디자인 스튜디오"로 바꾼다

Vincentwei1021/video-shotcraft 딥다이브
코딩 에이전트에게 건네주면 내 제품의 영화 같은 홍보 영상을 통째로 만들어 주는 "스킬"

video-shotcraft는 Claude Code나 Codex 같은 AI 코딩 에이전트를 모션 디자인 스튜디오로 변신시키는 에이전트 스킬(agent skill)이다. 한 문장으로 말하면 "내 웹/데스크탑 제품을 가리키기만 하면, 에이전트가 스토리보드를 짜고 → 애니메이션을 붙이고 → 사운드까지 디자인해 영화 같은 제품 홍보 영상 한 편을 완성해 주는 재료·규칙·자산 묶음"이다. 렌더링 엔진은 Remotion(React로 영상을 만드는 프레임워크)이고, 실제 페이지 스크린샷·2.5D 카메라 워크·비트에 맞춘 컷·영화급 효과음이 전부 포함된다.

이 프로젝트의 급소는 이것이다: "AI에게 영상 만들어줘"는 지금까지 대부분 어색한 슬라이드쇼로 끝났다. video-shotcraft는 여기에 전문 모션 디자이너의 방법론을 통째로 문서화해 넣었다 — 106장의 "샷 레시피 카드"(각 컷의 목적·에너지·타이밍·파라미터·함정), 검수 완료된 완성 템플릿 한 편, 복사해 쓰는 Remotion 컴포넌트와 효과음 자산, 그리고 8단계 제작 파이프라인. 에이전트는 이 문서들을 읽고 "감이 아니라 검증된 레시피"로 영상을 만든다.

(저장소 Vincentwei1021/video-shotcraft · 갤러리 vincentwei1021.github.io/video-shotcraft · 샷 카드 106장 / 162 스타일 / 161 모션 프리뷰 · 렌더 엔진 Remotion 4.0 + React 19 · 내장 템플릿 Ink Press(36.2초·1920×1080·30fps·10컷) · 대상 에이전트 Claude Code · Codex · 라이선스 Apache-2.0 · 저자 Wei Yihao · shallow clone 소스 직접 분석)
목차
  1. 프로젝트 한 줄 요약
  2. 왜 주목받는가 — "AI 영상"의 슬롭을 벗어나다
  3. 기술 스택 전체 지도
  4. 아키텍처 심화 분석 — 스킬·엔진·자산의 3층 구조
  5. 디렉토리 구조 해부
  6. 학습 포인트
  7. 시스템/실행 요구사항
  8. 직접 해볼 수 있는 실습 과제
  9. 관련 기술 심화 학습 로드맵
  10. 핵심 키워드 사전
  11. 참고 링크

1프로젝트 한 줄 요약

"영상 편집 앱"이 아니라 "AI에게 주는 영상 제작 설명서 + 재료 상자"

가장 먼저 오해를 풀어야 한다. video-shotcraft는 당신이 여는 앱이 아니다. 클릭할 UI도, 타임라인 편집기도 없다. 이것은 AI 코딩 에이전트가 읽는 문서와 코드의 묶음이다. 당신이 Claude Code에게 "이 스킬로 내 제품 홍보 영상 만들어줘"라고 말하면, 에이전트가 저장소 안의 SKILL.md를 읽고, 거기 적힌 규칙과 레시피를 따라 스스로 Remotion 영상 프로젝트 코드를 짜서 .mp4를 뽑아낸다.

한 줄 비유

"AI 요리사"에게 냉장고만 던져주는 것 vs. 검증된 레시피북 + 손질된 재료 + 조리 순서표까지 함께 주는 것

그냥 "영상 만들어줘"는 요리 초보에게 냉장고 문만 열어주는 것과 같다 — 뭔가 나오긴 하지만 대개 어색하다. video-shotcraft는 "106장의 검증된 레시피 카드 + 미리 손질해 둔 재료(컴포넌트·효과음) + 8단계 조리 순서표"를 통째로 건네는 것이다. 에이전트는 즉흥으로 요리하는 대신 "이미 맛이 검증된 레시피"를 골라 재료에 맞게 변형한다. 그래서 결과가 "AI가 대충 만든 것"이 아니라 전문 스튜디오가 만든 것처럼 나온다.

구체적으로 video-shotcraft가 담고 있는 것은 네 덩어리다. ① 샷 레시피 카드 106장(references/shots/) — 각 카드는 "이 컷은 무엇을 표현하나, 에너지는 어느 정도, 몇 초, 어떤 이징(easing)·타이밍을 쓰나, 흔한 함정은 무엇인가"를 적은 한 컷의 완결된 사용 설명서다. ② Remotion 구현 소스 97개(demos/) — 각 카드의 파라미터가 실제로 튜닝된 TSX 코드. ③ 완성 템플릿 "Ink Press"(template/) — 바로 렌더되는 36.2초짜리 검수 완료 홍보 영상. ④ 복사해 쓰는 자산(assets/) — 2.5D 페이지 카메라·자막·효과음 라이브러리.

TERM
에이전트 스킬 (agent skill)
AI 코딩 에이전트(Claude Code·Codex 등)가 특정 작업을 잘 해내도록 읽는 "지침 + 자원" 패키지. 보통 SKILL.md라는 진입점 문서에 "언제 이 스킬을 쓰고, 어떤 순서로, 어떤 파일을 읽어 무엇을 만들라"가 적혀 있다. 에이전트는 이 문서를 컨텍스트에 로드한 뒤 그 규칙대로 움직인다. video-shotcraft는 .claude/skills/ 또는 .codex/skills/에 심볼릭 링크로 설치되며, .claude-plugin/plugin.json도 있어 플러그인 형태로도 배포된다. 즉 "코드 라이브러리"가 아니라 "AI가 따를 작업 절차서"가 이 저장소의 본체다.

이름은 video-shotcraft지만, 진짜 핵심어는 "검증된 모션 레시피를 에이전트에게 위임(delegate)한다"이다. 사람이 영상 편집기를 만지는 게 아니라, 사람이 방법론을 문서로 굳혀 두고 → AI가 그 문서를 읽어 실행한다는 구도가 이 도구의 정체성이자, 이 문서에서 배울 것을 관통하는 열쇠다.

2왜 주목받는가

"AI 스킬" 붐 + "제품 영상은 비싸다"는 통증 + "AI 슬롭 탈출"이라는 갈망이 겹친 지점

2026년 개발자 생태계에는 세 가지 흐름이 있다. ① Claude Code·Codex를 확장하는 "에이전트 스킬" 생태계의 폭발(트렌딩에 skills 관련 레포가 줄줄이 오른다), ② 좋은 제품 홍보 영상은 외주 스튜디오에 수백만 원이 드는데 스타트업에는 그 예산이 없다는 현실, ③ AI가 만든 결과물이 "AI 슬롭(slop)"처럼 어색해 보이는 것에 대한 반발. video-shotcraft가 트렌딩에 오른 이유는 이 세 흐름이 정확히 겹치는 지점에 서 있기 때문이다.

차별점 ① — "그냥 만들어줘"가 아니라 "전문 방법론을 이식한다"

대부분의 AI 영상 도구는 프롬프트 한 줄 → 결과물이라 품질을 통제할 수 없다. video-shotcraft의 급소는 전문 모션 디자이너가 축적한 판단을 카드로 굳혀 에이전트에게 준다는 것이다. 각 샷 카드에는 "정상 속도에서 결론이 먼저 읽혀야 한다", "완료 후 최소 15프레임은 정지시켜라", "역사적 피드백은 전부 '더 느리게'를 가리켰다" 같은 실전에서 얻은 규칙이 파라미터 표와 함께 들어 있다. AI가 즉흥으로 만드는 게 아니라 검증된 레시피를 실행한다.

차별점 ② — 진짜 페이지를 재료로 쓴다 (스크린샷 → 2.5D 카메라)

이 스킬의 하드 규칙 하나: 실제 제품 페이지를 표현할 때는 반드시 진짜 스크린샷을 쓴다. 로컬 dev 서버를 띄우고, 헤드리스 브라우저로 전체 페이지를 2배 해상도 텍스처 + 요소별 추출 + 좌표표(layout.json)로 캡처한 뒤, PageCam이라는 2.5D 카메라 컴포넌트로 그 페이지 위를 밀고·당기고·기울인다. "가짜 UI를 손으로 그리는" 것은 비복제 장면(추상 오프닝·브랜드 컷)에만 허용되고, 그마저 출판급 품질이 안 나오면 스크린샷 경로로 돌아가라고 못박는다.

TERM
Remotion · 2.5D 카메라
Remotion은 "React로 영상을 만드는" 프레임워크다. 영상의 각 프레임을 useCurrentFrame()이 돌려주는 프레임 번호에 따라 React 컴포넌트로 그린 뒤, 브라우저를 헤드리스로 돌려 프레임을 한 장씩 렌더링하고 ffmpeg.mp4로 합친다. HTML/CSS/JS로 만들 수 있는 모든 것이 곧 영상 소재가 된다.
2.5D 카메라는 평평한 페이지 스크린샷 한 장을 3D 평면처럼 취급해 원근·기울기(rotX/rotY)·줌·이동을 주는 기법. 진짜 3D 모델링 없이도 "카메라가 페이지 위를 유영하는" 영화적 느낌을 낸다. video-shotcraft의 PageCam이 이걸 담당하며, "실제 페이지" 모든 컷의 지반이다.

차별점 ③ — 눈으로 고를 수 있는 갤러리 (161개 모션 프리뷰)

샷 카드가 아무리 많아도 이름만으로는 뭘 고를지 모른다. video-shotcraft는 온라인 갤러리161개 모션 프리뷰를 올려, 사용자가 실제 움직임을 보고 검색·필터·비교한 뒤 원하는 컷 이름을 복사해서 에이전트에게 건네게 한다. "이 효과를 원해"를 말이 아니라 실물 샘플로 지목할 수 있다. 갤러리 자체는 python3 -m http.server로 로컬에서도 열 수 있는 정적 사이트다.

차별점 ④ — "완성 템플릿"이라는 가장 빠른 길

처음부터 창작하는 건 어렵다. 그래서 검수 완료된 Ink Press 템플릿(36.2초·10컷·페이퍼-잉크-앰버 스타일)을 통째로 넣어, "내 제품 스크린샷·문구·브랜드로 갈아끼우기만" 하면 같은 품질의 영상이 나오게 했다. README는 이걸 "가장 빠르고 신뢰할 수 있는 완성 경로"라고 부른다. 창작 자유도가 필요하면 자율 창작 모드로, 관여하고 싶으면 공동 창작 모드로 넘어간다.

GOOD
왜 이 조합이 강력한가

방법론의 깊이(106장 실전 카드), 재료의 진짜성(가짜 UI가 아닌 실제 페이지 캡처), 선택의 직관성(눈으로 보는 갤러리), 시작의 빠름(검수된 템플릿), 그리고 결과의 재현성(결정적 렌더링). 무엇보다 "AI에게 시켰더니 정말 스튜디오급이 나오네"라는 충격이 트렌딩의 진짜 동력이다. 심지어 저장소의 갤러리 인트로 영상 자체도 이 스킬로 만들어졌다.

3기술 스택 전체 지도

세 개의 세계 — "지식(문서)"·"렌더 엔진(Remotion 코드)"·"자산(효과음·캡처)"

video-shotcraft 저장소를 처음 열면 헷갈린다. 영상 소프트웨어인가, 그냥 마크다운 문서 모음인가? 답은 "둘이 한 몸"이다. 이 저장소는 (A) AI가 읽는 방법론 문서, (B) 그 방법론을 실제로 구현한 Remotion/React 코드, (C) 영상에 쓰이는 효과음·캡처 스크립트 자산이 함께 산다. 이 셋을 구분하는 순간 전체 그림이 선명해진다.

세계 A — 지식 계층 (SKILL.md + references/)

코드가 아니라 마크다운으로 쓰인 "제작 두뇌"다. 에이전트가 읽고 판단하는 규칙·레시피가 전부 여기 있다.

파일/폴더내용역할
SKILL.md진입점 + 핵심 규칙 9조모드 판별, "언제 어느 문서를 읽나" 라우팅 표
references/shots/샷 레시피 카드 106장각 컷의 의도·동효 핵심·파라미터 표·소리·함정·참조 구현
references/sequences/재사용 가능한 전체 영상 구조"전체 골격 먼저 채우기"용 시퀀스 패턴
references/pipeline.md8단계 제작 파이프라인자율 창작의 아이디어→완성 전 과정
guided-free-creation.md공동 창작 절차사용자 확인 지점이 있는 협업 흐름
aesthetic-rules.md시각 QA 기준매 컷 자가 검수 체크리스트
music-beat-sync.mdBGM 분석·비트 싱크librosa로 BPM 추출→beatF(n)로 컷 배치
sound-design.md / final-review.md사운드 설계 / 독립 종검효과음 언어 / 깨끗한 서브에이전트의 최종 심사
비유

references/shots/의 카드 한 장은 요리 레시피 카드와 똑같다 — "무슨 요리인가(의도), 얼마나 맵게(에너지), 몇 분(시간), 불 세기와 순서(파라미터 표), 자주 태우는 지점(함정), 참고할 실제 조리 영상(참조 구현)". 에이전트는 냉장고를 보고 즉흥 요리하는 대신, 이 카드를 골라 재료(당신의 제품)에 맞게 간을 조절한다. "감으로 새로 짜는 것 = 축적된 튜닝을 전부 버리는 것"이라고 스킬이 직접 경고한다.

세계 B — 렌더 엔진 계층 (demos/ + template/ + assets/lib/)

실제로 영상을 그리는 Remotion/React/TypeScript 코드다. 카드가 "레시피"라면 이건 "이미 튜닝된 실물 조리 과정"이다.

계층기술역할
렌더 프레임워크Remotion 4.0.484React 컴포넌트를 프레임 단위 영상으로 렌더
UI 런타임React 19.2 + TypeScript 6모든 컷·컴포넌트를 JSX로 구성
참조 구현demos/ 97개 TSX각 샷 카드의 이징·타이밍이 실측 튜닝된 데모
완성 템플릿template/ (Ink Press)npx remotion render로 바로 뽑는 36.2초 홍보 영상
3D 컷 (선택)three + @react-three/fiber + @remotion/threeFlatPanel·카메라 헬퍼 등 일부만 의존
재사용 컴포넌트assets/lib/ 8종PageCam·DigitRoll·FlashCut·Caption·VerticalTicker 등

세계 C — 자산·캡처 계층 (assets/audio/ + assets/scripts/ + gallery/)

영상의 원재료다. 효과음(무료 상업 라이선스)·BGM 후보·페이지 캡처 스크립트·온라인 갤러리가 여기 있다.

요소기술/형식쓰임
효과음assets/audio/*.mp3 40+종riser·impact·whoosh·pop·sparkle 등 영화적 SFX (Mixkit)
BGM 후보assets/audio/bgm/비트감 강한 배경음악 (tech-house·hiphop 등)
캡처 스크립트capture-template.mjs (Playwright)실제 페이지를 2배 텍스처 + layout.json으로 캡처
갤러리gallery/ 정적 사이트 + api/library.json161개 프리뷰 검색·필터·카드명 복사
에이전트 매니페스트agents/openai.yaml · .claude-plugin/plugin.jsonCodex·Claude 양쪽 등록 정보
TERM
결정적 렌더링 (deterministic rendering)
같은 입력이면 몇 번을 렌더해도 프레임 단위로 완전히 똑같은 결과가 나오는 것. video-shotcraft는 Date.now()Math.random() 사용을 금지하고, 모든 의사난수는 고정 시드(seed) 기반(mulberry32·해시, 시드는 index에서 파생)으로 만들라고 못박는다. 이유: Remotion은 프레임을 병렬로·재시도하며 렌더하는데, 난수가 매번 바뀌면 파티클 위치가 프레임마다 튀어 영상이 깨진다. "재현 가능성"은 영상 파이프라인에서 미적 취향이 아니라 정확성 요건이다.

4아키텍처 심화 분석

"카드(의도) → 데모(튜닝된 코드) → 자산(재료)"이 맞물려 도는 방식이 배울 것의 8할

video-shotcraft의 모든 것은 하나의 설계 결정에서 나온다: "무엇을 만들지(의도)"와 "어떻게 만들지(구현)"를 분리하되, 반드시 짝지어 읽게 한다. 샷 카드는 의미와 파라미터의 표를 주고, 실제 튜닝된 진실은 demos/의 데모 소스에 있다. SKILL.md는 "카드만 보고 새로 짜지 말고, 반드시 참조 구현 TSX를 찾아 읽어라"라고 강제한다 — 그래야 조율된 이징·타이밍이 보존되기 때문이다.

4-1. 샷 카드의 해부 — 한 장에 담긴 여섯 블록

references/shots/의 카드는 정확히 같은 골격을 갖는다. 아래는 ai-stream-response(AI 응답이 차오르는 컷) 카드의 구조다.

references/shots/ai-stream-response.md ├── frontmatter name / 一句话(한줄) / 적용 / 시간 / 에너지 ← 스캔용 메타 ├── ## 意图 이 컷이 무엇을 이야기하는가 (결론 먼저, 증거 나중) ├── ## 动效核心 핵심 움직임: 요약문 낙하 → 증거행 유입 → 완료 펄스 ├── ## 参数表 | 파라미터 | 典型值 | 조절 손맛 | ← 실측 수치표 │ 예) 行节拍 cue[i]=42+[0,11,21,30,38,45,51,56][i] ├── ## 声音 어떤 효과음을 언제: transition-soft → pop → whoosh ├── ## 已知坑 함정: "逐字 타이핑은 시선을 가둔다" 등 └── ## 参考实现 demos/ai-stream-response/StreamResponse.tsx ← 진짜 파라미터

이 구조가 핵심인 이유: 에이전트는 frontmatter만 훑어(에너지·시간) 컷을 고르고, 선택한 카드는 전문을 읽은 뒤, 참조 구현 TSX를 열어 실제 파라미터를 가져온다. 카드의 "함정" 섹션이 품질을 지키는 안전벨트 역할을 한다 — 예: "행 본문과 상태 아이콘이 같은 프레임에 떨어지면 정적 리스트처럼 보인다, 2~4프레임 지연을 둬라".

4-2. PageCam — "실제 페이지" 컷의 지반

가장 재사용 가치가 큰 컴포넌트. 평평한 전체 페이지 스크린샷 한 장을 받아 2.5D 카메라 키프레임으로 유영시킨다. 각 키(CamKey)는 화면 중심에 놓을 페이지 좌표(cx,cy)·줌·그리고 선택적 3D 기울기(rotX/rotY/rotZ)·원근(persp)을 담는다.

// assets/lib/PageCam.tsx — 2.5D 페이지 카메라의 키프레임 타입
export type CamKey = {
  frame: number;
  cx: number; cy: number;   // 1920x1080 뷰포트 중앙에 놓을 페이지 좌표
  zoom: number;             // 1 = 1 CSS px → 1 출력 px
  rotX?: number;            // 위쪽이 뒤로 눕는 기울기(테이블 보듯)
  rotY?: number;            // 오른쪽 가장자리가 물러남(왼쪽에서 본 것)
  persp?: number;           // 원근 강도(기본 1400; 작을수록 강함)
};
// 핵심 우아함: 어떤 키도 3D 필드를 안 쓰면 → 평평한 팬/줌으로
// 자동 강등돼 픽셀 단위로 동일하게 렌더된다(3D는 순수 선택적).
비유

PageCam실물 문서 위를 나는 다큐멘터리 드론 카메라다. 종이(스크린샷)는 가만히 있는데, 카메라가 특정 문단으로 밀고 들어가(zoom↑) 살짝 비스듬히 기울였다가(rotX) 다음 섹션으로 미끄러진다(cx,cy 이동). 진짜 3D 모델은 없다 — 평면 한 장에 원근만 입혀 "카메라가 살아있는 페이지를 훑는" 영화적 착시를 만든다.

4-3. 데모 소스 — 튜닝된 파라미터의 "진실"

demos/ai-stream-response/StreamResponse.tsx를 보면, 카드의 파라미터 표가 어떻게 실제 코드가 되는지 드러난다. Remotion의 interpolateEasing.bezier로 프레임 구간을 값으로 매핑한다.

import {AbsoluteFill, Easing, Img, interpolate, useCurrentFrame} from 'remotion';

// 카드의 "行节拍 cue" 표가 그대로 상수 배열이 된다
const ROW_CUES = [42, 53, 63, 72, 80, 87, 93];
const ease = Easing.bezier(0.2, 0.75, 0.25, 1);
const clamp = {extrapolateLeft: 'clamp', extrapolateRight: 'clamp'};

const EvidenceRow = ({cue, title}) => {
  const frame = useCurrentFrame();
  // 행 본문: cue~cue+12 프레임에 걸쳐 0→1로 등장
  const body = interpolate(frame, [cue, cue + 12], [0, 1], {...clamp, easing: ease});
  // 상태 아이콘: 본문보다 3프레임 늦게(拖拽 계층) → 정적 리스트로 안 보이게
  const status = interpolate(frame, [cue + 3, cue + 11], [0, 1], {...clamp, easing: ease});
  // ... y이동·blur·opacity를 frame으로 계산해 style에 반영 ...
};

4-4. 세 가지 사용 모드 — 자유도 vs. 관여도의 축

SKILL.md의 첫 관문은 모드 판별이다. 완성 홍보 영상에는 서로 섞이지 않는 세 모드가 있고, 에이전트는 사용자가 이미 고른 게 아니면 먼저 최소한의 읽기전용 제품 점검을 한 뒤 세 모드를 제안한다.

관여도 낮음 ─────────────▶ 관여도 높음 │ │ ┌───────────────────┼────────────────────┬───────────────┼──────────────┐ │ ① 템플릿 사용 │ ② 자율 자유 창작 │ ③ 공동 창작 │ │ Ink Press에 내 │ 에이전트가 방향· │ 단계별 확인(제품 브리프· │ │ 제품 갈아끼우기 │ 분경·소재를 스스로 │ 시각 방향·샷 매핑·분경) │ │ → 가장 빠름/안정 │ 정해 끝까지 진행 │ → 사용자가 핵심 결정에 참여 │ │ template/ │ pipeline.md │ guided-free-creation.md │ └────────────────────────────────────────┴──────────────────────────────┘ 단일 컷만 필요하면: references/shots/에서 카드 뽑아 참조 구현에 맞춰 적용

4-5. 8단계 파이프라인 — "방향 결정이 비싼 단계 앞에서 끝난다"

자율 창작의 척추. 핵심 철학은 "방향성 논쟁은 첫 Remotion 코드 한 줄을 쓰기 전에 끝내라"이다 — 방향이 틀린 걸 컷 구현 단계에서 발견하면 장면 세트 전체를 폐기해야 하기 때문이다.

0. 제품 이해 & 실행 제약 ← 읽기전용 점검 → 제품 브리프 + 결정표 1. 시각 방향 & 스타일프레임 ← 영상 렌더 금지! 순수 HTML/CSS로 색·폰트·톤 확정 2. 기능 → 샷 매핑 ← 각 기능에 맞는 "운동 문법"만 고름(전체 분경 아직 X) 3. 분경(스토리보드) & 제작 승인 ← 컷 순서·시간·화면·자막·전환·SFX 확정 4. 최종 소재 캡처 ← 확정된 분경대로 실제 페이지 캡처 5. 컷별 구현 ← 카드+데모 소스 읽어 Remotion으로. still로 자가검수 6. 사운드 디자인 ← 화면 잠긴 뒤 효과음 "钉帧"(프레임 고정) 7. 독립 종검 & 납품 ← 깨끗한 컨텍스트의 서브에이전트가 최종 심사
설계 패턴 · 핵심 3가지

이 저장소에서 배울 만한 설계 결정

① 지식과 구현의 분리 + 강제 결합: "무엇(카드)"과 "어떻게(데모)"를 나눠 두되, "카드만 보고 새로 짜지 말고 반드시 참조 구현을 읽어라"로 결합을 강제한다. 이렇게 하면 방법론은 사람이 읽기 쉽고, 실측 파라미터는 코드에 안전하게 보존된다.

② 저렴한 확정물을 앞에 배치: 스타일프레임(정적 HTML)·분경(표)처럼 싸게 만들고 싸게 폐기할 수 있는 산출물로 방향을 먼저 잠근다. 비싼 영상 렌더는 방향이 확정된 뒤에만. "실수의 비용을 파이프라인 앞으로 당긴다."

③ 검수를 전 과정에 내장 + 독립 종검: 매 컷을 npx remotion still 정지 프레임으로 자가 검수하고, 납품 전 깨끗한 컨텍스트의 서브에이전트가 독립 심사한다. "제작자는 자기 산출물에 확증 편향이 있으니, 첫 검수를 사용자에게 넘기지 마라"는 규율.

5디렉토리 구조 해부

"문서(references)"·"코드(demos·template)"·"자산(assets·gallery)"을 나눠 읽기

구조를 보면 저자의 규율이 보인다. AI가 읽을 지식(references/), 그 지식을 구현한 코드(demos/·template/·assets/lib/), 영상의 원재료(assets/audio/·gallery/)를 뚜렷이 분리했다. 진입점은 언제나 SKILL.md 하나다.

video-shotcraft/ ├── SKILL.md ← ★ 에이전트 진입점 + 핵심 규칙 9조 + 라우팅 표 ├── README.md / _CN / _JA ← 사람용 소개(영·중·일 3개 국어) ├── .claude-plugin/plugin.json ← 플러그인 매니페스트(name·version·skills:"./") ├── agents/openai.yaml ← Codex 에이전트 등록 정보 │ ├── references/ ← ★★ 지식 계층(AI가 읽는 방법론) │ ├── shots/ ← 샷 레시피 카드 106장 (*.md) │ ├── sequences/ ← 전체 영상 골격 패턴 │ ├── pipeline.md ← 8단계 자율 창작 파이프라인 │ ├── guided-free-creation.md ← 공동 창작(단계별 확인) 절차 │ ├── aesthetic-rules.md ← 시각 QA 체크리스트 │ ├── music-beat-sync.md ← BGM 분석·비트 싱크 방법론 │ ├── sound-design.md ← 사운드 설계 지침 │ └── final-review.md ← 독립 서브에이전트 종검 절차 │ ├── demos/ ← ★ 렌더 계층: 샷 카드별 Remotion 참조 구현 97개 │ ├── ai-stream-response/StreamResponse.tsx (+ backplate 이미지) │ ├── _fixtures/Fixtures.tsx ← 데모용 가짜 UI 장면 │ └── _textures/ ← 일부 데모가 쓰는 실제 페이지 텍스처 │ ├── template/ ← ★ 완성 템플릿 "Ink Press" (바로 렌더 가능) │ ├── package.json ← remotion 4.0.484, react 19.2.7 │ ├── src/index.ts ← Remotion 엔트리(composition 등록) │ ├── src/aifl/Main.tsx ← 10컷을 잇는 메인 타임라인 │ ├── src/aifl/live/*.tsx ← SceneOpen/Papers/Detail/Wbr/FlyIn/Outro (씬별) │ ├── src/aifl/live-layout.json ← 페이지 요소 좌표표 │ └── public/textures/live/*.png ← 캡처된 실제 페이지 텍스처 2배 │ ├── assets/ │ ├── lib/ ← 복사해 쓰는 컴포넌트 8종 │ │ ├── PageCam.tsx ← ★ 2.5D 페이지 카메라(모든 "실제 페이지" 컷의 지반) │ │ ├── DigitRoll / FlashCut / Caption / FlatPanel / VerticalTicker │ │ └── helpers/ (rand·shake·camera·motion) ← 시드 난수·흔들림·카메라 │ ├── scripts/capture-template.mjs ← Playwright 페이지 캡처(상단 CONFIG만 수정) │ └── audio/ ← 효과음 40+종 + bgm/ + ATTRIBUTION.md(Mixkit) │ └── gallery/ ← 정적 갤러리(161 프리뷰) + api/library.json + sync-from-cards.py

구조가 말하는 이야기는 분명하다. 진짜 무게중심은 references/shots/의 106장 카드와 demos/의 튜닝된 구현에 있다. 카드가 "무엇을·왜"라면 데모가 "어떻게"이고, 둘을 짝지어 읽는 것이 이 도구를 쓰는 핵심 동작이다. template/은 그 조합의 완결된 실증이고, assets/lib/는 어느 프로젝트에나 복사해 재사용할 수 있는 부품 창고다.

TERM
비트 싱크 (beat sync) · beatF(n)
강한 리듬의 BGM에 맞춰 모든 전환과 동효를 박자에 정확히 얹는 기법. video-shotcraft는 음악이 정해지면 작업 전에 librosa(파이썬 오디오 분석)로 실제 BPM과 위상을 격자 피팅으로 구하고, 밴드패스로 드럼 강박을 찾는다. 그다음 타임라인을 절대 프레임이 아니라 박자 번호 함수 beatF(n)으로 적어, "n번째 박자에 이 컷"이라고 배치한다. 렌더 후에는 완성 영상에서 오디오를 다시 뽑아 컷 지점 오차가 3프레임 이하인지 역검한다. 감이 아니라 측정으로 박자를 맞춘다.

6학습 포인트

이 레포 하나로 배우는 것 — 에이전트 스킬 설계 + Remotion 코드 영상 + 모션 디자인 원리

배울 것 ① — "좋은 에이전트 스킬"은 어떻게 쓰는가

이 저장소는 잘 설계된 SKILL.md의 교과서다. 모드 판별로 시작하고, "언제 어느 문서를 읽나"를 표로 라우팅하며, 애매할 때만 질문하고, 확증 편향을 피하려 독립 검수를 강제한다. AI에게 복잡한 다단계 작업을 안정적으로 위임하려면 지시를 어떻게 구조화해야 하는지를 실물로 배운다. 자기만의 스킬을 만들려는 사람에게 최고의 참고 사례다.

배울 것 ② — Remotion으로 "코드가 곧 영상"

demos/의 TSX들은 Remotion 입문 실전 예제다. useCurrentFrame()으로 시간을 읽고, interpolate(frame, [입력구간], [출력값], {easing})으로 애니메이션을 만들고, <Sequence>로 컷을 잇고, <Audio>로 효과음을 프레임에 고정한다. "영상 편집을 코드로 한다"는 패러다임을 가장 실전적인 예제로 익힐 수 있다.

배울 것 ③ — 2.5D 카메라로 평면에 깊이 주기

PageCam.tsxCSS 3D 변환(perspective·rotateX/Y)과 키프레임 보간만으로 카메라 워크를 만드는 법을 보여준다. 무거운 3D 엔진 없이 스크린샷 한 장을 영화적으로 유영시키는 이 기법은, 제품 데모·설명 영상 어디에나 응용된다. "3D 필드가 없으면 평평한 팬/줌으로 자동 강등"되는 우아한 점진적 복잡도 설계도 함께 배운다.

배울 것 ④ — 결정적(재현 가능) 애니메이션

helpers/rand.ts시드 기반 의사난수(mulberry32)는 게임·시뮬레이션·영상 어디서나 중요한 패턴이다. "왜 Math.random()을 쓰면 안 되나"를 실제 렌더 파이프라인의 맥락에서 이해하면, 재현 가능성이 왜 정확성 요건인지가 몸에 남는다.

배울 것 ⑤ — 모션 디자인의 "문법"

106장의 카드는 그 자체로 모션 디자인 강의다. "한 컷에 하나의 동효만", "완료 후 최소 15프레임 정지(호흡)", "브랜드→동효 파라미터 추론표(에너지 축·톤 축)", "물리 은유로 가속도 만들기(카드 발기)", "riser→impact→sparkle 사운드 구문". 디자이너가 아니어도 좋은 움직임과 나쁜 움직임을 가르는 기준을 언어로 배운다.

배울 것 ⑥ — librosa 기반 비트 싱크

music-beat-sync.md는 오디오 신호에서 BPM·위상·드럼 강박을 추출하고, 그걸 영상 타임라인에 매핑한 뒤 렌더 결과로 역검하는 완결된 워크플로다. 음악 시각화·리듬 게임·영상 자동화에 관심 있다면 "측정→배치→검증" 루프의 좋은 본보기다.

주의
만능이 아니다 — 이 스킬이 아닌 것

이건 버튼 하나로 영상이 나오는 SaaS가 아니다. Node 환경, Remotion, 헤드리스 브라우저(Playwright), 필요 시 ffmpeg·librosa를 다룰 수 있는 유능한 코딩 에이전트가 전제다. Remotion은 자체 라이선스가 있어(개인·소규모 팀 무료, 기업은 유료일 수 있음) 상업 사용 시 확인이 필요하다. 번들된 제품 스크린샷은 데모용이라 발행 전 반드시 본인 제품 것으로 교체하고, 고객·개인·내부 데이터가 노출되지 않도록 공개 전에 익명화·동결해야 한다. 완전한 자율 창작 품질은 에이전트의 역량과 제품 소재의 상태에 크게 좌우된다.

7시스템/실행 요구사항

"스킬 설치"와 "영상 렌더"에 필요한 것
항목요구사항
대상 에이전트Claude Code · Codex(또는 유사 코딩 에이전트) — SKILL.md를 읽고 코드를 실행할 수 있어야 함
스킬 설치npx skills add Vincentwei1021/video-shotcraft 또는 클론 후 ~/.claude/skills/·~/.codex/skills/에 심볼릭 링크. 플러그인으로도 등록 가능
렌더 런타임Node.js + Remotion 4.0.484 · React 19 · TypeScript. 템플릿은 npm install && npx remotion render
페이지 캡처헤드리스 브라우저(Playwright/Puppeteer) — 실제 제품 페이지를 2배 텍스처 + layout.json으로
3D 컷(선택)일부 컴포넌트(FlatPanel·camera 헬퍼)는 three + @react-three/fiber + @remotion/three
비트 싱크(선택)BGM을 쓸 때 Python + librosa로 BPM 분석. ffmpeg로 프레임 추출·역검
갤러리 보기cd gallery && python3 -m http.server 4178 후 브라우저로
라이선스저장소 Apache-2.0. 단 렌더 엔진 Remotion은 별도 라이선스(기업 유료 가능), 오디오는 Mixkit 무료 상업 라이선스

주목할 점은 "비용의 위치"다. 스킬 자체는 문서와 소스라 가볍지만, 진짜 부하는 에이전트가 페이지를 캡처하고, Remotion으로 수백 프레임을 렌더하고, 매 컷을 정지 프레임으로 자가 검수하는 반복 루프에서 나온다. 그래서 파이프라인이 "방향을 스타일프레임(정적 HTML)에서 먼저 잠그고", "컷별로 still만 뽑아 빠르게 확인"하도록 짜여 있다 — 비싼 전체 렌더를 최대한 아끼는 구조다. 방법론과 실행 비용이 한 몸으로 설계돼 있다.

8직접 해볼 수 있는 실습 과제

난이도별 5개 — 읽지만 말고 직접 영상을 뽑아 보기
난이도 ★ · 입문

1. 갤러리에서 마음에 드는 샷 3개 골라보기

온라인 갤러리를 열어 161개 프리뷰를 훑고, 검색·필터로 마음에 드는 움직임 3개의 카드 이름을 복사한다(예: deck-deal-flyin, page-waterfall-wall). 각각이 "무엇을 표현하려는 컷"인지 자기 말로 한 줄씩 적어본다. 모션 어휘를 눈으로 익히는 첫 걸음.

난이도 ★★ · 초급

2. Ink Press 템플릿을 그대로 렌더해 보기

git clonecd template && npm install && npx remotion render src/index.ts AiflPromo out/promo.mp4를 실행해 36.2초 완성 영상을 직접 뽑는다. npx remotion studio로 스튜디오를 열어 타임라인을 스크럽하며 어떤 컷이 언제 나오는지 관찰. "코드가 영상이 되는" 과정을 눈으로 확인하는 게 목표.

난이도 ★★★ · 중급

3. 데모 하나 열어 파라미터 하나 바꿔보기

demos/ai-stream-response/StreamResponse.tsx를 스튜디오에 올리고, ROW_CUES 배열 간격이나 Easing.bezier 계수를 바꿔 증거행이 유입되는 리듬이 어떻게 달라지는지 본다. 카드의 "함정"(같은 프레임에 떨어지면 정적 리스트처럼 보임)을 일부러 어겨 보며 파라미터가 인상에 미치는 영향을 체감한다.

난이도 ★★★★ · 중상급

4. 내 웹사이트를 캡처해 PageCam으로 유영시키기

assets/scripts/capture-template.mjs의 상단 CONFIG(BASE URL·라우트·셀렉터)를 자기 사이트로 바꿔 실제 페이지를 2배 텍스처로 캡처한다. 그 이미지를 PageCam에 넣고 CamKey 두세 개로 "히어로 → 특정 기능 카드"로 밀고 들어가는 2.5D 카메라 워크 한 컷을 만든다. 실제 페이지가 영상 소재가 되는 핵심 경로를 손으로 겪는다.

난이도 ★★★★★ · 고급

5. 에이전트에게 자율 창작으로 홍보 영상 한 편 맡기기

스킬을 설치한 Claude Code/Codex에 자기 프로젝트를 가리키며 "video-shotcraft로 자율 창작 모드로 홍보 영상 만들어줘"라고 시킨다. 에이전트가 8단계 파이프라인(제품 점검→스타일프레임→샷 매핑→분경→캡처→구현→사운드→종검)을 어떻게 밟는지 지켜보고, 스타일프레임·분경 단계에서 어떤 판단을 기록하는지 읽어본다. 이 스킬의 진가를 온전히 경험하는 과제.

9관련 기술 심화 학습 로드맵

video-shotcraft를 완전히 소화하기 위한 4주 코스
주차주제학습 내용
1주차Remotion 기초useCurrentFrame·interpolate·Easing·<Sequence>·<Audio> / composition 등록·렌더·still. 도구: Remotion 공식 문서 + demos/ 데모 정독
2주차2.5D 카메라 & CSS 3Dperspective·rotateX/Y/Z·키프레임 보간 / PageCam.tsx 해부 / Playwright로 페이지 2배 캡처·layout.json 좌표표 만들기
3주차모션 디자인 원리이징·타이밍·호흡(hold/rest) / 브랜드→동효 파라미터 추론(에너지·톤 2축) / 한 컷 한 동효 / references/shots/ 카드 20장 + aesthetic-rules.md 통독
4주차사운드·비트 싱크 & 에이전트 스킬 설계librosa BPM 분석→beatF(n)→ffmpeg 역검 / SFX 钉帧 / SKILL.md·pipeline.md·final-review.md를 읽고 "좋은 스킬 문서"의 구조 분석

이 순서를 밟으면 video-shotcraft는 단순한 "AI 영상 도구"가 아니라 Remotion 코드 영상·2.5D 카메라·모션 디자인 방법론·에이전트 스킬 설계를 잇는 살아있는 교과서가 된다. 각 주차 개념이 정확히 어느 카드·어느 데모 소스에 구현돼 있어, "이론 → 실제 코드" 왕복 학습이 가능하다.

10핵심 키워드 사전

이 레포를 읽을 때 걸려 넘어지는 용어를 한 번에
용어의미
에이전트 스킬AI 코딩 에이전트가 읽는 "지침 + 자원" 패키지. 진입점은 SKILL.md
RemotionReact로 영상을 만드는 프레임워크. 프레임마다 컴포넌트를 그려 mp4로 렌더
샷 레시피 카드한 컷의 의도·에너지·시간·파라미터·함정·참조 구현을 담은 레시피 문서
참조 구현(demo)카드의 파라미터가 실제 튜닝된 TSX 코드. "진짜 값"의 출처
PageCam / 2.5D 카메라평면 스크린샷을 3D 평면처럼 기울이고 밀며 카메라 워크를 주는 컴포넌트
Ink Press내장된 검수 완료 완성 템플릿(36.2초·10컷·페이퍼-잉크-앰버)
useCurrentFrameRemotion 훅. 현재 프레임 번호를 돌려줌(애니메이션의 시간축)
interpolate프레임 구간을 값으로 보간 매핑(예: 42~54프레임 → opacity 0→1)
이징(easing)움직임의 가속·감속 곡선. Easing.bezier(...)로 지정
hold / rest(호흡)핵심 정보가 낙정된 뒤 일부러 두는 정지 시간. "느리게가 항상 옳았다"
결정적 렌더링같은 입력 → 항상 같은 프레임. Math.random() 금지, 시드 난수
mulberry32가볍고 시드 고정 가능한 의사난수 생성기(재현 가능성 확보)
비트 싱크 / beatF(n)BGM 박자에 컷을 얹기. librosa로 BPM 분석 후 박자 함수로 배치
librosa파이썬 오디오 분석 라이브러리. BPM·위상·드럼 강박 추출에 사용
钉帧(딩전) / SFX 핀효과음을 특정 프레임에 고정(화면이 잠긴 뒤 소리 위치 확정)
스타일프레임(styleframe)영상 렌더 전에 정적 이미지로 색·폰트·톤을 먼저 확정하는 산출물
분경(스토리보드)컷 순서·시간·화면·자막·전환·SFX를 적은 제작 설계표
독립 종검(final review)납품 전 깨끗한 컨텍스트의 서브에이전트가 하는 최종 심사
AI 슬롭(slop)AI가 대충 만들어 어색하고 티 나는 결과물. 이 스킬이 피하려는 대상
graceful degradation3D 필드가 없으면 평평한 팬/줌으로 자동 강등(PageCam의 설계)
프로그레시브 인핸스먼트싼 확정물(스타일프레임)로 방향을 먼저 잠그는 파이프라인 철학

11참고 링크

원문으로 더 파고들기