動画を、エージェントに作らせる。

Movo は、Claude Code のような CLI ツールや AI エージェントが動画を作るための コマンドラインツールです。タイムラインを画面上で並べる代わりに、レイヤーとアニメーションを JSON で書きます。書く・検品する・描く・測るまで、すべてシェルの中で完結します。

MIT ライセンス / Windows・Linux・macOS / 22 のコマンド・24 種のレイヤー・69 のエフェクト

# 1. 使える型を機械可読で受け取る
$ movo skill list --json

# 2. エージェントが JSON を書く
$ cat > mv.json

# 3. 描く前に検品する
$ movo validate mv.json --json
  { "valid": true, "issues": [], "warnings": [] }

# 4. 1 枚だけ描いて目で確かめる
$ movo frame mv.json -t 4.0 -o check.png

# 5. 書き出す
$ movo render mv.json --jobs auto -o mv.mp4

エージェントが最後まで作りきれる形にしてあります

動画づくりを自動化するときに困るのは、たいてい «画面を操作しないと進まない» ことと «出来たものが正しいか機械では分からない» ことです。Movo はその 2 つを外しました。

入力は JSON だけ

レイヤー・キーフレーム・エフェクト・物理・文字組みまで、すべて JSON のフィールドです。 言語モデルがそのまま書ける形式で動画を組み立てられます。

同じ JSON からは同じ動画

乱数はシードで固定され、区間に割って並列に描いても出力は変わりません。 差分をレビューでき、CI に載せて回帰を見張れます。

描く前に検品できる

movo validate がスキーマと意味(重複 ID・未宣言の素材・式の構文)を検査します。 結果は --json で受け取れます。

全部シェルから

22 のコマンドはどれも引数だけで動きます。終了コードは失敗の種類ごとに分かれているので、 次の手をスクリプト側で決められます。

生成した JSON を、機械で検品する

movo validate は、どこがどう違うかを構造化して返します。 素材名の打ち間違いも、レイヤー ID の重複も、式の構文エラーも、 1 フレームも描かないうちに分かります。 エージェントはこの出力を読んで JSON を直し、通ってから render に進めます。

終了コードは失敗の種類ごとに違う値です。3 なら JSON を直す、 4 なら素材を用意する、8 なら ffmpeg を入れる、と分岐できます。

$ movo validate mv.json --json
{
  "file": "/work/mv.json",
  "valid": false,
  "issues": [
    {
      "path": "scenes[0].layers[0].asset",
      "message": "asset \"susukii\" is not declared in assets"
    }
  ],
  "warnings": []
}
$ echo $?
3
終了コード 意味
0成功
2使い方の誤り
3JSON が不正
4素材が見つからない
5式が不正
8ffmpeg が無い
9メモリ不足

全 9 種はマニュアルの終了コードにあります。

作風を指定して作らせる

«いい感じに» はエージェントに伝わりません。Movo は作風を 名前数値の 2 通りで指定できます。

名前で指定する — スキル

スキルは «入力値だけで絵になる» ひとまとまりです。1 レイヤーぶんの動きから 1 本ぶんの構成まで 4 段階あり、合計 57 種が同梱されています。 一覧は --json で取れるので、エージェントが選べます。

種類中身同梱数
基礎アニメーション1 レイヤーぶんの動き28
スキルレイヤー群(文字と飾り、天候など)15
シーン1 カットぶん11
ムービー1 本ぶんの構成3
$ movo skill list --json
$ movo skill show lyric-line
$ movo skill render cutin-title --set text=サビ -o cut.mp4

数値で指定する — プロファイル

出来上がった映像をカット尺・動きの量・実質の色数・彩度・コントラスト・細かさなど 8 つの指標で測ります。目標のプロファイルと突き合わせると、 外れた項目の直し方まで出ます。同梱の目標値は 10 種です。

$ movo profile mv.mp4 --json
$ movo compare mv.mp4 --target profiles/kinetic-type.json

  ! 1 項目が目標から外れています
    v カット尺        1.62秒(目標 0.400〜2.50秒)
    v 毎分のカット数   30.15本(目標 24〜150本)
    x コントラスト     0.144(目標 0.200〜0.500)
        明暗の差が足りません。……

