Communitygithub.com

NoizAI/skills

기존 노래와 가사로 음악 비디오를 제작합니다. p5.js/p5.brush 애니메이션 또는 로컬 이미지/클립을 조합하여 24fps로 렌더링합니다. 사용자가 뮤직비디오, MV, 가사 영상, 비주얼라이저, 스토리보드, 音乐视频, 歌词动画, MV合成 등을 언급할 때 사용하세요. 곡을 작곡하거나, 효과음을 생성하거나, 이미지/비디오 생성 API를 호출하는 데 사용하지 마세요.

skills란 무엇인가요?

이 스킬은 완성된 오디오 파일과 가사를 입력받아 24fps의 음악 비디오를 생성합니다. `code` 모드에서는 p5.js와 p5.brush를 사용하여 JavaScript로 애니메이션을 그리고, `hybrid` 모드에서는 사용자가 제공한 로컬 이미지나 비디오 클립을 조합합니다. 두 모드 모두 이미지나 비디오 생성 API를 호출하지 않으며, 모든 분석과 렌더링은 로컬에서 이루어집니다. `analyze` 명령어로 템포, 비트, 음량 등을 분석하고, `inspect`로 로컬 미디어를 검사하며, `assemble`로 최종 영상을 조합합니다. `ffmpeg`, Python 3.9+, `code` 모드의 경우 Node.js와 Google Chrome이 필요하며, `hybrid` 모드는 로컬 에셋만 사용합니다. Claude Code, Cursor, Codex 등 명령어 기반 AI 에이전트에서 활용할 수 있습니다.

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

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

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

문서

music-video

완성된 한 곡을 24fps의 음악 비디오로 변환합니다. 노래가 마스터 오디오입니다. 장면 간격은 노래를 정확히 한 번 커버합니다.

트리거

  • music video / MV / lyric video / visualizer / storyboard
  • 音乐视频 / MV合成 / 歌词动画 / 歌曲动画

기능

  • code: 고정된 p5.js 및 p5.brush 프로젝트를 초기화하고 JavaScript로 노래를 애니메이션화합니다.
  • hybrid: 로컬 캐릭터 이미지, 장면 스틸, 비디오 클립을 검사한 후 조합합니다. 이미지나 비디오 생성 API를 호출하지 않습니다.
  • 로컬 비트, 온셋, 저주파, 음량 분석을 통해 컷 포인트와 애니메이션 큐를 제공합니다.
  • 원본 노래를 유일한 사운드트랙으로 하는 프레임 정확한 조립.

입력

필수:

  • song: 로컬 오디오 (.mp3, .wav, .m4a, .flac, .ogg, .aac)
  • brief: 시각적 아이디어, 대상 청중, 필요한 참고 자료
  • mode: code 또는 hybrid

선택 사항:

  • lyrics: 텍스트 또는 .srt. 보컬 타이밍이 중요할 때 스토리보드 전에 필요합니다.
  • assets: hybrid 모드용 스틸 및 클립 디렉토리
  • aspect: 16:9 (기본값), 9:16, 1:1, 또는 4:3

사용자가 먼저 곡을 만들고 싶어한다면 text-to-music을 사용한 후 선택한 파일을 가지고 이곳으로 돌아오세요.

출력

  • <project>/output/final.mp4
  • docs/CREATIVE_BRIEF.md, docs/STORYBOARD.md, docs/TASKS.md, docs/PROGRESS.md
  • audio/analysis.json, 에셋이 있을 경우 docs/inspect.json

워크플로우

저장소 루트에서 python3 skills/music-video/scripts/mv.py를 실행하세요. 이 스킬이 다른 곳에 설치된 경우 이 파일 옆에 있는 scripts/mv.py를 사용하세요. 프로젝트는 스킬 디렉토리 외부에 생성하세요.

  1. 비디오를 JavaScript로 그릴 때는 code를 선택하세요. 사용자가 스틸이나 클립을 제공할 때는 hybrid를 선택하세요. 둘 다 명확하지 않으면 한 번 물어보세요.
  2. 격리된 프로젝트 초기화:
python3 skills/music-video/scripts/mv.py init \
  --project ./mv-project --song ./song.mp3 --lyrics ./lyrics.txt --mode code

python3 skills/music-video/scripts/mv.py init \
  --project ./mv-project --song ./song.mp3 --lyrics ./lyrics.srt \
  --assets ./clips --mode hybrid --aspect 16:9
  1. 노래를 분석합니다. 템포 변화는 근사치로 처리하고 오디오에서 섹션 경계를 확인하세요:
