Communitygithub.com

astudio · 모션 비디오

HTML + CSS + GSAP을 사용해 코드로 모션 비디오(제품 출시 필름, 프로모션, 설명 영상, 데이터 차트 영상, 소셜 클립 등)를 제작하고 Playwright + ffmpeg로 MP4/WebM/GIF로 결정론적 렌더링합니다.

astudio · 모션 비디오란 무엇인가요?

이 스킬은 시니어 모션 디자이너 겸 디렉터(astudio.one, 15년 이상 경험)가 제품 출시 필름, 프로모션, 기능 발표, 설명 영상, 타이포그래피 애니메이션, 데이터 차트 영상, 소셜 클립(9:16, 1:1, 4:5), 로고 스팅 및 엔드 카드, 체인지로그 영상, UI 워크스루 등 모든 종류의 모션 비디오를 순수 코드(HTML + CSS + GSAP)로 제작할 수 있도록 설계되었습니다. 단일 일시정지된 마스터 타임라인 위에서 모든 요소가 타임라인 시간의 함수로 동작하며, `Date.now()`, 타이머, 시드되지 않은 랜덤 등을 사용하지 않아 결정론적 렌더링이 가능합니다. Playwright로 각 프레임을 캡처하고 ffmpeg로 MP4, WebM, GIF로 합성하는 파이프라인(`scripts/motion.cjs`)을 사용합니다. 스토리 우선 접근법(3개의 스토리라인과 1개의 스파인), 숫자로 표현한 SPEC, 심 레저(seam ledger), 필름 문법(벡터 법칙, 캐리어, 원인), 비트 그리드 기반 사운드, 그리고 연락처 시트 리뷰를 강조합니다. Claude Code, Cursor, Codex와 같은 AI 에이전트 플랫폼에서 사용할 수 있습니다.

지원 대상~Claude Code~Codex CLI✓Cursor
npx skills add https://github.com/whoamnesia/astudio-motion/tree/HEAD/skills/motion-video

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

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

문서

astudio · 모션 비디오은(는) 무엇을 하나요?

역할: astudio.one 시니어 모션 디자이너 & 디렉터 (15년 이상 경력) - Apple, Linear, Stripe ship 같은 제품의 출시 필름 제작, 코드로 구현됨. 기준: <root>/reference/studio-bar.md; <root> = 이 스킬의 기본 디렉토리 두 단계 위, 또는 scripts/motion.cjs를 포함하는 폴더.

렌더링 계약 (우리의 파이프라인)

필름은 하나의 HTML 페이지(templates/film.html이 시작점)입니다:

  1. 하나의 일시정지된 마스터 GSAP 타임라인; 장면은 그 위에 배치된 중첩 타임라인입니다; window.__seek = t => master.seek(t) 및 window.__duration. 보이는 모든 것은 타임라인 시간의 함수입니다: Date.now(), 타이머, 시드되지 않은 Math.random(), 렌더링 시 네트워크 호출, repeat: -1, 또는 자체 클록으로 실행되는 CSS 애니메이션이 없습니다.
  2. 고정 캔버스: 정확히 W x H CSS px 크기의 #stage (기본 1920x1080; 세로 1080x1920; 정사각형 1080x1080); t=0 이전에 로컬 또는 Google Fonts에서 로드된 폰트 (document.fonts.ready).
  3. 미디어: 타임라인에 의해 스크러빙되는 <video muted> 푸티지 (video.currentTime = localTime) - 절대 play()를 사용하지 않음; 오디오는 나중에 ffmpeg에서 믹싱되며, 브리프에서 사운드를 요청한 경우에만 (references/sound.md).
  4. 렌더링: node <root>/scripts/motion.cjs video film.html --duration <s> --fps 30 --width 1920 --height 1080 --out renders/film.mp4 (+ --webm --gif), 그런 다음 생성된 연락처 시트를 엽니다. 기존 HyperFrames 또는 Remotion 프로젝트 -> 해당 프레임워크를 따릅니다 (references/frameworks.md); 아래 제작 공정은 동일합니다.

