長い間を短くし、日本語字幕を付けてMP4を書き出す。この作例では、Claude Codeが考えた編集案とコードを使い、19.2秒の動画を17.3秒に仕上げました。
対象は、Macでターミナルにコマンドを入力できる方です。まず同じ素材と完成コードで出力を試し、その後に「Claude Codeへ何を渡し、どこを人が確認したか」を読める構成にしています。環境の導入をゼロから案内する記事ではありません。
使ったのはAI生成映像と合成音声です。Claude Codeは編集案とコードを作り、実際の処理は手元のパソコンで実行しました。今回は実行をCodexで補助しましたが、サンプルを試すためにCodexの契約は必要ありません。Claude Codeが動画を直接見聞きし、全工程を自動実行した事例ではありません。
完成例だけを知りたい方は下の動画へ。手元で試す方はサンプルを書き出す手順へ、指示の作り方を知りたい方は今回どう作ったかへ進んでください。
まず編集前後を比べる
最初の文の後へ、テスト用に2秒の無音を入れました。次の3点に注目して再生してください。
- 間:最初の「誰の、どんな課題を解決できるのか。」の後が、編集後は短くなっているか。
- 声:間の前後で言葉が途中で切れず、次の文へつながるか。
- 字幕:編集後は声に合わせて短い字幕が出るか。「伝える順序」の表記にも注目。
過去に生成した、架空の工場の近景・カタログ・抽象的な編集場面の映像3本と、ElevenLabsをfal経由で生成した既存の合成音声の、固有名詞を含まない区間を使っています。本人撮影や、実在企業の導入実績を示す映像ではありません。
編集前:人工的な間を入れた19.2秒
生成映像・合成音声。入力ファイルはcase/input/raw.mp4です。
編集後:字幕を加えた17.3秒
出力はcase/output/final-v1.mp4。字幕付きの実出力です。
同じサンプルでMP4を書き出してみる
ここではClaude Codeへ新しく指示を出しません。同梱したカット済み動画と完成コードから、同じ字幕付き動画をもう一度書き出します。「完成コードを動かす」経路と、後半の「Claude Codeに編集案を作らせた過程」は別です。
必要なのは、MacでNode.jsとnpmが使えることです。ターミナルでnode --versionとnpm --versionを実行し、両方にバージョン番号が表示されることを先に確認してください。表示されない場合は、この先の実行前にNode.jsの準備が必要です。
このサンプルは、Remotion(コードで字幕や映像を組み立て、動画として書き出す道具)を使います。依存関係の取得と、Remotionの利用条件を自分の用途に合わせて確認してください。
- 検証用動画とRemotionソースのサンプルZIPを保存して展開します。作業用のコピーを残し、READMEを読んでください。APIキーやモデルの重みは入っていません。
- Macのターミナルに
cdと半角スペースを入力します。その後へ、展開したフォルダのうちpackage.jsonが入っているclaude-code-video-sampleフォルダをFinderからドラッグし、Enterキーを押します。これで、コマンドを実行する場所をそのフォルダへ移せます。 lsを実行し、一覧にpackage.json、src、publicがあることを確認します。なければ場所が違うため、この3つが入っているフォルダへ移動してから進みます。npm installを実行し、必要な部品の取得が終わるまで待ちます。エラーが出た場合は、次へ進まずメッセージを確認してください。npm run renderを実行して動画を書き出します。成功すると同じフォルダ内のoutput/final.mp4ができます。Finderで開き、字幕と音声があることを確認します。
# サンプルのフォルダへ移動した後に実行 ls npm install npm run render
検証済みの範囲:今回はZIPを別フォルダへ展開し、同じ版の既存依存関係を接続して再書き出しできることを確認しました。まっさらな環境でのnpm installからの検証と、Windowsでの動作確認はしていません。
途中で止まったら:nodeやnpmが使えない場合は環境の準備へ戻り、package.jsonが見つからない場合は手順2・3のフォルダを確認します。書き出しでエラーが出たら、エラー文と実行したコマンドを残して確認し、成功するまで次の操作へ進みません。試し直す場合は、元のZIPを残したまま別の作業フォルダへ展開すれば、元素材と完成コードに戻れます。
この経路が読む動画はpublic/cut.mp4です。元入力はinput/raw.mp4に残しています。別の動画へ置き換えるときは、今回のカット時刻や字幕を流用せず、編集案を作り直します。
今回どう作ったか:編集案から出力までの6ステップ
ここからは、サンプルの編集案と完成コードを作った過程の解説です。導入から自前の動画を全自動編集できる操作手順ではなく、Claude Codeへの材料、返ってきた案、人が直した点を順番に示します。
使った道具は、Whisper(音声を文字にする道具。音声認識をASRとも呼びます)、FFmpeg(映像や音声を切る・つなぐ道具)、字幕を書き出すRemotionです。Claude Codeは、これらの処理に使う案とコードを作りました。

