Communitygithub.com

video-lite

Python + pycairo + ffmpeg + espeak-ng로 짧은 내레이션 동영상(움직이는 타이틀, 키네틱 텍스트, 상징, 신성 기하학, 다이어그램, 아이콘 그리드, 전환, 입자) 제작 — Node, 브라우저, GPU 불필요. 구형 32비트 시스템(i686, 2GB RAM)용. 설명, 이야기, 목록, 프로모션 또는 데모 MP4 제작에 사용(음성, 배경 음악, 효과음 포함).

video-lite란 무엇인가요?

이 스킬은 Python만을 사용하여 짧은 내레이션 동영상을 생성하는 경량 도구입니다. pycairo로 모든 프레임을 벡터 아트로 그리고, ffmpeg로 인코딩하며, espeak-ng/MBROLA로 음성을 합성합니다. Node.js, Chromium, GPU 또는 네트워크가 전혀 필요 없으므로 구형 32비트 머신(i686, 2GB RAM)에서도 실행 가능합니다. 사용자는 간단한 JSON 스토리보드를 작성하여 타이틀, 키네틱 텍스트, 불릿, 휠, 신성 기하학 등 다양한 장면 종류와 미리 정의된 테마(미스틱, 네온, 터미널 그린 등)를 조합할 수 있으며, render.py가 자동으로 레이아웃, 텍스트 피팅, 애니메이션, 타이밍 및 음성 동기화를 처리합니다. 음성 속도는 약 초당 14자이며, 장면 전환, 배경 음악(음성에 맞춰 자동 조절), 효과음(후시/팝), 자막 옵션을 지원합니다. 특히 설명 영상, 이야기, 목록, 프로모션 등에 적합하며, 한 번의 명령어로 완성된 MP4를 생성합니다.

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

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

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

문서

Video Lite v2

작은 스토리보드 JSON으로 완성된 MP4를 생성합니다. 모든 프레임은 cairo로 그린 벡터 아트(안티앨리어싱된 텍스트, 기호, 기하학, 광채, 입자, 카메라 이동, 장면 전환)이며 ffmpeg로 인코딩됩니다. 음성은 espeak-ng/MBROLA(브라질 포르투갈어 및 영어)로, 부드러운 절차적 배경 음악이 음성 아래에서 자동 조절되며, 컷과 등장 시 후시/팝 효과음이 추가됩니다. 구형 Pentium M에서도 실행 가능: 720p 동영상 약 90초를 약 7~8분에 제작(드래프트 480p: 약 4분). Node, Chromium, GPU, 모델, 네트워크가 전혀 필요 없습니다.

<skill-dir> 아래는 이 SKILL.md 파일이 있는 폴더입니다. 모든 명령어는 사용자의 프로젝트 폴더에서 실행하며, 출력물은 그곳에 생성됩니다.

골든 패스 — 정확히 이 순서대로 진행

# 1. 머신을 한 번만 확인합니다(속도 측정 포함, 약 1분). 누락된 항목과 해결 방법을 알려줍니다.
python3 <skill-dir>/scripts/doctor.py
#    음성이 없나요? Debian/Ubuntu/antiX에서는 root 권한 없이 espeak-ng + MBROLA pt-BR을 ~/.local에 설치합니다:
bash <skill-dir>/scripts/setup_voice.sh

# 2. FORMAT(작업 유형)과 THEME(분위기)로 시작합니다:
python3 <skill-dir>/scripts/compose.py formats   # explainer-motion / story / listicle / explainer / promo / demo
python3 <skill-dir>/scripts/compose.py themes    # mystic, neon, terminal-green, sunset, ocean, paper, mono
python3 <skill-dir>/scripts/compose.py new --format explainer-motion --theme neon --out storyboard.json
#    그런 다음 storyboard.json을 편집합니다: 모든 "TROQUE:" 플레이스홀더는 이 동영상의 실제 내용으로
#    바뀌어야 합니다(렌더링 시 남은 플레이스홀더가 있으면 거부합니다). 장면을 자유롭게 추가, 제거 또는 재정렬할 수 있습니다.
#    내레이션 속도: 초당 약 14자. 장면당 하나의 아이디어, 1~2문장.

