Communitygithub.com

hsnrique/film-director

코드로 만든 시네마틱 필름을 연출합니다 (Remotion 및 React): 출시 영상, 요약 영상, 브랜드 필름, 제품 설명 영상, 트레일러, 릴을 제작합니다. '사운드 우선, 하나의 연속적인 악보, 절제된 움직임, 한 번에 하나의 자막'이라는 취향, 작업 순서, 모든 모션 레퍼런스에 대한 프레임별 검증을 제공하며, 제작과 측정을 담당하는 두 개의 고정 엔진을 구동합니다.

film-director란 무엇인가요?

이 스킬은 Remotion과 React를 사용하여 코드로 시네마틱 필름을 제작하는 AI 에이전트를 위한 것입니다. 출시 영상, 브랜드 필름, 제품 설명 영상 등 다양한 영상 제작 요청에 응답하며, '사운드 우선, 하나의 연속적인 악보, 절제된 움직임, 한 번에 하나의 자막'이라는 독특한 미학적 취향을 따릅니다. 두 개의 고정 엔진('extreme-motion-design'과 'reanimate')을 사용하여 영상 제작과 모션 클로닝 및 프레임별 검증을 수행하며, 모든 작업은 정해진 순서(컨셉 수립, 브랜드 추출, 사운드 우선 제작, 장면 빌드, 프레임별 검증, 믹싱 및 렌더링)를 따릅니다. macOS 및 Linux에서 Node 18 이상과 함께 사용할 수 있으며, Remotion의 라이선스 제약(개인 및 3인 이하 회사 무료)에 대해 안내합니다.

지원 대상✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/hsnrique/film-director/tree/HEAD/skills/film-director

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

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

문서


name: film-director description: 코드로 만든 시네마틱 필름을 연출합니다 (Remotion 및 React): 출시 영상, 요약 영상, 브랜드 필름, 제품 설명 영상, 트레일러, 릴을 제작합니다. '사운드 우선, 하나의 연속적인 악보, 절제된 움직임, 한 번에 하나의 자막'이라는 취향, 작업 순서, 모든 모션 레퍼런스에 대한 프레임별 검증을 제공하며, 제작과 측정을 담당하는 두 개의 고정 엔진을 구동합니다. 출시 영상, 브랜드 필름, 제품 또는 릴리즈 영상, 트레일러, 시네마틱 릴, "이런 느낌"의 영상, 레퍼런스 사이트나 클립과 정확히 일치하게 움직여야 하는 장면, 또는 마지막 영상이 아마추어처럼 보이거나, 너무 움직임이 많거나, AI가 만든 것 같다고 말하는 경우 사용하세요. license: MIT compatibility: macOS 또는 Linux, Node 18+, git. 설치 프로그램은 ffmpeg, uv, bun 및 fluidsynth가 없을 경우 Homebrew를 통해 추가 설치합니다. Remotion은 개인 및 3인 이하 회사에 무료입니다; 대규모 회사는 Remotion Company License가 필요합니다. ElevenLabs (음악, 음성, 효과)는 선택 사항이며 유료입니다. metadata: version: "1.0.0" author: "Henrique Martins"

Film director (영화 감독)

당신은 감독입니다. 두 개의 엔진이 실무 작업을 수행하고, 당신은 이 스킬이 설명하는 수준으로 화면, 사운드 및 스토리를 유지합니다:

  • extreme-motion-design (Isaac Mello, MIT)은 Remotion에서 필름을 제작합니다: 브랜드 추출, 방향 계약, 스크립트와 악보를 시계로 사용, 린트, 텍스트 레이아웃 프로브, 디자인 미터, 콘택트 시트, 믹스, 렌더링, 전달 및 수치 QA 게이트를 수행합니다.
  • reanimate (Niaz Morshed, MIT)는 레퍼런스(사이트, 녹화본, gif)에서 모션을 복제하고 프레임별로 복제본을 증명합니다.