自作の目標値は <プロジェクト>/profiles/*.json に置けば名前で呼べます。

曲を渡せば、1 本ぶんの JSON になる

BPM・1 拍目・区間を解析し、カット尺を 小節で決めます。 曲を差し替えればカット割りが追従します。時刻の無い歌詞には lyrics align が下書きの時刻を付けるので、 エージェントは --anchor で 2〜3 点だけ留めて調整できます。

make-mv は 1 本ぶんを一気に作ります。 途中の JSON が欲しいときは movo skill expand で素の Movo JSON に展開できます。

# BPM・拍・区間を調べる
$ movo analyze song.mp3 --json

# 時刻の無い歌詞に時刻を付ける
$ movo lyrics align song.mp3 \
    --text lyrics.txt --anchor 1=5.4 -o song.lrc

# 1 本ぶんを作る
$ movo make-mv song.mp3 --lyrics song.lrc \
    --style hype-lyric-mv --jobs auto -o mv.mp4

サンプル

すべて Movo が出力したものです。写真の素材は CC0 とパブリックドメインのものだけを使っています。 同梱スキル 15 個ぶんの作例とコマンドは マニュアルの «スキル 15 個の作例» にあります。

タイトルとサブタイトルが帯の上に現れるアニメーション

タイトルカード

movo skill render title-card

すすきの写真の上で歌詞が左から塗られていくアニメーション

歌詞のカラオケ塗り

movo render photo.json

集中線が開きながら文字が集まってくるアニメーション

集中線カットイン

movo skill render cutin-title

拍に合わせて波形バーと円が動くアニメーション

音声ビジュアライザ

movo skill render audio-bars

この JSON から、2 つめの GIF が出ます

レイヤーを並べ、その上にスキルを 1 つ載せただけのプロジェクトです。 movo render photo.json -f gif -o photo.gif で書き出しています。

{
  "movoVersion": "1.0",
  "project": { "name": "movo-photo", "seed": 3 },
  "video": { "width": 640, "height": 360, "fps": 24, "duration": 3.5, "background": "#0b0b10" },
  "assets": { "susuki": "assets/susuki.png" },
  "scenes": [
    {
      "id": "cut", "start": 0, "duration": 3.5,
      "layers": [
        { "id": "photo", "type": "image", "asset": "susuki",
          "transform": { "x": 320, "y": 180, "width": 640, "height": 360, "anchorX": 0.5, "anchorY": 0.5 } },
        { "id": "scrim", "type": "shape",
          "shape": { "type": "rectangle", "width": 640, "height": 360, "fill": "rgba(6,8,20,0.45)" },
          "transform": { "x": 320, "y": 180, "anchorX": 0.5, "anchorY": 0.5 } }
      ],
      "use": [
        { "skill": "lyric-line", "with": { "text": "すすきの原を風がわたる", "size": 150, "duration": 3.5 } }
      ]
    }
  ]
}

ダウンロード

展開して movo を実行すれば動きます。Python の用意は要りません。 最新版は v0.1.0 です。

OS ファイル 大きさ 取得
Windows (x64) movo-0.1.0-windows-x64.zip 69.5 MB ダウンロード
Linux (x64) movo-0.1.0-linux-x64.tar.gz 100.1 MB ダウンロード
macOS (Apple Silicon) movo-0.1.0-macos-arm64.tar.gz 59.1 MB ダウンロード

ソースから入れる

Python 3.11 以上があれば pip install -e . で入ります。 Intel Mac やその他の環境ではこちらをどうぞ。

mp4 で書き出す

movo setup-ffmpeg が ffmpeg を ~/.movo/bin に用意します。 GIF と連番画像はそのまま書き出せます。

配布物を照合する

SHA256SUMS.txt で手元のファイルを確認できます。手順はインストール方法に。

インストール方法を読む

次に読むもの

マニュアル

22 コマンドの一覧、JSON の書き方、スキル、作風の測り方、終了コード。

読む

インストール方法

実行ファイル、ソース、ffmpeg の用意、ハッシュの照合まで。

読む

ソースコード

MIT ライセンスで公開しています。JSON スキーマも実装も読めます。

GitHub