Communitygithub.com

shaharsha/애니메이션 에피소드 제작

사진, 채팅 내보내기, 스토리 아이디어 또는 대본으로부터 애니메이션, 만화, 코믹 스트립 에피소드 등 나레이션이나 음성이 포함된 수직형 애니메이션 비디오를 제작할 때 사용합니다.

애니메이션 에피소드 제작란 무엇인가요?

이 스킬은 사진, 채팅 기록, 대본 등 다양한 입력을 바탕으로 나레이션이 포함된 완전한 애니메이션 에피소드를 제작하는 파이프라인을 제공합니다. 캐릭터 일러스트, 패널, 음성, 배경 음악, 이미지-비디오 클립, 립싱크 등 모든 요소를 통합 관리하며, 단일 `episode.json` 파일을 통해 전체 프로젝트를 정의하고 `engine/episode.py` 엔진이 각 단계를 자동으로 실행합니다. 엔진은 실제 대화 오디오를 기준으로 모든 컷의 타이밍을 정밀하게 조정하여 완성된 대화 파일에서 샷 길이, 자막 시간, 립싱크 타이밍을 추출합니다. 사용자는 각 단계에서 생성된 아티팩트를 검토하고 피드백을 제공하여 최종 비디오의 품질을 보장합니다. 이 스킬은 image-generation, elevenlabs-tts, generating-video-clips와 같은 다른 스킬과 함께 사용되며, Python 3, ffmpeg 7 이상, 특정 폰트 및 여러 API 키를 필요로 합니다.

지원 대상~Claude Code✓Codex CLI~Cursor✓Gemini CLI
npx skills add https://github.com/shaharsha/claude-skills/tree/HEAD/skills/producing-animated-episodes

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

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

문서

애니메이션 에피소드 제작은(는) 무엇을 하나요?

개요

수직형, 음성 포함, 자막 포함 애니메이션 에피소드: 캐릭터 아트, 패널, 복제 또는 라이브러리 음성, 음악, 이미지-비디오 클립 및 립싱크. 모든 샷의 타이밍을 실제 대화 오디오로부터 계산하는 엔진에 의해 편집됩니다. 하나의 episode.json 파일이 전체 프로젝트를 담고 있으며, engine/episode.py가 모든 단계를 실행합니다. 관련 스킬들은 공급자 작업을 수행합니다.

엔진을 사용하세요. 직접 편집 스크립트를 작성하지 마세요. 타임라인, 오버레이, 자막, 오른쪽에서 왼쪽(RTL) 텍스트, 믹스, 지속 시간 및 립싱크 연결은 이미 engine/에 포함되어 있습니다. 실제 3.5분짜리 에피소드를 재구축하여 증명되었습니다: 동일한 프레임, 동일한 오디오, 원본이 놓쳤던 정확한 길이. 수동 편집은 references/troubleshooting.md의 모든 버그를 다시 발견하게 됩니다.

오디오가 기준입니다. 샷 길이, 자막 시간 및 립싱크 파트는 완성된 대화 파일에서 비롯됩니다. 텍스트로 타이밍을 추정하지 마세요.

시각 및 청각을 확인할 수 없습니다. 프레임, 지속 시간 및 숫자를 확인합니다. 인간이 유사성, 목소리, 발음, 타이밍 및 농담을 판단합니다. 그들의 관문(gate)을 계획하고 유지하세요.

필수 요구 사항:

  • 이 스킬과 함께 사용될 스킬들: image-generation, elevenlabs-tts, generating-video-clips.
  • Python 3 및 pip install -r <this-skill-dir>/requirements.txt (Pillow (RAQM 탑재), numpy; OpenCV는 선택 사항).
  • ffmpeg 7 이상.
  • 폰트: 스타일 및 자막이 font 키를 참조합니다 (예제에서는 bold, hblack, black). 이 키들은 설치된 .ttf 파일로 매핑되어야 합니다. 히브리어 및 라틴어의 경우 Rubik 및 Heebo (무료, Google Fonts)가 잘 작동합니다. check 명령어는 누락된 폰트가 있으면 중단됩니다.
  • 환경 변수에 설정된 API 키. 엔진을 실행하는 모든 셸에서 설정해야 합니다: OPENAI_IMAGE_API_KEY, ELEVENLABS_API_KEY, GEMINI_API_KEY, FAL_KEY.

전체 파이프라인을 API 호출 없이 테스트하려면 python3 <this-skill-dir>/engine/episode.py /tmp demo를 실행한 후, 생성된 데모 프로젝트에서 check 및 build 명령을 실행하세요.

파이프라인과 관문(Gates)

모든 관문(Gate)은 중단점입니다: 아티팩트를 보내고, 질문하고, 기다리세요. 명령어 형식은 python3 <this-skill-dir>/engine/episode.py PROJECT <command> 입니다. 비용은 2026년 10월 기준입니다.