python3 skills/music-video/scripts/mv.py analyze --project ./mv-project
  1. 가사 타이밍을 얻습니다. 사용자가 제공하지 않았다면 NOIZ_API_KEY 또는 ~/.config/noiz/api_key가 이미 존재할 때만 speech-to-text를 사용하세요. 키를 절대 출력하지 마세요. 둘 다 존재하지 않으면 가사나 타임스탬프를 요청하고 노래를 업로드하지 마세요.
  2. references/opus-5.5-prompt.md를 읽고 따르세요. 장면 코드나 조립 전에 크리에이티브 브리프와 스토리보드를 작성하세요. 다른 챕터를 만들기 전에 오프닝과 메인 피크를 검토하세요.
  3. code 모드에서는 그리기 전에 <project>/animation/ANIMATION_GUIDE.md를 읽으세요. audio/analysis.json에서 PROJECT.bpm과 PROJECT.offset을 설정하세요. 고정된 템플릿 캔버스는 1920×1080입니다. 다른 화면비를 사용하기 전에 studio.html과 렌더러 창을 변경하세요. 템플릿 렌더러로 모션을 확인하세요:
node render.mjs --sheet=1,2,3 --out=../output/sheets/pilot.jpg
node render.mjs --strip=START:END --out=../output/sheets/pilot-motion.jpg
node render.mjs --clip --range=START:END --out=../output/pilots/opening.mp4

위 명령어를 <project>/animation 내부에서 실행하세요. Chrome이 표준 위치에 없을 때 --chrome을 전달하거나 CHROME_PATH를 설정하세요. 연락처 시트는 레이아웃만 스크리닝합니다. --strip 또는 오프닝, 피크, 엔딩의 재생이 모션 리뷰입니다. 7. hybrid 모드에서는 로컬 미디어를 검사하고 필요한 클립이 없으면 중단하세요. 대체품을 생성하지 마세요.

python3 skills/music-video/scripts/mv.py inspect --project ./mv-project
  1. references/timeline.schema.json을 사용하여 timeline.json을 작성하세요. 간격은 start_frame에서 포함되고 end_frame에서 제외됩니다.
  2. 결과를 조립하고 검사하세요:
python3 skills/music-video/scripts/mv.py assemble --project ./mv-project

타임라인

{
  "fps": 24,
  "width": 1920,
  "height": 1080,
  "audio": "audio/source.mp3",
  "scenes": [
    {
      "id": "opening",
      "start_frame": 0,
      "end_frame": 240,
      "source": "output/pilots/opening.mp4",
      "source_start": 0,
      "fit": "cover",
      "transition": "fade",
      "fade_frames": 6
    }
  ],
  "overlays": []
}

fade는 자신의 장면 내에서 유지됩니다. 크로스페이드를 위해 장면을 겹치지 마세요.

완료 조건

모든 항목이 참일 때만 완료하세요:

  • [0, ceil(duration × 24))이 정확히 한 번 커버되고, 간격이나 중복이 없음.
  • final.mp4에 비디오 스트림과 완전한 원본 노래가 포함됨.
  • 오프닝, 메인 피크, 엔딩이 모션으로 검토됨.
  • 마지막으로 읽은 스토리가 여운을 남길 시간이 있음.
  • docs/PROGRESS.md에 열려 있는 블로커가 없음.

보안

init --mode code는 JohnHeibel/ClaudeAnimationBase를 커밋 0ac8bf2b31942376cb6b8c4074715595d512acd2에서 프로젝트로 클론합니다. 해당 템플릿은 MIT 라이선스입니다. 분석, 검사, 렌더링, 조립은 로컬에서 이루어집니다. 하이브리드 모드는 미디어를 업로드하지 않으며 이미지, 비디오 또는 음악 생성 서비스를 호출하지 않습니다.

요구 사항

  • ffmpeg 및 ffprobe
  • Python 3.9+
  • analyze: uv pip install 'numpy>=2,<3'
  • code 모드: git, Node.js, Google Chrome
  • hybrid 모드: 로컬 에셋만 필요

제한 사항

  • 이 스킬은 음악을 작곡하거나, 효과음을 생성하거나, 이미지와 비디오를 API로 생성하지 않습니다.
  • 비트 그리드는 대체로 일정한 템포를 가정합니다.
  • 코드 모드의 수채화 채우기는 개별 GPU가 없으면 프레임당 몇 초가 걸릴 수 있습니다. 통합 그래픽에서는 렌더러가 이러한 채우기를 피하도록 요청하세요.
  • 조립은 클립이 장면보다 짧으면 freeze하거나 시간을 조정하지 않고 거부합니다.

Individual skills in this repo

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

관련 스킬