Communitygithub.com

모션 그래픽

사용자가 코드로 만든 애니메이션 동영상(모션 그래픽, 키네틱 타이포그래피, 설명 영상, 제품 런칭 영상, 애니메이션 타이틀, 로고 스팅, 애니메이션 차트 및 통계, 소셜 미디어 릴스/쇼츠/틱톡 클립 등)을 원할 때 사용합니다.

모션 그래픽란 무엇인가요?

이 스킬은 AI 에이전트가 코드 기반 모션 그래픽 영화를 제작할 수 있도록 설계된 전문 도구입니다. `scripts/mg.py`라는 단일 명령어와 JavaScript 런타임(`assets/mg.js`)을 기반으로 하며, 모든 프레임을 시간만으로 계산하여 매번 동일한 결과를 렌더링합니다. 사용자는 16가지 시각적 스타일 중 하나를 선택하고, 스토리보드를 작성한 후, HTML 장면으로 구성된 영화를 자동 생성하고, MP4/WebM/MOV/GIF(투명도 지원) 형식으로 렌더링할 수 있습니다. 이 스킬은 특히 설명자 또는 제품 출시 동영상, 로고 스팅, 통계 기반 애니메이션 등에 최적화되어 있으며, 사용자가 다른 엔진(Remotion, HyperFrames, Manim 등)이 더 적합할 경우 해당 엔진으로 안내할 수 있습니다. 모든 과정은 사용자와의 협의를 통해 진행되며, 결과물은 품질 기준에 따라 검증됩니다.

지원 대상~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/SahilRakhaiya05/Father-Using-This-Skills/tree/HEAD/private/motion-graphics

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

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

문서

모션 그래픽은(는) 무엇을 하나요?

당신은 감독, 디자이너, 편집자입니다. 작업은 의도적으로 보이는 짧은 영화입니다: 하나의 룩, 명확한 이야기, 의미 있는 움직임, 그리고 어디서나 재생되는 파일.

모든 것은 하나의 도구, scripts/mg.py, 그리고 작은 런타임, assets/mg.js에 의해 구동됩니다. 영화는 장면들의 HTML 페이지입니다. 모든 프레임은 시간만으로 계산되므로, 모든 실행에서 동일하게 렌더링됩니다.

필요: Python 3.8+, pip install playwright pillow, python -m playwright install chromium, ffmpeg. 먼저 확인하고 설치하기 전에 물어보세요.

워크플로우

순서대로 단계를 수행하세요. 1~2단계는 대화입니다. 사용자가 "그냥 만들어"라고 말하지 않는 한, 룩과 스토리보드가 합의되기 전에 렌더링하지 마세요.

1. 브리핑 — 누락된 것만 물어보세요

결정 사항알려주지 않을 경우 기본값
메시지 — 시청자가 기억해야 할 한 가지물어보세요; 절대 추측하지 마세요
재생 위치 → 포맷YouTube/웹/슬라이드용 16:9 · 릴스/쇼츠/틱톡용 9:16 · 피드용 1:1 또는 4:5
길이소셜 1530초 · 런칭 3060초 · 설명 영상 60~90초
브랜드 — 색상, 폰트, 로고스타일을 고른 다음 악센트 색상을 재정의하세요
사운드 — 음악, 나레이션, 무음먼저 무음 초안; 어쨌든 음소거에서도 작동해야 함

2. 스타일 — 사용자가 선택하게 하세요

python scripts/mg.py styles                          # 16가지 룩, 각각의 모션 특성과 함께
python scripts/mg.py pick styles.png --format 9:16 --title "그들의 헤드라인"

pick은 사용자 자신의 헤드라인을 모든 스타일로 한 장에 렌더링합니다. 보여주고 어떤 것을 원하는지 물어보세요. 사용자가 의견이 없으면 이 표에서 하나를 추천하고 그 이유를 한 문장으로 말하세요.

영화가…다음부터 시작하세요
제품 또는 기능 런칭, UIsaas-glass, clean-minimal, sunset-gradient
후크 우선 소셜 클립, 과장, 큰 글씨bold-kinetic, neo-brutal, sunset-gradient
숫자, 보고서, 연례 리뷰data-story, corporate
이야기, 에세이, 인용문, 다큐멘터리editorial, cinematic-dark, paper-craft
개발자 도구, CLI, 아키텍처mono-terminal, blueprint, neon-cyber
프리미엄 브랜드, 초대장, 부동산luxury, cinematic-dark
어린이, 교육, 축하playful, paper-craft
레트로, 게임, 음악retro-vhs, neon-cyber

스타일은 색상 + 서체 + 움직임 방식(등장, 이징, 속도, 전환)입니다. 하나의 영화에서 두 스타일을 혼합하는 것은 실수처럼 보입니다. 브랜드 룩을 원한다면 스타일을 확장하는 작은 JSON을 작성하세요 — references/styles.md를 참조하세요.

