Communitygithub.com

데시 리릭 필름

모든 노래를 16:9 손그림 스타일의 인디언 맥시멀리스트 리릭 뮤직 비디오로 제작합니다. 스톱모션 캐릭터 애니메이션, 정교한 프레임, 데바나가리와 로마자 가사 동기화, 후렴구마다 아이 컷이 포함됩니다.

데시 리릭 필름란 무엇인가요?

이 스킬은 사용자가 제공한 오디오 파일에서 자동으로 가사를 추출하여, 일관된 손그림 스타일의 16:9 리릭 뮤직 비디오를 제작합니다. 캐릭터는 사용자의 참조 이미지나 고유 디자인을 바탕으로 Atlabs MCP를 통해 제작되며, Nano Banana 2.1, GPT Image 2.5 Sunburst, Seedream 5 등의 모델을 사용하여 다양한 표정과 의상을 일관되게 유지합니다. 후렴구마다 등장하는 아이 클로즈업 샷과 단어 단위로 동기화되는 데바나가리+로마자 가사가 특징입니다. 이 스킬을 사용하려면 반드시 Atlabs MCP가 연결되어 있어야 하며, 그렇지 않으면 연결 방법을 안내하고 사용자가 연결할 때까지 대기합니다.

지원 대상✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/Chinmaya123-cyber/desi-lyric-film/tree/main/skills/desi-lyric-film

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

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

문서

데시 리릭 필름은(는) 무엇을 하나요?

노래(사용자의 오디오 파일)를 16:9 리릭 필름으로 변환합니다. 일관된 손그림 스타일: 일러스트 캐릭터가 각 가사의 감정을 전달하고, 모든 후렴구는 아이 모먼트이며, 가사는 단어별로 데바나가리로 쓰여지고 그 아래에 로마자 가사가 표시되며, 모든 컷은 노래 음절에 맞춰 떨어지고, 전체는 스톱 모션처럼 움직입니다(2프레임 드로잉, 끓는 잉크 선, 종이 컷아웃).

'template/'는 데이터 기반 엔진을 갖춘 완전하고 테스트된 Remotion 프로젝트입니다. 직접 필름을 코딩하지 않습니다: 세 개의 JSON 파일을 생성하면 엔진이 렌더링합니다.

파일내용생성 도구
src/lyrics.json노래 구절당 하나의 항목: {t0, t1, dev[], rom[], times[]}tools/transcribe_lyrics.py → tools/build_lyrics.py
src/character.json표정 세트 + 눈 앵커, 눈 클로즈업 플레이트, 룩 카드, 회전Atlabs MCP + tools/register_frames.py, eye_anchor.py, cu_plates.py, make_cards.py
src/film.json샷 목록(종류, 시작, 가사 슬롯, 배경, 전환, 옵션)tools/plan_shots.py, 사용자가 의미에 따라 수정

각 단계에서 참조 문서를 읽으세요: 'references/atlabs-mcp.md' · 'references/character.md' · 'references/lyrics-and-timing.md' · 'references/shot-design.md' · 'references/style-guide.md' (정확한 팔레트, 타이포그래피, 모션 사양) · 'references/render-deliver.md'.

0. 필수 규칙 — Atlabs MCP가 먼저 연결되어야 합니다

모든 캐릭터 아트(기본 디자인, 표정, 눈 클로즈업, 의상/컬러 룩)는 Atlabs MCP를 통해 생성됩니다. 대체 수단이 없습니다: 연결되지 않은 경우, 연결될 때까지 중지하고 다른 작업을 하지 마세요.

확인: ToolSearch로 'atlabs generate_image get_result start_upload get_account'를 검색하세요(도구 이름은 mcp__atlabs__… 또는 mcp__<id>__… 형식이며 종종 지연됨). 그런 다음 'get_account'를 호출하면 크레딧 잔액이 반환됩니다.

도구가 없거나 'get_account'가 실패하면, 정확히 다음 단계로 응답하고 기다리세요:

이 스킬은 캐릭터 아트를 Atlabs MCP로 제작하므로 먼저 연결해야 합니다(약 1분 소요):

  1. Atlabs 계정이 없으신가요? https://app.atlabs.ai 에서 가입하세요(이미지 생성에는 Atlabs 크레딧이 사용되며, 전체 필름에 약 25–40개 필요).
  2. 연결 방법:
    • Claude Code, 플러그인으로 설치된 경우: Atlabs가 번들로 제공됩니다 — /mcp 입력, atlabs 선택, 로그인.
    • Claude Code (터미널): claude mcp add --transport http atlabs https://mcp.atlabs.ai/mcp 실행 후, /mcp → atlabs → 로그인.
    • Claude Desktop / claude.ai: 설정 → 커넥터 → 사용자 지정 커넥터 추가 → 이름 Atlabs, URL https://mcp.atlabs.ai/mcp → 추가 → 연결 → 로그인 후 이 채팅에서 활성화.
  3. 연결되면 알려주시면 시작하겠습니다.

