/vfx - トーキングヘッドリール用VFXパック
大きなタイトルは話者の背後(人物セグメンテーション)に描画され、自動的に頭上に配置されます。ヘブライ語(RTL)にも完全対応。
| コマンド | 機能 |
|---|---|
/vfx strike | 頭上に大きな単語を表示 → 赤線で打ち消し → 新しい単語に入れ替え |
/vfx echo | 大きなタイトルがポップインし、アウトラインのエコーコピーが飛び出す |
/vfx spotlight | 背景が暗くなり、話者に暖かい光が当たり、ネオン調のタイトルが点滅 |
/vfx freeze-mark | フリーズ+フラッシュ+ズームイン+顔の周りに手描きの赤丸(+オプションでラベル) |
/vfx pinned-comment | 「返信コメント」カードが上部にポップイン |
/vfx plan | 複数のエフェクトを1回のレンダリングで処理 |
/vfx showcase | レンダリング済みクリップをClaudeアプリUIでラップ:タイプコマンド、「Edited with /vfx X」ヘッダー、タイピング&エフェクト音、最後にCTA |
入力
- 動画(縦型9:16のトーキングヘッドが最適)と、エフェクトごとに正確なテキストとタイミング。
ユーザーが指定していないテキストは決して発明せず、不足している場合は一度だけ質問してください。タイミングはトリガーワードから取得できます(
words参照)。 - 出力はソースと同じ場所に
<name>_vfx.mp4として保存します。
セットアップ(一度だけ)
- スクリプトはこのファイルと同じ場所にあります:
scripts/vfx.py、scripts/compose.py(フルパスで呼び出してください)。 ffmpeg、Node/npm(フォントとセグメンテーションモデルはnpm packで一度だけ ~/.cache/vfx に取得)、およびpip install numpy pillow fonttools python-bidi ai-edge-litert "opencv-python-headless<5"が必要です。 オプション:pip install rembg onnxruntime(髪の毛のエッジがよりきれいに、自動適用)、pip install faster-whisper(単語タイミング)。
ワークフロー
ffprobeでクリップを確認。頭上の余白が少ない場合 → タイトルは自動的に画面下3分の1に配置されます。リフレーミングを提案します。- 音声からタイミングを取得:
python3 scripts/vfx.py words clip.mp4 --lang he→{word,start,end}の行が出力されます。 - レンダリング:
Strikeのバリエーション(plan.jsonのみ):python3 scripts/vfx.py strike in.mp4 out.mp4 --text "משעמם" --swap "מרתק" --at 2.1 --strike-at 2.8 --swap-at 3.3 python3 scripts/vfx.py echo in.mp4 out.mp4 --text "IN-APP BROWSER" --at 5 --dur 2.5 python3 scripts/vfx.py spotlight in.mp4 out.mp4 --text "AI SLOP" --at 13 --dur 2.5 python3 scripts/vfx.py freeze-mark in.mp4 out.mp4 --at 9.5 --hold 1.5 --label "תסתכלו כאן" python3 scripts/vfx.py pinned-comment in.mp4 out.mp4 --user someone --text "..." --at 17 --dur 4 python3 scripts/vfx.py plan in.mp4 out.mp4 plan.json # [{"fx":"strike","text":..,"at":..}, ...]"front_first": trueは最初の単語を顔の前面(話者の前に)、入れ替え単語を頭の背後に配置します(例:「מלפנים」→「מאחור」)。"overlap": 0.45はより多くの部分を背後に隠します。 Echoのバリエーション(plan.json):"linger": trueはアウトラインコピーを画面に残し(ゆっくりと呼吸するように)、エフェクト終了まで表示します。 オプション:--y(タイトルの高さを固定、フレームに対する割合。頭で文字が隠れる場合は上げてください)、--color、 freeze-mark の--x --y --r(他のものを丸で囲む場合)、--seg fast|quality、--crf。 - ショーケース(オプション):
python3 scripts/compose.py fx.mp4 final.mp4 schedule.json{"intro": 2.4, "cta": 3.2, "cmds": [{"cmd": "strike", "send": 0.0, "desc": "言って、打ち消して、入れ替え", "sfx": [["swish", 0.9], ["pop", 1.5]]}, {"cmd": "echo", "send": 2.75, "desc": "ビッグタイトル、エコーバースト", "sfx": [["boom", 2.8]]}], "cta_lines": ["このスキルが欲しい?", "5コマンドの?"], "cta_button": "「スキル」とコメント"}send= コマンドが送信されるクリップ秒数(各エフェクトのatはその約0.05秒後に設定)。最初のコマンドはイントロで入力されます。 効果音:key、send、whoosh、swish、pop、boom、shutter、power、ding、chime。 - 確認:エフェクトごとに2〜3フレームを取得(
ffmpeg -ss T -i out.mp4 -frames:v 1 f.png)、それらを確認します(テキストが読める、顔が見える、ヘブライ語が右から左に表示されている、何も切れていない)。修正して再レンダリング。その後、エフェクトごとに1行で納品します。