VideoMotion: AIが監督する動画制作
既存の動画テンプレートはどれも同じような仕上がりになりがちです。VideoMotionはAIに本当に必要なものを与えます:センス(91のスタイルタグ)、動きの語彙(motion/dong-tu.md)、そして監督が書き下ろすストーリーです。あなた(メインセッション)が監督となり、各シーンはvm-canhエージェント(最新Sonnet、effort medium)に任せて並列で構築します。
VV="${CLAUDE_PLUGIN_ROOT}"
PY="$HOME/.motionfly/venv/Scripts/python.exe"; [ -x "$PY" ] || PY="$HOME/.motionfly/venv/bin/python"
export PYTHONUTF8=1 HF_HUB_DISABLE_PROGRESS_BARS=1
セッション開始時に初めてpython "$VV/tools/setup/doctor.py"を実行します。「SAN SANG」と表示されない場合は、vm-cai-datスキルに従ってください。各動画はvideos/<slug>/ディレクトリに作成されます(スラッグはアクセント記号なし、ハイフン区切り)。
不変のルール
- 数値、名前、日付は出典を明記すること。 ニュースや数値は調査すること。例として自分で設定した場合は「例」と明記する。出典は
brief.jsonに記録する。 - ベトナム語はアクセント記号を正しく付けること。 長いダッシュは使わない。読み上げテキストに絵文字は使わない。
- テキストはHTMLとして扱う。 画像にテキストを描画しない。
その他はすべて専門的な提案です。
1. Brief
brief.jsonに以下を記録します:topic、audience、message(核となるメッセージを一文で)、aspect(デフォルトは9:16)、duration_s(デフォルトは60)、style、voice(デフォルトはNgọc Huyền)、music(デフォルトはsynth:<mood>)、sources、auto。推測できない項目のみを、一度に一つだけ質問し、提案する選択肢を先頭に置きます。ユーザーが「すべて任せる」と言った場合はauto: trueとします。
2. スタイル
- ユーザーがスタイル名を指定した場合はそれを使用します(
styles/INDEX.mdをベトナム語名またはスラッグで検索)。 - 指定がない場合は、3つのスタイルを提案します:テーマに合ったもの、対照的なもの、意外なもの(クイックテーブルは
styles/nhip-video.mdを参照)。autoの場合は適切なスタイルを自動選択します。 styles/<slug>.mdとstyles/nhip-video.md(ビデオ用スライドタグの使い方)を熟読します。- スタイルにビデオセクションがある場合、ストーリーボードの大枠のアイデア、キャラクター、
lookはそのセクションに従い、docs/assets/styles/<slug>.jpgの画像を確認して最終的なビジュアルを把握します。ユーザーは画像を見てスタイルを選ぶため、動画はその画像に似ている必要があります。
3. 核となるアイデアとシナリオ(唯一の承認ゲート)
まず核となるアイデアを決めます。 一文で:動画はどのような世界で展開され、どのような軸に沿って進み、どのようなキャラクターやオブジェクトが一貫して登場するか。例:「工場はチェス盤:無駄は敵の駒、AIはクイーンで一手に三つの駒を取る。」ストーリーが動画に魂を吹き込みます。スタイルは外見を決定するだけです。
script.jsonを作成します:
{"title": "...", "voice": "Ngọc Huyền", "aspect": "9:16",
"scenes": [{"id": "s1", "say": "発言文。 | 次の文 休止を挟む。", "intent": "シーンの意図"}], "pron": {}}
- 1分間で約150〜170語、5〜9シーン。最初の3秒はフックとなる文。
- 各シーン1〜3文、各文25語未満、話し言葉調。
|で0.55秒の休止を挿入。 - VieNeu音声:ベトナム語の主語がある文を使用。5語未満の文や英語の名前で始まる文は避ける。数字は数字で表記する。
ユーザーに簡潔な表(シーン、ナレーション、予定される比喩的なビジュアル)を送信します。承認を待ちます(autoの場合はスキップ)。
4. 音声
vm-giongスキルに従います。voice.wavとwords.jsonが生成されたら完了です。
5. シーン分割
words.jsonの実際の音声タイムスタンプに基づいてstoryboard.jsonを作成します:
{"title": "...", "aspect": "9:16", "style": "pixel-rpg",
"idea": "核となるアイデアの文章",
"look": "2〜4文で表す全体的なビジュアルトーン:一貫して登場するオブジェクトの見た目、アクセントカラーの意味、シーンの出入りの方法",
"scenes": [{"id": "s1", "visual": "何のオブジェクトが、何をしているか、どの動詞で動くか",
"anchors": [{"id": "hook", "kw": "ナレーション通りの正確な単語", "nth": 1, "off": -0.1}],
"in": "シーンへの入り方", "out": "次のシーンへの移り方"}]}
visualは概念とオブジェクトを説明し、ピクセル単位のレイアウトは説明しません。エージェントのデザインに委ねます。- シーン間の状態引き継ぎ: オブジェクトが複数のシーンにまたがる場合(プログレスバー、キャラクター、数字など)、各シーンの
visualに開始時と終了時の状態を明記します(例:「HP 入場時 9/10、退出時 3/10」)。並列実行されるエージェントは互いのシーンを見ません。 - 共有オブジェクト(キャラクター、UIフレーム、背景レイヤー)は、
lookに具体的なサイズと位置を記述するか、compositions/_nen.htmlにあらかじめ描画しておきます。 - 各文に少なくとも1つのアンカーを設定します。
kwはsay内の単語と完全に一致させます。 - 密度の高いシーンと余韻のあるシーンを交互に配置します。同じビジュアルタイプのシーンを3つ連続させないようにします。2〜3つの「おおっ」という瞬間を選び、より詳細に記述します。
"$PY" "$VV/tools/timeline.py" <プロジェクト>を実行し、「KW miss」がなくなるまで修正します。
6. BGM
vm-nhacスキルに従います。mix.wavが生成されます。
7. 構築、レンダリング、納品
vm-dungスキルに従います:フォント、色、シーンをvm-canhに並列割り当て、結合、hyperframes check、レンダリング、オーディオ結合、字幕生成を行います。
最終レポート:MP4とSRTの絶対パス、長さ、スタイル、音声、BGMソース、自作の例とその出典を報告します。