Claude Codeで動画編集は何ができる?文字起こしで切る仕組みと手順
Claude Codeは動画を直接見ず、文字起こしと静止画を読んでffmpegに編集させます。言い直しや無音のカット、字幕、縦型化は任せられ、テイク選びと仕上げは人が確認します。
目次

Claude Codeで動画編集はできます。ただし、Claude Codeが.mp4を再生して見ているわけではありません。Claudeには動画も音声も入力できないため、Whisperなどで作った文字起こし(必要なら数枚の静止画も)を読み、どこを残すかを決め、ffmpegなどのコマンドを実行させて編集します。Claude Code自体に編集機能があるのではなく、編集ツールを動かす指揮役です。
この仕組みで任せやすいのは、1人で話すトーク動画、画面録画の解説、ポッドキャストや配信アーカイブのように、言葉で編集点が決まる素材です。言い直しや言い淀みのカット、無音の詰め、字幕ファイル(SRT)の作成と焼き込み、9:16の縦型版の書き出しまでは自動で進みます。一方、マルチカメラの切り替え、色が主役の映像、絵を見て選ぶカットは苦手で、出てくるのは仕上げ前の粗編集です。
費用は条件付きで「無料」にできます。Claude Code自体には有料プランかAPIの利用が必要ですが、その上で使うWhisper・ffmpeg・auto-editorをローカルで動かすなら追加費用はかかりません。video-useのように文字起こしをクラウドに任せるスキルは音声1時間あたり$0.22、ChatCutのようなホスト型は月$25からの別料金です(2026年10月15日時点)。
Claudeに動画は読み込める?Claude Codeが読むのは文字起こしと画像
Claudeに.mp4や音声ファイルをそのまま読み込ませることはできません。Anthropicのビジョン機能のドキュメントが対応形式として挙げるのはJPEG、PNG、GIF、WebPの画像だけで、GIFもアニメーションには対応せず最初のフレームしか使いません。Claude Codeのツールリファレンスでも、Readツールが読めるのは画像、PDF、Jupyterノートブックで、動画や音声の項目はありません。
そのため、Claude Codeで動画を編集するやり方はどれも次の3段階に落ち着きます。
- 音声を文字起こしし、単語ごとの開始・終了時刻を付ける(Whisper、faster-whisper、ElevenLabs Scribeなど)
- Claudeが文字起こしを読み、残す区間(カット範囲の一覧)を決める
- ffmpegがその一覧どおりに切ってつなぎ、字幕や縦型版を書き出す