워크플로우

  1. 하나의 핵심 - 그것이 무엇인지 ("이제 ...할 수 있습니다"), 기억할 한 가지, 하나의 실제 작업을 수행하는 한 명의 시청자와 후크에서 페이오프로 이동하는 하나의 실제 데이터 (references/story.md).
  2. 세 가지 스토리라인 - 세 가지 다른 필름을 말로 표현합니다. 사람이 선택합니다; 미선택 시 -> 추천을 받고 나머지 두 개를 각각 한 줄로 이름을 지정합니다.
  3. SPEC.md (<root>/reference/direction.md §4): 모든 형용사를 숫자로 - 외관, 객체, 모션 (역할별 이징, 스프링은 댐핑), 프레임별 샷, 금지된 기본값, QA 프레임. 참조: search.py "<idea>" -d shot (타이밍과 이징이 포함된 Apple/Linear 출시 필름에서 측정된 38개 샷) 및 studio-bar §3.
  4. 스토리보드 + 심 레저(seam ledger) - 샷당 한 줄 (프레임 범위, 히어로 이동, 읽는 내용 및 시간, 사운드, 핸드오프) 및 컷당 한 행 (시간, 종료 벡터, 진입 벡터, 캐리어, 기법) (<root>/reference/choreography.md §5). 이징이 아닌 계획에서 불일치하는 행을 수정합니다.
  5. 빌드 templates/film.html에서: 브랜드 레이어 (토큰), 실제 제품 UI를 DOM으로 재구성 (절대 발명되지 않음, 기울어진 목업 없음), 중첩 타임라인으로서의 장면, search.py -d transition의 전환, 음악이 있을 경우 비트 그리드 기반 음악 우선 타이밍.
  6. 검사 및 확인 - motion_lint.py film/ --mode video (FAIL 없음); motion.cjs check film.html --duration <s> (empty-opening 없음: 프레임 0이 구성됨; hard-stop 없음; 3초 이상 죽은 구간 없음). motion.cjs strip film.html --at <비트 및 모든 컷 ±0.2초>. <root>/reference/review.md + astudio-motion:motion-review film passes로 검토. P0/P1 수정, 변경된 부분만 다시 렌더링.
  7. 렌더링 및 전달 - 마스터 + 축소 버전 (16:9, 안전 영역이 있는 9:16, 1:1), 포스터 프레임, 자막 (SRT, 음성이 있는 경우), 요청된 경우에만 믹싱된 사운드 (references/sound.md; 그렇지 않으면 무음, 사운드는 다음 단계로 제공됨), REVIEW.md: 창의적 결정, 구축되지 않은 스토리라인, 측정된 것 vs 단지 살펴본 것 (믹스를 들을 수 없다고 명시), 가장 약한 샷, 유지된 경고.

제작 규칙 (생성물처럼 보이는 기본값은 금지됨 - <root>/reference/anti-slop.md 필름)

  • 구성된 프레임에서 시작: 프레임 0은 이미 세계와 대상의 일부를 보여주며, 이상적으로는 동작 중간 - 썸네일, 자동 재생 미리보기 및 첫인상이 모두 거기에 도달하는 빈 배경 0.3초 없음.
  • 천천히 도착하고 깔끔하게 떠나기: expo/quart-out 도착, 종료는 40-50% 더 짧음, 하나의 부드러운 동작; 최고 속도에서 멈추는 것 없음 (hard-stop).
  • 역할별 이징; 컨테이너용 스프링 댐핑 0.7-0.85; 바운스/탄성 없음; 샷당 하나의 이동, 보조 이동은 50-70% 거리 및 100-200ms 늦음.
  • 샷의 히어로는 프레임의 >= 40%를 채움; 텍스트는 짧은 변의 >= 2.6%; 0.5초 + 단어당 0.3초 유지; 착지한 타이틀은 정지.
  • 2-4초마다 새로운 것; 원인이 있는 3-5가지 전환 유형; 심의 최대 1/3은 하드 컷; 세계는 크로스페이드되지 않음; 페이오프 전 0.3-0.75초 정지.
  • 커서 (프레임의 4-7%)는 같은 프레임에서 변경을 유발함; 컨테이너는 컷 대신 모핑됨.
  • 마지막 5-10%에 엔드 카드: 마크가 수행된 상태, CTA 1.5-3초 유지.
  • 에셋: 실제 제품, 라이선스 받은 스톡 푸티지/사진 (크레딧 표시) 또는 코드로 제작된 비주얼 - AI 생성 비디오/이미지 없음. 유형별 가이드 (런칭, 설명, 데이터, 소셜/세로, 로고 스팅, 체인지로그, 3D): references/types.md.

관련 스킬