/auto-video-edit: 生の映像から完成動画へ
全体を中断せずに実行します。エラーを修正して再実行し、良好な final-video.mp4 ができるまで繰り返します。
SKILL_DIR はこのファイルがあるフォルダ(通常は ~/.claude/skills/auto-video-edit)を指します。
1. セットアップを確認(初回のみ)
ls SKILL_DIR/.venv/bin/python SKILL_DIR/remotion/node_modules/.bin/remotion
どちらかが欠けている場合は、リポジトリの install.sh を実行するか、手動で行います:
python3 -m venv SKILL_DIR/.venv && SKILL_DIR/.venv/bin/pip install -r SKILL_DIR/requirements.txt
cd SKILL_DIR/remotion && npm install && npx remotion browser ensure
また、PATHに ffmpeg、ffprobe、node が必要です(macOS:brew install ffmpeg node)。
2. パイプラインを実行
映像があるフォルダ(ファイル名を指定しない場合は、そこにある最大の動画ファイルが使用されます)で:
bash SKILL_DIR/scripts/run_all.sh # または: run_all.sh my-take.mov
3つのステップが実行されます。各ステップは SKILL_DIR/.venv/bin/python SKILL_DIR/scripts/<step>.py で単独実行も可能です:
| ステップ | 処理内容 | 出力ファイル |
|---|---|---|
edit.py | 発話を検出、0.5秒以上の無音をカット(0.15秒の空気を保持)、約4.5秒のショットに分割、単語に基づいて通常/パンチ(1.3倍)/タイト(1.5倍)のショットを選択、検出した顔に合わせてズームを中央配置、カラーグレーディング、音声を-14 LUFSにマスタリング、各カットに10msのフェード | edited-video.mp4、work/transcript.json、work/edit_report.json |
animate.py | 視覚的なカードが必要な瞬間を抽出:単位付きの数字 → カウンター、「A vs B」/「代わりに」/「before-after」→ 比較、3つ以上の「最初に/次に/最後に」の文 → フローチャート、強い主張(「真実は」「ほとんどの人が」など)→ テキストカード;約15秒に1枚のカード、最初の2.5秒には挿入しない;各カードを動画のサイズとフレームレートでレンダリング | work/animation_plan.json、animations/*.mp4、work/animation_manifest.json |
finalize.py | 各カードを指定時刻にソフトフェードで挿入;broll/ フォルダが存在する場合、ファイル名が発言と一致するクリップ(例:broll/coffee.mp4 →「コーヒー」)を3秒間挿入 | final-video.mp4、work/finalize_report.json |
便利なフラグ:edit.py --no-zoom、--whisper small(高精度な文字起こし、処理は遅い)、--silence-db -35(静かな部屋)/ -25(騒がしい部屋)、--min-silence 0.35(よりタイトなカット)。animate.py --max 3、--min-gap 8。
3. カードをスマートにする(毎回これを行う)
自動プランはルールベースです。最終レンダリング前にトランスクリプトを確認して改善します:
SKILL_DIR/.venv/bin/python SKILL_DIR/scripts/animate.py --plan-onlywork/transcript.jsonとwork/animation_plan.jsonを読みます。プランを編集します:- すべての
headline/label/steps/valueを、話者の意図を表す2~6語のパンチのある言葉に書き換えます(文の一部ではありません)。文字起こしが誤認識した数字を修正します。 - 理解の助けにならないカードは削除します。重要な数字、リスト、対比がある箇所にカードがなければ追加します。カードの種類とプロパティ:
Counter:{"to": 75, "decimals": 0, "prefix": "$", "suffix": "%", "label": "..."}Comparison:{"left": {"label": "Before", "value": "4時間"}, "right": {"label": "After", "value": "10分"}}Flowchart:{"steps": ["録画", "アップロード", "投稿"]}(2~5ステップ)TextCard:{"headline": "誰も話さない真実", "body": ""}
- 各カードには
"start"(edited-video.mp4 内の秒数)と"seconds"(3~5)が必要です。
- すべての
SKILL_DIR/.venv/bin/python SKILL_DIR/scripts/animate.py --from-planSKILL_DIR/.venv/bin/python SKILL_DIR/scripts/finalize.py
4. 結果を確認
work/edit_report.jsonとwork/finalize_report.jsonを確認:再生時間が適切に短縮されているか、警告がないか。- フレームを切り出して確認:
ffmpeg -ss 5 -i final-video.mp4 -frames:v 1 -y work/check.jpg(各カードの開始位置+1秒でも同様に)。確認ポイント:ズームしたショットで顔がフレーム内に収まっているか、カードが読みやすいか、何も切れていないか。 - ズームで顔が大きく切れてしまう場合は、
edit.py --no-zoomで再実行。カットが不自然に感じられる場合は、--min-silence 0.8を使用。
何かが失敗した場合
各ステップはffmpeg/Remotionの完全な出力を work/*.log に書き込みます。最後の行を読み、原因を修正し、そのステップのみ再実行します。よくあるもの:
whisper unavailable→ venvが不足しています。インストールしてください(ステップ1)。ズーム選択なしでも編集は実行されます。- Remotion
Could not find a browser→cd SKILL_DIR/remotion && npx remotion browser ensure。 - カードのレンダリングに失敗 → プレーンなTextCardとして再試行され、それでもダメならスキップされます。動画はそのまま完成します。
レポート
--- 動画編集完了 ---
入力 / 出力 / 再生時間(前→後) / カット数 / ズーム比率 / カード数 / Bロール / ファイルサイズ
その後、修正できなかった点を報告します。