# 3. 렌더링합니다. MP4가 작성될 때까지 차단합니다. --draft = 480p, 더 빠름: 구형 머신에서는 먼저 사용하세요.
python3 <skill-dir>/scripts/render.py storyboard.json --out video.mp4 --draft
python3 <skill-dir>/scripts/render.py storyboard.json --out video.mp4
#    선택 사항: 긴 렌더링 전에 한 프레임을 미리 봅니다(video.png 생성):
python3 <skill-dir>/scripts/render.py storyboard.json --out video.mp4 --still 12.5

# 4. 실제 파일(길이, 비디오+오디오 스트림)을 확인하고 연락처 시트 PNG를 봅니다.
python3 <skill-dir>/scripts/verify.py video.mp4 --require-audio

ffmpeg 파이프라인을 직접 작성하거나 프레임을 직접 그리지 마세요: render.py가 레이아웃, 텍스트 맞춤, 애니메이션, 타이밍 및 동기화를 담당합니다. 단계가 실패하면 메시지를 읽고 무엇을 변경해야 하는지 확인하세요. 머신이 느리고 급한가요? render.py ... --fast (입자 수 감소, 카메라 이동 없음).

스토리보드

{
  "theme": "mystic",
  "voice": "mb-br3",
  "scenes": [
    {"kind": "title", "title": "O Caibalion", "subtitle": "os sete princípios herméticos", "symbol": "☿",
     "narration": "Conheça o Caibalion e seus sete princípios."},
    {"kind": "kinetic", "text": "O Todo é *Mente*",
     "narration": "O primeiro princípio diz: o Todo é mente."},
    {"kind": "bullets", "title": "Na prática", "bullets": ["observe seus pensamentos", "mude o foco", "repita"],
     "narration": ["Observe seus pensamentos.", "Mude o foco.", "E repita todo dia."]},
    {"kind": "wheel", "title": "Os sete princípios", "center": "☿",
     "nodes": ["Mentalismo", "Correspondência", "Vibração", "Polaridade", "Ritmo", "Causa e Efeito", "Gênero"],
     "narration": "Mentalismo, correspondência, vibração, polaridade, ritmo, causa e efeito e gênero."},
    {"kind": "cta", "title": "Leia o livro", "subtitle": "domínio público desde 1908",
     "narration": "Leia e tire suas conclusões."}
  ]
}

최상위: theme, voice (pt-br, en-us, es... 또는 MBROLA mb-br3 / mb-br1 / mb-br4, 훨씬 덜 로봇 느낌; pt-br의 경우 설치 시 mb-br3 사용; "none" = 무음). 말하는 속도는 render.py에서 설정합니다(약 초당 14자); "speed": 0.9–1.15로 조정 가능(v1의 rate는 무시됨). 선택 사항: 모든 장면에 transition, "music": false(음성 아래 부드러운 코드 없음), "sfx": false(후시/팝/라이저 없음), "captions": true(내레이션을 자막으로 표시; 기본값은 꺼짐 — 화면에는 핵심 단어를, 음성으로 나머지를 전달).

모든 장면: kind(아래), narration, 선택 사항 seconds(기본값: 내레이션 길이 + 짧은 일시 중지; 장면을 더 길게만 만들 수 있음), 선택 사항 transition(fade | slide | zoom | wipe | iris | cut; 기본값: 테마 자체 순환), 선택 사항 camera(auto 느린 확대/이동, 또는 none).

음성에 항목 동기화: narration은 문장 목록이 될 수 있습니다. bullets, wheel, icons 또는 split 장면에 N개의 항목이 있고 내레이션에 N개의 문장(또는 N+1: 먼저 소개)이 있으면, 문장 k가 시작될 때 항목 k가 정확히 나타납니다:

{"kind": "bullets", "title": "Por quê", "bullets": ["roda em PC velho", "modelos grátis", "testa tudo"],
 "narration": ["Três motivos.", "Roda em computador velho.", "Usa modelos grátis.", "E testa antes de dizer pronto."]}

