Premiere Clean Edit
1つ以上の生の動画ファイルを取得し、書き出し可能な完成動画に変換します:
デッドエアー(無音)やフィラーワード(つなぎ言葉)をカットし、色を補正し、埋め込み可能な
キャプションを追加し、水平および垂直の両方のバージョンを書き出します。これらすべてを、
premiere-pro MCPツールを駆使してAdobe Premiere Proを操作し、
claude-video-visionがPremiere単体ではヘッドレスでできない音声分析を
行うことで実現します。
Premiere Proは既にマシン上で開いており、premiere-pro MCP
サーバーが接続され、MCP Bridge (CEP) パネルが起動している(Window → Extensions)
必要があります。このスキルはアプリを起動できません。サーバーがインストールされていない場合は、
キットの setup スキルを実行してください。create_sequence のようなツールが
直接リストされていない場合、サーバーはそれらを search_tools / invoke_tool の背後に隠しています。
それらを使用するか、PREMIERE_MCP_TOOLSET=full を設定してサーバーを再登録してください。
mcp__premiere-pro__* ツールコールが接続エラーで失敗した場合は、
ユーザーにPremiere Proを開いて再試行するように伝え、回避策を取らないでください。
なぜ2つのMCPなのか、1つではないのか
premiere-pro はカット、グレーディング、書き出しができますが、
どこをカットするかを決定する方法がありません。そのサーバーには
無音検出や文字起こしツールがありません。
claude-video-vision の video_analyze がそのギャップを埋めます。
生ファイルがPremiereに触れる前に、ffmpegの無音検出と
ローカルwhisper文字起こし(単語レベルのタイムスタンプ)を実行します。
カットリストは一度、プレーンなデータとして計算され、その後一連のMCP呼び出しとして
実行されます。Premiereのタイムラインをスクラブして目視でカットポイントを
判断しようとしないでください。フレーム精度の聴覚はありません。分析パスが行います。
2つの編集タイプ — 開始前に選択
- スピーチ駆動(トークヘッド、スクリーンレコーディング、ナレーション):以下の パイプラインに従います。無音/フィラーのカットとキャプションが主な作業です。
- モンタージュ / Bロール(部屋ツアー、ウォークスルー、旅行映像 — カットを 決定づける会話がない):無音/フィラーの手順をスキップし、後述のモンタージュ パイプラインに従います。キャプションはオプションで、音楽とテンポが主な作業です。
どちらのタイプも、以下のハウススタイルで仕上げます。どちらのタイプか迷った場合: オーディオがストーリーを伝えていない場合は、モンタージュです。
ハウススタイル(デフォルトのソーシャルメディアルック)
これらのデフォルトは、自動アセンブリと手作業による最終カットを比較した結果です。 無視したファーストカットは、通常手作業でやり直されます。ユーザーが独自のスタイルや 気に入っている参考動画を持っている場合は、その好みが優先されます。確認して、 これらのルールをそれに合わせて調整してください。
- 最も強いブランド/エスタブリッシングショットでブックエンド — タイトルカードのように それを冒頭で使用し、末尾でも使用します。ストーリーの順序が時系列より優先されます。 ブランド看板やヒーローショットは「最初に起こったクリップ」よりも優先されます。
- 容赦なくカットする。 シーンごとに1ビート、約3~6秒、最高の瞬間のみ。 クリップ全体は決して使いません。優れた参照カットでは、80秒の使用可能な映像から 46秒を保持していました。ソーシャル配信用の目標は合計で約45~60秒です。
- 弱い映像は完全に除外 — 手ぶれした歩き始め、まごつくスタートなど。 クリップに謝罪が必要な場合は、カットに入れません。
- ワイドショットとディテールのクローズアップを交互に — 部屋のワイド → コンロのノブ、 寝室のワイド → ヘッドボードのテクスチャなど。エスタブリッシングショットの間に ディテールを配置します。
- シーン間はハードカットではなくクロスディゾルブ。 ハードカットは意図的な強調のためだけに使用します (良い参照カットでは1つか2つ程度)。
- モンタージュのオーディオは音楽ファースト。 連続した音楽ベッド(約-11 LUFS)、 無音なし。元のカメラ/環境音は削除するか完全に埋め、単にダッキングするだけでは ありません。トラックが提供されない場合は、依頼するか、ミュートされたタイムラインを残して フラグを立ててください。生の環境音を出荷してはいけません。
- 縦型ファーストで納品: 1080×1920、30fps、H.264 約12 Mbpsが 4K60のソースからでも主要な納品形式です。水平はオプションの追加であり、 その逆ではありません。
ストーリータイム/UGCクリップ(対話のあるリアルな瞬間 — 出会い、リアクション、 カジュアルなやり取り)の場合、上記に加えて4つのルールを追加します:
- バイラルな瞬間でコールドオープン。 出会いの中盤から最も印象的な2~4秒の クローズアップを0:00に配置し、その後巻き戻して最初からストーリーを語ります。 時系列順はここでの基本的な失敗モードです — 決して状況説明や文脈で開かないでください。
- ナレーションのフックの余地を残す。 クリエイターはコールドオープン中に 視聴者に直接語りかけるようなナレーションライン(「多分みんな不思議に思ってるよね…」)を 録音することがよくあります。編集ではこれを生成できません。コールドオープンを作成し、 フックのVO(ナレーション)を録音する必要があることをフラグ立てします(またはユーザーに 依頼します)。フックなしで出荷しないでください。
- ブランドカードで終了する。 ユーザーが宣伝したいブランド、製品、ハンドル名を 持っている場合は、短いエンドカード(約3~5秒)で終了します。ロゴやハンドル名を 尋ねてください。決して invent しないでください。
- 対話のレベルを調整する(約-16 LUFS、狭いレンジ)、音楽ベッドを敷く代わりに。 ストーリータイムでは音声が主役です。モンタージュでは音楽が主役です。
パイプライン
これらの手順を順番に実行してください。クリップのバッチ(例:1週間分の録画)の場合は、 1つの共有Premiereプロジェクト内で、クリップごとに手順2~8を繰り返します。
1. 入力の確認
(または文脈から推測して)次のことを尋ねます:生ファイルのパス、これが単一の 納品物か、水平(LinkedInスタイル、16:9)と垂直(Threads/TikTok/Reels、9:16)の 両方の書き出しが必要か。ユーザーが言わない場合は、デフォルトで両方を書き出します。 編集がロックされれば、リフレーミングは簡単です。
2. ffprobeでソース情報を取得
ffprobe -v error -select_streams v:0 -show_entries stream=width,height,r_frame_rate \
-show_entries format=duration -of json "<raw-file>"
width、height、r_frame_rate(分数を解析、例:30000/1001 ≈ 29.97)、
およびdurationが必要です。Premiereで作成するシーケンスはこれらに一致させる必要があります。
シーケンス設定が一致しないと、品質を低下させる無言のスケーリングやフレームレート変換が
発生します。
3. オーディオを分析 — 無音 + 文字起こし
生ファイルに対して filters: {silence: true, transcription: true} を指定して
mcp__claude-video-vision__video_analyze を呼び出します。
これにより、無音区間と単語レベルの文字起こしが返されます(whisperはwhisper.cppを介してローカルで実行 —
APIキー不要。初回実行はモデルの読み込みに1分かかる場合があります)。
結果をJSONファイルに保存します。これを次のカットリストスクリプトに渡します。
4. カットリストを計算
分析JSONに対して scripts/build_cutlist.py を実行します:
python3 "<skill-path>/scripts/build_cutlist.py" analysis.json \
--duration <ffprobe-duration> --srt-out captions.srt
このスクリプトが存在する理由は、これを手作業で正しく行うと、特定の方法でエラーが発生しやすいからです。 カット後のすべてのキャプションタイムスタンプは、その前に削除されたすべての累積期間だけ シフトする必要があります。そうしないと、キャプションが同期しなくなります。 このスクリプトは、サイレンスギャップのマージ/パディングロジックも処理するため、 カットが単語の途中で発生することはありません。
自動で3つのものをカットします:0.35秒以上の無音ギャップ(発話がクリップされないよう0.08秒のパディング付き)、
ハードフィラーワード(um、uh、erおよびそのバリエーション)、およびスタッター/言い間違い
(「the the」のような即時の単語の繰り返し)。ソフトフィラー(like、so、right、you know、actually)は
自動カットしません — これらは多くの場合、単なるノイズではなく、実際の話し方です。
過去のUGC編集からの実際のフィードバック:「you know what I'm saying?」のようなアドリブは、
バッチの中で最も本物らしいものとしてフラグが立てられ、明示的に保持されました。
このスクリプトはこれらを flagged_for_review にコンテキストと共に表示します。
そのリストにざっと目を通し、本当のフィラーというよりも声/個性のように見えるものだけを
ユーザーにエスカレーションします。迷ったら、そのままにしておきます。
5. Premiereプロジェクトとラフカットを構築
create_project(または再利用する場合はopen_project)と、ffprobeの出力(手順2)に 一致する設定でcreate_sequenceを実行します。- 生ファイルを
import_mediaし、トラック0の時間0にadd_to_timelineします。 - カットリストの
cuts配列をstart時間の降順 でループし、各カットに対して: カットの開始時刻と終了時刻でrazor_timeline_at_timeを実行し、 結果の真ん中のクリップをdeleteMode: "ripple"でremove_from_timelineします。 降順が重要です — 前のカットをリップル削除すると、後のすべてのタイムスタンプがシフトするため、 順方向に進むと、手順4の残りのカットポイントが何とも一致しなくなります。 - シーケンスの長さがカットリストJSONの
new_durationとほぼ一致することを確認します。
6. カラー補正
デフォルトのルック(ユーザーがスタイライズされたグレーディングではなく、クリーン/ナチュラルを
希望):ホワイトバランスを修正し、強いハイライトを抑え、押しつぶされたシャドウをわずかに持ち上げ、
適度な彩度。これは盲目的にはできません。color_correct のパラメータは手動スライダーであり、
背後に自動検出はありません。そこで:
export_frameで代表的なフレームを書き出します(イントロから数秒後)。- それを見ます。ホワイトバランス(肌の色はオレンジや青ではない)、露出(クリップや潰れがないか)、 コントラストを判断します。
- タイムラインクリップに控えめな
color_correct調整を適用します — 小さな調整 (1桁の値)、劇的な変化ではありません。ナチュラルな補正は「補正」としてほとんど気づかれず、 「これは正しく見える」という程度であるべきです。 export_frameをもう一度書き出し、比較します。何かがまだおかしい場合は1、2回繰り返します。 完璧を追求して単一のフレームで無限ループしないでください。
ユーザーが手動補正の代わりに/に加えて適用したい .cube/.3dl LUTを持っている場合は、
ベース補正の代わりではなく、その上に低から中程度の intensity(0.5~0.8)で
apply_lut を使用します。LUTだけでは実際のホワイトバランスの問題は修正できず、
色を変えるだけです。
7. キャプション
- 手順4で書き出された
captions.srtをimport_mediaします。 - シーケンス上で
create_caption_trackを実行し、projectItemIdを インポートされたSRTに向けます。
これは、手順4ですでにSRTがポストカットのタイムラインに合わせて再調整されている場合にのみ機能します。 ここで元の(プレカットの)文字起こしタイムスタンプからキャプションを再生成すると、 編集された動画と同期しなくなります。
8. 2番目のアスペクト比にリフレーム
リフレーミングは、既存のフレーム内にクロップインし、モーショントラッキングを使用します。 これは、ワイドからナローに(16:9 → 9:16)うまく機能しますが、ナローからワイドに(9:16 → 16:9) 行くための実際のフレームデータはありません(Premiereの自動リフレームが行わない生成的な拡張が必要です)。 そこで:
- 水平で撮影 → 垂直書き出しのために
auto_reframe_sequenceをnumerator: 9, denominator: 16で実行します。 これが一般的なケースで、うまく機能します。 - 垂直で撮影 → 水平バージョンが本当に必要な場合は、無言でサイドにパディング/ブラーするのではなく、 ユーザーにその旨を伝えます。再撮影かレターボックス/ピラーボックス書き出しが、通常は 悪いAIリフレームよりも良い選択です。
9. 書き出し
最終的なソーシャル納品物はProResではなくH.264 1080pです。これは完成した書き出しであり、
Premiere間の受け渡しではありません。各バージョンを export_sequence します:
- 水平:
format: "h264"(または"mp4")、resolutionはソースに合わせ、quality: "high"。 - 垂直(リフレームされたシーケンスから):同じ設定、1080×1920。
ユーザーがパスを指定していない場合の出力規則:生のソースファイルの隣に edited/
フォルダを作成し、出力ファイル名を <ソース名>-final.mp4(水平)および <ソース名>-vertical.mp4
とします。終了前に save_project します。
10. 報告
ユーザーに次のことを伝えます:何がカットされたか(理由別のカウント — 無音/フィラー/スタッター)、
flagged_for_review から残したものとその理由、カラー補正が変更した内容、
そして書き出しファイルがどこにあるか。「完了」と言うだけではありません。
これは彼らの映像です。何に触れたか知っておくべきです。
モンタージュパイプライン(ナレーションのない映像)
- すべてのソースクリップをタイムラインに配置する前に視聴 —
video_watchを最低1fpsで使用します。ファイル名、サムネイル、以前のフォルダ要約から コンテンツを推測しないでください。「部屋のみ」のクリップが、最後に人物が鏡に映って 終わることがあります(実際にありました — 2つのバスルームクリップは最後の数秒まで 問題ありませんでした)。視聴中に、各クリップの最良の3~6秒のビートと正確なトリムポイントを メモします。 - すべてのクリップをffprobeします(パイプライン手順2)。ソース fpsに一致する シーケンスを作成します — 60fpsのクリップには60fpsのシーケンスを作成します。 シーケンス設定は作成後に変更できません(MCPのバグを参照)。最初にこれを正しく行ってください。
- ハウススタイルに従ったストーリー順でアセンブル:ブランドショット → ワイドと ディテールの交互 → ヒロインビューショット → 再びブランドショット。
- 各クリップをメモしたビートにトリム:スロットにクリップ全体を追加し、保持する境界で
レイザーを入れ、残りをリップル削除します。このとき
videoTrackIndicesとaudioTrackIndicesの両方を渡し、その後list_sequence_tracksでビデオと オーディオトラックの長さがまだ一致していることを確認します。残ったオーディオテールは、 その後すべてを無言で非同期にします。 - すべてのシーン境界にクロスディゾルブを追加します(
add_transition_to_clip)。 - ハウススタイルに従って音楽ベッドを追加し、カメラオーディオを削除します。
- 縦型ファーストで書き出します(1080×1920、30fps、h264、高品質)。水平バージョンは 依頼された場合のみ作成します。
既知のpremiere-pro MCPバグ(2026年8月確認)
trim_clipが静かに何もしない — 成功を返すが、何も変更しない(durationの有無にかかわらず)。 決して使用しないでください。代わりにレイザー+リップル削除を使用します。export_frameがtimeを無視する — どのタイムコードを要求しても、常にシーケンスの最初のフレームを 返します。特定の瞬間の確認やシーケンス途中のクリップのグレーディングには役に立ちません。 代わりに claude-video-vision でソースファイルからフレームを取得してください。 また、独自の拡張子を追加します(x.png→x.png.png)。そのため、拡張子なしの outputPath を渡してください。razor_timeline_at_timeでvideoTrackIndicesのみを指定しても、すべてのオーディオトラックを カットする — そしてビデオのみのリップル削除は、孤立したオーディオを残します。 常に明示的にaudioTrackIndicesを渡し、その後同期を確認してください。set_sequence_settingsは作成後にfps/サイズを変更できない — 正しい設定で新しいシーケンスを 作成し、古い方を削除します。- MCP呼び出しがタイムアウトしても成功することがある(
create_sequenceで発生)。 タイムアウト時は、再試行する前にget_project_info/list_sequencesで確認してください — ブラインド再試行は重複を作成します。 export_sequenceが成功を報告して何も書き込まないことがある — 2回確認済み(outputPathにファイル拡張子がある場合となしの場合の両方)。また、format: "Pro..."を
...
[切り詰められました]