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 소스 직접 분석)
가장 먼저 오해를 풀어야 한다. video-shotcraft는 당신이 여는 앱이 아니다. 클릭할 UI도, 타임라인 편집기도 없다. 이것은 AI 코딩 에이전트가 읽는 문서와 코드의 묶음이다. 당신이 Claude Code에게 "이 스킬로 내 제품 홍보 영상 만들어줘"라고 말하면, 에이전트가 저장소 안의 SKILL.md를 읽고, 거기 적힌 규칙과 레시피를 따라 스스로 Remotion 영상 프로젝트 코드를 짜서 .mp4를 뽑아낸다.
그냥 "영상 만들어줘"는 요리 초보에게 냉장고 문만 열어주는 것과 같다 — 뭔가 나오긴 하지만 대개 어색하다. video-shotcraft는 "106장의 검증된 레시피 카드 + 미리 손질해 둔 재료(컴포넌트·효과음) + 8단계 조리 순서표"를 통째로 건네는 것이다. 에이전트는 즉흥으로 요리하는 대신 "이미 맛이 검증된 레시피"를 골라 재료에 맞게 변형한다. 그래서 결과가 "AI가 대충 만든 것"이 아니라 전문 스튜디오가 만든 것처럼 나온다.
구체적으로 video-shotcraft가 담고 있는 것은 네 덩어리다. ① 샷 레시피 카드 106장(references/shots/) — 각 카드는 "이 컷은 무엇을 표현하나, 에너지는 어느 정도, 몇 초, 어떤 이징(easing)·타이밍을 쓰나, 흔한 함정은 무엇인가"를 적은 한 컷의 완결된 사용 설명서다. ② Remotion 구현 소스 97개(demos/) — 각 카드의 파라미터가 실제로 튜닝된 TSX 코드. ③ 완성 템플릿 "Ink Press"(template/) — 바로 렌더되는 36.2초짜리 검수 완료 홍보 영상. ④ 복사해 쓰는 자산(assets/) — 2.5D 페이지 카메라·자막·효과음 라이브러리.
SKILL.md라는 진입점 문서에 "언제 이 스킬을 쓰고, 어떤 순서로, 어떤 파일을 읽어 무엇을 만들라"가 적혀 있다. 에이전트는 이 문서를 컨텍스트에 로드한 뒤 그 규칙대로 움직인다. video-shotcraft는 .claude/skills/ 또는 .codex/skills/에 심볼릭 링크로 설치되며, .claude-plugin/plugin.json도 있어 플러그인 형태로도 배포된다. 즉 "코드 라이브러리"가 아니라 "AI가 따를 작업 절차서"가 이 저장소의 본체다.
이름은 video-shotcraft지만, 진짜 핵심어는 "검증된 모션 레시피를 에이전트에게 위임(delegate)한다"이다. 사람이 영상 편집기를 만지는 게 아니라, 사람이 방법론을 문서로 굳혀 두고 → AI가 그 문서를 읽어 실행한다는 구도가 이 도구의 정체성이자, 이 문서에서 배울 것을 관통하는 열쇠다.
2026년 개발자 생태계에는 세 가지 흐름이 있다. ① Claude Code·Codex를 확장하는 "에이전트 스킬" 생태계의 폭발(트렌딩에 skills 관련 레포가 줄줄이 오른다), ② 좋은 제품 홍보 영상은 외주 스튜디오에 수백만 원이 드는데 스타트업에는 그 예산이 없다는 현실, ③ AI가 만든 결과물이 "AI 슬롭(slop)"처럼 어색해 보이는 것에 대한 반발. video-shotcraft가 트렌딩에 오른 이유는 이 세 흐름이 정확히 겹치는 지점에 서 있기 때문이다.
대부분의 AI 영상 도구는 프롬프트 한 줄 → 결과물이라 품질을 통제할 수 없다. video-shotcraft의 급소는 전문 모션 디자이너가 축적한 판단을 카드로 굳혀 에이전트에게 준다는 것이다. 각 샷 카드에는 "정상 속도에서 결론이 먼저 읽혀야 한다", "완료 후 최소 15프레임은 정지시켜라", "역사적 피드백은 전부 '더 느리게'를 가리켰다" 같은 실전에서 얻은 규칙이 파라미터 표와 함께 들어 있다. AI가 즉흥으로 만드는 게 아니라 검증된 레시피를 실행한다.
이 스킬의 하드 규칙 하나: 실제 제품 페이지를 표현할 때는 반드시 진짜 스크린샷을 쓴다. 로컬 dev 서버를 띄우고, 헤드리스 브라우저로 전체 페이지를 2배 해상도 텍스처 + 요소별 추출 + 좌표표(layout.json)로 캡처한 뒤, PageCam이라는 2.5D 카메라 컴포넌트로 그 페이지 위를 밀고·당기고·기울인다. "가짜 UI를 손으로 그리는" 것은 비복제 장면(추상 오프닝·브랜드 컷)에만 허용되고, 그마저 출판급 품질이 안 나오면 스크린샷 경로로 돌아가라고 못박는다.
useCurrentFrame()이 돌려주는 프레임 번호에 따라 React 컴포넌트로 그린 뒤, 브라우저를 헤드리스로 돌려 프레임을 한 장씩 렌더링하고 ffmpeg로 .mp4로 합친다. HTML/CSS/JS로 만들 수 있는 모든 것이 곧 영상 소재가 된다. PageCam이 이걸 담당하며, "실제 페이지" 모든 컷의 지반이다.
샷 카드가 아무리 많아도 이름만으로는 뭘 고를지 모른다. video-shotcraft는 온라인 갤러리에 161개 모션 프리뷰를 올려, 사용자가 실제 움직임을 보고 검색·필터·비교한 뒤 원하는 컷 이름을 복사해서 에이전트에게 건네게 한다. "이 효과를 원해"를 말이 아니라 실물 샘플로 지목할 수 있다. 갤러리 자체는 python3 -m http.server로 로컬에서도 열 수 있는 정적 사이트다.
처음부터 창작하는 건 어렵다. 그래서 검수 완료된 Ink Press 템플릿(36.2초·10컷·페이퍼-잉크-앰버 스타일)을 통째로 넣어, "내 제품 스크린샷·문구·브랜드로 갈아끼우기만" 하면 같은 품질의 영상이 나오게 했다. README는 이걸 "가장 빠르고 신뢰할 수 있는 완성 경로"라고 부른다. 창작 자유도가 필요하면 자율 창작 모드로, 관여하고 싶으면 공동 창작 모드로 넘어간다.
방법론의 깊이(106장 실전 카드), 재료의 진짜성(가짜 UI가 아닌 실제 페이지 캡처), 선택의 직관성(눈으로 보는 갤러리), 시작의 빠름(검수된 템플릿), 그리고 결과의 재현성(결정적 렌더링). 무엇보다 "AI에게 시켰더니 정말 스튜디오급이 나오네"라는 충격이 트렌딩의 진짜 동력이다. 심지어 저장소의 갤러리 인트로 영상 자체도 이 스킬로 만들어졌다.
video-shotcraft 저장소를 처음 열면 헷갈린다. 영상 소프트웨어인가, 그냥 마크다운 문서 모음인가? 답은 "둘이 한 몸"이다. 이 저장소는 (A) AI가 읽는 방법론 문서, (B) 그 방법론을 실제로 구현한 Remotion/React 코드, (C) 영상에 쓰이는 효과음·캡처 스크립트 자산이 함께 산다. 이 셋을 구분하는 순간 전체 그림이 선명해진다.
SKILL.md + references/)코드가 아니라 마크다운으로 쓰인 "제작 두뇌"다. 에이전트가 읽고 판단하는 규칙·레시피가 전부 여기 있다.
| 파일/폴더 | 내용 | 역할 |
|---|---|---|
SKILL.md | 진입점 + 핵심 규칙 9조 | 모드 판별, "언제 어느 문서를 읽나" 라우팅 표 |
references/shots/ | 샷 레시피 카드 106장 | 각 컷의 의도·동효 핵심·파라미터 표·소리·함정·참조 구현 |
references/sequences/ | 재사용 가능한 전체 영상 구조 | "전체 골격 먼저 채우기"용 시퀀스 패턴 |
references/pipeline.md | 8단계 제작 파이프라인 | 자율 창작의 아이디어→완성 전 과정 |
guided-free-creation.md | 공동 창작 절차 | 사용자 확인 지점이 있는 협업 흐름 |
aesthetic-rules.md | 시각 QA 기준 | 매 컷 자가 검수 체크리스트 |
music-beat-sync.md | BGM 분석·비트 싱크 | librosa로 BPM 추출→beatF(n)로 컷 배치 |
sound-design.md / final-review.md | 사운드 설계 / 독립 종검 | 효과음 언어 / 깨끗한 서브에이전트의 최종 심사 |
references/shots/의 카드 한 장은 요리 레시피 카드와 똑같다 — "무슨 요리인가(의도), 얼마나 맵게(에너지), 몇 분(시간), 불 세기와 순서(파라미터 표), 자주 태우는 지점(함정), 참고할 실제 조리 영상(참조 구현)". 에이전트는 냉장고를 보고 즉흥 요리하는 대신, 이 카드를 골라 재료(당신의 제품)에 맞게 간을 조절한다. "감으로 새로 짜는 것 = 축적된 튜닝을 전부 버리는 것"이라고 스킬이 직접 경고한다.
demos/ + template/ + assets/lib/)실제로 영상을 그리는 Remotion/React/TypeScript 코드다. 카드가 "레시피"라면 이건 "이미 튜닝된 실물 조리 과정"이다.
| 계층 | 기술 | 역할 |
|---|---|---|
| 렌더 프레임워크 | Remotion 4.0.484 | React 컴포넌트를 프레임 단위 영상으로 렌더 |
| UI 런타임 | React 19.2 + TypeScript 6 | 모든 컷·컴포넌트를 JSX로 구성 |
| 참조 구현 | demos/ 97개 TSX | 각 샷 카드의 이징·타이밍이 실측 튜닝된 데모 |
| 완성 템플릿 | template/ (Ink Press) | npx remotion render로 바로 뽑는 36.2초 홍보 영상 |
| 3D 컷 (선택) | three + @react-three/fiber + @remotion/three | FlatPanel·카메라 헬퍼 등 일부만 의존 |
| 재사용 컴포넌트 | assets/lib/ 8종 | PageCam·DigitRoll·FlashCut·Caption·VerticalTicker 등 |
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.json | 161개 프리뷰 검색·필터·카드명 복사 |
| 에이전트 매니페스트 | agents/openai.yaml · .claude-plugin/plugin.json | Codex·Claude 양쪽 등록 정보 |
Date.now()와 Math.random() 사용을 금지하고, 모든 의사난수는 고정 시드(seed) 기반(mulberry32·해시, 시드는 index에서 파생)으로 만들라고 못박는다. 이유: Remotion은 프레임을 병렬로·재시도하며 렌더하는데, 난수가 매번 바뀌면 파티클 위치가 프레임마다 튀어 영상이 깨진다. "재현 가능성"은 영상 파이프라인에서 미적 취향이 아니라 정확성 요건이다.
video-shotcraft의 모든 것은 하나의 설계 결정에서 나온다: "무엇을 만들지(의도)"와 "어떻게 만들지(구현)"를 분리하되, 반드시 짝지어 읽게 한다. 샷 카드는 의미와 파라미터의 표를 주고, 실제 튜닝된 진실은 demos/의 데모 소스에 있다. SKILL.md는 "카드만 보고 새로 짜지 말고, 반드시 참조 구현 TSX를 찾아 읽어라"라고 강제한다 — 그래야 조율된 이징·타이밍이 보존되기 때문이다.
references/shots/의 카드는 정확히 같은 골격을 갖는다. 아래는 ai-stream-response(AI 응답이 차오르는 컷) 카드의 구조다.
이 구조가 핵심인 이유: 에이전트는 frontmatter만 훑어(에너지·시간) 컷을 고르고, 선택한 카드는 전문을 읽은 뒤, 참조 구현 TSX를 열어 실제 파라미터를 가져온다. 카드의 "함정" 섹션이 품질을 지키는 안전벨트 역할을 한다 — 예: "행 본문과 상태 아이콘이 같은 프레임에 떨어지면 정적 리스트처럼 보인다, 2~4프레임 지연을 둬라".
가장 재사용 가치가 큰 컴포넌트. 평평한 전체 페이지 스크린샷 한 장을 받아 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 모델은 없다 — 평면 한 장에 원근만 입혀 "카메라가 살아있는 페이지를 훑는" 영화적 착시를 만든다.
demos/ai-stream-response/StreamResponse.tsx를 보면, 카드의 파라미터 표가 어떻게 실제 코드가 되는지 드러난다. Remotion의 interpolate와 Easing.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에 반영 ...
};
SKILL.md의 첫 관문은 모드 판별이다. 완성 홍보 영상에는 서로 섞이지 않는 세 모드가 있고, 에이전트는 사용자가 이미 고른 게 아니면 먼저 최소한의 읽기전용 제품 점검을 한 뒤 세 모드를 제안한다.
자율 창작의 척추. 핵심 철학은 "방향성 논쟁은 첫 Remotion 코드 한 줄을 쓰기 전에 끝내라"이다 — 방향이 틀린 걸 컷 구현 단계에서 발견하면 장면 세트 전체를 폐기해야 하기 때문이다.
① 지식과 구현의 분리 + 강제 결합: "무엇(카드)"과 "어떻게(데모)"를 나눠 두되, "카드만 보고 새로 짜지 말고 반드시 참조 구현을 읽어라"로 결합을 강제한다. 이렇게 하면 방법론은 사람이 읽기 쉽고, 실측 파라미터는 코드에 안전하게 보존된다.
② 저렴한 확정물을 앞에 배치: 스타일프레임(정적 HTML)·분경(표)처럼 싸게 만들고 싸게 폐기할 수 있는 산출물로 방향을 먼저 잠근다. 비싼 영상 렌더는 방향이 확정된 뒤에만. "실수의 비용을 파이프라인 앞으로 당긴다."
③ 검수를 전 과정에 내장 + 독립 종검: 매 컷을 npx remotion still 정지 프레임으로 자가 검수하고, 납품 전 깨끗한 컨텍스트의 서브에이전트가 독립 심사한다. "제작자는 자기 산출물에 확증 편향이 있으니, 첫 검수를 사용자에게 넘기지 마라"는 규율.
구조를 보면 저자의 규율이 보인다. AI가 읽을 지식(references/), 그 지식을 구현한 코드(demos/·template/·assets/lib/), 영상의 원재료(assets/audio/·gallery/)를 뚜렷이 분리했다. 진입점은 언제나 SKILL.md 하나다.
구조가 말하는 이야기는 분명하다. 진짜 무게중심은 references/shots/의 106장 카드와 demos/의 튜닝된 구현에 있다. 카드가 "무엇을·왜"라면 데모가 "어떻게"이고, 둘을 짝지어 읽는 것이 이 도구를 쓰는 핵심 동작이다. template/은 그 조합의 완결된 실증이고, assets/lib/는 어느 프로젝트에나 복사해 재사용할 수 있는 부품 창고다.
beatF(n)librosa(파이썬 오디오 분석)로 실제 BPM과 위상을 격자 피팅으로 구하고, 밴드패스로 드럼 강박을 찾는다. 그다음 타임라인을 절대 프레임이 아니라 박자 번호 함수 beatF(n)으로 적어, "n번째 박자에 이 컷"이라고 배치한다. 렌더 후에는 완성 영상에서 오디오를 다시 뽑아 컷 지점 오차가 3프레임 이하인지 역검한다. 감이 아니라 측정으로 박자를 맞춘다.이 저장소는 잘 설계된 SKILL.md의 교과서다. 모드 판별로 시작하고, "언제 어느 문서를 읽나"를 표로 라우팅하며, 애매할 때만 질문하고, 확증 편향을 피하려 독립 검수를 강제한다. AI에게 복잡한 다단계 작업을 안정적으로 위임하려면 지시를 어떻게 구조화해야 하는지를 실물로 배운다. 자기만의 스킬을 만들려는 사람에게 최고의 참고 사례다.
demos/의 TSX들은 Remotion 입문 실전 예제다. useCurrentFrame()으로 시간을 읽고, interpolate(frame, [입력구간], [출력값], {easing})으로 애니메이션을 만들고, <Sequence>로 컷을 잇고, <Audio>로 효과음을 프레임에 고정한다. "영상 편집을 코드로 한다"는 패러다임을 가장 실전적인 예제로 익힐 수 있다.
PageCam.tsx는 CSS 3D 변환(perspective·rotateX/Y)과 키프레임 보간만으로 카메라 워크를 만드는 법을 보여준다. 무거운 3D 엔진 없이 스크린샷 한 장을 영화적으로 유영시키는 이 기법은, 제품 데모·설명 영상 어디에나 응용된다. "3D 필드가 없으면 평평한 팬/줌으로 자동 강등"되는 우아한 점진적 복잡도 설계도 함께 배운다.
helpers/rand.ts의 시드 기반 의사난수(mulberry32)는 게임·시뮬레이션·영상 어디서나 중요한 패턴이다. "왜 Math.random()을 쓰면 안 되나"를 실제 렌더 파이프라인의 맥락에서 이해하면, 재현 가능성이 왜 정확성 요건인지가 몸에 남는다.
106장의 카드는 그 자체로 모션 디자인 강의다. "한 컷에 하나의 동효만", "완료 후 최소 15프레임 정지(호흡)", "브랜드→동효 파라미터 추론표(에너지 축·톤 축)", "물리 은유로 가속도 만들기(카드 발기)", "riser→impact→sparkle 사운드 구문". 디자이너가 아니어도 좋은 움직임과 나쁜 움직임을 가르는 기준을 언어로 배운다.
music-beat-sync.md는 오디오 신호에서 BPM·위상·드럼 강박을 추출하고, 그걸 영상 타임라인에 매핑한 뒤 렌더 결과로 역검하는 완결된 워크플로다. 음악 시각화·리듬 게임·영상 자동화에 관심 있다면 "측정→배치→검증" 루프의 좋은 본보기다.
이건 버튼 하나로 영상이 나오는 SaaS가 아니다. Node 환경, Remotion, 헤드리스 브라우저(Playwright), 필요 시 ffmpeg·librosa를 다룰 수 있는 유능한 코딩 에이전트가 전제다. Remotion은 자체 라이선스가 있어(개인·소규모 팀 무료, 기업은 유료일 수 있음) 상업 사용 시 확인이 필요하다. 번들된 제품 스크린샷은 데모용이라 발행 전 반드시 본인 제품 것으로 교체하고, 고객·개인·내부 데이터가 노출되지 않도록 공개 전에 익명화·동결해야 한다. 완전한 자율 창작 품질은 에이전트의 역량과 제품 소재의 상태에 크게 좌우된다.
| 항목 | 요구사항 |
|---|---|
| 대상 에이전트 | 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만 뽑아 빠르게 확인"하도록 짜여 있다 — 비싼 전체 렌더를 최대한 아끼는 구조다. 방법론과 실행 비용이 한 몸으로 설계돼 있다.
온라인 갤러리를 열어 161개 프리뷰를 훑고, 검색·필터로 마음에 드는 움직임 3개의 카드 이름을 복사한다(예: deck-deal-flyin, page-waterfall-wall). 각각이 "무엇을 표현하려는 컷"인지 자기 말로 한 줄씩 적어본다. 모션 어휘를 눈으로 익히는 첫 걸음.
git clone 후 cd template && npm install && npx remotion render src/index.ts AiflPromo out/promo.mp4를 실행해 36.2초 완성 영상을 직접 뽑는다. npx remotion studio로 스튜디오를 열어 타임라인을 스크럽하며 어떤 컷이 언제 나오는지 관찰. "코드가 영상이 되는" 과정을 눈으로 확인하는 게 목표.
demos/ai-stream-response/StreamResponse.tsx를 스튜디오에 올리고, ROW_CUES 배열 간격이나 Easing.bezier 계수를 바꿔 증거행이 유입되는 리듬이 어떻게 달라지는지 본다. 카드의 "함정"(같은 프레임에 떨어지면 정적 리스트처럼 보임)을 일부러 어겨 보며 파라미터가 인상에 미치는 영향을 체감한다.
assets/scripts/capture-template.mjs의 상단 CONFIG(BASE URL·라우트·셀렉터)를 자기 사이트로 바꿔 실제 페이지를 2배 텍스처로 캡처한다. 그 이미지를 PageCam에 넣고 CamKey 두세 개로 "히어로 → 특정 기능 카드"로 밀고 들어가는 2.5D 카메라 워크 한 컷을 만든다. 실제 페이지가 영상 소재가 되는 핵심 경로를 손으로 겪는다.
스킬을 설치한 Claude Code/Codex에 자기 프로젝트를 가리키며 "video-shotcraft로 자율 창작 모드로 홍보 영상 만들어줘"라고 시킨다. 에이전트가 8단계 파이프라인(제품 점검→스타일프레임→샷 매핑→분경→캡처→구현→사운드→종검)을 어떻게 밟는지 지켜보고, 스타일프레임·분경 단계에서 어떤 판단을 기록하는지 읽어본다. 이 스킬의 진가를 온전히 경험하는 과제.
| 주차 | 주제 | 학습 내용 |
|---|---|---|
| 1주차 | Remotion 기초 | useCurrentFrame·interpolate·Easing·<Sequence>·<Audio> / composition 등록·렌더·still. 도구: Remotion 공식 문서 + demos/ 데모 정독 |
| 2주차 | 2.5D 카메라 & CSS 3D | perspective·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 카메라·모션 디자인 방법론·에이전트 스킬 설계를 잇는 살아있는 교과서가 된다. 각 주차 개념이 정확히 어느 카드·어느 데모 소스에 구현돼 있어, "이론 → 실제 코드" 왕복 학습이 가능하다.
| 용어 | 의미 |
|---|---|
| 에이전트 스킬 | AI 코딩 에이전트가 읽는 "지침 + 자원" 패키지. 진입점은 SKILL.md |
| Remotion | React로 영상을 만드는 프레임워크. 프레임마다 컴포넌트를 그려 mp4로 렌더 |
| 샷 레시피 카드 | 한 컷의 의도·에너지·시간·파라미터·함정·참조 구현을 담은 레시피 문서 |
| 참조 구현(demo) | 카드의 파라미터가 실제 튜닝된 TSX 코드. "진짜 값"의 출처 |
| PageCam / 2.5D 카메라 | 평면 스크린샷을 3D 평면처럼 기울이고 밀며 카메라 워크를 주는 컴포넌트 |
| Ink Press | 내장된 검수 완료 완성 템플릿(36.2초·10컷·페이퍼-잉크-앰버) |
useCurrentFrame | Remotion 훅. 현재 프레임 번호를 돌려줌(애니메이션의 시간축) |
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 degradation | 3D 필드가 없으면 평평한 팬/줌으로 자동 강등(PageCam의 설계) |
| 프로그레시브 인핸스먼트 | 싼 확정물(스타일프레임)로 방향을 먼저 잠그는 파이프라인 철학 |
npx skills add Vincentwei1021/video-shotcraft 또는 에이전트에게 "이 스킬 설치해줘: (저장소 URL)"cd template && npm install && npx remotion render src/index.ts AiflPromo out/promo.mp4SKILL.md(진입점·규칙 9조) · references/pipeline.md(8단계) · references/shots/(카드 106장) · references/aesthetic-rules.md(QA)assets/lib/PageCam.tsx(2.5D 카메라) · demos/*/*.tsx(참조 구현) · template/src/aifl/Main.tsx(Ink Press 타임라인)