뮤직 프로모션 비디오
연속적이고 프리미엄급 느낌의 세로형(기본 1080×1920) 프로모션 비디오를 만듭니다. 로고가 열리고, 앱 페이지, 커버, 플레이어가 부드러운 카메라 움직임을 통해 서로 흘러들어갑니다. 노래는 비트에 맞춰 영상 아래에서 재생됩니다. 영상이 반복 재생될 수 있도록 여는 부분과 일치하는 엔드 카드로 마무리됩니다.
이 스킬은 실제 사용자 피드백을 통해 여러 번 정제된 워크플로우를 패키지화한 것입니다. references/direction.md의 규칙들은 그 피드백을 원칙으로 전환한 것입니다. 디자인을 시작하기 전에 반드시 읽어야 합니다. '좋다'와 '바로 이거야'의 차이를 만듭니다.
0. 인테이크: 먼저 참고 자료 요청
계획이나 제작을 시작하기 전에, 출력 결과를 결정할 3~4개의 참고 자료를 사용자에게 요청하세요. 비디오는 참고 자료에 따라 달라집니다. 아래의 에셋 체크리스트와 함께 친근한 메시지 하나로 요청하여 사용자가 한 번에 답변할 수 있도록 하세요.
요청 항목:
- 3~4개 참고 자료: 동영상(최상: 동작과 박자를 전달함), 릴스, 이미지, 또는 그 링크. 각각에 대해 무엇이 마음에 드는지 물어보세요: 룩, 색상, 타이포그래피, 전환, 페이싱, 사운드. 사용자가 열 수 없는 링크(Instagram, Pinterest, TikTok)만 제공하는 경우, 다운로드한 파일이나 스크린샷을 요청하세요. 열 수 없는 것을 본 적이 있다고 주장하지 마세요.
- 3개 미만이면 한 번 더 요청하고, 참고 자료가 많을수록 더 원하는 결과에 가까워진다고 설명하세요. 그래도 제공할 수 없으면 가진 것으로 진행하고 어떤 선택을 스스로 했는지 말하세요.
- 4개를 초과하면 어떤 4개가 가장 중요한지 묻거나, 처음 것에 가중치를 두세요.
에셋 체크리스트 (같은 메시지로 요청하고, 모든 항목에 대해 '당신이 골라줘'를 허용하세요):
- 로고 (투명 배경 PNG가 가장 좋음).
- 앱 스크린샷 (홈 화면, 라이브러리, 현재 재생 중): 실제 화면을 보여줍니다.
- 노래: 오디오 파일과 각 노래의 후크 시작 및 종료 시간 (사용자는 자신의 후크를 알고 있습니다; 가사로 추측하지 마세요).
- 사운드 이펙트 팩 (선택 사항).
- 공식 뮤직비디오 파일 (선택 사항, 동기화된 클립용).
- 형식, 목표 길이, 프레임 레이트 (기본 1080×1920, 60fps), 게시 위치.
그런 다음 참고 자료를 적절히 분석하세요 (references/references-analysis.md 참조): 모션을 위한 콘택트 시트와 조밀한 프레임 시퀀스. 짧은 참고 자료 브리프를 작성하세요: 팔레트, 타이포그래피 역할, 페이싱(마디당 컷), 전환 유형, 텍스처(그레인, 블룸, 종이 또는 없음), 텍스트와 이미지의 상호 작용 방식, 사운드 특성. 브리프를 계획과 함께 몇 줄로 사용자에게 보여주고, 문제가 발생하지 않는 한 추가 승인을 기다리지 않고 제작을 시작하세요.
참고 자료가 references/direction.md의 규칙과 충돌할 경우, 사용자의 명시적인 말을 먼저 따르고, 그 다음 참고 자료, 그 다음 기본값을 따르세요.
1. 환경 확인
ffmpeg와 Python(numpy, pillow, opencv-python-headless, scipy 필요, 작업 폴더에 venv 생성)이 필요합니다. 글꼴은 시스템 글꼴을 사용합니다. 세 가지 타입 역할 각각이 해결되는지 확인하세요. 필수 기능이 누락된 경우 정확히 무엇인지 말하고 해당 단계를 중단하세요. 완성된 비디오로 계획을 제시하지 마세요.
2. 에셋 소싱 및 검증
- 커버 아트: 절대 스크린샷의 크롭을 보이는 커버로 사용하지 마세요. 너무 부드럽고 사용자가 알아챕니다.
scripts/find_cover.py로 공식 아트워크를 온라인에서 찾으세요. 이 스크립트는 Apple/iTunes(최대 3000px)와 JioSaavn을 검색하고 각 후보를 스크린샷 크롭과 매칭합니다. 약 0.98 이상의 매치만 허용하고, 출처(소스 URL, 제목, 아티스트, 매치 점수)를covers/provenance.json에 기록하세요. 일치하는 항목이 없으면(예: Spotify 생성 믹스 또는 라디오), 단순한 디자인(좋아요 표시한 노래)인 경우 선명한 벡터 버전을 다시 그리거나 해당 항목을 생략하세요. - 노래: 파일을 복사한 후 각각에 대해
scripts/beat_grid.py를 실행하세요: 템포, 다운비트, 0.5초당 에너지, 가장 큰 에너지 점프(드롭). 사용자에게 후크 시간을 물어보고, 받아쓰기에서 추론하지 마세요. - 뮤직비디오:
scripts/av_sync.py는 비디오 오디오와 노래 파일 간의 오프셋을 제공하므로 화면과 노래가 립싱크를 유지합니다.scripts/shot_cuts.py는 비디오 자체의 컷을 찾아서, 크롭이 샷별로 피사체를 따라갈 수 있게 합니다. - SFX: 각 파일(길이, 피크 위치, 밝기)을 특성화하고, 역할(탭/클릭, 우슈, 라이저, 팝, 차임, 럼블, 스페셜)을 부여하고, 각 파일의 피크 오프셋을 기록하여 큐가 피크에 정확히 맞도록 합니다.
3. 비트 그리드에서 타임라인 계획
- 노래가 재생되는 동안 필름 시간을 노래 시간으로 간주합니다 (필름 t = 노래 t + 오프셋). 씬 전환은 다운비트에, 팝과 스톱모션 단계는 비트나 8분음표에 배치합니다.
- 일반적인 아크, 브리프에 맞게 조정하세요: 로고 오프닝 → 라이브러리 또는 앱 페이지 → 앨범 캐러셀 → 현재 재생 중 (실시간 진행 바) → 드롭 순간 (큰 키네틱 단어) → 커버 벽 → 다음 노래로의 핸드오프 (자체 커버 애니메이션 포함) → 해당 플레이어 → 선택적 뮤직비디오 섹션 → 파티클 피날레 (로고로) → 엔드 카드 (오프닝과 일치).
- 씬 간의 모든 변경은 연속적인 움직임이어야 합니다: 다음 씬이 되는 요소로의 줌, 매치 컷(양쪽에서 동일한 위치의 동일한 이미지), 또는 어두운 영역을 통한 플라이스루. 계획에 각 전환 메커니즘을 나열하세요.
- 텍스트 규칙: 어떤 단어도 아트워크 위에 놓이지 않으며, 로고나 커버 뒤에 숨겨지지 않습니다. 단어는 객체 가장자리 뒤에서 밀려 나오거나, 마스크 라인을 통해 올라온 후 완전히 보이게 됩니다. 스크롤 콘텐츠 위에 있는 제목은 해당 콘텐츠(세계 좌표)에 속하므로 타일이 이를 가리지 않습니다.
전체 시각적 규칙과 그 이유는 references/direction.md를 참조하세요.
4. 제작
assets/reference_project/의 작업 예제에서 시작하세요: render.py(그림 엔진 및 전체 58초 타임라인), audio.py(믹스), style.json. 이미 테스트된 구성 요소가 포함되어 있습니다:
- 블러 프리필터링, 소프트 섀도우, 클리핑을 포함한 합성;
- 프레임별 필름 그레인 및 블룸;
- 세 가지 역할
Text클래스(sans, serif italic, mono)와 eased 진입, 스톱모션 진입, 드리프트 종료; - 마스크 라인 단어 공개 및 뒤에서 밀어내기 공개;
- 프레스 효과가 있는 탭 리플; 실시간 진행 바와 하트 탭이 있는 벡터 플레이어 UI; 반복 링 엔드 카드;
- 다이아몬드 파티클 시스템 (커버 조각 조립 후 로고로 들어올리기);
- 프레임 블렌딩과 샷별 크롭이 있는 뮤직비디오 재생;
- 필터 스윕, 엔벨로프 및 SFX 큐 도구.
엔진은 유지하고, 타임라인과 콘텐츠를 새 프로젝트의 것으로 교체하세요. 아키텍처와 이미 해결된 함정은 references/engine-notes.md를 읽으세요.
다음 순서로 작업하세요:
- 텍스트 및 레이아웃 테스트: 타임라인 전체에서 10~20개의 스틸을 렌더링하고 콘택트 시트를 만든 후 살펴보고, 긴 렌더링 전에 레이아웃 문제를 수정하세요.
- 믹스(
audio.py): 빠르므로 초당 레벨과 모든 핸드오프 주변을 측정하세요 (references/audio.md). - 백그라운드에서 전체 렌더링 (60fps는 노트북에서 60초에 약 10분 소요; 120fps는 약 25분). 폴링하지 말고 완료 알림을 기다리세요.
5. 실제 내보내기 QA
최종 MP4에 대해 scripts/motion_qa.py를 실행하세요. 프레임 간 점프, 스톱모션 단계, 정지 프레임, 비정상적으로 어두운 프레임을 보고합니다. 의도적인 단계나 뮤직비디오 컷이 아닌 모든 스파이크에 대해 주변의 연속 프레임을 추출하여 살펴보세요. 그런 다음 확인:
- 지속 시간, fps, 프레임 수, 전체 디코드;
- 음량 (−11 ~ −14 LUFS 통합, 피크 약 −1 dBFS, 왜곡 없음);
- 초당 레벨 및 핸드오프 레벨;
- 모든 전환의 양쪽;
- 휴대폰 크기에서 텍스트 가독성.
정직하게 보고하세요: 오디오를 측정할 수는 있지만 들을 수는 없습니다. 그렇게 말하고 사용자에게 귀로 확인해 달라고 요청하세요.
작은 수정의 경우, 영향을 받은 시간 범위만 다시 렌더링하고 (render.py --range a,b) 프레임 정확한 트림으로 마스터 렌더에 스플라이스하세요. 재먹싱하고 이음새를 다시 확인하세요. references/qa-and-delivery.md 참조.
6. 조기 전달 및 반복
- 버전이 완성되는 즉시 재생 가능한 MP4를 보내세요. 긴 변경 작업 중에도 마찬가지입니다. 사용자는 종종 "다 됐어요?"라고 묻고 작업이 계속되는 동안 보고 싶어합니다.
- 각 라운드: 사용자의 말을 주의 깊게 다시 읽으세요. 그들은 종종 빠르게 입력하고 문장 중간에 끊습니다. 요청한 내용을 정확히 적용하고, 다른 모든 것은 프레임 그대로 유지하며, 변경된 사항을 말하세요. 메시지가 잘린 경우 명확한 부분을 수행하고 나머지를 물어보세요.
- 이전 버전 유지 (
archive_vN/), 전달물은 버전과 fps로 이름을 지정하세요.
각 라운드 전달물:
- 메인 MP4 (게시용 60fps; 120fps는 요청 시에만 제공하고, 소셜 플랫폼은 최대 60fps로 재생된다고 설명);
- 사운드 이펙트만 있고 노래는 없는 동일한 비디오 (플랫폼 라이선스 음악으로 게시용);
- 편집 가능한 프로젝트 zip: 코드, 스타일 설정, 출처가 포함된 커버, 비디오에서 사용된 프레임, 사용된 SFX, 믹스 WAV, 타임라인이 포함된 README;
- 변경된 사항, 확인된 사항 및 확인되지 않은 사항에 대한 간단한 메모, 노래, 커버 아트 및 비디오 클립은 저작권이 있음을 상기시키는 메시지 추가: 개인 편집에는 괜찮지만 플랫폼에서 음소거하거나 공개 게시물에 클레임을 제기할 수 있습니다.
참고 파일
references/direction.md: 사용자 피드백에서 얻은 시각적 및 편집 규칙. 디자인하기 전에 읽으세요.references/references-analysis.md: 사용자의 3~4개 참고 자료를 분석하고 브리프를 작성하는 방법.references/audio.md: 노래 엔벨로프 (낮음에서 높음, 높음에서 낮음), 완벽한 비트 매칭 핸드오프, SFX 배치, 음량.references/engine-notes.md: 참조 엔진의 아키텍처 및 이미 해결된 함정.references/qa-and-delivery.md: 점검, 부분 재렌더링 및 스플라이스, 인코딩, 패키징.scripts/:beat_grid.py,find_cover.py,av_sync.py,shot_cuts.py,motion_qa.py(각각-h로 사용법 확인).assets/reference_project/: 완전한 작업 예제 (Spotify 프로모, "Raw Rich Rare" -> Drake의 "National Treasures").