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) |
wheel | N 個節點(2–12)在圓圈上逐一揭示,並有連線到中心;目前節點發光 | title, nodes: ["a", {"label": "b", "icon": "fa-cog"}], center(文字或符號), active(1..N:突出顯示該節點) |
icons | 1–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 和字幕。