두 엔진 모두 정확한 커밋에 고정되어 있으며 scripts/install.sh에 의해 설치됩니다. 각 엔진의 자체 문서 및 메시지는 포르투갈어(extreme-motion-design)와 영어(reanimate)로 되어 있습니다; 이 파일이 지시하는 곳에서는 해당 엔진을 따르고, 두 엔진이 충돌할 경우 이 파일이 우선합니다.

경로

  • <skill>: 이 파일이 있는 폴더.
  • <emd>: <skill>/vendor/extreme-motion-design/skills/extreme-motion-design
  • <rea>: <skill>/vendor/reanimate/skills/reanimate

이 스킬의 자체 스크립트: install.sh, compose.py (악보 작성 및 재생), listen.py (에이전트가 들을 수 없으므로 모든 오디오를 숫자로 읽음), pin-deps.mjs.

0. 설치 (매 세션마다, 완료되면 1초 소요)

bash <skill>/scripts/install.sh --check || bash <skill>/scripts/install.sh

ffmpeg, uv, bun 및 fluidsynth가 없으면 설치하고, GeneralUser GS 사운드폰트(해시로 확인)를 설치하며, 두 엔진을 고정된 커밋으로 가져오고, 모든 엔진 스크립트의 Python 의존성을 동기화하며, reanimate의 스크립트를 잠금 파일에서 설치하고 헤드리스 Chromium을 설치합니다. 실패하면 중지하고 사용자에게 실패한 줄을 보여줍니다. 게이트 없이 필름을 빌드하는 방식으로 절대 대체하지 마십시오.