3. 스토리보드 — HTML을 작성하기 전에 작성하세요

storyboard.json을 작성하세요: 장면의 순서가 있는 목록. 장면당 하나의 아이디어, 화면에 12단어 이하, 첫 번째 장면은 후크입니다.

{"scenes": [
  {"type": "title",   "kicker": "런칭 주간", "title": "*Orbit*으로 더 빠르게 출시하세요", "subtitle": "팀이 좋아할 배포"},
  {"type": "bullets", "title": "세 가지 변화", "items": ["하나의 명령어", "4초 롤백", "브랜치별 프리뷰"]},
  {"type": "stat",    "kicker": "중간 배포 시간", "value": 4.2, "suffix": " 초", "label": "3분에서 단축"},
  {"type": "bars",    "title": "주별 배포 수", "items": [{"label": "이전", "value": 12}, {"label": "이후", "value": 58}]},
  {"type": "cards",   "title": "팀을 위해 구축됨", "items": [{"title": "보안", "text": "SSO 및 감사 로그"}]},
  {"type": "quote",   "text": "우리는 *금요일*을 두려워하지 않게 되었습니다.", "by": "플랫폼 책임자"},
  {"type": "end",     "title": "지금 *Orbit*을 사용해보세요", "cta": "orbit.example"}
]}

*단어*는 악센트 단어를 표시합니다. 장면 길이는 "dur"를 지정하지 않으면 단어 수에 따라 계산됩니다. 모든 장면은 {"type": "html", "html": "…", "dur": 4}가 될 수 있습니다. 스토리보드를 사용자에게 짧은 표(장면 · 화면 내용 · 시간(초))로 보여주고 승인을 받으세요.

4. 빌드

python scripts/mg.py new film --style saas-glass --format 16:9 --storyboard storyboard.json --accent "#ff5a1f"

이것은 film/index.html, film/theme.css, film/mg.js를 생성합니다. 브라우저에서 index.html을 열면 스크러버가 있는 라이브 프리뷰를 볼 수 있습니다. 그런 다음 HTML을 직접 편집하여 연출하세요: 비트 재정렬, 등장 변경, 차트 또는 SVG 추가. 속성 참조 — 애니메이션, 이징, 전환, 카메라 움직임, 루프, 커스텀 캔버스 코드 — 는 references/authoring.md에 있습니다. 직접 편집하기 전에 읽어보세요.

렌더링을 정확하게 유지하는 규칙(린터가 적용):

  • 움직임은 data-* 속성 또는 MG.frame(t) / MG.scene() 콜백에서만 나와야 합니다. CSS transition/animation, 타이머, Date.now(), Math.random()은 사용하지 마세요 — MG.rand(seed)를 사용하세요.
  • 폰트, 이미지, 스크립트는 프로젝트 폴더에 있어야 합니다. 네트워크가 필요한 렌더링은 반복 가능하지 않습니다.
  • 푸티지는 여기서 렌더링하지 않습니다. --alpha로 그래픽을 렌더링하고 클립 위에 겹쳐 놓으세요(6단계).

5. 렌더링하기 전에 살펴보세요

python scripts/mg.py lint film                 # 결정론, 알 수 없는 이름, 읽는 시간, 긴 유지
python scripts/mg.py sheet film sheet.png      # 연락처 시트 + 프레임 이탈 / 클리핑 / 텍스트 겹침 보고서

시트를 열고 살펴보세요. references/motion-craft.md(계층 구조, 안전 영역, 프레임당 하나의 초점)와 대조 확인하세요. 수정, 재실행, 반복. 렌더링은 느린 단계입니다. 시트는 몇 초면 됩니다.

6. 렌더링

python scripts/mg.py render film draft.mp4 --scale 0.5            # 타이밍 판단을 위한 빠른 초안
python scripts/mg.py render film draft.mp4 --scale 0.5 --range 4-9  # 변경한 부분만
python scripts/mg.py render film final.mp4 --audio music.mp3      # 전체 품질, 끝에서 음악 페이드 아웃
python scripts/mg.py render film lower-third.mov --alpha          # 투명 ProRes 4444 (또는 .webm)
python scripts/mg.py render film loop.gif --scale 0.4             # 채팅 및 문서용 GIF

초안을 보여주고, 메모하고, 변경하고, 변경된 범위를 다시 렌더링하세요. 마지막에 한 번 전체 품질 렌더링을 합니다. 푸티지 위에 투명 그래픽을 배치하려면:

ffmpeg -i clip.mp4 -i lower-third.mov -filter_complex "[0][1]overlay=0:0:enable='between(t,2,7)'" -c:v libx264 -crf 18 -pix_fmt yuv420p -c:a copy out.mp4

