Vuncloud ブログ
← フィールドノートに戻る

Video-Useの使い方は?Claude Code、CodexなどのAI Coding Agentで動画を自動編集する:自然言語の動画編集、素材処理とAI動画ワークフローの実践

オープンソース skill · takes_packed.md · edit/final.mp4約12分

非線形編集ソフトのタイムライン上にあるカラーのクリップ、再生ヘッド、音声波形。video-useがEDLでffmpegの自動編集を駆動する様子に対応
TL;DR · 先にこの5つ
  • video-use は browser-useのオープンソーススキルであり、Premiereではない。素材をフォルダに入れ、Agentに話し、edit/final.mp4 を受け取る
  • モデルは動画全体を見ない。主に読むのは ElevenLabs Scribe が出す単語単位の文字起こしを、約12KBに圧縮した takes_packed.md
  • 順序は固定。洗い出し → 平易な方針 → 了承 → EDL → ffmpegでレンダリング → カット点の自己検査。最大3ラウンド
  • Claude Code、Codex、Hermes、OpenClaw に接続できる。リポジトリ全体をスキルディレクトリへシンボリックリンクし、横に ffmpeg と ELEVENLABS_API_KEY を置く
  • 語り、チュートリアル、インタビューに向く。絵だけのモンタージュは文字起こしが薄い。複雑なカラーはタイムラインソフトに残す

「えーとを切って」と入力欄に打っても、Agentがmp4全体を視覚モデルへ渡すだけなら、請求と遅延が先に溢れる。browser-useの video-use は別の道を取る。Claude CodeやCodexのようにコマンドを実行できるコーディングAgentに文字起こしを読ませ、編集決定表(EDL)を書かせ、ffmpegを呼んで書き出させる。リポジトリは100%オープンソースと書いてあり、入口は github.com/browser-use/video-use。本稿は 2026年9月23日時点のリポジトリにある README、install.md、SKILL.md に沿って整理した。コマンドとディレクトリはその日のファイルが正。取得後に変わっていれば、手元の SKILL.md を正とする。

向いている動画を公式は挙げている。語り、モンタージュ、チュートリアル、旅行、インタビュー。決まったメニューはない。必要なのは、最後まで走るAgentセッションと、文字起こしのあとのレンダリングを途中で眠らずに担う一台。

12
本番の正しさを守るハードルール
~12KB
takes_packed.md。モデルが主に読むもの
30ms
各カット点の音声フェード

video-useは何を切っているか

タイムラインは開かない。元のテイクを一つのフォルダに入れ、そのディレクトリでAgentを起動し、平易な言葉で目標を言う。公式の例は一文。edit these into a launch video。Agentはまず素材を洗い出し、方針を出し、同意を待ってから、素材の隣に edit/final.mp4 を書く。スキルリポジトリ自体はきれいに保ち、生成物を video-use/ に書いてはいけない。

READMEが挙げる完成能力は、ffmpegといくつかの任意のアニメーションエンジンができることであり、新しいモデルではない。

  • フィラーと、テイクのあいだの間を切る:umm、uh、言い直し、無音
  • 区間ごとのカラー:暖色のシネマ調 warm_cinematic、ニュートラル強調 neutral_punch、または自分のffmpegフィルタチェーン
  • 各カット点で30msの音声フェード。ポップノイズを避ける
  • 字幕の焼き込み:既定は2語、すべて大文字。スタイルは変えられる
  • アニメーションを重ねる:HyperFrames、Remotion、Manim、またはPIL。複数のアニメーションはサブAgentで並列
  • レンダリング後の自己検査。通ってから見せる。セッション記憶は project.md に書き、翌週も続きから切れる

browser-useがウェブを見る発想と同じ種類だ。スクリーンショットでコンテキストを埋めず、モデルに構造化されたテキストを渡す。動画では、そのテキストが文字起こしになる。

モデルはどう動画を「読む」か

SKILLははっきり書く。LLMは動画を視聴せず、動画を読む。単語境界で切るには、2層で足りる。

