Communitygithub.com

video-lite

使用 Python + pycairo + ffmpeg + espeak-ng 製作含即時動態圖形(動態標題、動感文字、手繪符號、神聖幾何、圖示網格、轉場、粒子效果)的短篇配音影片 — 無需 Node、瀏覽器或 GPU。專為老舊 32 位元機器(i686,2 GB RAM)設計。可用於解說、故事、清單、宣傳或示範 MP4,並包含語音、背景音樂與音效。

video-lite 是什麼?

Video Lite v2 是一個低資源的影片生成技能,專為老舊或受限的硬體(32 位元、i686、2 GB RAM)設計。它從一個小型故事板 JSON 檔案開始,使用 Cairo 向量繪圖渲染每一幀(包括抗鋸齒文字、符號、幾何圖形、發光效果、粒子效果、鏡頭運動與場景轉場),並透過 ffmpeg 編碼成 MP4 影片。語音部分則使用 espeak-ng / MBROLA,支援葡萄牙語(巴西)和英語,並配上由程式產生的背景音樂,當語音出現時音樂會自動降低音量,同時在剪輯與揭示時加入 whoosh / pop 音效。此技能支援多種場景類型(如標題、動感文字、清單、終端機打字、引用、神聖幾何、車輪圖等),並提供多種主題(如 mystic、neon、terminal-green 等)。其主要工作流程包括:執行 doctor.py 檢查環境、使用 compose.py 建立故事板、編輯 JSON 填空、執行 render.py 渲染影片,最後以 verify.py 驗證輸出。所有步驟皆可離線完成,無需網路連線。

相容平台✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/jazzautomations/video-lite/tree/HEAD

在你喜歡的 AI 中提問

開啟一個已預先載入此 Agent Skill 的新對話。

說明文件

Video Lite v2

一個從小型故事板 JSON 產生的完成 MP4 影片。每一幀都是使用 Cairo 繪製的向量藝術(抗鋸齒文字、符號、幾何圖形、發光效果、粒子效果、鏡頭運動、場景轉場),並透過 ffmpeg 編碼;語音部分使用 espeak-ng / MBROLA(巴西葡萄牙語與英語),並配上由程式產生的背景音樂,當語音出現時音樂會自動降低音量,同時在剪輯與揭示時加入 whoosh / pop 音效。可在老舊 Pentium M 上運作:約 90 秒的 720p 影片需時約 7–8 分鐘(草稿 480p:約 4 分鐘)。無需 Node、Chromium、GPU、模型或網路連線。

<skill-dir> 是此 SKILL.md 所在的資料夾。請從使用者的專案資料夾執行所有指令;輸出檔案也會產生在那裡。

黃金路徑 — 請依序執行以下步驟

# 1. 檢查機器一次(同時測量速度,約 1 分鐘)。它會告知缺少什麼以及如何修正。
python3 <skill-dir>/scripts/doctor.py
#    沒有語音?在 Debian/Ubuntu/antiX 上,這會在 ~/.local 安裝 espeak-ng + MBROLA pt-BR,無需 root 權限:
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(無 whoosh/pop/riser 音效)、"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."]}

請勿在 narration 中放置連結、電子郵件或檔案路徑(render 會拒絕):請將它們顯示在畫面上(cta 副標題)。每個句子保持在約 110 個字元以內。

場景種類(compose.py kinds 會列出此清單)

kind你所看到的欄位
title大字標題逐字出現,下方底線,上方可選符號title, subtitle, symbol(可選)
bullets標題 + 項目逐一出現,每個項目附圖示title, bullets: ["文字", {"text": "…", "icon": "fa-rocket"}]
terminal終端機視窗打字效果lines: ["$ 指令", "輸出"]
quote大引號,文字淡入,作者滑入title(引言), subtitle(作者)
cta結尾呼籲:標題彈出,副標題在發光按鈕中title, subtitle, symbol(可選)
symbol一個巨大的符號,逐筆畫繪製,然後填色 + 發光,光環環繞symbol, title, subtitle, spin(true/false)
geometry神聖幾何逐步繪製,然後發光shape(一個名稱或清單), title, subtitle, labels(僅用於 arrows)
wheelN 個節點(2–12)在圓圈上逐一揭示,並有連線到中心;目前節點發光title, nodes: ["a", {"label": "b", "icon": "fa-cog"}], center(文字或符號), active(1..N:突出顯示該節點)
icons1–8 個圖示網格,帶標籤彈入title, items: [{"icon": "fa-cogs", "label": "馬達"}]
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": ["原因", "結果", "原因"])。組合:"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 秒範例(赫爾墨斯主義,mystic 主題,每種插圖種類):<skill-dir>/examples/caibalion.json。

良好品味,快速指南

  • 變化場景種類:避免連續三個相同種類的場景;在文字密集型(bullets, split)和視覺型(symbol, geometry, kinetic, wheel)之間交替。
  • 標題簡短(≤ 5 個單詞),副標題 ≤ 10 個單詞,項目符號每個 ≤ 6 個單詞,最多 5 個項目。
  • N 個項目的清單:一個 wheel 總覽,然後每個項目一個場景(symbol/geometry),或再次使用 wheel 搭配 "active": k。
  • 主題:mystic(靛藍/金色,襯線字體,星星)、neon(洋紅/青色,合成網格)、terminal-green(程式碼)、sunset、ocean、paper(淺色,襯線字體)、mono。

測試

python3 <skill-dir>/scripts/selftest.py 會以草稿模式短暫渲染每一種場景,並使用 ffprobe 檢查 MP4(退出碼 0 = 成功)。--voice 也會測試 espeak 和字幕。

相關技能