내레이션에 링크, 이메일 또는 파일 경로를 넣지 마세요(렌더링 시 거부됨): 화면에 표시하세요(cta 부제목). 각 문장은 약 110자 미만으로 유지하세요.

장면 종류 (compose.py kinds가 이 목록을 출력합니다)

kind보이는 내용필드
title큰 제목이 단어별로 나타나고, 밑줄이 그어지며, 선택적으로 위에 기호 표시title, subtitle, symbol (선택)
bullets제목 + 항목이 하나씩, 각각 아이콘과 함께 표시title, bullets: ["text", {"text": "…", "icon": "fa-rocket"}]
terminal터미널 창에 타이핑되는 모습lines: ["$ comando", "saída"]
quote큰 따옴표, 단어가 페이드 인, 저자가 슬라이드 인title (인용문), subtitle (저자)
cta마무리 호출: 제목이 팝, 부제목이 빛나는 버튼 안에title, subtitle, symbol (선택)
symbol하나의 거대한 기호가 획별로 그려진 후 채워지고 + 광채, 후광 링symbol, title, subtitle, spin (true/false)
geometry신성 기하학이 점진적으로 그려진 후 광채shape (이름 하나 또는 목록), title, subtitle, labels (arrows에만 해당)
wheel원 위에 2~12개의 노드가 하나씩 나타나며 중심까지 선이 연결됨; 현재 노드가 빛남title, nodes: ["a", {"label": "b", "icon": "fa-cog"}], center (단어 또는 기호), active (1..N: 해당 노드 강조)
icons1~8개의 아이콘 그리드가 라벨과 함께 팝업title, items: [{"icon": "fa-cogs", "label": "motor"}]
kinetic큰 단어가 음성과 동기화되어 나타남; *단어* = 강조 색상 + 광채text
split텍스트 열 + 반대편 일러스트레이션title, text 또는 bullets, 그리고 symbol 또는 shape, side (right/left: 아트가 위치할 쪽)

shape 이름: circle, triangle, triangle-down, square, hexagon, hexagram, pentagram, flower (생명의 꽃), seed (생명의 씨앗), vesica, spiral (황금), eye (삼각형 안의 눈), ouroboros, wave (진동), pendulum (리듬), arrows (원인 → 결과; "labels": ["causa", "efeito", "causa"] 사용). 결합: "shape": ["circle", "hexagram"].

symbol / icon / center는 다음을 허용합니다(compose.py symbols가 모든 이름을 나열):

  • 문자: "☿", "☤", "☯", "✡", "⚖", "∞", "🜂" (연금술), "♀", "☉", "☽"…
  • Font Awesome 4 이름: "fa-cogs", "fa-book", "fa-rocket", "fa-lightbulb-o", "fa-globe", "fa-terminal"…
  • 명명된 기호: "mercurio", "caduceu", "yin-yang", "balanca", "fogo", "agua", "olho"…
  • 이모지: "🔥", "🚀", "💡" (색상; 획별로 그리지 않고 팝으로 표시).

완전한 약 90초 예시(hermetism, mystic 테마, 모든 일러스트레이션 종류): <skill-dir>/examples/caibalion.json.

좋은 취향, 빠르게

  • 장면 종류를 다양하게: 같은 종류의 장면을 3번 연속하지 마세요. 텍스트 중심(bullets, split)과 시각적(symbol, geometry, kinetic, wheel)을 번갈아 사용하세요.
  • 제목은 짧게(≤ 5단어), 부제목 ≤ 10단어, 불릿은 각각 ≤ 6단어, 최대 5개의 불릿.
  • N개의 항목 목록: 하나의 wheel 개요, 그 다음 각 항목당 하나의 장면(symbol/geometry), 또는 "active": k와 함께 wheel 다시 사용.
  • 테마: mystic (남색/금색, 세리프, 별), neon (자홍/시안, 신스 그리드), terminal-green (코드), sunset, ocean, paper (밝은, 세리프), mono.

테스트

python3 <skill-dir>/scripts/selftest.py는 모든 장면 종류를 잠시 드래프트로 렌더링하고 ffprobe로 MP4를 확인합니다(exit 0 = 정상). --voice는 espeak + 자막도 테스트합니다.

관련 스킬