MotionKit은(는) 무엇을 하나요?
킷 루트: 이 스킬이 위치한 폴더의 상위 폴더($KIT; 스킬이 심링크된 경우 링크 해결 — 예: ~/.claude/skills/motionkit → <clone>/skill, 따라서 $KIT = <clone>). 사용자가 선별한 60개 참조 비디오에서 추출된 지침입니다. 일반 모션 기본값 대신 이 지침을 따르세요.
필수 사항 (사용자의 고정 선호도)
- 갑작스러운 컷 없음. 모든 장면 전환은 전환점 양쪽에서 캐리어에 의해 수행됩니다(
$KIT/grammar/01-continuity.md). 최대 1/3의 전환만 하드 컷일 수 있으며, 강한 비트에서만 허용됩니다. - 리퀴드, 유려함, 둥글게. 긴 꼬리의 이즈아웃, 접촉 시 스쿼시/스트레치, 모양 변경 전 재질 변화, 블러를 접착제로 사용(
02-motion-easing.md). - 음악을 생성하거나 합성하지 마세요. 사용자의 트랙을 사용하세요. 제공된 트랙이 없으면 요청하세요. 킷에는 음악이 포함되어 있지 않습니다.
- 카메라는 콘텐츠에 따라 결정(라운드 3–4): 다양한 경로 계획(동일 방향 연속 사용 금지: L/R 트럭킹, 위/아래 페데스탈, 대각선, 푸시, 풀, 홀드) 및 카메라 비트와 요소 비트를 번갈아 배치하여 정지 카메라 아래에서 정교한 요소가 상호작용하도록 하고, 이벤트를 음악에 동기화(
sync_check.py리프트 ≥ ×1.35; 앰비언트 트랙은beatSync(), 리드미컬한 트랙은 비트 그리드)하세요. 텍스트 중심 영화 → 대상어를 통해 글라이드(스플라인e:"glide", 영역 간 벨 이즈 — 단어별 홉 금지)하는 여행용 팔로우캠을 사용하고, 요소 중심 영화 → 동기 부여된 시드 이동(camSeed,seed)만 있는 거의 고정된 카메라를 사용하세요 — 자체 목적의 이동 금지, 반복 패턴 금지. 텍스트 영화에도 적용되는 이전 규칙: (라운드 2: "그냥 관점일 뿐, 카메라는 움직이지 않음"): 프레임보다 더 큰 세계에서 활성 단어/주인공을 팔로우하는 팔로우캠, 단일 개체 스토리의 경우 스테이션 간 캐리어 이동, 항상 시차 참조 레이어 유지($KIT/grammar/08-camera.md§ v3,$KIT/research/camera-notes.md, 프리미티브 §19–20). 또한 (사용자가 이를 "매우 매우 매우 심각한 결함"이라고 불렀습니다): 모든 영화를camera-rig.js를 통해 보이는 3D 세계로 구축하세요. 카메라는 프레임의 ≥ 65% 동안 움직여야 합니다(참조: 중앙값 77%,research/camera_motion.py로 측정). 캡션은 세계를 따라 움직이며, 머무름도 계속 움직이고, 머무름-스위프 리듬을 유지하며, ≥ 3개의 깊이 레이어와 시차, 심도, 핸드헬드 드리프트, 스위프 시 모션 블러를 적용하세요($KIT/grammar/08-camera.md). - 폴리시 바 (
$KIT/grammar/09-polish-bar.md): 타이트한 글로우만 사용(헤일로 금지, 글로우 요소 크기 조절 금지, 대형 SVG 블러 필터 금지 — 그라디언트 + 그레인 사용). 컨테이너 모프는 SVG 지오메트리이므로 모서리가 모든 프레임에서 둥글게 유지됩니다(클립-패스 노출 금지). 텍스트가 있는 UI는 깊이/소프트 포커스에서 나타나며 — 스케일 팝업 금지, 기울어진 스티커 레이아웃 금지. 모든 평면 객체에는 셰이드 + 림 + 접촉 그림자가 적용됩니다. - 프로페셔널 요소 및 폰트:
$KIT/elements/에서 UI/3D 조각 구축 (elements/showcase/및research/element-notes.md참조).$KIT/fonts/FONTS.md에서 타입 선택 — 일반 기본값 절대 사용 금지. - 프로페셔널 마감: 줄당 하나의 악센트, 이탤릭-세리프 또는 굵기 점프 강조, 모든 프레임에는 ≤ 3개의 초점 요소, 영화 전반에 걸친 지속적인 상수(캔버스, 제목, 수평선 또는 안개)가 있어야 합니다.
- 달리 명시되지 않으면 릴 우선: 1080×1920, 텍스트는 168–1330 px 영역, 줄당 ≤ 5단어, 28px 미만 금지, 프레임 0은 후크(검은색 금지, 로고 금지).
- 토큰 효율적: 챕터당 하나의 씬 파일(또는 연속 모프 전체에 대해 하나), 상태 변경만 스냅샷.
워크플로우
- 브리프 (짧게). 주제/브랜드, 메시지, 형식, 길이, 음악 파일. 누락된 것만 질문; 한 라운드.
- 스타일 선택
$KIT/styles/STYLES.md(하단 표: 브리프 → 스타일 매핑). 해당 카드 전체 읽기;$KIT/research/video-notes/에서 참조 노트 1–2개 열어 세부 확인. - 음악 분석:
npx hyperframes audio <track> --only kind,bpm,beats,downbeats,sections,onsets --json. 리드미컬 → 비트 그리드 사용(beat(n),bar(k), 프리미티브 §1). 앰비언트 → 섹션 경계에서 챕터 나누기, 가장 강한 온셋에서 히어로 이벤트(--threshold 0.3). - 하나의 테이블로 계획: 챕터 × (시간 윈도우, 다음 챕터로의 캐리어, 객체 상태, 캡션, 카메라 이동). 모든 전환점에 대해 캐리어와 카메라 이동 이름 지정; 불가능하면 전환 재설계. 챕터를 하나의 3D 세계 내 장소로 배치.
- HyperFrames로 구축 (먼저
/hyperframes로드하여 계약 확인). 가장 가까운 샘플에서 시작 (v2 = 카메라 포함):$KIT/samples/a-ember-lumen(S1),b-morph-nook(S2),c-neon-aura(S3),d-saas-tally(S4) —cp -R로 새 프로젝트에 복사 후 재작성.$KIT/primitives/PRIMITIVES.md블록 사용. 루트data-composition-variables에 팔레트 + 폰트 배치. - 검증:
npx hyperframes check --json 2>/dev/null(stderr는 시끄러움) → 오류 수정, 경고 평가 →npx hyperframes snapshot --at <모든 상태 변경 + 중간 스위프> -o .snap/x→ 콘택트 시트 읽기 → 수정 (모서리와 글로우 확대:snapshot --zoom).07-engineering-pitfalls.md및09-polish-bar.md체크리스트 실행. 렌더 후 카메라 모션 측정:python3 $KIT/research/camera_motion.py <mp4-디렉토리> out.json—moving_frac≥ 0.65 목표 (참조 하위 사분위수; 중앙값 0.77). - 렌더:
npx hyperframes render -o <out>.mp4. 사용자가 검토할 때 최종 렌더 전에 Studio 미리보기 열기.
빠른 참조
- 캐리어 (영화당 3–5개 선택): 요소-세계-되기 · 줌-스루 · 쉐입 모프 · 가이드 오브젝트 · 하나의 카드 여러 상태 · 아이리스 · 컬러 플러드 · 블러 휩 · 연속 세계 카메라 · 앵커드 워드 · 쉐입 라임 · 캐리-어크로스 · 파티클 디졸브 · 미디엄 와이프.
- 이즈 팔레트: 도착
expo.out/power4.out0.5–0.9 초 · 퇴장power3.in(진입의 40–50%) · 카메라/모프power2.inOut· 프리미엄 스프링back.out(1.4)· 선형은 오비트/회전/진행에만. - 타입: 단어별 블러-인 (트랜슬레이트 없음) · 회색→잉크 따라 읽기 · 슬롯머신 단어 · 하이라이트 필 키워드 · 이탤릭-세리프 악센트 · 문장 내 인라인 아이콘.
- 스토리 형태: 문제(어두움)→공개→특징→CTA · 혼돈→질서 · 하나의 주인공 여러 상태 · 프롬프트→결과 · 앵커드 워드가 있는 매니페스토 · 마이크로 루프.
킷 확장하기
사용자가 새 참조 비디오를 추가할 때: 콘택트 시트 생성(타임스탬프 포함, 0.33–1 초 샘플링) + 전환 시 10fps 스트립, 비디오당 노트를 research/video-notes/에 작성, 행을 research/INDEX.md에 추가, 새 패턴을 문법/스타일 파일에 접목. 빌드에서 새 버그나 프리미티브가 발견되면 07-engineering-pitfalls.md / PRIMITIVES.md에 추가.