generate-footage
이 플러그인의 또 다른 진입점입니다. video-use는 이미 가지고 있는 푸티지를 편집합니다. 이 스킬은 아직 가지고 있지 않은 푸티지로 영상을 만듭니다: 내레이션과 정지 키프레임을 HyperFrames로 구성하고 애니메이션화하여 결정론적으로 렌더링합니다.
파이프라인 (프로덕션에서 검증됨; 모션 단계가 결정론적인 이유는 docs/rca/ 참조):
스크립트 (v3 오디오 태그 사용)
→ eleven_v3 내레이션 (scripts/tts_v3.py)
→ 전사 (npx hyperframes transcribe narration.mp3)
→ 장면 창을 문장 경계에 고정 (단어 수준 타임스탬프)
→ 모든 곳에서 정지 이미지 가져오기 (장면당 하나의 키프레임 — 아래 참조)
→ animate-stills 구성 (recipes/04-animate-stills.md, build_scenes.py)
→ 린트 → 렌더 → 모션 + 오디오 QA (scripts/motion_check.py, 접촉 시트)
순서가 중요합니다: 음성을 먼저, 비주얼은 나중에
구성이나 키프레임 수집 전에 내레이션을 생성하고 전사하세요. 말하는 문장 경계가 장면 창이 됩니다. v3 리딩은 박자가 비결정론적입니다 — 120초 예상이 100초 또는 166초로 나올 수 있습니다 — 따라서 먼저 만들어진 비주얼은 항상 다시 타이밍이 조정됩니다.
음성 해설 — ElevenLabs v3 오디오 태그 사용
scripts/tts_v3.py — stdlib만 사용, pip 의존성 없음. 키는 $ELEVENLABS_API_KEY 또는 플러그인의 skills/video-use/.env에서 가져옵니다.
python3 scripts/tts_v3.py --probe # eleven_v3 확인 + 음성 목록 보기
python3 scripts/tts_v3.py --voice <id> --stability 0.0 --script SCRIPT.md --out narration.mp3
- 오디오 태그는 스크립트 텍스트에 넣습니다:
[excited],[whispers],[softly],[dramatic tone],[warmly]. v3는 이를 수행하고 v2는 무시합니다. - 안정성:
0.0= 창의적 (최대 표현력),0.5= 자연스러움,1.0= 강건함. "평탄한" 읽기는 안정성을 낮추고 스크립트에 태그를 다시 추가하여 해결하며, 더 큰 소리가 아닙니다. - 전달 레버: 강조할 단어에 대문자, 극적인 멈춤에
..., 대비 (큰 대사 직전에[whispers]로 전환). - 첫 문장에서 2-3개의 음성을 미리 들어보고 결정하세요. 첫 번째 음성은 최선이 아닙니다.
- v3는 약간 의역할 수 있습니다. 결과를 전사하고 읽어보세요. 핵심 문장이 변경되었다면 다시 생성하세요.
모든 곳에서 정지 이미지 가져오기
키프레임은 그냥 PNG입니다. 파이프라인은 어디서 왔는지 신경 쓰지 않습니다.
장면당 하나의 정지 이미지, kf-NN.png로 이름을 지정하고 장면 매니페스트에 나열합니다
(recipes/04-animate-stills.md가 스키마를 문서화합니다). 작동하는 소스:
- AI 이미지 도구 — 이미 가지고 있는 텍스트-이미지 도구 (Gemini, GPT image, Midjourney, 로컬 SD, 또는 호스티드 액터 — 마지막의 선택적 섹션 참조). 장면별 프롬프트에서 하나의 고정된 스타일 접미사를 사용하여 생성합니다.
- 스크린샷과 사진 — 제품 UI 캡처, 아카이브 자료, 스캔, 실제 사진. Ken Burns 효과는 이를 위해 발명되었습니다.
- HyperFrames 렌더링 HTML — 스타일이 적용된 HTML 프레임을 만들고 스냅샷합니다; 엔진이 자체 정지 이미지를 생성합니다.
소스에 관계없이 적용되는 규칙:
- 하나의 스타일을 고정하여 DESIGN.md에 명시하고 모든 프레임에 적용합니다. 프레임 간 스타일 변이는 움직임과 그레이딩이 적용되면 다른 샷으로 읽힙니다.
- 파일 형식을 확인하십시오. 일부 도구는 .png 이름으로 JPEG를 제공합니다;
구성 전에 매직 바이트를 확인하세요 (
file kf-01.png). - 모든 프레임을 QA하십시오 (이미지를 읽으십시오). 스타일에 맞지 않는 한 프레임은 유지가 아닌 재생성 대상입니다. 다음을 확인하세요: 텍스트 아티팩트, 워터마크, 시대착오, 클로즈업 얼굴 (드리프트 위험), 잘못된 팔레트.
- 공개적으로 게시하는 모든 항목에 대해 생성된 프레임에 IP 이름이나 실제 살아있는 사람의 초상을 사용하지 마십시오.
애니메이션 — 결정론적, 리포지토리 내
정지 이미지는 animate-stills 레시피
(recipes/04-animate-stills.md)로 움직임이 됩니다: 매니페스트 기반 HyperFrames 구성으로
각 정지 이미지에 카메라 언어 (밀어넣기, 드리프트, 홀드)와 GSAP 분위기
(안개, 비, 빛 변화, 비네트)를 적용하고, 장면 창을 전사본에 고정합니다.
scripts/build_scenes.py가 매니페스트에서 장면 레이어를 생성하고;
scripts/motion_check.py가 렌더링된 출력에서 픽셀 차이를 통해 실제 움직임을 증명합니다.
매 실행마다 동일하게 렌더링되며, 비용이 들지 않고, 오프라인에서 작동합니다.
HyperFrames CLI를 위해 Node >= 22가 필요합니다.
자막 및 조립
- 자막을 영상에 내장합니다 (Reddit/X에서 음소거 자동 재생), 구문 수준, 전사된 단어에서 시간이 지정됩니다.
- 스토리 전환 시 흰색 플래시 (0.28초); 다른 곳은 부드러운 크로스페이드; 어두운 비네트 그레이드가 다양한 소스의 정지 이미지를 통일하고 자막이 잘 읽히게 합니다.
- 렌더링에서 움직임을 확인합니다: 한 장면 내에서 4초 간격의 두 프레임을 픽셀 차이로
비교합니다 (
scripts/motion_check.py— 평균 회색 차이 > 3 = 실제 움직임). - 오디오 QA:
ffmpeg -af volumedetect— 다큐멘터리 음성은 -26 dB 평균 근처에 위치합니다.
선택 사항: 호스티드 생성 도구
이들은 의존성이 아닙니다. 정지 이미지나 클립을 얻는 여러 방법 중 하나이며, 통보 없이 사라질 수 있습니다 — 그에 따라 계획하세요.
- Apify 텍스트-이미지 액터 (예:
akash9078/ai-image-generator, ~$0.01/이미지)는 배치 키프레임 생성에 잘 작동했습니다. 조용한 실패 (null URL과 함께ok:true) 및 잘못된 파일 형식 레이블에 주의하세요. - 호스티드 이미지-비디오 액터는 이 파이프라인이 이전에 모션 단계를 유지했던 곳입니다.
2026-06-11에 액터
danitn11/wan22-lightning-image-to-video(총 2명 사용자)가 업스트림에서 중간에 사망했고 모든 실행이 즉시 실패했습니다; 전체 분석은docs/rca/rca-generate-footage-animation-2026-06-11.md에 있습니다. 생성형 이미지-비디오는 이제 분리된 동반 리포지토리에 있으며 플러그 가능한 BYO-키 백엔드를 사용합니다; 이 플러그인의 모션 단계는 결정론적이며 로컬입니다.