1. 브리핑 — 묻고, 가정하지 마세요

AskUserQuestion으로 질문하세요(한 라운드 후 적절한 기본값으로 진행):

  1. 노래: 사용자가 가지고 있는 오디오 파일(mp3/wav/m4a). 직접 음악을 다운로드하지 마세요.
  2. 어느 부분: "후렴구를 선택해줘"(기본값, 30–60초) 또는 사용자의 타임스탬프, 또는 일치시킬 참조 클립('tools/locate.py'가 노래 내에서 클립을 찾음).
  3. 캐릭터 — 다음 옵션 제공:
    • "내 참조 이미지 사용" — 사용자 본인 또는 동의를 얻은 사람의 사진, 또는 사용자가 권리를 가진 캐릭터 아트. 여러 장 공유 가능(다른 의상, 색상 배경, 표정); 모두 유용합니다. 유명인이나 실제 인물을 동의 없이 스타일화하지 마세요 — 대신 오리지널 캐릭터를 제안하세요.
    • "오리지널 캐릭터 디자인" — 선택적으로 스타일 참조 이미지와 간단한 설명(외형, 의상 분위기)을 기반으로.
  4. 분위기 키워드(선택 사항): 예: "데시 배디 Gen-Z", "부드러운 로맨틱", "축제", "상심". 기본값: 인디언 악센트가 있는 현대 데시 스타일.

채팅에 이미지를 공유했지만 파일이 디스크에 없는 경우, 'refs/cards/'에 저장하도록 요청하세요(또는 경로 제공) — Atlabs 업로드에는 파일이 필요합니다.

2. 스캐폴딩

cp -R <skill dir>/template <project> && cd <project>
npm install
uv venv -q --python 3.12 .venv && uv pip install --python .venv/bin/python numpy scipy pillow faster-whisper
mkdir -p refs && cp <song> refs/song.mp3

('python3.12 -m venv .venv'도 가능합니다.) 모든 Python 도구는 프로젝트 루트에서 '.venv/bin/python -I tools/.py …'로 실행하세요. 템플릿에는 데모 캐릭터, 소품 및 데모 데이터가 포함되어 있어 'npx remotion studio src/index.ts'가 즉시 작동합니다.

3. 노래 읽기, 부분 선택, 오디오 자르기 — 'references/lyrics-and-timing.md'

.venv/bin/python -I tools/beatgrid.py refs/song.mp3 --bpm-min 60 --bpm-max 180      # 템포, 비트 위상, 라우드니스 바
.venv/bin/python -I tools/structure.py refs/song.mp3                                 # 반복 구절 = 후렴구
.venv/bin/python -I tools/vocal_onsets.py refs/song.mp3 --from 0 --to <dur> --json refs/onsets.json
tools/cut_audio.sh refs/song.mp3 <start> <end>                                        # → public/audio/song_cut.wav

가장 반복적이고 에너지가 넘치는 보컬 구절(후렴구가 있는 부분)을 선택하세요. 첫 보컬이 시작되기 2–4비트 전 다운비트에서 시작하고, 다음 구절 전 숨구멍에서 끝나도록 합니다. 'start'를 기록하세요 — 비디오 시간 = 노래 시간 − start.

4. 가사 — 사용자 오디오에서 자동 추출

.venv/bin/python -I tools/transcribe_lyrics.py refs/song.mp3 --from <start> --to <end> --lang hi --onsets refs/onsets.json
.venv/bin/python -I tools/build_lyrics.py --transcript refs/transcript.json --slice <start> <end> --onsets refs/onsets.json
  • '--lang hi'는 데바나가리 문자를 반환하고, '--lang en'은 로마자 표기 힌글리시를 반환합니다. 'build_lyrics.py'가 두 스크립트를 모두 작성합니다.
  • 전사기가 읽을 수 없는 노래 구간(매우 빠른 노래, 레이어드 보컬)을 보고하면, 사용자에게 가사가 텍스트 또는 타임스탬프 테이블로 있는지 한 번 물어보세요. 있으면: 'build_lyrics.py --table lyrics.txt …'(또는 '--text'). 없으면 계속 진행합니다: 해당 구절은 무언(無言) 상태로 두고 플래너가 시각 전용 샷을 제공합니다.
  • 가사는 오직 전사기를 통한 사용자 오디오 또는 사용자가 제공한 텍스트에서만 추출됩니다. 스스로 노래 가사를 입력하지 마세요, 기억으로 공백을 채우지 마세요, 채팅에 가사 텍스트를 다시 표시하지 마세요 — 개수와 타이밍만 보고하세요.

5. 캐릭터 — Atlabs MCP — 'references/character.md'