映像の中身を確かめたいときは、ffmpegで数枚のフレームを画像として書き出し、それをClaudeに読ませます。ただし画像から音は分かりませんし、全フレームを読ませると費用が跳ね上がります(後の費用の節で計算します)。画像の読み取りでClaudeができることの全体は「Claudeは画像を生成できる?Claudeの視覚機能完全ガイド」にまとめています。
撮影済み素材の編集とは別に、コードで新しいアニメーション動画を作る方法は「Claude Opus 5.5で動画生成はできる?コードで作る仕組みと実測」、claude.aiの動画書き出し機能Claude Motionは「Claude Dashboards・Motionの使い方:MotionはTeam/Enterpriseのみ」で説明しています。Claude Motionは文字やグラフをアニメーションにする機能で、アップロードした素材は編集しません。
Claude Codeの動画編集で任せられる作業と人に残る作業
「全自動で編集してくれた」という体験談の中身は、多くがこの表の上半分です。下半分は人の判断が残ります。
| 作業 | Claude Codeに任せられるか | 主に使う道具 | 人が確認すること |
|---|---|---|---|
| 無音カット | 任せられる | ffmpegのsilencedetect、auto-editor | 間を詰めすぎていないか |
| 言い直し・言い淀みの削除 | 任せられる(単語単位の文字起こしが前提) | Whisper系+Claudeの判断 | 残したのが正しいテイクか |
| 字幕ファイル(SRT)の作成 | 任せられる | Whisper系 | 固有名詞、表示タイミング |
| 字幕の焼き込み・テロップ | 任せられる(字幕フィルタ入りのffmpegが必要) | ffmpeg、video-use | フォント、位置、文字化け |
| 縦型(9:16)への変換 | 中央クロップなら任せられる | ffmpegのcrop | 被写体が画面から外れていないか |
| BGM・効果音 | 指示すれば重ねられる | ffmpeg | 音量バランス |
| 色補正 | video-useは区間ごとに自動補正 | video-use | 色が主役の映像は人の作業 |
| Bロール選び、マルチカメラの切り替え | 基本は人 | 編集ソフト | 絵を見て決める判断全般 |
第三者の報告も同じ方向です。Fyveの入門記事(2026年6月29日)はClaude Codeを「指揮者」と呼び、成果は下書きとして扱うこと、目安は「7割が自動、3割は手仕事」で、長い動画では字幕がずれると書いています。Habrに載ったvideo-useのレビュー(2026年5月7日)は、自動チェックが拾えるのはカット部分のノイズや字幕の隠れといった技術的な不具合で、言い直し前の悪いテイクを残してしまうような意味の誤りは拾えないと指摘しています。DaVinci Resolveを操作するMCPサーバーのREADMEも、カットの良し悪しの判断は対象外で、出力は「first-pass assembly(最初の仮組み)」だと明記しています。
10分の素材のトークン費用:文字起こしは数セント、画像は約$6.46
文字起こしを読ませるやり方は、映像のフレームを読ませるより桁違いに安く済みます。Anthropicのドキュメントでは、画像1枚のトークン数は「⌈幅÷28⌉×⌈高さ÷28⌉」です。Claude 4.7以降のモデル(Opus 5.5を含む)は高解像度の枠で処理され、1920×1080のフレームは縮小されずに69×39=2,691トークンになります。
10分の素材で比べると次のとおりです。料金はOpus 5.5のAPI定価(入力100万トークンあたり$4、出力$20)で計算しています。
| Claudeに読ませるもの | 計算 | 入力トークン | 入力料金の目安 |
|---|---|---|---|
| 1080pのフレームを1秒1枚(600枚) | 600×2,691 | 約161万 | 約$6.46 |
| 640×360に縮小して1秒1枚 | 600×(23×13=299) | 約17.9万 | 約$0.72 |
| 単語ごとの時刻付きJSON | 1,500語×57バイト÷4 | 約2.1万 | 約$0.09 |
| 「開始 終了 単語」だけの詰めた形式 | 1,500語×20バイト÷4 | 約7,500 | 約$0.03 |
文字起こし側の前提は、英語の話し言葉で1分150語(10分で1,500語)、1語あたり約57バイト(後述のテスト素材ではwords.jsonが57語で3,275バイト)、英語では約4文字で1トークンという目安です。日本語の文字起こしは文字数とトークンの関係が違うので、この換算はそのまま当てはまりません。Claudeが返すカット範囲の一覧が2,000トークン程度なら、出力側は約$0.04です。
実際のClaude Codeのセッションでは、システムプロンプト、ツールの定義、それまでの会話も毎回読まれるため、合計はこの表より大きくなります。また、ProやMaxのプランでは請求額ではなく利用上限の消費として効いてきます。プランごとの違いは「Claude Code 料金 2026:Pro、Max、Team、API、追加利用の選び方」、上限の減りが速いときは「Claude Code Maxのクォータ消費異常?完全診断と修正ガイド(2026年版)」が参考になります。韓国のHeimdexのブログ(2026年8月5日)も、素材が長いほどトークンを使い、利用上限を使い切ることがあると注意しています。
video-useのREADMEも同じ理由で文字起こしを使っています。フレームを書き出す方式では「30,000フレーム×1,500トークン=4,500万トークン」になるのに対し、詰めた文字起こしは約12KBに数枚のPNGを足すだけだと説明しています(1フレーム1,500トークンはREADMEの仮定です)。
Claude以外にかかる費用の例も挙げておきます(いずれも2026年10月15日時点)。
- ElevenLabs Scribe v2(video-useが使う文字起こし):音声1時間あたり$0.22。8時間の素材なら$1.76です。無料枠には約4時間半が含まれます。
- ChatCut:月$25、$45、$88、$160の4プラン(100〜800クレジット)。Claude Codeの利用分は別です。
- Remotion:個人と従業員3人以下の営利企業は無料、それ以外は1席あたり月$25などの企業ライセンスが必要です。
動画編集スキルと連携ツールの選び方:6ルートの費用と弱点
Claude Codeで動画を編集する道具は、大きく6つのルートに分かれます。いずれも2026年10月15日時点の各ドキュメントに基づく比較で、実際に動かしたのは「Whisper+ffmpeg」とauto-editorの2つです。
| ルート | 素材に対してやること | Claude以外に必要なもの・費用 | 処理する場所 | 弱点 |
|---|---|---|---|---|
| video-use(Claude Codeのスキル) | 言い淀み・言い直し・間のカット、区間ごとの色補正、字幕の焼き込み、アニメーションの重ね合わせ | ElevenLabsのAPIキー(Scribe、音声1時間$0.22) | 文字起こしはクラウド、編集は手元 | ローカルWhisperは公式には未対応 |
| Whisper+ffmpegを自分で組む | 単語単位の文字起こし、言い直し・無音カット、SRT、焼き込み、縦型 | なし(ローカル実行) | すべて手元 | 環境構築でつまずきやすい |
| auto-editor | 音量(または動き)で無音を切る、編集ソフト用のタイムラインを書き出す | なし(Unlicense) | すべて手元 | 言い直しは判別できない |
| ButterCut | ローカルのWhisperXと映像解析で粗編集を作り、XMLで編集ソフトへ | 本体は無料、複数トラックのBロールはPro(年$49) | すべて手元(Apple Silicon中心) | Ruby、Python、フル版FFmpeg、WhisperXが必要 |
| 編集ソフトのMCP(DaVinci Resolve、Premiere Pro、Palmier Pro) | Claudeがタイムラインを操作し、並べる・マーカー・書き出しを行う | Resolveは有料のStudio版が前提、PremiereはAdobeの契約、Palmier ProはmacOS 26以降とApple Silicon | 手元の編集ソフト | カットの良し悪しは判断しない |
| ChatCut(ホスト型プラグイン) | 素材をアップロードし、トリム、ノイズ除去、字幕、モーショングラフィックス、生成Bロール | 月$25〜$160 | ChatCutのクラウド | 素材が手元を離れる |
素材と目的別の選び方は次のとおりです。
- 1人語りの動画を毎週出し、APIキーを1つ増やしてよい:video-use。video-useのGitHubリポジトリの手順では、リポジトリをcloneして
~/.claude/skills/video-useにシンボリックリンクを張り、uv syncとbrew install ffmpegを実行し、.envにELEVENLABS_API_KEYを書きます。カットの前に方針を提案してユーザーの承認を待ち、書き出し後はカット部分を最大3回まで自己チェックします。文字起こしはElevenLabs Scribeのみで、SKILL.mdはCPUでのローカルWhisperを避けるべき使い方としています。ローカルWhisperに対応させるプルリクエストは、#12、#28、#114が未マージのまま閉じられ、#22、#60、#151、#223はオープンのままです(2026年10月15日時点)。Habrのレビューによると、対象はトーク動画で、Bロールは標準では扱いません。 - 費用を足したくない、素材を社外に出したくない:Whisper+ffmpegのローカル手順(次の節)。ただし、Claudeに読ませた文字起こしや画像はAnthropicに送られます。
- 無音だけ詰めて、仕上げはPremiereやResolveでやる:auto-editorの
--export(後の節)。 - 粗編集まで任せて、仕上げは編集ソフト:ButterCutのGitHubリポジトリによると、文字起こしと映像解析をローカルで行い、Final Cut Pro、Premiere、DaVinci Resolve向けのXMLを書き出します。ライセンスは非商用のPolyForm Noncommercial 1.0.0ですが、作った動画の商用利用は例外として認められています。
- 編集ソフトの操作そのものを自動化したい:MCPサーバー。DaVinci Resolve用(samuelgursky/davinci-resolve-mcp)とPremiere Pro用(hetpatel-11/Adobe_Premiere_Pro_MCP)はどちらもBlackmagicやAdobeの公式ではなくコミュニティ製です。Resolve用はStudio版のスクリプトAPIを使い、無料版はアプリ内のブリッジ頼みで、READMEにはResolve 21.1でPythonスクリプトがStudio版に移ったとあります。Premiere用はCEPパネル経由で、動作確認済みはmacOSです。Palmier ProはmacOS 26以降とApple Silicon専用の編集ソフトで、起動中に手元のポート19789でMCPサーバーを立て、Claude Codeからは
claude mcp add --transport httpでそのアドレスを登録して接続します。MCPの選び方全般は「Claude CodeのおすすめMCP:最初に入れる一つを作業別に選ぶ」にあります。 - 環境構築をしたくない、月額を払える:ChatCut。インストール用のプロンプトをClaude Codeに貼ってChatCutにサインインし、素材をアップロードして編集します。ChatCutのプラグインページには、Claude Codeの推論部分は自分のClaudeのサブスクリプションかAPIの利用分を使うと書かれており、料金はClaudeとChatCutの両方にかかります。
- マルチカメラ、色が主役、絵で選ぶカットが中心:編集ソフトでの手作業が中心のままです。Habrのレビューの筆者も、たまに編集するだけならDaVinci Resolveで2時間ほど手作業した方が簡単だと書いています。
名前が近いdigitalsamba/claude-code-video-toolkitは、主に新しい動画を作るための道具です。撮影済み素材に対しては吹き替え、BGMの追加、トリム・連結・クロップ程度で、無音や言い淀みのカット、字幕の機能はありません。テロップやグラフを重ねたいなら、HTMLとCSSで描いてMP4にするHyperFrames(Apache-2.0、Node.js 22以降)やRemotionを組み合わせます。どちらも素材を切る道具ではなく、Heimdexのブログが注意するとおり、後からカットを変えると重ねた素材のタイミングが崩れるので、カットを確定させてから重ねます。
自分の編集ルール(どこで切るか、字幕の高さ、ズームの上限など)を毎回説明しているなら、スキルにまとめると指示がぶれません。作り方は「Claude CodeのHooks・Skills・スラッシュコマンドを使い分ける:呼び出し方と設定例」、既存のスキル選びは「Claude CodeのおすすめSkills:用途別の選び方と公式スキルの導入手順」を参照してください。
Whisper+ffmpegで最初の1本:32秒の素材を15.5秒に切った手順
2026年10月15日に、Apple M4・macOS 26.1のMac 1台で、Claude Code(Opus 5.5)にこのローカル手順を実行させました。素材はmacOSのsayコマンドで読み上げた英語の合成音声に、ffmpegのテスト映像(testsrc2、1920×1080・30fps)を重ねた32.59秒のクリップです。冒頭3秒の無音と長めの間に加え、「…Um, wait, let me say that again.」で止めた言い直し前のテイクと、その後の言い直し後のテイクが入っています。
結果は次のとおりです。
- faster-whisper 1.2.1(モデル
base.en、CPU、int8)で、57語を単語ごとの時刻付きで3.0秒で文字起こし(モデルの読み込みを含む) - Claudeが文字起こしを読み、冒頭の無音と言い直し前のテイクを落として4区間を残すカット範囲を作成
- ffmpegの書き出しは約1.5秒で、出力は15.53秒。書き出した動画をもう一度文字起こしし、台本が全部残り、言い直し前のテイクだけが消えていることを確認(57語中43語を残し、落とした14語は言い直し前のテイクそのもの)
テスト素材は1人の英語の合成音声で、実際のカメラ映像、部屋の雑音、複数の話者、日本語の音声は入っていません。文字起こしの精度、とくに日本語での精度はこの結果からは判断できません。Claude Codeの導入がまだなら、先に「Claude Codeのインストール方法:全プラットフォーム対応セットアップガイド(2026年版)」を済ませてください。
手順1:ffmpegとfaster-whisperを入れる
コマンドはmacOSとHomebrewの例です。WindowsやLinuxでは入れ方が変わります。
brew install ffmpeg
python3 -m venv venv
./venv/bin/pip install faster-whisper "av<19""av<19"を付けているのは、付けずに入れるとfaster-whisperが落ちたためです(後の「3つのつまずき」で説明します)。Claude Codeに「faster-whisperを入れて」と頼む場合も、このバージョン指定を伝えておきます。
手順2:単語ごとの時刻付きで文字起こしする
次のtranscribe.pyは、素材の音声から単語ごとの開始・終了時刻をwords.jsonに書き出します。
"""手順2:素材を単語ごとの時刻付きで文字起こしする(ローカル、APIキー不要)"""
import json
import sys
import time
from faster_whisper import WhisperModel
src = sys.argv[1]
model_name = sys.argv[2] if len(sys.argv) > 2 else "base.en"
t0 = time.time()
model = WhisperModel(model_name, device="cpu", compute_type="int8")
segments, info = model.transcribe(src, word_timestamps=True, vad_filter=False)
words = []
for seg in segments:
for w in seg.words:
words.append({"start": round(w.start, 2), "end": round(w.end, 2), "word": w.word.strip()})
json.dump(words, open("words.json", "w"), indent=1)
print(f"model={model_name} words={len(words)} audio={info.duration:.1f}s elapsed={time.time()-t0:.1f}s")./venv/bin/python transcribe.py raw/talk.mp4 base.en初回はモデルのダウンロード(base.enで約141MB)が入ります。.enの付いたモデルは英語専用なので、日本語の素材では.enの付かない多言語モデルを指定します。日本語での精度と速度は、このテストの範囲外です。
Pythonを使いたくない場合の選択肢も2つ動かしました。auto-editor 31.7.2のwhisperサブコマンド(auto-editor whisper 素材 モデル -f srt --prompt "Claude Code" -o out.srt)と、ffmpeg-fullに入っているwhisperフィルタです。どちらもwhisper.cpp用のモデルファイル(ggml-base.en.bin、148MB)を別に用意します。
- auto-editorの
whisperは12.2秒でSRTを書き出し、--promptを付けると「Claude Code」も正しく綴りましたが、どの字幕も終了時刻が開始のちょうど4〜5秒後になっており、カット点には使えませんでした。 - ffmpegの
whisperフィルタは12.95秒で、プロンプトなしでは「Claude.」と「code.」が別の字幕に分かれました。書き出したSRTの番号は0から始まります。 - faster-whisperの
small.enは同じ音声の「Claude Code」を「clog code」と聞き取り、base.enは正しく聞き取りました。1つの合成音声での結果なのでモデルの優劣は言えませんが、固有名詞は必ず確認するか、プロンプトで単語を渡す必要があります。
手順3:Claude Codeにカット範囲を決めさせる
words.jsonを開いたClaude Codeに、たとえば次のように頼みます。
words.json を読んで、言い直した箇所は後のテイクを残し、前のテイクと冒頭の無音を落とした「残す区間」を edl.json に書いて。
各区間の端は ffmpeg -i raw/talk.mp4 -af silencedetect=noise=-40dB:d=0.3 -f null - で出した無音区間の境界に合わせ、±0.1秒の余白を付けて。
書き込む前に、区間と残す理由を一覧で見せて。テストでClaudeが最終的に書いたedl.jsonは次の4区間です(元の素材上の秒数)。
[{"start": 2.92, "end": 6.51}, {"start": 14.83, "end": 18.31}, {"start": 20.66, "end": 24.83}, {"start": 25.89, "end": 30.14}]区間の端を無音の境界に合わせる指示は、最初の版で最後の単語が切れたことから加えたものです(後の「3つのつまずき」を参照)。
手順4:ffmpegで切ってつなぎ、字幕ファイルも作る
render.pyは、カット範囲を1つのffmpegのフィルタグラフにまとめて書き出し、単語の時刻を新しいタイムラインに付け替えてfinal.srtを作ります。つなぎ目のプチッという音を防ぐため、各区間の頭と尻に30ミリ秒の音声フェードを入れています。
"""手順4:edl.json(残す区間)から final.mp4 と final.srt を作る"""
import json
import subprocess
import sys
src = sys.argv[1]
edl = json.load(open("edl.json"))
words = json.load(open("words.json"))
FADE = 0.03
# 1) 1つのフィルタグラフで切って連結する
parts, labels = [], []
for i, k in enumerate(edl):
d = k["end"] - k["start"]
parts.append(f"[0:v]trim={k['start']}:{k['end']},setpts=PTS-STARTPTS[v{i}]")
parts.append(
f"[0:a]atrim={k['start']}:{k['end']},asetpts=PTS-STARTPTS,"
f"afade=t=in:d={FADE},afade=t=out:st={d - FADE:.3f}:d={FADE}[a{i}]"
)
labels.append(f"[v{i}][a{i}]")
graph = ";".join(parts) + ";" + "".join(labels) + f"concat=n={len(edl)}:v=1:a=1[v][a]"
subprocess.run(
["ffmpeg", "-v", "error", "-y", "-i", src, "-filter_complex", graph, "-map", "[v]", "-map", "[a]",
"-c:v", "libx264", "-crf", "20", "-preset", "veryfast", "-c:a", "aac", "-b:a", "160k", "final.mp4"],
check=True,
)
# 2) 単語の時刻を新しいタイムラインに付け替え、3語ずつ字幕にする
# 残す区間に少しでも重なる単語は残し、時刻を区間内に収める
# (Whisperの単語境界は数百ミリ秒ずれるので、完全に収まる単語だけ残すと単語が落ちる)
kept = []
for w in words:
offset = 0.0
for k in edl:
overlap = min(w["end"], k["end"]) - max(w["start"], k["start"])
if overlap > 0:
s = max(w["start"], k["start"]) - k["start"] + offset
e = min(w["end"], k["end"]) - k["start"] + offset
kept.append({"start": s, "end": e, "word": w["word"]})
break
offset += k["end"] - k["start"]
def ts(t):
h, rem = divmod(t, 3600)
m, s = divmod(rem, 60)
return f"{int(h):02d}:{int(m):02d}:{int(s):02d},{int(round((s % 1) * 1000)):03d}"
cues, chunk = [], []
for w in kept:
chunk.append(w)
if len(chunk) == 3 or w["word"].endswith((".", ",", "?", "!")):
cues.append(chunk)
chunk = []
if chunk:
cues.append(chunk)
with open("final.srt", "w") as f:
for n, c in enumerate(cues, 1):
text = " ".join(x["word"] for x in c)
f.write(f"{n}\n{ts(c[0]['start'])} --> {ts(c[-1]['end'])}\n{text}\n\n")
print(f"segments={len(edl)} kept_words={len(kept)}/{len(words)} cues={len(cues)}")./venv/bin/python render.py raw/talk.mp4M4では15.5秒の1080p出力に1.46〜1.74秒かかり、字幕は18個になりました。最初の版のスクリプトは、開始と終了の両方が区間内に収まる単語だけを残していたため、区間の端を無音に合わせた後に「Hi,」などが落ちて57語中40語になりました。区間に重なる単語を残して時刻を区間内に収める、上の形に直して43語に戻っています。
手順5:字幕を付ける、縦型にする
字幕トラックとして埋め込む(視聴者がオン・オフできる)だけなら、Homebrew標準のffmpegで動きます。
ffmpeg -i final.mp4 -i final.srt -map 0 -map 1 -c copy -c:s mov_text -metadata:s:s:0 language=eng final_softsubs.mp4SNSによっては埋め込みの字幕トラックを表示しないので、その場合はプラットフォームの字幕アップロード機能にfinal.srtを渡すか、映像に焼き込みます。焼き込みには字幕フィルタ入りのffmpeg-fullが必要でした(理由は次の節)。
/opt/homebrew/opt/ffmpeg-full/bin/ffmpeg -i final.mp4 \
-vf "subtitles=final.srt:force_style='FontName=Helvetica,FontSize=22,Outline=2'" \
-c:v libx264 -crf 20 -preset veryfast -c:a copy final_burned.mp4縦型(9:16、1080×1920)は、中央を切り出してから字幕を焼き込みます。
/opt/homebrew/opt/ffmpeg-full/bin/ffmpeg -i final.mp4 \
-vf "crop=ih*9/16:ih,scale=1080:1920,subtitles=final.srt:force_style='FontName=Helvetica,FontSize=14,MarginV=60,Outline=2'" \
-c:v libx264 -crf 20 -preset veryfast -c:a copy final_vertical.mp4焼き込みは1.67秒、縦型は1.39秒で書き出せました。出力の1.2秒地点のフレームを画像にして確認すると、テスト映像のタイムコードは元素材の00:00:03.800、字幕は「this is a」で、カットと字幕の対応が合っていました。HelveticaはmacOSのフォントなので、ほかのOSでは別のフォント名を指定します。日本語のテロップには日本語の字形を含むフォントが必要です(このテストは英語字幕だけです)。中央クロップは被写体が中央にいる素材向けで、動き回る話者を追う顔追跡は試していません。
3つのつまずきと対処:PyAV 19、語尾切れ、字幕フィルタ
上の手順は一度で通ったわけではありません。テスト中に実際に起きたエラーと、効いた対処をまとめます。Claude Codeに環境構築を任せた場合も同じところで止まる可能性があります。
faster-whisperがmetadata_errorsのTypeErrorで止まる
pip install faster-whisperだけで入れると、faster-whisper 1.2.1(2026年10月15日時点のPyPIの最新版)と一緒にPyAV 19.0.1が入り、文字起こしを始めた瞬間に次のエラーで落ちました。
TypeError: open() got an unexpected keyword argument 'metadata_errors'pip install faster-whisper "av<19"でPyAVを18.1.0に固定すると直りました。PyAV 19.0.0は2026年9月29日、19.0.1は10月3日の公開です。原因はトレースバックからの推測で、faster-whisperの次の版で直る可能性があります。
書き出し後に最後の単語が切れる:Whisperの境界が約0.5秒ずれた
Whisperの単語の時刻そのままで切った最初の版では、最後の「platforms.」の語尾が切れ、書き出し後に文字起こしし直すと「platform.」になりました。Whisperは「platforms.」の終わりを29.50秒としていましたが、ffmpeg -af silencedetect=noise=-40dB:d=0.3で調べると声は30.04秒まで続いていました。このテスト素材では、単語の境界が最大で約0.5秒ずれていました。