1.元の素材と、作業中・完成後のファイルを分ける
やり直せるように、元動画raw.mp4を残し、カット済みcut.mp4、字幕付きfinal-v1.mp4を別名で保存しました。次の図は今回の検証フォルダです。配布ZIPは試しやすい配置へ整理しているため、同じフォルダ名がすべて入るわけではありません。
case/ input/raw.mp4 元入力 analysis/raw-transcript.json 文字起こし analysis/claude-edit-plan.json 編集案 remotion/src/ 字幕・表示のコード output/cut.mp4 カット済み output/final-v1.mp4 字幕付き出力

2.文字起こしと、無音の候補を用意する
Whisperで得た文字起こしには、台本の「伝える順序」が「スタイル順序」になる誤認識がありました。そこで、認識結果だけを正解にせず、既知の台本もClaude Codeへ渡しました。
FFmpegでは最初の文の後に、約2.64秒の無音を検出しました。加えた人工無音2秒と、元の音声にあった間を含みます。検出された範囲をすべて削るのではなく、声の前後を残す案を作らせました。
今回使った無音検出コマンドは次のとおりです。検証フォルダのcaseで実行するとログが表示され、元動画は変更しません。-38dBと0.5秒は今回の素材で選んだ検出条件です。別の声へそのまま当てはまる値ではありません。
ffmpeg -hide_banner -i input/raw.mp4 -af "silencedetect=noise=-38dB:d=0.5" -f null -
文字起こしは、Apple Silicon向けのMLX版Whisperとlarge-v3モデルで行いました。Python環境とモデルは既に用意されており、導入からは検証していません。仕組みはMLX Whisperの公式リポジトリを参照できます。
3.Claude Codeへ材料と完成条件を渡す
渡したのは、文字起こし、無音検出ログ、既知の台本、編集条件です。動画そのものをClaude Codeへ見聞きさせた検証ではありません。認証情報やAPIキーは指示文に含めません。使用経路に応じて公式のデータ利用説明も確認します。
実際の指示の要点を、読みやすく整理すると次のようになります。返答はJSON、つまり項目名で情報を整理したデータ形式に指定しました。
入力は生成映像・合成音声の19.2秒、720×1280、30fps。 最初の文の後へ、テスト用の無音2秒を挿入済み。 長すぎる間だけを短くし、短い間と末尾の余韻は原則残す。 残す区間は、元動画の開始・終了秒で示す。 「スタイル順序」は、既知台本の「伝える順序」へ字幕だけを訂正する。 字幕は、カット後の時刻で読みやすい短句に分ける。 Remotion 4.0.541で使うコードを返し、依存関係は追加しない。 残す区間・訂正・字幕・コード・注意点をJSONで返す。 ツールは無効。自分でコマンド実行・視聴したと主張しない。
返ってきたのは、残す区間、字幕の訂正、短句7ページの字幕、Remotionコードでした。回答まで約3分37秒かかりました。これは編集の準備・調整・確認を含む総制作時間ではありません。
Claude Codeの導入や機能全体は、公式の開始手順と公式概要を参照してください。
4.残す区間を確認し、映像と音声を一緒に切る
| 操作 | 元動画の区間 | 編集後 |
|---|---|---|
| 残す | 0〜2.7秒 | 0〜2.7秒 |
| 除く | 2.7〜4.6秒 | 1.9秒を短縮 |
| 残す | 4.6〜19.2秒 | 2.7〜17.3秒 |
この案を確認してから、FFmpegで映像と音声の両方を切り出し、つなぎました。片方だけを短くするとずれるため、一緒に処理しています。後半の字幕時刻も、除いた1.9秒だけ前へ動かします。

カット後の無音は、実出力の機械検査で約0.75秒でした。Claudeの説明と無音の測定値には違いがあったため、最終的には出力を聴いて確認しています。精密値と差の理由は末尾の「検証ログの詳細」にまとめました。
5.字幕を重ねてMP4を書き出す
Claude Codeが返したRemotionコードは、カット済み動画へ字幕を重ねる構成でした。そのまま採用せず、上部の見出しとAI生成表示を大きくし、元の画面全体が収まるように表示を調整しました。
完成動画は縦720×1280、30fps、17.3秒のMP4です。字幕は短句で7ページに分かれ、一部の語を暖色で強調しています。次は出力した動画の8.2秒地点の実フレームです。