하나의 기본 드로잉, 나머지는 모두 그 기본의 편집이므로 캐릭터가 변하지 않습니다. 기본 모델: Nano Banana 2.1('nano_banana_2_1'): 참조에서 기본 및 모든 편집에 사용(최고의 일관성); GPT Image 2.5 Sunburst('gpt_image_2_5_sunburst'): 사진에 더 강한 스타일화가 필요할 때; Seedream 5 Pro('seedream_5_pro'): 새 소품 또는 전체 장면 플레이트용.

  1. 기본: 깨끗한 상반신, 평범한 크림색 배경, 스타일 적용(참조 또는 오리지널).
  2. 표정(기본 편집): 'front, half, closed, pain, relief, shy, dream, moved'(+ 'neutral'/사이드-아이로 기본). 'register_frames.py'가 하나의 캔버스에 배치하고, 'eye_anchor.py --set main …'이 눈을 찾습니다.
  3. 선택적 두 번째 룩(예: 더 어두운 의상) 'front, half, closed, pain, relief, dream' 포함 → 무거운 분위기에 사용.
  4. 눈 클로즈업 밴드 + 편집 'half, closed, tears, glance, smoulder' → 'cu_plates.py', 그런 다음 'eye_anchor.py --closeup'.
  5. 4–6개의 룩 카드: 같은 인물, 다른 현대 의상 + 팔레트의 단색 배경 + 낙서, 각각 닫힌 눈 편집 포함 → 'make_cards.py'.
  6. 전신 회전 → 'keyout.py'. 독립적인 생성물을 병렬로 제출하고, 'sheet.py'로 콘택트 시트를 만든 후 진행하기 전에 확인하세요. 사용자에게 사용된 모델과 소모된 크레딧을 알려주세요.

6. 필름 계획 — 'references/shot-design.md'

.venv/bin/python -I tools/plan_shots.py --bpm <bpm> --beat0 <첫 비트, 비디오 시간 s> --duration <s> --audio audio/song_cut.wav

그런 다음 각 줄의 의미를 읽고(파일에서, 채팅에 가사를 붙여넣지 않고) 'src/film.json'을 수정하세요:

  • 모든 후렴구는 아이 모먼트(매번 다른 시선의 클로즈업 또는 눈 소품)입니다. 연속으로 두 번 반복되지 않음
  • 고통은 얼굴에 표현(금, 어두워진 바닥)되고, 치유는 치유의 단어에 나타납니다 — 문자 그대로의 상처는 없음
  • 촉각/감정은 "감동"(꽃, 잔물결)으로 표현되며, 문자 그대로의 손-심장 제스처는 없음; 빠른 라인은 룩 카드 플립
  • 배경은 모든 샷에서 변경(룩 색상), 프레임은 절대 변경되지 않음; 전환은 다양함 하나의 일관된 이야기를 유지하세요: 그녀가 주인공이고, 그녀의 눈이 모티브입니다.

7. 검토 후 렌더링 — 'references/render-deliver.md'

node tools/stills.mjs out/st 0.5 <frames…> && .venv/bin/python -I tools/sheet.py out/st.jpg out/st/*.jpg
./tools/make_film.sh <name>                     # → out/<name>.mp4 (1920×1080, 24 fps)

모든 구절의 첫 단어에서 스틸을 확인하세요: 가사가 읽기 쉽고 프레임 안에 있으며, 후렴구에서 눈이 열려 있고, 표정이 가사와 일치하며, 빈 샷이 없는지 확인합니다. 수정 후 변경된 프레임을 다시 렌더링한 다음 필름을 렌더링합니다(약 4–6분). 결과물을 사용자의 다운로드 폴더에 복사하고 전송합니다. 한 번 언급: 상업용 노래는 일부 플랫폼에서 음소거될 수 있으며, 게시할 권리는 사용자 책임입니다.

주의사항 (실제 실행 경험)

  • feTurbulence는 시드 0과 1을 동일한 패턴으로 처리합니다 — 보일/그레인 시드는 1에서 시작합니다('kit.tsx'에서 이미 수정됨); 그렇지 않으면 시작이 4프레임 동안 정지했다가 점프합니다.
  • Whisper는 매우 빠른 노래를 놓칩니다. onsets는 여전히 해당 구절의 타이밍을 제공합니다 — 단어를 추측하지 마세요.
  • Remotion의 번들 헤드리스 셸은 macOS에서 충돌할 수 있습니다. 'remotion.config.ts'는 설치된 Chrome을 사용합니다. 동시성을 6으로 유지하세요.
  • 등록된 편집은 동일한 기본 이미지에서 와야 합니다. 편집이 표류하면(다른 포즈/크롭), 강제로 사용하지 말고 다시 생성하세요.
  • 어두운 배경의 텍스트는 자동으로 크림/피치 색상 문자로 전환됩니다 — 분위기에 따라 샷 배경을 선택하고 텍스트에 의존하지 마세요.

관련 스킬