#단계명령어관문 (인간)비용
1스토리 및 대본templates/script.template.md에서 script.md 생성대본, 그리고 모든 민감한 주제-
2캐릭터 바이블templates/characters.template.md, 그 다음 episode.json에 characters 입력--
3얼굴, 카드, 승격chars face, chars card key=face.png, chars final keys모든 카드가 한 장에 모인 시트로 유사성 확인캐릭터당 ~$0.30
4패널panels draft, 그 다음 panels final ids시트로 모든 패널 확인패널당 ~$0.30
5음성목소리당 하나의 샘플 (elevenlabs-tts)배치 전에 귀로 모든 목소리 확인센트 단위
6대사lines타임스탬프와 함께 귀로 세트 확인; 이름 A/B 비교센트 ~ 수 달러
7음악 및 효과음sound음악 확인센트 단위
8애니매틱build (아직 클립 없음: 카메라 움직임이 있는 스틸 이미지)비디오 비용 발생 전에 속도와 순서 확인무료
9애니메이션animate, 시트, animate S --takes 2 + animate pick S K로 재촬영시트를 통해 움직임 확인클립 1초당 테이크당 ~$0.10
10립싱크lipsync prep, 설정의 얼굴 포인트, lipsync run프레임 스팟 체크초당 ~$0.13
11편집 및 전달build, sheet, deliver인간이 mp4 시청무료

각 단계의 명령어, 입출력 및 오류 처리: references/pipeline.md.

대본 작성

유효했던 규칙들 (세부 사항 및 작업 예제: references/script-writing.md):

  • 처음 3-4초 안에 훅(Hook) (문제에 대한 콜드 오픈), 그 다음 타이틀. 30초 미만 영상의 경우 타이틀과 엔드 카드를 스토리 샷 위에 오버레이로 넣고 몽타주는 생략합니다.
  • 모든 주요 캐릭터는 최소 한 번은 말해야 합니다. 인트로 몽타주에서 각 카드당 약 1.2-1.5초 동안 각자의 목소리로 한 단어씩 말하는 것은 저렴하고 좋아합니다.
  • 화면상 텍스트는 읽을 수 있어야 합니다: 문자당 약 0.8초 + 0.06초; 짧은 카드는 1.2-1.5초; 최종 캡션은 4-6초. 카드에 mindur를 지정하세요.
  • 초반에 단서를 심고 후반에 해결하세요. 그룹의 실제 농담을 콜백하는 것이 가장 효과적입니다.
  • 민감한 주제는 사용자의 결정에 따릅니다. 사용하고 싶은 모든 개인 정보(건강, 돈, 관계, 가족, 다툼)를 나열하고 각각에 대해 물어본 후, 사용자가 확인한 것만 사용하세요.
  • 12단어 이하의 대사, 숫자는 단어로 표기. 화면상 텍스트는 일반 철자를 유지하고 발음 수정은 pronounce에 넣습니다.
  • 내레이션이 있더라도 음악과 음향 효과를 사용하세요. 최소 하나의 배경 음악과 몇 가지 효과(컷에 따른 휙 소리, 결정적 장면의 타격음); 무음 배경은 미완성처럼 들립니다.

episode.json 한 눈에 보기

templates/episode.example.json은 완전한 작은 예제 에피소드입니다. 모든 키는 references/config-schema.md에 설명되어 있습니다. 가장 많이 편집할 부분:

  • characters: 표시 이름, 색상, 목소리, 캐릭터 바이블의 프롬프트 필드.
  • speakers: 절대 그려지지 않는 목소리 (예: 내레이터). {"display": null, "voice": "<id>"}는 이름 없는 자막을 제공합니다.
  • lines: id, 화자, 오디오 태그가 포함된 텍스트; 한 단어 대사의 경우 trim 및 level.
  • shots: 이미지, 대사 ("[email protected]"는 이전 대사와 겹침), 패드, mindur, 카메라, fx, sfx, 오버레이, 클립 오프셋 및 속도.
  • music_cues: [큐, 시작 샷, 종료 샷, 볼륨, 오프셋]. 빌드는 큐가 적용 구간보다 짧을 때 경고합니다.
  • lipsync: 적용할 샷, 건너뛸 대사, 부분별 얼굴 포인트 하나.
  • prompts: 다른 스타일(3D 만화, 수채화, 실사)을 위해 char_style 및 panel_style을 재정의합니다.

