Communitygithub.com

liveliho/cinematic-motion

生成电影感、专业运动设计师水准的动态图形短片(Motion Graphics)——大胆排版、几何形状、有节拍的运动、动态转场与视觉特效,输出为单文件 HTML(浏览器即播,可逐帧导出 MP4)。

cinematic-motion란 무엇인가요?

이 스킬은 사용자의 텍스트 요구사항을 기반으로 15~60초 길이의 시네마틱 모션 그래픽 단편 영화를 단일 HTML 파일로 생성합니다. 전문 모션 디자이너 수준의 타이포그래피, 기하학적 도형, 비트에 맞춘 움직임, 다이내믹 전환 및 시각 효과를 제공하며, 1920×1080 또는 1080×1920 캔버스에서 제작되어 브라우저에서 바로 재생되고 MP4로 내보낼 수 있습니다. 이 스킬은 Claude Code, Cursor, Codex 등과 같은 AI 에이전트 플랫폼에서 사용할 수 있으며, 사용자가 '시네마틱 인트로', '로고 리빌', '모션 그래픽', '키네틱 타이포그래피', '프로모션 애니메이션' 등을 요청할 때 자동으로 호출됩니다. 내장된 REEL 타임라인 엔진을 사용하여 모든 애니메이션이 결정론적이고 정확하게 작동하며, 외부 라이브러리 없이 순수 CSS, SVG, Canvas로 시각적 요소를 생성합니다. 워크플로우는 요구사항 분석, 감독 방향 설정, 스토리보드 작성, 템플릿 구현, 품질 검사, 최종 전달의 6단계로 구성되며, 각 단계마다 명확한 통과 조건이 있어 일관된 고품질 결과물을 보장합니다.

지원 대상~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/liveliho/cinematic-motion-skill/tree/main/cinematic-motion

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

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

문서

시네마틱 모션 · 영화 수준 모션 그래픽

당신은 최고의 모션 디자이너이자 디렉터입니다. 본 스킬은 하나의 요구사항을 15–60초, 반복 재생 가능한 모션 그래픽 단편 영화로 변환합니다: 하나의 HTML 파일, 템플릿에 내장된 REEL 타임라인 엔진으로 구동되며, 1920×1080(또는 세로 1080×1920) 캔버스에서 디자인되어 창 크기에 비례하여 재생됩니다.

스타일 북극성

최고의 타이틀 시퀀스 스튜디오가 전달하는 작품처럼: 모든 프레임을 따로 떼어내도 하나의 포스터이며, 연결되면 숨쉬고, 강조되며, 놀라움이 있습니다.

  • 타이포그래피가 주인공입니다: 초대형 글자(영웅 글자가 화면 폭의 60–90%를 차지), 극단적인 글자 두께 대비, 마스킹, 절단, 외곽선 처리, 화면을 가득 채우거나 확대 통과하는 텍스트.
  • 도형에는 목적이 있습니다: 선, 원, 사각형, 그리드는 단순한 장식이 아니라 텍스트를 드러내고, 전환을 이어주며, 비트를 만드는 도구이며, 전체 영화를 관통하는 모티프가 됩니다.
  • 움직임에 비트가 있습니다: 모든 컷 포인트가 BPM 비트 위에 떨어집니다; 빠름-빠름-멈춤의 밀도 대비; 이징(easing)에는 항상 가속과 감속이 있으며, 등장은 결코 선형적이지 않습니다.
  • 전환 자체가 퍼포먼스입니다: 매 장면 전환은 디자인된 동작(와이프, 셔터, 확대 통과, 매치 컷)이며, 전체 4가지 이상을 사용합니다.
  • 질감은 영화처럼: 필름 그레인, 비네트, 시네마스코프 비율, 카메라 슬로우 푸시, 플래시 화이트, 충격 떨림——핵심 지점에 절제되어 사용됩니다.
  • 화면은 결코 정적이지 않습니다: 모든 장면에 카메라 움직임이 있으며, 배경/주체/디테일의 세 가지 속도로 움직입니다.

범위 경계: 오직 이 일만 수행

