Communitygithub.com

ONIKOSIOLA/video-editing-kit

生の映像素材を、Adobe Premiere Pro で投稿可能な動画に仕上げます。トークヘッド/スクリーンレコーディング映像と、会話のないモンタージュ/Bロール(部屋のツアー、ウォークスルー、旅行映像、物件・製品の紹介)の両方に対応します。ユーザーが録画した動画を編集、カット、カラーグレーディング、切り貼りして投稿できる状態にしたいとき、あるいは「この動画を編集して」「これを切り貼りして」「投稿できるようにして」と言った場合や、生のクリップやフォルダを渡しただけで指示がない場合に使用します。premiere-pro MCPツールを直接操作し(プロジェクト/シーケンス作成、カット、トランジション、カラー、キャプション、書き出し)、さらにオーディオ分析とクリップレビューにはclaude-video-visionを使用します。PremiereのGUIを手動で操作しようとしてはなりません。

video-editing-kit とは?

このスキルは、Adobe Premiere Pro をプログラムから制御し、生の映像素材をソーシャルメディア向けの完成された動画に仕上げるための自動化ツールキットです。トークヘッド動画のようなナレーション主体の映像と、モンタージュやBロールのようなナレーションのない映像の両方を処理できます。スキルの核心は、`premiere-pro` MCPサーバーでカット、カラーグレーディング、キャプション追加、書き出しを行い、`claude-video-vision` MCPサーバーでサイレンス検出や文字起こしなどの音声分析を補完する、2つのMCPサーバーを連携させる点にあります。このスキルは、単にPremiereを操作するだけでなく、専門的な映像編集の知識(例えば、無音部分の自動カット、カラーコレクション、縦横比別の書き出し)を組み込んでおり、効率的で高品質な編集ワークフローを実現します。また、事前に確認された編集ルール(ハウススタイル)を適用し、不要な部分を削除し、見栄えの良い最終成果物を生成します。

対応✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/ONIKOSIOLA/video-editing-kit/tree/HEAD/skills/premiere-clean-edit

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

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プロジェクトとラフカットを構築

  1. create_project(または再利用する場合は open_project)と、ffprobeの出力(手順2)に 一致する設定で create_sequence を実行します。
  2. 生ファイルを import_media し、トラック0の時間0に add_to_timeline します。
  3. カットリストの cuts 配列を start 時間の降順 でループし、各カットに対して: カットの開始時刻と終了時刻で razor_timeline_at_time を実行し、 結果の真ん中のクリップを deleteMode: "ripple" で remove_from_timeline します。 降順が重要です — 前のカットをリップル削除すると、後のすべてのタイムスタンプがシフトするため、 順方向に進むと、手順4の残りのカットポイントが何とも一致しなくなります。
  4. シーケンスの長さがカットリストJSONの new_duration とほぼ一致することを確認します。

6. カラー補正

デフォルトのルック(ユーザーがスタイライズされたグレーディングではなく、クリーン/ナチュラルを 希望):ホワイトバランスを修正し、強いハイライトを抑え、押しつぶされたシャドウをわずかに持ち上げ、 適度な彩度。これは盲目的にはできません。color_correct のパラメータは手動スライダーであり、 背後に自動検出はありません。そこで:

  1. export_frame で代表的なフレームを書き出します(イントロから数秒後)。
  2. それを見ます。ホワイトバランス(肌の色はオレンジや青ではない)、露出(クリップや潰れがないか)、 コントラストを判断します。
  3. タイムラインクリップに控えめな color_correct 調整を適用します — 小さな調整 (1桁の値)、劇的な変化ではありません。ナチュラルな補正は「補正」としてほとんど気づかれず、 「これは正しく見える」という程度であるべきです。
  4. export_frame をもう一度書き出し、比較します。何かがまだおかしい場合は1、2回繰り返します。 完璧を追求して単一のフレームで無限ループしないでください。

ユーザーが手動補正の代わりに/に加えて適用したい .cube/.3dl LUTを持っている場合は、 ベース補正の代わりではなく、その上に低から中程度の intensity(0.5~0.8)で apply_lut を使用します。LUTだけでは実際のホワイトバランスの問題は修正できず、 色を変えるだけです。

7. キャプション

  1. 手順4で書き出された captions.srt を import_media します。
  2. シーケンス上で 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 から残したものとその理由、カラー補正が変更した内容、 そして書き出しファイルがどこにあるか。「完了」と言うだけではありません。 これは彼らの映像です。何に触れたか知っておくべきです。

モンタージュパイプライン(ナレーションのない映像)

  1. すべてのソースクリップをタイムラインに配置する前に視聴 — video_watch を最低1fpsで使用します。ファイル名、サムネイル、以前のフォルダ要約から コンテンツを推測しないでください。「部屋のみ」のクリップが、最後に人物が鏡に映って 終わることがあります(実際にありました — 2つのバスルームクリップは最後の数秒まで 問題ありませんでした)。視聴中に、各クリップの最良の3~6秒のビートと正確なトリムポイントを メモします。
  2. すべてのクリップをffprobeします(パイプライン手順2)。ソース fpsに一致する シーケンスを作成します — 60fpsのクリップには60fpsのシーケンスを作成します。 シーケンス設定は作成後に変更できません(MCPのバグを参照)。最初にこれを正しく行ってください。
  3. ハウススタイルに従ったストーリー順でアセンブル:ブランドショット → ワイドと ディテールの交互 → ヒロインビューショット → 再びブランドショット。
  4. 各クリップをメモしたビートにトリム:スロットにクリップ全体を追加し、保持する境界で レイザーを入れ、残りをリップル削除します。このとき videoTrackIndices と audioTrackIndices の両方を渡し、その後 list_sequence_tracks でビデオと オーディオトラックの長さがまだ一致していることを確認します。残ったオーディオテールは、 その後すべてを無言で非同期にします。
  5. すべてのシーン境界にクロスディゾルブを追加します(add_transition_to_clip)。
  6. ハウススタイルに従って音楽ベッドを追加し、カメラオーディオを削除します。
  7. 縦型ファーストで書き出します(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..." を

...

[切り詰められました]

Individual skills in this repo

This repo contains 1 individual skill — each has its own dedicated page.

関連スキル