各区間の端をsilencedetectが出した無音の境界に合わせ、±0.1秒の余白を付けると、語尾まで残りました。手順3の指示に無音の境界を入れているのはこのためです。ほかの報告も同じ傾向で、スペインのAducti(2026年9月1日)はWhisperが直前の無音を区間の最初の単語に含めてしまい約0.5秒の無音が残ると書き、video-useのSKILL.mdはScribeの時刻も50〜100ミリ秒ずれるとして、30〜200ミリ秒の余白と、400ミリ秒以上の無音でのカットを勧めています。
No such filter: 'subtitles'が出る:ffmpeg-fullで解決
Homebrewのffmpeg(8.0.1_2と、2026年10月15日時点の9.0.2)には、subtitles、ass、drawtextのフィルタが入っていません。焼き込もうとすると次のように失敗し、ffmpeg -filtersにも出てきません。
-vf subtitles=final.srt → No option name near 'final.srt' … Error parsing filterchain
-vf subtitles=filename=final.srt → No such filter: 'subtitles'Homebrewのffmpegは字幕描画用のlibassやfreetypeに依存しておらず、ffmpeg-fullはlibass、freetype、fontconfig、harfbuzz、whisper.cppなどを含みます。brew install ffmpeg-fullは2分05秒で終わりました。ffmpeg-fullはkeg-onlyでPATHには入らないので、/opt/homebrew/opt/ffmpeg-full/bin/ffmpegとフルパスで呼びます。字幕トラックとして埋め込む-c:s mov_textだけなら、標準のffmpegでも動きます。video-useの字幕焼き込みで同じエラーが出た場合も、この対処が当てはまるはずです。
ffmpeg-fullを入れたとき、共有ライブラリのlibvpxが1.15.2から1.17.0に上がり、更新していなかった古いffmpeg 8.0.1_2が起動しなくなりました。
dyld: Library not loaded: /opt/homebrew/opt/libvpx/lib/libvpx.11.dylibbrew upgrade ffmpeg(9.0.2_1へ、8秒)で直り、その後のbrew linkage --testで欠けたライブラリはありませんでした。何が起きるかは手元で古いままのパッケージ次第なので、ffmpeg-fullを入れる前にbrew upgrade ffmpegを済ませておくと安全です。WindowsやLinuxのffmpegは配布元によって含まれるフィルタが違い、このテストでは試していません。
auto-editorで無音カット:言い直しのテイクは残る
比較のために、無音だけを切るauto-editor 31.7.2(Homebrew版)を同じ素材にかけました。
brew install auto-editor
auto-editor raw/talk.mp4 --margin 0.2s -o out.mp4 --no-open3.9秒で21.31秒の動画になり、無音は詰まりましたが、言い直し前のテイクは残りました。auto-editorが見るのは音量か動きだけで、言葉の意味は分からないからです。言い直しを落とすには、文字起こしを読むClaudeの判断が必要です。それでも、間を詰めるだけで十分な素材なら、Claudeのトークンを使わず一瞬で済みます。
auto-editorは編集ソフト用のタイムラインも書き出せます(--export premiere、resolve、final-cut-pro、shotcut、kdenlive)。--export resolveで書き出したタイムラインは元の素材を参照しているので、PremiereやResolveで続きの編集ができます。なおauto-editorのGitHubリポジトリのREADMEにはpipでの公開をやめたとあり、PyPIに残っているのは2025年11月4日の29.3.1です。Homebrewか配布バイナリで入れます。
公開前のチェックリスト:語尾、テイク、固有名詞、縦型の構図
Claude Codeが書き出した動画は粗編集として扱い、公開前に人が次の点を確認します。
- 語頭と語尾:カット点の前後を再生し、単語が欠けていないか聞きます。書き出した動画をもう一度文字起こしして台本と比べると、聞き逃しを減らせます。
- 残したテイク:言い直し後のテイクが残り、前のテイクが消えているか。自動チェックはこの種の誤りを見逃します。
- 固有名詞と専門用語:製品名や人名のテロップを1つずつ確認します。プロンプトで単語を渡すと改善することがあります。ElevenLabs Scribeには追加料金(1時間$0.05)で用語を指定する機能があります。
- 字幕のタイミングと番号:長い素材ほど後半でずれやすいという報告があります。ffmpegの
whisperフィルタのSRTは番号が0から始まるので、アップロードで弾かれたら1から振り直します。 - フォント:焼き込みで指定したフォントがそのOSにあるか、日本語が文字化けや別の字形になっていないか。video-useのSKILL.mdも、フォントの失敗は警告なしに起きると注意しています。
- 縦型の構図:中央クロップで人物の顔や画面内の文字が切れていないか。
- スマホでの再生:Aducti(2026年9月1日)によると、HEVCで書き出す場合、iPhoneは
hev1タグを受け付けずhvc1タグが必要です。 - 数枚のフレームで最終確認:要所のフレームを画像に書き出してClaudeに読ませ、字幕とカットの対応をまとめて確かめます。
よくある質問:CapCut・Premiere連携、無料か、日本語字幕
Claude Codeで動画編集は無料でできますか?
Claude Code自体には有料プランかAPIの利用が必要なので、完全に無料ではありません。その上で、Whisper(faster-whisper)、ffmpeg、auto-editorをローカルで使うルートなら、それ以外の費用はかかりません。video-useは文字起こしにElevenLabs Scribe(音声1時間$0.22、無料枠は約4時間半)を使い、ChatCutは月$25〜$160の別料金です(2026年10月15日時点)。
CapCutとClaude Codeは連携できますか?
Claude CodeからCapCutのタイムラインを直接操作する手段は、公開情報に記載がありません。Claude Codeで言い直しや無音を切った.mp4を書き出し、それを素材としてCapCutに読み込んで、テロップやBGMをCapCutで仕上げる分担なら、連携の仕組みがなくても成り立ちます。
Premiere ProやDaVinci Resolveと組み合わせるには?
方法は3つあります。auto-editorの--export premiereや--export resolveで無音を詰めたタイムラインを渡す方法、ButterCutで粗編集のXMLを書き出す方法、コミュニティ製のMCPサーバーでClaudeに編集ソフトを操作させる方法です。Resolve用のMCPは有料のStudio版が前提で、Premiere用のMCPはCEPパネル経由、動作確認済みはmacOSです。どの方法でも、最後の仕上げは編集ソフト上で人が行います。
日本語の動画でも字幕や言い直しのカットに使えますか?
仕組みは同じですが、精度は文字起こしのモデル次第です。faster-whisperやwhisper.cppでは.enの付かない多言語モデルを選び、auto-editorのwhisperなら--languageで言語を指定できます。上の手順は英語の合成音声でしか確かめていないので、まず数分の素材で文字起こしの誤りと単語の時刻のずれを確認してから、長い素材に進むのが安全です。
何時間もある長い素材でも使えますか?
使えますが、素材が長いほどトークンを使い、ProやMaxでは利用上限に早く届きます。Fyveは長い動画で字幕がずれると報告しています。ファイルや章ごとに区切って文字起こしとカットを進め、区切りごとに書き出した結果を確認すると、ずれやカットの誤りを早く見つけられます。
Claudeで動画を新しく作る機能とは何が違いますか?
動画編集は手元の素材を切って字幕を付ける作業で、新しい映像は作りません。コードでアニメーション動画を作る方法は「Claude Opus 5.5で動画生成はできる?コードで作る仕組みと実測」、claude.aiで文字やグラフをMP4にするClaude Motionは「Claude Dashboards・Motionの使い方:MotionはTeam/Enterpriseのみ」で扱っています。
参考資料5
本文で参照している外部ページを、登場順に並べています。最終更新日:2026年10月15日。
参考資料5
本文で参照している外部ページを、登場順に並べています。最終更新日:2026年10月15日。
- 1.Anthropicのビジョン機能のドキュメントplatform.claude.com/docs/en/build-with-claude/vision
- 2.Claude Codeのツールリファレンスcode.claude.com/docs/en/tools-reference
- 3.video-useのGitHubリポジトリgithub.com/browser-use/video-use
- 4.ButterCutのGitHubリポジトリgithub.com/barefootford/buttercut
- 5.auto-editorのGitHubリポジトリgithub.com/WyattBlue/auto-editor