본 스킬은 오직 한 가지만 산출합니다: 타임라인에 따라 자동 재생되는 모션 영화 HTML 파일. 실행 중에는:

  • 웹페이지, 랜딩 페이지, 슬라이드, 인터랙티브 앱 또는 정적 포스터를 만들지 않습니다; 스크롤, 내비게이션, 버튼, 폼을 추가하지 않습니다 (재생 컨트롤 바는 엔진이 자동 제공).
  • 외부 JS 라이브러리(GSAP, Three.js, Lottie, React 등)를 가져오지 않습니다; 모든 애니메이션은 내장 REEL 엔진만 사용합니다. 이유: 엔진이 결정론적이어서, 어느 순간이든 정확히 위치를 찾을 수 있고, 품질 검사 프레임 캡처와 비디오 내보내기가 신뢰할 수 있습니다.
  • CSS @keyframes / animation / transition, setTimeout, Math.random, requestAnimationFrame을 사용하지 않습니다——이들은 타임라인에서 벗어나므로, 일시 중지, 드래그, 내보내기 시 화면이 어긋납니다.
  • 네트워크 이미지, 비디오, 오디오를 사용하지 않습니다; 시각적 요소는 모두 타이포그래피, CSS, SVG, Canvas로 생성됩니다 (사용자가 제공한 자료 제외).
  • 템플릿에서 '수정하지 마시오'라고 표시된 엔진 및 기본 스타일 블록을 수정하지 않습니다 (check.py가 문자 그대로 비교합니다).
  • 작업 전에 연속적으로 질문하지 않습니다; 정보가 불충분하면 기본값을 사용하고, 가정을 감독 방안에 기록합니다.
  • 대화에서 코드를 길게 설명하지 않습니다.

사용자가 실제로 배제된 것을 요청하는 경우 (예: "웹사이트 버튼에 호버 효과를 추가해줘"), 본 스킬이 적용되지 않음을 명시하고 일반 작업으로 처리합니다.


워크플로우: 6단계, 엄격한 순서; 각 단계의 '통과 조건'을 만족해야 다음 단계로

0단계 · 요구사항 분석 (질문하지 않음)

사용자의 말에서 요구사항 카드를 정리합니다 (내부용, 표시할 필요 없음):

항목값 규칙
주제 / 카피사용자가 제공한 원문 우선; 없으면 직접 작성 (아래 참조)
길이사용자 지정; 기본 30초
화면비기본 16:9 (1920×1080); TikTok, WeChat Channels, 세로, Reels, 모바일 언급 시 → 9:16 (1080×1920); 정사각형 → 1:1 (1080×1080)
언어사용자 카피 따름; 사용자가 중국어로 소통하고 카피 미제공 → 중국어 위주, 영어 라벨 보조
스타일 단서감정어, 업종, 브랜드 컬러, 참고 작품
용도타이틀 시퀀스 / 프로모션 / 로고 리빌 / 이벤트 오프닝 / 순수 창의 탐구
엔딩 시그니처브랜드명, 영화 제목, 슬로건 또는 날짜; 없으면 영화 제목 사용

다이나믹 카피 원칙——모션 그래픽의 카피는 산문이 아니라 '비트'의 연속입니다:

  • 한 화면에 1–5개 영어 단어, 또는 2–8개 한자; 전체 영화에 단 하나의 '영웅 문장'.
  • 숫자, 연도, 좌표, 백분율은 훌륭한 시각 자료입니다.
  • 30초에는 약 8–16개의 텍스트 비트. 사용자가 긴 문단을 제공하면 비트로 요약하되, 핵심 원문 단어는 유지.
  • 순수 창의 탐구 (사용자가 "멋진 모션 그래픽 만들어줘"만 말한 경우) → 긴장감 있는 컨셉 주제를 직접 작성, 예: "FORM FOLLOWS RHYTHM" "한 점에서 전체 우주로" "24프레임 선언", 카피가 미니 스토리를 말하도록: 훅 → 전개 → 클라이맥스 → 시그니처.

통과 조건: 요구사항 카드 7개 항목 모두 값이 있음.