사운드, 나레이션 타이밍 및 캡션: python scripts/mg.py cues film cues.json은 모든 장면 및 애니메이션 시작 시간을 나열합니다. 이를 사용하여 음향 효과와 자막을 정확하게 배치하세요. references/sound-and-captions.md를 참조하세요.

7. 확인 후 전달

python scripts/mg.py check final.mp4 --project film

크기, 프레임 속도, 지속 시간, 코덱 및 픽셀 포맷을 프로젝트와 비교 확인하고, 데드 홀드(움직임 없음), 검은 프레임, 클리핑 또는 거의 무음 오디오에 대해 경고합니다. OK 후에만 전달하세요. 사용자에게 파일, 한 줄의 사실(길이, 크기, 스타일), 그리고 변경을 요청할 수 있는 사항을 제공하세요.

품질 기준 — 모든 영화를 이것에 대해 확인하세요

  1. 처음 2초 안에 후크. 프레임 15까지 읽을 수 있고 움직이는 무언가.
  2. 프레임당 하나의 초점. 두 가지가 함께 들어오면 하나의 그룹입니다.
  3. 음소거 상태, 휴대폰에서 읽을 수 있어야 함. 본문 텍스트는 짧은 쪽의 4% 이상; 마지막 등장 후 유지 시간 ≈ 0.4초 + 단어당 0.16초.
  4. 약 2.5초 이상 완전히 정지된 상태는 안 됩니다 — 장면은 기본적으로 느린 카메라 푸시를 포함합니다. 유지하세요.
  5. 등장은 빠르게, 퇴장은 더 빠르게, 유지는 정직하게. 등장 0.3~0.8초, 퇴장은 그 약 70%.
  6. 엇갈리게, 우르르 몰려들지 않게. 형제 간 0.04~0.1초; 총 엇갈림 약 0.8초 미만.
  7. 영화당 하나의 전환 언어; 두 번째는 큰 순간에만 사용.
  8. 안전 영역. 모든 가장자리에서 5%; 9:16에서는 하단 20%와 상단 12%를 텍스트 없이 유지.
  9. 행동으로 끝맺음 — 마지막 프레임은 다음에 할 일을 명명하고 1.5초 이상 유지.

다른 엔진이 더 적합할 때

mg.py는 제로 빌드 단계로 텍스트, 레이아웃, 차트, UI 스타일 및 투명 오버레이를 다룹니다. 작업이 다른 것일 때 전환하세요 — references/engines.md에는 명령어, 라이선스 및 장단점이 있습니다:

필요사용
React 컴포넌트, 데이터 기반 배치, 기존 Remotion 프로젝트Remotion (회사 라이선스 참고)
GSAP 타임라인, 비디오/오디오 클립 포함, 에이전트 우선 HTMLHyperFrames (Apache-2.0)
수학, 방정식, 기하학, 알고리즘 시각화Manim Community
편집기가 있는 수동 작성 TypeScript 애니메이션Motion Canvas
앱이나 사이트 내에서 배송되는 애니메이션Lottie / CSS / GSAP — 비디오 아님
3D 장면, 셰이더MG.frame(t)로 구동되는 Three.js, 또는 Blender
푸티지 절단, 슬라이드쇼, 클립 캡션video-making 스킬

요청 없이 작동 중인 프로젝트를 다른 엔진으로 마이그레이션하지 마세요.

참조 파일 — 작업에 필요한 것만 로드하세요

파일읽을 때
references/authoring.md장면 직접 편집; 모든 속성, 이징 또는 전환 이름; 커스텀 캔버스/SVG 코드
references/styles.md스타일 선택, 혼합 또는 생성; 브랜드 색상 및 폰트
references/motion-craft.md연락처 시트 또는 초안 판단; 페이싱, 계층 구조, 타이포그래피, 일반적인 실수
references/sound-and-captions.md음악, 음향 효과, 나레이션 타이밍, 자막, 음량
references/engines.mdRemotion, HyperFrames, Manim, Motion Canvas, Lottie, 3D
references/recipes.md준비된 패턴: 하단 서드, 로고 스팅, 키네틱 가사 줄, 차트 경주, UI 목업, 카운트다운, 엔드 카드

솔직한 한계

  • 폰트는 기계에 있는 것으로 폴백됩니다. 정확한 일치를 원하면 프로젝트에 폰트 파일을 넣고 @font-face를 선언하세요(먼저 폰트 라이선스를 확인하세요).
  • --scale 0.5의 초안은 선명도가 아닌 타이밍을 판단합니다.
  • 검사는 기계적 결함을 잡아냅니다; 취향은 여전히 눈이 필요합니다. 항상 시트와 초안을 직접 살펴보고, 추정하는 것이 아니라 본 것을 말하세요.
  • 사용자가 소유하거나 사용이 허가된 에셋만 사용하세요. 가져오는 모든 것의 출처와 라이선스를 기록하세요.

Individual skills in this repo

This repo contains 1 individual skill — each has its own dedicated page.

관련 스킬