第1層は常に読む。音声の文字起こし。各ソースファイルを一度 ElevenLabs Scribe にかけ、単語単位のタイムスタンプ、話者分離、それに (laughter)、(applause)、(sigh) のような音声イベントを得る。すべてのテイクを、約12KBの takes_packed.md に圧縮する。フレーズは、無音が0.5秒に達するか、話者が替わると切れる。モデルが主に読むのは、次のような行だ。

## C0103  (duration: 43.0s, 8 phrases)
  [002.52-005.36] S0 Ninety percent of what a web agent does is completely wasted.
  [006.08-006.74] S0 We fixed this.

第2層は必要なときだけ。画面の合成。timeline_view は、ある時間窓のフィルムストリップ、波形、単語ラベルのPNGを出す。使うのは判断点だけ。曖昧な間、重なったテイクのどちらを選ぶか、カットがきれいか。走査ツールではない。毎秒呼ばない。

公式は素朴な経路と対比している。3万フレーム × 1フレーム約1500 tokenで、およそ 4500万tokenのノイズ。video-useの経路は 12KBのテキストと、少数のPNG。この数字はリポジトリ自身の対照であり、当サイトが計測した請求額ではない。覚えておく方向は一つ。コンテキストに載せるのは単語と時刻であり、抽出フレームではない。

撮影現場のカチンコ。カット番号、タイムコード、シーン名が書かれている。video-useが複数テイクを洗い出してから編集方針を出す流れに対応
先にテイク番号とタイムコードがあり、どの一文を切るかはそのあと。原版は素材ディレクトリに残り、決定は edit/ に書く。

インストール:Claude Code、Codex、OpenClaw

マシンには四つが同時に要る。安定したパスにあるリポジトリのクローン、$PATH 上の ffmpeg と ffprobe、リポジトリ直下 .env の ElevenLabs キー、そして今のAgentが SKILL.md を見つけられること。Python依存は pyproject.toml の requests、librosa、matplotlib、pillow、numpy。コンソールコマンドはなく、スクリプトは python helpers/….py で直接走らせる。

インストールをAgentに任せる

公式は、次の文を Claude Code、Codex、Hermes、OpenClaw、またはシェルを持つAgentに貼るよう勧めている。自分でクローンし、依存を入れ、スキルを登録し、必要なとき一度だけキーを求めてくる。

Set up https://github.com/browser-use/video-use for me.

Read install.md first to install this repo, wire up ffmpeg, register the skill with whichever agent you're running under, and set up the ElevenLabs API key — ask me to paste it when you need it. Then read SKILL.md for daily usage, and always read helpers/ because that's where the editing scripts live. After install, don't transcribe anything on your own — just tell me it's ready and wait for me to drop footage into a folder.

キーは elevenlabs.io の API keys ページ。インストールの確認は timeline_view.py --help と ffprobe -version だけを見る。インストールできた証明のために、本番の一本を文字起こししない。Scribeは回数課金。キーは ~/Developer/video-use/.env に書いたあと chmod 600。エコーせず、コミットしない。

自分でクローンして登録する

自分の手でやるなら、リポジトリの手動インストールに従う。シンボリックリンクするのはディレクトリ全体。helpers/ が SKILL.md の隣にいなければならない。

git clone https://github.com/browser-use/video-use ~/Developer/video-use
ln -sfn ~/Developer/video-use ~/.claude/skills/video-use
# Codex: ln -sfn ~/Developer/video-use ~/.codex/skills/video-use

cd ~/Developer/video-use
uv sync                         # or pip install -e .
brew install ffmpeg             # required; ffprobe comes with it
brew install yt-dlp             # optional, only when pulling footage from a URL

cp .env.example .env            # ELEVENLABS_API_KEY=...
Agent スキルの置き場所
Claude Code ~/.claude/skills/video-use
Codex ${CODEX_HOME:-~/.codex}/skills/video-use
Hermes / OpenClaw / その他 そのAgentの skills ディレクトリ。名前は video-use のまま。スキルディレクトリがなければ、システムプロンプトで ~/Developer/video-use/SKILL.md を指す