빌드 및 검토

  • 수정 사항을 모아서 처리하세요. 전체 빌드는 몇 분이 걸립니다. 검토 라운드의 모든 노트(대사 테이크, 패드, 클립 오프셋)를 수집하여 모두 적용한 후 한 번에 재빌드하세요.
  • 세그먼트는 캐시되고 추적됩니다. build는 입력이 변경된 샷만 정확히 다시 렌더링합니다: 새 클립 또는 립싱크 버전, 승격된 패널, 편집된 대사, 샷 또는 스타일. build --only S05,S06는 해당 샷을 강제로 렌더링하며, --force는 모든 것을 다시 렌더링합니다.
  • 립싱크가 적용된 샷은 클립, 오프셋, 속도 또는 대사가 변경되면 다시 처리해야 합니다: lipsync prep S05 && lipsync run S05. 그렇지 않으면 빌드가 오래된 것임을 경고하고 원시 클립을 사용합니다.
  • 기존 에셋을 다시 생성하려면 --force가 필요합니다 (sound theme --force, animate S05 --force); 그렇지 않으면 기존 파일이 유지되고 빈 부분만 채워집니다.
  • 시트로 검토하세요. sheet는 샷당 3프레임을 한 페이지에 배치합니다. 인간이 특정 시간의 순간을 언급하면, 해당 프레임을 추출하여 읽은 후 답변하세요 (ffmpeg -ss T -i build/<output>.mp4 -frames:v 1 f.jpg).
  • 모든 빌드 전에 check를 실행하세요: 누락된 에셋, 키, 관련 스킬, 프레임보다 넓은 오버레이 텍스트 확인.
  • 모든 빌드 종료 시 지속 시간이 확인됩니다. 오디오가 비디오보다 짧으면 빌드가 실패하고 끝이 잘리지 않습니다.
  • 전송 전: references/qa-checklist.md.

인간과 협업하기

  • 모든 아티팩트를 파일 전송 도구로 보내고 Finder에서 열 수 있도록 제안하세요. 단순히 경로를 출력하지 마세요. 마지막 단계는 deliver 명령을 실행하고 해당 파일을 보내는 것입니다.
  • 오디오의 경우, 무엇을 들어야 하는지와 위치를 알려주세요 ("0:41 부분에서 다니의 이름 발음이 맞나요?"). 직접 들었다고 말하지 마세요.
  • 발음 및 목소리 선택은 사용자의 몫입니다: 타임스탬프와 함께 A/B 파일을 제공하세요 (elevenlabs-tts).
  • 유료 단계 전에는 비용 추정치를 제공하고, 단계 후에는 누적 비용을 알려주세요.

문제가 있을 때

증상해결 방법
카드 또는 캡션이 너무 빨라 읽기 어려움mindur/post 증가: 짧은 카드는 ~1.2-1.5초, 최종 캡션은 4-6초
타이틀이 양쪽 가장자리에서 잘림check가 경고함; 스타일의 size를 낮추거나 wrap 추가
구간이 끝나기 전에 음악이 멈춤빌드가 경고함: 큐의 seconds를 늘리거나, sound <cue> --force 실행; 또는 구간을 두 개의 큐로 분할
영상의 끝이 잘림엔진 사용 시 발생 불가 (정확한 길이 믹스, 지속 시간 확인); 수동 믹스의 경우 deck-to-video 참조
대사가 음악에 묻힘해당 대사에서 level_clips.py --report 실행 후 더 강한 테이크 사용; 해당 큐의 볼륨 낮춤
캐릭터가 대사보다 먼저 가리키거나 행동함clip_off를 그 지점 이후로 설정하거나, 샷을 분할하고 clip_cam으로 첫 부분을 자름
입이 단어와 맞게 움직이지 않음립싱크 단계 실행; 잘못된 입이 움직이면 얼굴 포인트 수정
그룹 샷에서 한 얼굴이 더 크게 보임OpenCV 설치 (얼굴 크기가 평준화됨), 또는 이웃을 가리는 소품이 있는 카드에 mirror 사용
히브리어가 거꾸로 표시되거나 연결되지 않음RAQM 없이 Pillow 사용: check가 해결 방법을 알려줌
이름이나 외래어 발음이 틀림pronounce 항목 추가, 귀로 A/B 비교

더 많은 문제와 원인: references/troubleshooting.md.

관련 스킬

Individual skills in this repo

This repo contains 3 individual skills — each has its own dedicated page.

shaharsha/deck-to-video

Use when turning a slide deck plus per-slide narration audio into an mp4 video — a self-playing/self-presenting deck video, "slides to video", "presentation to mp4", a shareable WhatsApp/Slack/Drive video of a narrated deck, or when a slide video needs a per-slide progress bar / countdown / slide counter. Also use when a slide video should highlight, glow or spotlight the element being talked about in time with the voice, or when narration and on-screen animation need syncing. Also use when...

shaharsha/generating-video-clips

Use when turning a still image, illustration, comic panel or character art into a short animated clip (image-to-video), choosing a video model or provider (Gemini Omni, Veo, Seedance, Kling, ElevenLabs Flows) or hitting their API gates, lip-syncing a character's mouth to existing dialogue audio (Sync, fal.ai, active speaker), or fixing a generated clip with artifacts - duplicated props, a door or a second figure appearing, hands through bodies, glowing eyes, a gesture repeated at the start,...

shaharsha/image-generation

Generate logos, icons, UI mockups, hero images, product shots, and other design assets using OpenAI GPT Image 2.5 (Sunburst, Flare) or Google Gemini (Nano Banana 2, Nano Banana Pro, Nano Banana 2 Lite). Use whenever the user asks to create, design, generate, mock up, render, or illustrate a visual asset, needs a transparent PNG, or asks for image prompt engineering. Picks the right model and quality for the job, writes a model-specific prompt following the official prompting rules of each...

관련 스킬