Communitygithub.com

video-lite

Python + pycairo + ffmpeg + espeak-ng を使って、ナレーション付きの短い動画を(アニメーションタイトル、キネティックテキスト、図形描画、神聖幾何学、図解、アイコングリッド、トランジション、パーティクルなど)実際のモーショングラフィックスで作成します。Node、ブラウザ、GPUは不要。古い32ビットマシン(i686、2GB RAM)向けに設計。ナレーション、BGM、効果音付きの説明動画、ストーリー、リスト、プロモーション、デモMP4に使用します。

video-lite とは?

Video Lite v2 は、小さなストーリーボードJSONから完成したMP4動画を生成するAIエージェントスキルです。すべてのフレームはcairoで描かれたベクターアート(アンチエイリアス処理されたテキスト、記号、幾何学図形、グロー、パーティクル、カメラ移動、シーントランジション)で構成され、ffmpegでエンコードされます。音声はespeak-ng/MBROLA(pt-BRおよび英語)を使用し、ソフトなプロシージャルBGMが音声に合わせて音量調整され、カットや表示切り替え時に効果音が付加されます。このスキルは、Node、Chromium、GPU、モデル、ネットワークを一切必要とせず、古いPentium M(i686、2GB RAM)でも動作します。約90秒の720p動画を約7〜8分でレンダリングでき(ドラフト480pでは約4分)、AIエージェントがフォーマット選択からテーマ設定、ストーリーボード編集、レンダリング、検証までを自動化します。開発者やAIエージェントユーザーは、`compose.py` で動画の形式(explainer-motion、story、listicleなど)とテーマ(mystic、neon、terminal-greenなど)を選択し、生成されたJSONテンプレートに実際のコンテンツを記入するだけで、ナレーション付きのプロフェッショナルな動画を手軽に作成できます。

対応✓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(pt-BRおよび英語)を使用し、ソフトなプロシージャルBGMが音声に合わせて音量調整され、カットや表示切り替え時にシューッという音やポップ音が付加されます。古い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では、root権限なしでespeak-ng + MBROLA pt-BRを~/.localにインストール:
bash <skill-dir>/scripts/setup_voice.sh

# 2. ジョブ(フォーマット)とテーマ(雰囲気)から開始:
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シーンにつき1つのアイデア、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
#    オプション:長時間のレンダリングの前に1フレームだけ確認(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."]}

narration にリンク、メールアドレス、ファイルパスを入れないでください(レンダリングは拒否します):画面に表示します(cta サブタイトル)。各文は約110文字以下にしてください。

シーンの種類(compose.py kinds でこのリストが表示されます)

kind表示内容フィールド
title大きなタイトルが単語ごとに表示、下線描画、オプションで上部に記号title, subtitle, symbol(オプション)
bulletsタイトル+アイテムが1つずつ表示、各アイテムにアイコンtitle, bullets: ["text", {"text": "…", "icon": "fa-rocket"}]
terminalターミナルウィンドウでタイピングlines: ["$ comando", "saída"]
quote大きな引用符、単語がフェードイン、著者がスライドインtitle(引用文)、subtitle(著者)
cta終了コール:タイトルがポップ、サブタイトルが光るボタン内にtitle, subtitle, symbol(オプション)
symbol1つの巨大な記号をストロークごとに描画、その後塗りつぶし+グロー、ハローリングsymbol, title, subtitle, spin(true/false)
geometry神聖幾何学を徐々に描画、その後グローshape(1つの名前またはリスト)、title, subtitle, labels(arrows のみ)
wheel円上のN個のノード(2〜12)を1つずつ表示、中心への線付き;現在のノードが光るtitle, nodes: ["a", {"label": "b", "icon": "fa-cog"}], center(単語または記号)、active(1..N:そのノードを強調表示)
icons1〜8個のアイコンがラベルとともにポップインするグリッドtitle, items: [{"icon": "fa-cogs", "label": "motor"}]
kinetic大きな単語が音声に同期して表示;*word* = アクセントカラー+グロー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秒の例(ハーメティシズム、テーマmystic、すべてのイラスト種類):<skill-dir>/examples/caibalion.json。

良いセンスを素早く

  • 種類を変える:同じ種類のシーンを3つ連続させない。テキスト主体(bullets、split)と視覚的(symbol、geometry、kinetic、wheel)を交互に配置。
  • タイトルは短く(5語以下)、サブタイトルは10語以下、箇条書きは各6語以下、最大5箇条。
  • N個のもののリスト:1つのwheel概要、次に各アイテムに1シーン(symbol/geometry)、または再びwheelを"active": kで使用。
  • テーマ:mystic(藍色/金色、セリフ体、星)、neon(マゼンタ/シアン、シンセグリッド)、terminal-green(コード)、sunset、ocean、paper(明るい、セリフ体)、mono。

テスト

python3 <skill-dir>/scripts/selftest.py はすべての種類をドラフトで一瞬レンダリングし、MP4をffprobeでチェックします(exit 0 = OK)。--voice はespeak+字幕もテストします。

関連スキル