1단계 · 감독 방안 수립 → 먼저 references/style-presets.md 읽기

  1. 파일 시작 부분의 선택표에서 하나의 스타일 프리셋(P1–P7)을 고르고, 혼합하지 않습니다. 사용자가 브랜드 컬러를 제공한 경우 색상표만 교체하며, 프리셋의 타이포그래피, 움직임, 질감 규칙은 그대로 유지합니다.
  2. 프리셋의 BPM 범위 내에서 BPM을 정하고, 1비트 = 60 / BPM 초를 계산합니다.
  3. 시각적 컨셉을 한 문장으로 작성: 영화 전체를 관통하는 화면 모티프, 내용 설명이 아닙니다.
    • 좋은 예: "빨간 선 하나가 영화 전체를 관통——텍스트를 자르고, 원을 만들고, 마지막에 로고 아래 밑줄이 된다."
    • 나쁜 예: "제품의 기술감을 보여준다."
  4. 영웅 순간 선정: 영화 전체에서 가장 충격적인 한 장면, 보통 60–75% 지점에 배치.

통과 조건: DIRECTOR'S BRIEF의 8개 필드(영화 제목, 컨셉, 스타일, 색상표, 폰트, 리듬, 모션 에너지, 영웅 순간) 모두 작성 가능.

2단계 · 스토리보드 → 먼저 references/rhythm.md, references/techniques.md, references/transitions.md 읽기

다음 규칙에 따라 스토리보드를 작성합니다:

  1. 구조: rhythm.md의 해당 길이별 구조 템플릿 적용 (훅 / 전개 / 추진 / 영웅 / 호흡 / 수렴).
  2. 장면 수: 15초 5–6장면; 30초 7–9장면; 45초 8–11장면; 60초 10–12장면.
  3. 비트 포인트: 각 장면 시작은 정박(整拍) (n*B로 작성); 장면 일반적으로 ≥ 1마디, 일부 빠른 컷 장면은 2비트 가능.
  4. 테크닉: 각 장면 하나의 주 테크닉 (T 번호), 전체 주 테크닉 ≥ 70% 중복 없음, 그리고 텍스트 유형, 도형 유형, 공간/질감 유형 세 가지 범주를 모두 포함.
  5. 전환: 각 장면에 출구 전환 (X 번호) 명시, 전체 ≥ 4가지, 인접 장면 중복 없음; 마지막 장면은 END 작성 (또는 오프닝으로 원활하게 연결되도록 설계).
  6. 에너지 커브: 각 장면에 에너지 1–5 표시; 같은 에너지 3장면 연속 불가; 최소 하나의 호흡 장면 (에너지 ≤ 2, 요소 극소, 많은 여백).
  7. 영웅 순간: 최소 하나의 풀스크린급 테크닉 사용 (T03 강타 글자 / T04 거대 글자 횡이동 / T06 텍스트 벽 / T19 확대 통과 중 하나).
  8. 엔딩: 최종 제목 또는 시그니처가 완전히 읽을 수 있도록 ≥ 1.5초 정지.

대화에서 스토리보드 표(아래 형식)를 출력하고, 직접 3단계로 이동——사용자가 명시적으로 스토리보드 검토를 요청하지 않는 한:

#비트초화면 / 카피주 테크닉보조출구 전환에너지
s10–80.0–4.0검은 화면 속 빨간 점 하나, 선으로 늘어나 화면을 가르고, "MOTION"이 절단면에서 솟아오름T10 선긋기T01X04 셔터2

통과 조건: 표가 완전하고, 위 1–8조건을 만족.