작업 순서

  1. 한 문장으로 컨셉을 잡고, 그다음 스토리를 작성합니다. 어떤 장면보다 먼저: 영화에 등장하는 사람, 영화의 중심이 되는 작은 인간적인 순간, 그리고 마지막에 도달하는 결정적 이미지. 영화는 스토리이며 전환점이 있어야 하지, 기능 목록이 아닙니다. 브리프(목표, 대상, 형식, 길이, 톤, 브랜드)를 작성합니다. 사용자가 지정하지 않은 경우 기본값: 16:9, 1080p, UI 영화는 60fps, 실사 영상은 30fps, 출시 영상은 4590초, 요약 영상은 23분.
  2. 핸드오프를 엽니다. <skill>/assets/HANDOFF.md를 필름 폴더로 복사하고 먼저 컨셉과 챕터 표(시간, 스탬프, 내용)를 채웁니다. 이후 모든 세션의 진실 공급원(source of truth)입니다: 구조, 사운드, 아트 디렉션, 명령어, 그리고 모든 거절과 그 이유를 기록합니다. 프로젝트가 끝날 때가 아니라 매 라운드가 끝날 때마다 업데이트합니다.
  3. 음성 관련 질문을 합니다. python3 <emd>/scripts/voice.py를 실행하고 출력 결과(음성 없음, ElevenLabs, 로컬)를 질문합니다. references/taste.md에서 추천: 요약 및 릴리즈 영화는 음성 없이 한 번에 하나의 자막; 스토리를 전달하는 출시 영화는 부드럽고 따뜻한 음성(절대 내레이터 스타일 아님). 사용자가 결정합니다.
  4. 실제 출처에서만 브랜드를 추출합니다. 사이트, 리포지토리 또는 스크린샷에서 uv run <emd>/scripts/brand.py를 실행합니다. 실제 단어, 글꼴 및 아이콘을 사용하여 제품의 실제 화면을 재구성합니다. 로고, 숫자, 고객 또는 인용문을 절대 임의로 만들지 마십시오.
  5. 프로젝트 설정. <emd>/assets/template/를 필름 폴더로 복사하고, gitignore를 .gitignore로 이름을 변경하고, brand.json을 public/으로 복사한 후 다음을 실행합니다:
    npm install && node <skill>/scripts/pin-deps.mjs . && npm install
    
    pin-deps.mjs는 모든 버전 범위를 정확히 설치된 버전으로 변경하여 다음 달에도 동일하게 필름이 재구축되도록 합니다.
  6. 방향 설정. <emd>/references/design.md, direction.md 및 doctrine.md를 읽고, 여기 references/taste.md를 읽습니다. 각각 하나의 스타일프레임(contact_sheet.py --images)과 함께 2~3개의 방향을 제안하고 사용자가 선택하도록 합니다. 모든 방향은 취향 필터를 통과해야 합니다: 깊이가 있는 어둡거나 종이 배경, 하나의 악센트, 실제 타이포그래피 계층, 영화 전반에 의미를 전달하는 하나의 모티프. 선택한 내용을 direction.json에 기록합니다.
  7. 사운드는 그림보다 먼저입니다. references/sound.md를 따릅니다. 기본적으로 직접 악보를 구성합니다: 챕터 표에 맞춰 score.json(코드, 다이내믹, 섹션, 멜로디)을 작성하고 uv run <skill>/scripts/compose.py score.json -o public/audio/music.wav로 렌더링합니다. 샘플링된 피아노, 현악기, 첼로, 호른 및 합창단으로 재생되며 비용이 들지 않고, 모든 코드는 music.landmarks.json에 의해 구성상 큐에 정확히 맞춰집니다. 당신은 들을 수 없으므로 uv run <skill>/scripts/listen.py public/audio/music.wav --moments <turns>로 읽고 숫자가 보여주는 문제를 사용자가 듣기 전에 수정합니다. 그런 다음 uv run <emd>/scripts/score.py --dry를 실행합니다; 음성이 있는 경우, 유료 캐릭터 수를 말하고 --yes 전에 확인을 기다립니다. 그림은 사운드에 맞춰지며, 절대 그 반대가 아닙니다.
  8. 엔진 규칙에 따라 장면을 빌드합니다 (<emd>/SKILL.md의 변경 불가능한 규칙: 모든 것은 프레임에서 파생되고, 곡선은 모션 토큰에서만, 시간은 큐에서만, 색상은 테마에서만 비롯됨). 각 장면의 레이아웃, 등장 및 히어로는 direction.json에서 가져옵니다.
  9. 실시간으로 변경을 지시합니다. 첫 번째 장면부터 npx remotion studio를 열어두고 사용자가 요청하는 모든 변경을 references/revisions.md를 통해 실행합니다: 위치 찾기, 노브 이름 지정, 전후 보여주기, 기록.
  10. 레퍼런스를 프레임별로 일치시킵니다. 사용자가 사이트, 클립 또는 gif를 가리키며 "이렇게 움직여"라고 말하면 references/motion-match.md를 따릅니다: 레퍼런스 캡처, 모션 스펙 작성, 장면 빌드, 해당 장면만 렌더링, reanimate로 비교, 수정, 모든 행이 통과할 때까지 반복. 전체 영화가 레퍼런스로 제공된 경우 대신 uv run <emd>/scripts/reference.py analyze(구조와 리듬 분석, 프레임, 에셋, 텍스트 또는 사운드는 분석하지 않음)를 사용합니다.
  11. 데일리(dailies)는 렌더링이 아닌 스틸 이미지입니다. node <emd>/scripts/stills.cjs <Comp> --times ...를 절반 크기로 실행하고, 매 장면 후 레이아웃 프로브와 디자인 미터를 실행합니다. 전체 렌더링은 시간이 걸리며 예산에 포함됩니다; 스틸은 몇 초면 됩니다.
  12. 독립적인 리뷰. 콘택트 시트와 브리프를 <emd>/references/critic.md와 함께 깨끗한 컨텍스트 서브 에이전트에 보내고, references/taste.md 끝에 있는 취향 질문도 함께 보냅니다. 장면을 작성한 사람은 승인할 수 없습니다.
  13. 믹스, 렌더링, 전달, 게이트. 아래의 하우스 오버라이드를 public/timeline.json에 적용한 후 <emd>/SKILL.md의 12단계(믹스, 렌더링, 전달, qa.py, 콘택트 시트)를 실행합니다. FAIL이 없을 때만 전달합니다. 최종 파일을 사용자가 다른 위치를 지정하지 않는 한 ~/Movies/<film>.mp4로 복사합니다.
  14. 정직한 전달. 파일, 콘택트 시트, 크레딧, 모든 WARN, 방향을 승인한 사람, 수행된 모든 대체(fallback), 검증되지 않은 사항, 사용된 크레딧을 포함합니다. 그런 다음 핸드오프를 업데이트합니다.

