家族旅行の動画39本を外に出さずに2分へ。ffmpeg+Remotionでローカル自動編集
久しぶりの家族の長距離移動旅行。 vlogのAI自動編集をしてみたくて、iPhoneで縦動画を4泊5日の旅行で39本撮影で合計4分ちょっと。Claude Codeに、ローカルで完結する自動編集パイプラインを作ってもらった。
今回のポイント
- 指示は1行ずつの短いものだけ。方式もツールもClaude Codeが決めた
- ffmpeg で39本→2分13秒に自動選抜(v1)、Remotion でタイトルカード・テロップ・BGMを追加(v2)
- 素材を用意する以外は全部自動。動画は1バイトも外に出ていない
最初の1行
書いたのはこれだけ。
家族旅行で撮影した動画をAIで自動編集したい編集方針もツールも指定していない。ここからClaude Codeが環境を調べて、「クラウドに上げずにffmpegだけで完結させる」という方式を出してきた。家族の動画を外部サービスに投げたくないという話は、こちらからは一度もしていない。
以降も、投げた指示はどれもこの長さだった。順に見ていく。
共有アルバムから読めるか聞いたら、読めなかった
iPhoneからMacに動画を移すのが面倒だったので、共有アルバムを直接読めないか聞いた。
photos の shared albumからデータ参照できるか答えはNo。写真アプリのライブラリはmacOSのTCC保護でターミナルから読めず(Operation not permitted)、共有アルバムも同じ理由でブロックされる。しかも共有アルバムの動画はiCloud側で最大720pに圧縮されている、というおまけ付きだった。画質の面でもどのみち使えない。
結局AirDropでMacに送った。素材を渡すのは、フォルダを @ で指すだけでいい。
@"(動画を入れたフォルダ)"
ここに動画入れた選抜は全部おまかせ
ここから先は、ほぼ何も指示していない。作られたのは、こういう処理をするPythonスクリプトだった。
- 各クリップの撮影日時を読んで時系列に並べる
- ffmpegのシーン検出と音量解析で「にぎやかな場面」を採点する。家族動画なら音が大きい場面=歓声や会話がある場面で、だいたい当たる
- どのクリップからも最低1つは採用して、目標の2分に収まるよう配分する
- iPhoneのHDR動画をSDRに変換し、音量を揃えて、1本に結合する
python3 autoedit.py --target 120 を実行すると、約4分の素材から2分13秒のハイライトが出てくる。ここまでがv1。
「Remotion使える?」で演出版ができた
切り貼りだけだと味気ない。動画をReactで作れるRemotionが使えないか聞いてみた。
Remotion使える?Remotionは公式がAgent Skillsを配布している。これを入れると、Claude CodeがRemotionの流儀(composition・Sequence・トランジション)を分かった状態でコードを書いてくれる。
npx skills add remotion-dev/skills素材はv1の出力をそのまま流用して、こういう構成になった。
- タイトルカード → Day 1〜5の日付カード → 各クリップ → エンドカード
- 各日の先頭クリップにだけテロップを表示
- つなぎはクロスフェード10フレーム
- BGMはPixabayで探した曲をループ、最後の3秒でフェードアウト(Pixabay Content Licenseは商用可・クレジット表記不要)

npx remotion studio で開くとこの画面になる。左のツリーがそのままReactコンポーネントの構造で、TransitionSeries の下にタイトルカードとクリップが並ぶ。フレーム単位で再生位置を動かしながら確認できるので、テロップの出るタイミングがずれていてもすぐ分かる。
旅程メモは、渡しただけ
テロップの文言を1枚ずつ考えるのが面倒だったので、旅行前に作っていた旅程のmarkdownを渡した。投げたのはこれだけで、指示文は1文字も書いていない。
@"(旅程メモ.md)"日付ごとの見出しの下に、時間と行動を並べた表があるだけのメモだ。これを読んで、Day 1〜5の流れをそのままテロップにする案が返ってきた。カードの見出しとサブテキストが起こされ、各クリップの撮影日時から「この動画はDay 3」と自動で割り当てられる。日付ごとの対応を人が指定する必要はなかった。
ついでに警告も返ってきた。このメモの冒頭に予約サイトのログイン情報が平文で書いてある、コードにも動画にも使わないがメモの管理には注意を、と。言われて初めて気づいた。
そもそもこういう私的なメモを丸ごと渡せるのは、処理がローカルで完結しているからだ。クラウドの編集サービスなら、テロップ用に中身を抜き出して貼る作業が要る。この気楽さが一番ありがたかった。
調整も1行
作り直しではなく差分で頼める。
ハイライトを3分にして
YouTube用に横(1920x1080)でも書き出して
Day 3のテロップを「移動日」に変えて、再レンダリングして
BGMを差し替えて、音量を少し下げてまとめ
- 指示は毎回1行。方式もツールもClaude Codeが決めて、こちらは聞かれたことに答えるだけだった
- 「家族の動画を外に出さない」は指定していないのに、最初からローカル完結の方針で出てきた
- ローカルなので、予約情報が入った旅程メモも編集せず丸ごと渡せる。しかも危ないところは向こうから指摘してくる
- Remotionを使うと、動画編集がReactコードの差分レビューになる。テロップの文言変更がgit diffで見えるのは新鮮だった