ffmpeg は4.x以降。静的ビルドでもよい。Linuxはディストリビューションのパッケージを使い、sudoのパスワードを推測しない。HyperFrames、Remotion、Manim は最初のアニメーションスロットを作るときだけ入れ、インストール当日にどれか一つを全体の好みにしない。HyperFramesは現時点で Node.js 22+。yt-dlp も同じ遅延インストール。

更新は git pull --ff-only。シンボリックリンクは次のセッションで新しいコードをそのまま読む。依存一覧が変わったら、もう一度 uv sync を走らせる。

初めての書き出し

入れたあとの作業場所は素材ディレクトリであり、スキルリポジトリではない。

cd /path/to/your/videos
claude    # or codex, hermes

最初の一文を「レンダリングを始めて」にしない。これらのテイクを洗い出し、平易な言葉で方針を一つ出して。公式の流れは、問いを尽くし、確認し、実行し、自己検査し、project.md に残す。方針の了承がなければ、切ってはいけない。

普通のセッションは、次のような問いを通る。問いは素材で変わり、固定の一覧はない。動画の種類、目標の長さと画角、雰囲気、必ず残す瞬間、必ず切る瞬間、アニメーションとカラーの要否、字幕の要否。そのあとAgentは4〜8文で形を書く。どのテイクを選び、どこで切り、アニメーション、カラー、字幕、見込みの長さ。同意の返事のあとで、edl.json を書き、区間ごとにカラーをかけ、render.py を呼ぶ。

プレビューは render.py --preview(720p、速い)。自己検査が見るのは完成動画の各カット点の前後約1.5秒の timeline_view に加え、冒頭、末尾、中盤の2〜3か所で、長さは ffprobe で合わせる。失敗したら直し、再レンダリングし、また見る。最大3ラウンド。3ラウンドでも問題が残るときは印を付けて渡し、無限ループにしない。プレビューを見る時点で、自己検査は通っているはず。

プロジェクト側は、ホストされた試用(Browser Use Cloud)と、Browser Use Box で VPS や Telegram から常時開く入口も出している。自分のマシン、または Cloud Mac での経路は上の一式。素材ディレクトリと、登録済みのスキル。

ディレクトリ、スクリプト、EDL

原版は動かさない。セッションはすべて <videos_dir>/edit/ に落ちる。