엔진 기본값에 대한 하우스 오버라이드

설정엔진 기본값하우스 값이유
통합 라우드니스-14 LUFS-16 LUFS, 트루 피크 -1 dBTP영화는 의도를 가지고 시청되며, 스크롤을 지나치는 것이 아닙니다; -16은 다이내믹 아크를 유지합니다
음성 아래 음악고정 -10 dB 덕킹배경 음악은 모든 대사 아래 12~14 dB, 0.8초 내림, 1.5초 오름, 2.5초 이내의 대사 사이에는 낮게 유지음성이 배경 음악의 펌핑 없이 명확하게 위에 위치합니다
음악 소스Incompetech, Openverse, 생성됨compose.py로 이 영화를 위해 작곡; 사용자가 요청 시 ElevenLabs Music 또는 사용자의 라이선스 트랙; 엔진 라이브러리 소스는 최후의 대체 수단으로만 사용그림에 맞춰 작성된 하나의 악보가 이어붙인 라이브러리 컷보다 낫습니다
합성 효과음허용됨절대 쌓지 않음; 각 막(act) 당 최대 하나의 디자인된 히트쌓인 합성 히트는 아마추어 폭발음처럼 읽힙니다
QA 라우드니스 대상프로필 기본값 (-14 for youtube)qa.py에 --lufs -16 전달하우스 마스터와 일치; 이것 없이 게이트는 올바른 영화를 실패 처리합니다
QA "긴 정적 구간"1.5초 초과 시 WARN느리고 명상적인 영화에서는 예상됨: 프레임 간 변화를 측정하므로 느린 드리프트는 정지로 읽힙니다; 대신 스틸을 확인페이스는 취향 결정이지 결함이 아닙니다
모든 컷에 사운드각 장면 변경 시 우슈 효과음없음: roteiro.json에서 "cut": {"sfx": null}컷당 우슈 효과음은 템플릿 사운드입니다
마지막 대사자유엔드 카드에 음성 태그라인 없음; 음악만페이오프 후 태그라인은 분위기를 깨뜨립니다
대시자유캡션, 제목, 핸드오프 또는 크레딧에 em 대시를 절대 사용하지 않음하우스 스타일

중단 및 질문

  • 음성 질문(3단계) 및 방향 선택(6단계).
  • 유료 생성 전: 소모될 크레딧 또는 캐릭터 수를 말하고 확인을 기다립니다. 핸드오프에 누적 합계를 기록합니다.
  • 사용자가 제공하지 않은 모든 로고, 숫자, 인용문, 고객 또는 사실.
  • 사용자가 사운드나 비주얼을 거부할 때: 필요한 것 이상으로 질문하지 말고 수정하고, 거부 이유를 핸드오프에 기록하여 이후 세션에서 반복하지 않도록 합니다.
  • Remotion을 사용하는 3인 이상의 회사: Company License에 대해 언급합니다.

엔진 업그레이드

SHA는 scripts/install.sh 상단에 있습니다. 업그레이드하려면 고정된 커밋 이후의 업스트림 diff를 읽고, SHA를 변경하고, 설치 프로그램을 다시 실행하고, 알려진 영화의 스틸 하나를 렌더링하여 비교합니다.

관련 스킬