この字幕コードを動かしたい場合は、先ほどのサンプルの書き出し手順へ戻ってください。Remotionのコード構成を組み直す場合は、公式のエージェント向け手順も参照できます。
6.出力した動画を見て聴いて確認する
書き出しの成功表示だけで終えず、完成したMP4に映像と音声があること、予定どおり17.3秒であること、字幕が表示されることを確かめました。音声をもう一度文字起こしすると、「伝える順序」を含む台本相当の文が得られました。ただし、文字起こしだけで音の自然さまでは判断できません。
2026年11月9日、運営者が最終動画を試聴し、「声の途切れ・つなぎに問題なし」と確認しました。これは今回の合成音声での結果です。雑音や複数話者のある素材でも同じ品質になるかは、別途確認が必要です。
自分で試すときは、冒頭の比較と同じく「間の長さ」「声の切れ」「字幕との一致」を確認します。うまくいかなければ元入力を残し、カット区間か字幕データのどちらか一つずつを直すと、原因を絞りやすくなります。
カットから再確認したい場合
FFmpegが使える環境で、サンプルのフォルダからpython3 cut.pyを実行すると、元入力を上書きせずpublic/cut-rebuilt.mp4を作れます。通常のnpm run renderが読むのは、同梱のcut.mp4です。
再カットした版を使う場合は、コードのコピーを残してからsrc/Edited.tsx内のstaticFile('cut.mp4')をstaticFile('cut-rebuilt.mp4')に変更し、別名の出力先で書き出します。このカット区間は同梱の19.2秒入力専用です。別動画の時刻や字幕として使い回すものではありません。
費用と、この作例で確認できた範囲
今回は新しい課金APIを使わず、既存のClaude Proと、手元のFFmpeg・Remotion・文字起こし環境で編集しました。一方、映像と合成音声は過去に有料生成したものです。その生成費のこの作例への配賦は未確定で、Claude Proの契約もあるため、全工程を無料とはいえません。利用経路とClaude Code公式の費用説明を照合してください。
生成元モデルのCommercial use表示は確認していますが、第三者の権利を侵害しない保証とは別です。生成素材を実在の顧客実績として扱わず、出所と利用条件を残しています。
今回確かめられたのは、短い生成素材について「間を短くする案を作る」「既知台本に合わせた字幕コードを作る」「人が確認・調整して書き出す」流れです。自前素材の認識精度や、環境導入からの所要時間は、この結果だけでは分かりません。
よくある質問
音声認識の誤りも自動で直せますか?
今回は既知台本に合わせて字幕を訂正しました。音声そのものの修正や、未知の発話を正しく認識できる保証ではありません。
自分の撮影動画へ同じカット時刻を使えますか?
使い回しはしません。話者、雑音、間、映像の内容が変われば、対象区間と字幕を作り直し、その出力を改めて確認します。
BGMやPremiereの追加契約は必要ですか?
この作例にはBGMを追加せず、Premiereを使っていません。必要な音や納品要件がある場合だけ、別に素材や仕上げ方法を選びます。
まとめ:まず同じ素材で1本出力してみる
Claude Codeが作った編集案と字幕コードから、長い間を1.9秒短くした17.3秒のMP4を出力できました。最初はサンプルで同じ動画を書き出す経路を試すと、素材・コード・完成動画の関係を確かめられます。自分の動画へ応用するときは、素材ごとに編集案と字幕を作り直します。
声と映像で目的が伝わるなら、素材を追加購入する必要はありません。BGMを加える場面では、ナレーション動画で歌入り・インストを選ぶ判断へ。音声素材の形式が課題なら、WAVとMP3の使い分けで確認できます。
検証ログの詳細:環境・精密値・AIの説明との差
検証日:2026年11月9日。macOS、Claude Code 2.1.201、既存Claude Proを使用。Claudeのツール機能は無効にし、JSONで編集案とコードを返させました。Node 24.22.1、Remotion 4.0.541、MLX Whisper 0.4.3 / large-v3、FFmpegを使用しています。文字起こしモデルと依存関係は既存のものです。
- 入力:19.2秒、720×1280、30fps、576フレーム。
- 出力映像:17.300秒、519フレーム。音声を含むコンテナ:17.301秒。H.264のMP4とAAC音声を確認。
- 処理時間の記録:入力の文字起こし10.612秒、Claude応答217.339秒、カット6.523秒(終了コード0)、出力の再文字起こし12.816秒。いずれも総制作時間ではありません。
- 入力の無音検出:2.478186〜5.116485秒、計2.638299秒。人工的な2秒と元からの間を含みます。
- Claudeはカット後の間を約0.52秒と説明しましたが、これはASRの発話時刻に基づく値です。無音検出の長さとは同じ指標ではありません。
- 入力の無音から計算すると2.638299−1.9=約0.738秒。再エンコード後の実出力を同じ系統で検査すると約0.750秒の無音を検出しました。「0.52秒の自然な間」とは結論づけていません。
- 出力の音量測定:統合ラウドネス−21.9LUFS、トゥルーピーク−4.8dBFS。音量の正規化は行っていません。特定配信先への規格合格や聞きやすさの判定とは分けています。
- 元入力は保全。ZIPを別フォルダへ展開し、同じ版の既存依存関係で再レンダリングを確認。クリーンインストールとWindowsは未検証です。
映像・音声は生成素材です。表紙と役割・配置の概念図は実行の証拠に含めません。本文の実フレーム・動画・数値は、入力/出力、文字起こし、無音検出、Claude Code応答と処理ログに基づきます。
当サイトはアフィリエイト広告を利用しています。案内先の関連記事には広告が含まれます。