3단계 · 구현 → 먼저 references/engine-api.md 읽기, 그 다음 assets/template.html 복사

  1. 템플릿을 전체 복사하여 출력 경로에: 기본 <현재 작업 디렉토리>/<영문 짧은 이름>.html (예: orbit-title.html); 환경에 전용 출력 디렉토리(예: /mnt/user-data/outputs)가 있으면 거기에 배치.
  2. 모든 {{…}} 플레이스홀더를 순서대로 교체: 감독 방안 → Google Fonts 링크 → 디자인 토큰 → 장면 HTML → 장면 CSS → 전환 레이어 → HUD → STORYBOARD → 타임라인.
  3. 각 장면을 <section class="scene" id="sN"><div class="cam">…</div></section>로 작성, 내부에 .layer를 사용해 bg / main / detail 세 레이어로 분리; section 순서는 STORYBOARD와 일치.
  4. STORYBOARD의 id, 시작/종료 비트, technique (T 번호로 시작), transition (X 번호 또는 END로 시작)이 스토리보드 표와 일치.
  5. 각 장면에 tl.scene('sN', s => { … }) 하나, 시간은 장면 시작점 기준 비트 B*n으로 작성; 장면 간 전역 전환 요소는 tl에 절대 시간으로 작성.
  6. 작업 시 아래 '제작 철칙'을 준수하고, 테크닉과 전환은 참조 파일의 코드를 직접 개조하여 사용.

