エフェクト(AI Wala Kapil Studio)
1クリップ → 複数エフェクト、1コマンド。タイミングは秒 または音声内の単語("@views"、"@कमाई+0.2";英単語もWhisperのデーヴァナーガリー表記にマッチ、例:link ↔ लिंक)で指定可能。
実行方法
python3 ~/.claude/skills/awk-effects/scripts/effects.py --list # 全エフェクトとそのプロパティ一覧
python3 ~/.claude/skills/awk-effects/scripts/effects.py VIDEO.mp4 --spec fx.json --preview 3.2 # 1フレームプレビュー(高速)
python3 ~/.claude/skills/awk-effects/scripts/effects.py VIDEO.mp4 --spec fx.json -o VIDEO_fx.mp4
fx.json:
[
{"fx": "title-behind", "t": 0.0, "dur": 2.6, "props": {"text": "FREE|CLASS"}},
{"fx": "orbit-text", "t": 2.6, "dur": 4.0, "props": {"images": ["~/Pictures/a.png", "~/Pictures/b.png", "~/Pictures/c.png"], "size": 0.25}},
{"fx": "clone", "t": 6.9, "dur": 1.6, "props": {"count": 2, "lag": 0.4}},
{"fx": "edit-timeline", "t": 8.6, "dur": 3.0, "props": {"title": "🎬 Aise video banti hai", "y": 0.6}},
{"fx": "photo-3d", "t": 12.0, "dur": 3.0, "props": {"photo": "~/Pictures/creator.png", "label": "Aap bhi creator ✨"}},
{"fx": "map-flyto", "t": 15.0, "dur": 3.0, "props": {"image": "~/maps/india.png", "x": 0.27, "y": 0.6, "label": "Mumbai"}},
{"fx": "transition", "t": "@फटाफट", "dur": 0.4, "props": {"kind": "zoom-punch"}},
{"fx": "checklist", "t": 5.4, "dur": 3.0, "props": {"title": "Kya karna hai", "items": ["Bio link kholo", "Form fill karo", "Submit"], "every": 0.6}},
{"fx": "iphone-ui", "t": "@DM", "dur": 2.2, "props": {"app": "Instagram", "title": "aiwalakapil", "body": "New message", "icon": "📩"}},
{"fx": "spotlight", "t": 10.8, "dur": 2.0, "props": {"label": "Description mein link", "glitter": true}},
{"fx": "glass-widgets", "t": 13.0, "dur": 3.0, "props": {"items": [{"icon": "🔥", "title": "Views", "value": "4.2L"}]}},
{"fx": "money-counter", "t": 16.2, "dur": 2.4, "props": {"to": 50000, "label": "Course ki value"}},
{"fx": "chart", "t": 18.8, "dur": 2.6, "props": {"title": "Registrations", "bars": [{"label": "Day 1", "value": 58}, {"label": "Day 2", "value": 111}]}},
{"fx": "news-cut", "t": 21.5, "dur": 2.0, "props": {"headline": "FREE AI class shuru!"}},
{"fx": "freeze-callout","t": 24.0, "dur": 1.6, "props": {"name": "KAPIL", "sub": "AI Wala Kapil"}}
]
仕組み
tools/awkvision(Apple Vision、オンデバイス)が、動画1本につき1回、人物のマット+顔追跡を生成しキャッシュします(VIDEO.matte.mp4、VIDEO.faces.json;初回ビルドではSwiftツールをコンパイル、60fps 4Kソース動画の25秒あたり約1分、--fast-matteで高速化)。- Remotionが透明な背後レイヤー(人物の下)と前面レイヤーをレンダリングし、ffmpegが動画→背後→人物切り抜き→前面の順に重ねます。
- スポットライト、オービット、ガラスウィジェット、title-behind、freeze-calloutは、顔を自動追跡します。
cloneはffmpegでマットを使用して合成:人物のコピーが時間的にずれて隣に配置されます(--previewでは表示されません)。photo-3dは任意の写真から被写体を切り抜き(Apple Vision)、背景に対して動かして奥行きを表現します。map-flytoは任意の地図画像を使用します(x/yは画像の割合;高解像度の地図を使用してください。小さい画像はズーム時にぼやけます)。- プロパティ内のローカル画像パス(
images、image、photo)は、スタジオに自動コピーされます。
Claudeのワークフロー
- スクリプトを文字起こしまたは読み、4~8のタイミングを選びます(最初の2秒にフック、数字、リスト、CTA)。エフェクトを連続して詰め込まず、各1~3秒、間に余白を入れます。
- 本レンダリング前に、必ずいくつかのキーモーメントを
--preview Tでプレビューして確認します。 - リール内の順序:自動カット → 自動ズーム → エフェクト → キャプション → SFX → オーディオマスター(ズームとトランジションは動画を再描画するため、キャプションはその後)。
- テキスト背後表示は、頭上のスペースに合わせてサイズ調整されます。髪が最後の行の下部を覆うのが見た目です。短い単語(1行8文字以下)が最も読みやすくなります。
- すでにテキストボックスが埋め込まれている動画では、空いているゾーンにエフェクトを配置するか、フルスクリーンモーメント(news-cut、photo-3d、freeze-callout、spotlight)を使用して、競合を避けます。
- ガラスカードは色づけされ(ぼかしではなく)、どの映像でも読みやすくなっています。