Claude Codeで全工程を自動化する — プロンプト設計とスクリプト統合【第6回】

subaru · ·

ここまでで ffmpeg・Whisper・auto-editor の使い方を把握した。最終回では3つのツールをClaude Codeで繋いで、動画の粗編集を一括自動化するスクリプトを作る。

自動化する工程の整理

入力: input.mp4(クライアントからの素材)

Step 1: auto-editor → ジェットカット(無音区間を自動カット)

Step 2: Whisper → 文字起こし・SRT字幕ファイル生成

Step 3: ffmpeg → 字幕焼き込み

出力: output_final.mp4(字幕付き粗編集動画)

Claude Codeへのプロンプト設計

悪いプロンプト例

動画を自動編集するスクリプトを書いて

これでは何も決まっていない。何を入力して何を出力するか、どのツールを使うかが指定されていない。

良いプロンプト例

以下の仕様でPythonスクリプトを作成して実行してください。

【入力】
- 動画ファイル: /tmp/input.mp4

【処理内容】
1. auto-editorでジェットカット(margin: 0.2sec、threshold: 0.04)
   → /tmp/cut.mp4 として保存
2. Whisperでの文字起こし(モデル: turbo、言語: 日本語)
   → /tmp/cut.srt として保存
3. ffmpegで字幕焼き込み(フォントサイズ: 24、色: 白)
   → /tmp/output_final.mp4 として保存

【エラー処理】
- 各ステップが失敗したらエラーメッセージを表示して終了する
- 処理完了時に各ファイルのパスを表示する

良いプロンプトの条件:

  1. 入力ファイルのパスを明示する
  2. 各ステップを番号付きで指定する
  3. 出力ファイル名を指定する
  4. 設定値(閾値・フォントサイズなど)を具体的に書く

Claude Codeが生成するスクリプト例

上記のプロンプトに対してClaude Codeが生成するスクリプトはこのようになる。

import subprocess
import os
import sys

INPUT_FILE = "/tmp/input.mp4"
CUT_FILE = "/tmp/cut.mp4"
SRT_FILE = "/tmp/cut.srt"
OUTPUT_FILE = "/tmp/output_final.mp4"

def run_command(cmd, step_name):
    print(f"\n=== {step_name} ===")
    result = subprocess.run(cmd, shell=True, capture_output=True, text=True)
    if result.returncode != 0:
        print(f"エラー: {result.stderr}")
        sys.exit(1)
    print(f"完了: {step_name}")
    return result

# Step 1: ジェットカット
run_command(
    f'auto-editor "{INPUT_FILE}" --margin 0.2sec --edit audio:threshold=0.04 -o "{CUT_FILE}"',
    "ジェットカット"
)

# Step 2: 文字起こし
run_command(
    f'whisper "{CUT_FILE}" --language Japanese --model turbo --output_format srt --output_dir /tmp/',
    "文字起こし"
)

# Step 3: 字幕焼き込み
run_command(
    f'ffmpeg -i "{CUT_FILE}" -vf "subtitles={SRT_FILE}:force_style=\'FontSize=24,PrimaryColour=&Hffffff\'" "{OUTPUT_FILE}" -y',
    "字幕焼き込み"
)

print(f"\n=== 完了 ===")
print(f"出力ファイル: {OUTPUT_FILE}")

反復的に改善する

一度で完璧なスクリプトができることは少ない。Claude Codeとのやり取りは反復で進める。

Step 1: まず動かす

上記のスクリプトを実行してください

Step 2: エラーが出たら貼る

以下のエラーが出ました。修正してください。
[エラーメッセージをそのまま貼る]

Step 3: 動いたら改善する

スクリプトが動きました。以下を追加してください。
- 処理時間を計測して最後に表示する
- 中間ファイルを最後に自動削除する
- ファイルが存在しない場合のエラーチェックを追加する

実用的な改善ポイント

処理時間の計測

import time
start = time.time()
# 処理
elapsed = time.time() - start
print(f"処理時間: {elapsed:.1f}秒")

中間ファイルの自動削除

import os
os.remove(CUT_FILE)
print("中間ファイルを削除しました")

複数ファイルのバッチ処理

./videos/ ディレクトリ内の全 .mp4 ファイルを
上記のスクリプトでバッチ処理して、
./output/ ディレクトリに保存するように変更してください

このシリーズで学んだこと

ツールできること
ffmpegフォーマット変換・カット・字幕焼き込み・結合
Whisper音声→テキスト・SRT字幕ファイル生成
auto-editor無音区間の自動検出・ジェットカット
Claude Code上記ツールを繋ぐスクリプトの生成・実行

Claude Codeは「コードを書いて実行する」ツールだ。周辺ツールの概要を把握していれば、あとはClaude Codeに組み立てさせることができる。

次のステップ

  • 話者識別: Whisperの large-v3 モデルで複数話者を識別する
  • AIによる自動カット位置提案: 文字起こしテキストをLLMに渡して「削除すべき部分」を提案させる
  • ワークフロー化: n8nでこのスクリプトをトリガーとして動かす

動画編集の定型作業をClaude Codeで自動化する土台ができた。あとは自分のユースケースに合わせて拡張していくだけだ。