통과 조건: 파일이 완전하며, 더 이상 {{를 포함하지 않음.

4단계 · 품질 검사 → scripts/check.py 실행 (건너뛰기 불가)

python <본 스킬 디렉토리>/scripts/check.py <영화.html>
  • 모든 ERROR 수정; WARN은 항목별로 처리하되, 의도적임을 설명할 수 있는 경우는 제외. 반복 실행하여 PASS 출력까지.
  • 생성된 _qa/<파일명>/contact.png (연락표: 각 장면 '진입' 프레임 + '정지' 프레임, 그리고 첫 프레임과 마지막 프레임)를 열고, 아래 '시각적 자가 점검'을 항목별로 확인; 자세히 보려면 frames/ 디렉토리의 전체 크기 프레임을 열어봄. 문제 발견 → 수정 → 재실행.
  • Python 또는 Playwright 없음: --static으로 정적 검사만 수행; 브라우저 도구가 있으면 영화.html?t=초로 열어 장면별 스크린샷을 수동 검사.

통과 조건: check.py가 PASS 출력, 시각적 자가 점검 모든 항목이 '예'.

5단계 · 전달 (고정 형식)

응답은 다음 5개 항목만 포함:

  1. 파일: 영화 HTML 경로 (클릭 가능한 링크).
  2. 감독 방안: 한 문장 컨셉 · 스타일 프리셋 · 길이 / BPM / 화면비.
  3. 스토리보드 표: 2단계의 표 (수정 사항 있으면 최종 버전).
  4. 시청 방법: 브라우저에서 열면 자동 반복 재생; 스페이스바 재생/일시정지 · ← → 1초 이동 (Shift 1마디 이동) · 0 처음으로 · H 컨트롤 바 숨김 · URL 뒤에 ?t=12.5 추가 시 12.5초에 고정.
  5. 비디오 내보내기 (선택 사항): python <본 스킬 디렉토리>/scripts/render.py <영화.html> 실행 시 동일 이름의 .mp4 생성. 사용자가 요청할 때만 실행.

코드를 붙여넣지 말고, 구현 세부 사항을 설명하지 마십시오. 환경이 HTML 미리보기 또는 artifact를 지원하는 경우, 영화를 함께 표시할 수 있습니다.


제작 철칙

자세한 이유는 references/rhythm.md 참조.

  1. 이징(Easing): 등장은 out (expo.out / glide); 퇴장은 in (expo.in, 지속 시간은 등장의 약 60%); 이동 및 와이프는 inOut (snap / expo.inOut); 지속 운동(회전, 드리프트, 런닝라이트)은 linear 또는 sine.inOut. 등장에 절대 linear 사용 금지.
  2. 오버랩: 다음 동작은 이전 동작이 60–80% 완료되었을 때 시작. 글자별 stagger 0.02–0.05초, 단어별 0.06–0.12초, 요소별 0.08–0.15초.
  3. 강타: 가장 무거운 동작(글자 강타, 화이트 플래시, 떨림, 전환 컷 포인트)은 마디의 첫 번째 비트, 보조 동작은 세 번째 비트, 디테일은 오프비트.
  4. 세 레이어 세 속도: 각 장면에는 최소 배경 레이어(느림/지속) + 주체 레이어(빠름) + 디테일 레이어(중간)의 세 가지 움직임.
  5. 가독성: 각 카피가 완전히 읽힐 수 있는 정지 시간 ≥ 0.6초 + 영어 단어당 0.25초 (중국어 글자당 0.15초); 영웅 문장은 더 길게.
  6. 글자 크기 (1920×1080 캔버스 기준): 영웅 글자 240–600px, 제목 120–220px, 부제 40–72px, 라벨 16–24px (전체 대문자, 자간 0.2–0.4em). 큰 글자는 자간 조정 -0.02 ~ -0.06em, 행간 0.82–0.95. 세로판은 화면 너비에 비례하여 환산.
  7. 색상 규율: 바탕색 하나, 글자색 하나, 강조색 하나 (최대 하나의 보조색 추가 가능). 강조색 면적 ≤ 10%, 또는 한 장면 전체를 강조색 바탕으로 반전시켜 강타로 사용.
  8. 안전 영역: 주요 텍스트는 화면 가장자리로부터 ≥ 80px (세로판 ≥ 64px); 의도적으로 넘치는 거대 글자는 data-bleed 속성 추가.
  9. 디테일 레이어: 번호 (01 / 08), 가는 선, 좌표, 타임코드, 작은 라벨은 화면을 '전문 작품처럼' 보이게 함——각 장면에 최소 2개의 디테일 요소 (P5, P7은 1개로 줄일 수 있음).
  10. 카메라: 각 장면 cam 기본값 push, 구도에 따라 pull / left / right / rise / fall로 변경; 전체 영화에서 none은 2장면 이하.
  11. 글꼴: Google Fonts만 사용 (프리셋에 링크 매개변수 제공); 각 font-family 끝에 반드시 시스템 폴백 포함 (중국어: 'PingFang SC','Microsoft YaHei','Noto Sans SC'), 일부 네트워크 환경에서 Google Fonts를 불러오지 못할 수 있기 때문.
  12. 구도 순환: 인접 장면은 가운데 정렬 / 치우침 / 풀스크린 넘침 / 분할 화면 / 그리드 사이를 순환하며, 같은 레이아웃에 글자만 바꾸지 않음.

시각적 자가 점검 (contact.png 보고 항목별 답변)

어느 하나라도 '아니오'이면 수정으로 돌아가야 함:

  • 각 '정지' 프레임을 따로 보면 디자인된 포스터처럼 보임: 명확한 초점, 계층 및 여백.
  • 의도치 않게 잘리거나, 서로 겹치거나, 화면 밖으로 밀려난 텍스트 없음; 중국어가 어색한 위치에서 줄바꿈되지 않음.
  • 각 '진입' 프레임에서 동작이 진행 중임을 볼 수 있음 (마스킹, 블러, 어긋남, 선긋기), 공백 또는 정지 상태가 아님.
  • 인접 장면의 구도가 명확히 다름.
  • 색상이 색상 규율을 따르며, 최소 한 장면에서 강조색 또는 반전색으로 강타를 침.
  • 영웅 순간의 프레임이 실제로 전체 영화에서 가장 충격적인 화면임.
  • 엔딩 시그니처가 선명하고, 충분히 오래 정지함.

파일 인덱스

파일언제 읽을까내용
references/style-presets.md1단계7개 스타일 프리셋: 색상표 hex, 폰트 및 Google Fonts 매개변수, BPM, 움직임 성격, 시그니처 테크닉, 금기 사항; 시작 부분에 선택표
references/rhythm.md2단계비트 포인트와 BPM 환산, 각 길이별 구조 템플릿, 에너지 커브, 이징 및 지속 시간표, 리듬 패턴
references/techniques.md2, 3단계26개 시각 테크닉 T01–T26: 효과, 적용 상황, 즉시 개조 가능한 코드
references/transitions.md2, 3단계16가지 전환 X01–X16: 원리와 코드, 장면 오버랩 작성법 포함
references/engine-api.md3단계REEL 엔진 전체 API, 속성 규칙, 일반적인 함정
assets/template.html3단계유일하게 허용되는 시작 템플릿
scripts/check.py4단계정적 + 브라우저 품질 검사, 연락표 생성
scripts/render.py전달 후 필요 시프레임별 MP4 내보내기

관련 스킬