パス 役割
project.md セッションごとに一段追記する。方針、決定、未了。次回はまずこれを読む
takes_packed.md フレーズ単位の文字起こし。カット点を選ぶとき主に読むテキスト
transcripts/*.json Scribeの生JSON。ソースファイルごとにキャッシュ。ソースが変わっていなければ文字起こしをやり直さない
edl.json カット点、カラー、オーバーレイ、字幕パス、総尺
clips_graded/ 区間ごとに切り出され、カラーと音声フェード済みのクリップ
animations/slot_* 各アニメーションスロット自身のソースと書き出し
master.srt · preview.mp4 · final.mp4 完成動画のタイムライン上の字幕、プレビュー、最終版

パイプラインは一直線。自己検査はレンダリングへ戻れるが、上限がある。

Transcribe → Pack → LLM reasoning → EDL → Render → Self-Eval
                                              └ if something is wrong, revise, at most 3 rounds

よく使うスクリプトは helpers/ にあり、パスは SKILL.md のあるディレクトリからの相対。

  • transcribe.py:単一ファイルの Scribe。--num-speakers を付けられ、結果はキャッシュ
  • transcribe_batch.py <videos_dir>:ワーカー4本で並列。テイクが多いときはこれ
  • pack_transcripts.py --edit-dir:JSONを takes_packed.md にまとめる
  • timeline_view.py:判断点のフィルムストリップ PNG
  • render.py <edl.json> -o …:区間を切り出し、結合し、オーバーレイを載せ、最後に字幕を焼く。--preview は720p。--build-subtitles はついでに master.srt を書く
  • grade.py:プリセット、または --filter で独自チェーン。カラーは切り出しのとき。結合したあとに全体を再エンコードしない

edl.json の形はおおよそ次のとおり。時間とパスは自分の素材から取る。例の秒数を写さない。

{
  "version": 1,
  "sources": {"C0103": "/abs/path/C0103.MP4"},
  "ranges": [
    {"source": "C0103", "start": 2.42, "end": 6.85,
     "beat": "HOOK", "quote": "...", "reason": "cleanest take"}
  ],
  "grade": "warm_cinematic",
  "overlays": [
    {"file": "edit/animations/slot_1/render.mp4", "start_in_output": 0.0, "duration": 5.0}
  ],
  "subtitles": "edit/master.srt",
  "total_duration_s": 87.4
}

複数テイクから最良の一文を選ぶときは、編集用のサブAgentをもう一つ開く。ファイル順ではなくビート(HOOK、問題、解法……)で組む。開始と終了は単語境界に落とす。構造はローンチ動画、チュートリアル、インタビュー、または自分で考えたものでよく、一種類に固定しない。

壊れるハードルール

SKILLは芸術判断をモデルに任せ、守らないと静かに壊れる12本だけを固定する。下は、切っているときに実際に聞こえ、見えるもの。残り(文字起こしのキャッシュ、並列アニメーション、確認してから切る、生成物は edit/ だけ)は前に書いた。

ルール 守らないと見えるもの
字幕はフィルタチェーンの最後 オーバーレイが字幕を覆い、必ずしもエラーにならない
区間を切り出してから、ロスレスの -c copy で結合する 1パスのフィルタグラフは、オーバーレイを足すとき各区間を再エンコードする
カット点に30msの afade カットごとにポップノイズ
オーバーレイは setpts で第0フレームをウィンドウ開始へ移す ウィンドウの途中からアニメーションが再生される
SRTは完成動画のタイムライン:単語の開始 − 区間の開始 + 区間オフセット 結合後に字幕が区間ごとずれる
カットは単語境界に置き、外側へ30–200ms広げる 単語の途中を切る。Scribeのタイムスタンプは50–100msずれる。広げはドリフトを吸収するため
単語単位の原文だけ。フレーズモードのSRTも、正規化されたフィラーも使わない サブ秒の息継ぎが消え、「えーと」を切る信号がなくなる

ローカル Whisper の SRT は、反パターンと明記されている。遅く、フィラーを正規化して消す。文字起こしはホストされた Scribe で行い、ソースファイルごとにキャッシュする。

素材の扱い

カット点は言葉と息継ぎから来て、画面はそれに付いていく。無音が400ms以上なら、たいてい最もきれいなカット。150–400msのフレーズ境界は使えるが、画面を一目見る。150ms未満は文の途中であることが多く、安全ではない。話者の交代は400–600msの息継ぎを残せる。速いカットは詰め、ドキュメンタリーは緩める。これは好みであり、規則ではない。笑い、オチ、強調は尾を残す。笑い声そのものがビートだ。(laughs) のようなイベントは信号であり、その直前で切らない。

どのカットも、音と画が同時に成立する。音声だけ、または画面だけを直すのは、SKILLが名指しする失敗の仕方。

カラーは区間ごとにかける。まず timeline_view で一フレームを見て、一つだけ直し、また見る。プリセットは出発点にすぎない。語りには warm_cinematic が比較的安全。neutral_punch はコントラストだけ足し、色相は動かさない。none は、カラーに触れなかったときの既定。肌色を試していないなら、スロープを強く引かない。

字幕のつまみは三つ。一行の語数、大文字小文字、下端からの距離。短尺のローンチ動画の既成スタイルは、2語・すべて大文字、Helvetica 18 Bold、白文字に黒縁、MarginV=35。ドキュメンタリーは1文4–7語、通常の大小文字、余白を大きくできる。どちらも字幕は最後に焼き、タイムコードは完成動画の軸。

アニメーションはスロットごとにエンジンを選ぶ。「ウェブっぽい」から Remotion を既定にしない。

  • HyperFrames:HTML/CSS/GSAP。製品UIの動き、透明な WebM。スロットディレクトリで npx --yes hyperframes。Node 22+ が要る
  • Remotion:Reactを名指ししたとき、または既存の Remotion デザインシステムがあるときだけ
  • Manim:数式、状態機械、図の変形。リポジトリに skills/manim-video/ が付く
  • PIL + PNGシーケンス:カウント、タイプライター、一本のリビール。ローンチ動画の例が使っている経路で、速い

配色とフォントが決まっていなければ、方針の段階で止める。確認してから描く。ナレーションに合わせるカードは、単純なものならおよそ5–7秒、複雑な図は8–14秒。着地は少なくとも1秒止める。出現は三次のイーズアウト。線形にしない。複数のアニメーションスロットは同時にサブAgentを開く。壁時計時間は、最も遅い一本にほぼ等しい。各サブAgentへの指示は自己完結にする。親セッションは見えない。

画角はソースに合わせる。指定があるときだけ変える。よくある目標は、シネマ調 1920×1080@24、画面収録は30fps、縦 1080×1920、正方形 1080×1080。render.py の既定は、受け取ったものを1080pへ縮める。納品比率は、方針の段階で一言聞く価値がある。

自然言語の言い回し

効く言い回しは方針を制約するものであり、ffmpegの代わりにフィルタを書くものではない。同じ流れでそのまま言える文を挙げる。日本語でも英語でもよい。Agentが読むのは意図だ。

  • 「文字起こし以外はまだしないで。ファイル名、長さ、セリフの有無を洗い出し、方針を6文で出して。返事を待ってからEDLを書いて。」
  • 「これは製品発表の語り。目標は60–90秒、16:9。えーと、あの、言い直しは切る。We fixed this の一文と、そのあとの笑い声は残す。」
  • 「2本とも価格の話をしている。言い間違いのないほうを使う。カットは単語の境界に置き、前後に約80ms残す。」
  • 「カラーはかけない。字幕もなし。先に --preview。了承してから final.mp4。」
  • 「縦型1080×1920。字幕は2語の大文字。アニメーションは5秒のタイトルカード1枚だけ。配色を確認してから作る。」
  • 「ソースファイルは差し替えていない。文字起こしをやり直さない。直前の指摘どおり、HOOKのアウト点だけ直す。」

直しは自然言語の往復で行う。方針を決め直し、レンダリングし直し、文字起こしはやり直さない。最終版はプレビューを確認したあとに出す。各セッションの終わりに、project.md へ方針、決定、未了を追記する。次にディレクトリへ入ったとき、Agentは前のセッションを一文で要約し、続けるかを聞く。

使わないほうがよいとき

これはコーディングAgentの上の編集スキルであり、カラーグレーディング台ではない。

  • セリフがほとんどない音楽モンタージュ。カット設計は音声境界と無音が主。画面の意図は方針に自分で書く。そうしないと、モデルが主に読むテキストがない。
  • キーフレームを手で引き、マルチカメラをリアルタイムで切り替え、精密なセカンダリーカラーをする。これらは Final Cut、Premiere、DaVinci に残す。video-useは粗編集、フィラー除去、字幕の焼き込み、単純なオーバーレイを担当する。完成動画はあとから NLE に入れられる。
  • 文字起こしの予算。Scribeが使うのは ElevenLabs の枠。キャッシュがあるのは、二重払いを避けるため。インストール時に長い一本を試すのが、最もよくある無駄。
  • 自己検査は試写ではない。カット付近のPNGと波形を抜き、ジャンプカット、ポップノイズ、隠れた字幕を拾う。冗談が面白いか、ブランドカラーが正しいかは保証しない。好みは自分で了承する。
  • 権利。編集する権利のある素材だけを扱う。スキルは yt-dlp と組み合わせて URL を取れる。それは素材の入口であり、著作権を回避する理由ではない。
  • キー。置く場所はスキルリポジトリの .env だけ。素材ディレクトリに書かない。別の場所へ同期されるチャットに貼らない。

長いセッションをCloud Macに置く理由

一本のローンチ動画は、たいてい次の流れになる。一括の文字起こし、方針の往復、720pプレビュー、アニメーションスロットを1〜2本足し、最後に1080p。ffmpegもサブAgentも時間を食う。ノートを閉じるとAgentプロセスも眠り、edit/ は途中のプレビューで止まる。

  • セッションを切らない。Cloud Macで tmux を開き、その中で Claude Code または Codex を走らせる。回線が切れてもレンダリングは続き、project.md も残る。
  • ツールチェーンは brew。公式の macOS 手順は brew install ffmpeg。同じマシンに Python、uv、HyperFrames が要する Node 22 がある。レンダリングの途中で Linux へ乗り換え、フィルタ差を探さなくてよい。
  • ディスクは素材と一緒に動く。原版と edit/ は、Agentがいるディスクに置く。シンボリックリンクが結ぶのはスキルリポジトリであり、素材ではない。
  • コーディング作業と分けてもよいし、一台にまとめたほうが手間は少ない。同じ Mac で、午前は Codex がリポジトリを直し、午後は video-use が発表の語りを切る。どちらも長いセッションで、スリープが怖い。

来週モデルは代わっても、スキルディレクトリと ffmpeg は残る。Agentを Vuncloud Cloud Mac に置き、ノートは preview.mp4 を見て「HOOKをもう2秒短く」と返すだけにする。

FAQ

video-useは編集ソフトですか?

違います。browser-useが公開しているAgentスキルで、リポジトリは github.com/browser-use/video-use です。素材ディレクトリで Claude Code、Codex、Hermes、OpenClaw に話しかけると、Agentが単語単位の文字起こしを読み、EDLを書き、ffmpegで edit/final.mp4 をレンダリングします。タイムライン画面はありません。

どのAI Coding Agentで使えますか?

シェルを実行でき、SKILL.md を読めるAgentなら使えます。公式のインストール説明は Claude Code(~/.claude/skills/video-use)、Codex(~/.codex/skills/video-use)、Hermes、OpenClaw をカバーします。スキルディレクトリへはリポジトリ全体をシンボリックリンクし、SKILL.md だけをリンクしてはいけません。

ElevenLabsは必須ですか?

文字起こしには必要です。公式パイプラインは ElevenLabs Scribe で単語単位のタイムスタンプ、話者分離、笑い声などの音声イベントを取ります。キーはリポジトリ直下 .env の ELEVENLABS_API_KEY に書き、権限は600です。キーがなければ文字起こしできません。インストール確認で文字起こしを試さないでください。Scribeは回数課金です。

モデルは動画全体を画像として見ますか?

常時は見ません。主に読むのは約12KBの takes_packed.md です。判断に迷う間、比較ストリップ、カット点の自己検査のときだけ、timeline_view でフィルムストリップと波形のPNGを出します。公式はフレーム抽出の4500万tokenと、このテキスト経路を対比しています。

完成動画はどこにあり、元の素材は変わりますか?

元ファイルは置いたディレクトリに残ります。文字起こし、EDL、プレビュー、完成動画はその下の edit/ に書き出され、完成動画は edit/final.mp4 です。ハードルールは、セッションの生成物を video-use リポジトリへ書くことを禁じています。方針を平易な言葉で確認するまで、Agentは切ってはいけません。

PremiereやFinal Cutの代わりになりますか?

語り、チュートリアル、インタビュー、ローンチ動画の粗編集とフィラー除去は速いです。複雑なマルチカメラのカラー、精密なキーフレーム、慣れたタイムラインの手触りは NLE に残します。音楽だけ、またはセリフがほとんどないモンタージュは文字起こし層が薄く、画面の意図を自分で言葉にする必要があります。

まとめ

三つ。video-useはコーディングAgentに、フレーム抽出ではなく文字起こしを読ませる。了承する前にレンダリングしてはいけない。完成動画は素材の隣の edit/final.mp4 であり、スキルリポジトリの中ではない。先に ffmpeg、キー、ディレクトリ全体のシンボリックリンクを正しく入れ、最初の一文は方針だけを求める。プレビューが通ってから、カラーとアニメーションを話す。

フィラーと息継ぎは、このパイプラインに任せてよい。好みと権利は手元に残る。マシンを、レンダリングの途中で眠らせない。

編集Agentには、スリープしないMacが要る

ffmpeg、Scribeのキャッシュ、project.md は同じマシンにある。Claude Code や Codex は tmux に入れる。回線が切れても edit/ は残る。

Cloud Macプランを見る

フィールドノート · Video-Use

長い編集セッションは、スリープするノートに置かない

Claude Code · Codex · ffmpeg · Cloud Mac

Cloud Macプランを見る
期間限定 プランを見る