mcpField
S
scenario-video-editing

scenario-video-editing

github.com/scenario-labsクリエイティブ・メディア1.2k417 回インストール1 日前に更新
リポジトリ

scenario-video-editing について

ツールモデルで動画エフェクトを適用する Scenario のスキルです。トリミング、リサイズ、キーイング、フレーム抽出、カラー調整に加え、形式やクリップ単位のコスト、非同期ジョブの制約を説明します。

主な機能

  1. 01画像ポスト処理エフェクトの動画版
  2. 02動画のトリミング、分割、リサイズ、逆再生
  3. 03フレームと音声トラックの抽出
  4. 04単色背景素材のクロマキー処理
  5. 05形式、コスト、ジョブ監視の案内

活用シーン

  1. 01カットダウンのカラー調整前にマスターをトリミング
  2. 02合成用にグリーンまたはブルースクリーンを除去
  3. 03確認用にクリップからフレームを抽出
  4. 04納品用に動画をリサイズまたは再エンコード

MCP 対応

このスキルは model_run による Scenario MCP ツールの利用方法を説明し、model_schema_get でモデルのパラメーターを確認し、jobs_wait で非同期ジョブを待機します。

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/scenario-labs/skills --skill scenario-video-editing

インストール後、Claude Code で/scenario-video-editingを入力して読み込まれたか確認します。

詳細

シナリオ動画編集

概要

画像の後処理エフェクトにはすべて動画版があり、どちらもツールモデル上の model_run です。クリップを1つ入力し、いくつかの数値を指定すると、クリップが1つ出力されます。映像の生成やスタイル変更、リップシンク、吹き替え、アップスケーリングには scenario-video、カットの連結、合成、キャプション付けには scenario-video-assembly、静止画像側には scenario-image-editing を使用します。接続と基本的な処理ループには scenario を使用します。ここに記載されている関連スキルが利用可能なスキルにない場合は、ユーザーにインストールを依頼してください(npx skills add scenario-labs/skills --skill <name>)。自動実行時はツールスキーマに基づいて進め、不足しているスキルがあることを明記してください。

対応するエフェクトのルール

動画エフェクトの ID は画像側の ID に -video を付けたもので、ファイルフィールドは image ではなく video です。また、調整項目は同じです。model_scenario-postprocessing-lut-video は model_scenario-postprocessing-lut と同じ lutStyle 列挙型と lutIntensity を受け取ります。ぼかしや色補正から、オイル化、ポスタライズ、ビネットまで、全18種類に対応する動画版があります。

動画版で異なるのは、Dissolve (Video) のみです。2つ目のクリップではなく、静止画の dissolveImage とクリップをブレンドします。2つのクリップをクロスフェードするには、concat transition を使用します。

クイックリファレンス

ニーズモデルまたはクエリ
グレーディングまたはスタイライズfilters={"tags": ["Post Processing"]} に、エフェクト名を query として追加
範囲を指定してトリミングmodel_scenario-video-cut(startTime、endTime)
セグメントに分割model_scenario-video-split(cutPoints。N 個のポイントで N+1 個のクリップ)
リサイズまたは再エンコードmodel_scenario-resize-video
クリップを逆再生model_reverse-video
フレームを抽出、フレームから作成model_scenario-video-to-image-seq、model_scenario-image-seq-to-video
被写体をレイヤー化model_scenario-video-layers-extractor
マスク、切り抜きユーザー自身の言葉でニーズを指定して recommend
グリーンスクリーンのキーイングmodel_scenario-video-chroma-key
オーディオトラックを抽出model_scenario-audio-extract

抽出されたフレームにはインデックスがなく、すべて同じ createdAt を共有するため、順序はジョブ行の assetIds にのみ記録されますが、このリストは時系列順に返されないことがあります(執筆時点で確認済みの不具合です)。抽出ツールが受け取るのは単一の video です。各フレームは extractAllFrames: true で抽出され、frameInterval(執筆時点のデフォルトは 24。24 fps のクリップでは約 1 秒に 1 フレーム)はこのフラグがオフの場合にのみ適用されます。行にクリップの nbFrames とちょうど同じ数の ID が含まれていることを確認してください(asset_get では frameRate の横に表示されます。行の ID が少ない場合はフレームが欠落しており、並べ替えでは修正できません)。そのうえで、model_scenario-image-seq-to-video で再構成する前、またはフレームを引き渡す前に、返された ID をその順序のまま model_scenario-grid-maker に配置します(固定のファーストパーティ ID です。Scenario のグリッドツールはこれひとつだけです。images フィールドには 1~100 個の ID の配列を指定できます。単一の ID のみを指定すると、実行は成功しますが無視されるため、100 フレームを超える場合は複数のシートに分けるか、frameInterval を大きくしてください。columns を設定します。デフォルトは 3、最大 20 で、バッチをほぼ正方形のシートとして表示できます)。シートをクリップの無料の firstFrame と lastFrame、および動きと照らし合わせます。連続性が崩れるフレームは順序が間違っているため、修正後の順序を以後、自分の ID リストとして保持してください。リストやタイムスタンプから順序を再構築してはいけません。また、シートの順序が正しいのにプレビューが逆再生される場合は、順序ではなくアセンブラーの pingpong フラグが原因です。

透明度のある切り抜きは mp4 では出力できません。執筆時点では、背景除去モデルがアルファチャンネルを保持できる形式は WebM または ProRes 4444 MOV のみです。そのため、実行料金を提示する前に、model_schema_get から出力形式の列挙値を確認し、コンテナ形式についてユーザーと合意してください。

エフェクトの検索には search を使い、target="models"、public=true を指定します。model_scenario- ID は定数です。それぞれの操作に対応する Scenario の決定論的なツールはひとつだけなので、検索しても ID を再確認するだけです。model_reverse-video はこのセットに含まれず、執筆時点で検索結果に表示されるモデルです。名前で再検索してください(search の query="video reverse")。

グリーンまたはブルースクリーンのキーイング

単色スクリーンで撮影または生成した映像には、固定のファーストパーティー ID である Scenario 唯一のクロマキー用ツール、model_scenario-video-chroma-key を使用します。単色スクリーンがない映像は、代わりにセグメンテーション処理を行います(「マスク、切り抜き」の行を参照)。

  • keyColor は空のままにします。このツールは最初のフレームの縁からグリーンまたはブルースクリーンを検出します。検出する色が間違っている場合にのみ、16 進数の色を設定してください。
  • outputFormat でアルファチャンネルの形式を決めます。Web やエンジン向けには webm(アルファ付き VP9、デフォルト)、編集やコンポジットアプリ向けには mov(アルファ付き ProRes 4444)を使用します。mp4 はアルファチャンネルに対応していないため、被写体の背後に合成する単色の backgroundColor が必要です。
  • エッジには 5 つの調整項目があります。model_schema_get で確認してください。髪やエッジに緑の縁取りやハローが出る場合は、spillSuppression(デフォルトは 1 で、作成時の最大値)と、1~2 ピクセルの正の edgeShrink を使用します。被写体に穴が開く場合は、tolerance(デフォルトは 0.3)を下げます。エッジが硬く階段状になる場合は、softness または edgeFeather を使用します。
  • 入力には上限があります(作成時は 60 秒、スキーマの max_duration を参照)。先にトリミングしてください。
  • キーイングする映像を生成する場合は、動画モデルに、影のない、均一に明るい純粋なグリーンの背景と、緑色の服を着ていない被写体を指定してください。モーションブラーや細い髪は特にキーイングが難しいため、まずそれらのフレームを確認してください。

クリップの長さに応じてコストが変わるため、先にトリミングしてください

動画版では video 入力に cost_impact: true が設定されていますが、画像版には設定されていません。料金は設定ではなく、映像の長さに応じて変わります。納品するフレームだけにトリミングしてから調整してください。dry_run=true を使うと、実行前にペイロードの料金を確認できます。動画ツールは model_run の待機時間を超えて実行されるため、wait=false で起動し、続けて jobs_wait を呼び出してください。返された pending_job_ids を使って、完了するまで再度呼び出します。jobs_wait のクライアント側のタイムアウトもサーバー側と同様、問題ありません。ジョブが失われたと判断せず、同じ ID で再度呼び出してください。

コストをかけずに確認できます。asset_get は firstFrame と lastFrame をそれぞれ独立したアセット ID として返すため、asset_display でどちらかを確認してから、別の課金対象の実行に進められます。

近接するツール間でフィールド名が異なります

  • Video Cut とエフェクトの各ツールは、スカラー値の video を受け取ります。Resize Video は video を array: true のフィールドとして受け取り、項目数は 1 件までです。ID だけを渡すと、何も通知されずに破棄されます。サイズはピクセル単位の width と height で指定します。どちらも省略可能で、片方だけ指定した場合はアスペクト比が維持されます。
  • 出力形式のフィールドは、cut と split では outputFormat、resize では videoOutputFormat です。
  • cut、split、resize では preserveAudio のデフォルトは true です。エフェクトには音声フィールドがなく、トラックはそのまま引き継がれます。
  • 列挙値はそのままコピーし、文字列に再入力しないでください。lutStyle の文字列の 1 つにはスペースが含まれます。
  • asset_download は動画に対する format を受け取りません。変換できるのは画像形式のみです。シーケンスツールで生成した GIF は画像アセットなので、format: "gif" を指定します。デフォルトの png では 1 フレームに統合されます。

リサイズはリフレーミングではありません

動画のキャンバスを描き直すツールモデルはありません。Resize Video では fit を指定します。contain(デフォルト)はクリップをターゲット内に収め、stretch はサイズを強制して歪ませ、cover はターゲットを埋めて残りを中央でクロップします。端が切れても問題ない場合、cover は正確なアスペクト比にする手軽な方法ですが、どれを使っても、映像全体を残したまま16:9のクリップを縦型フレームにすることはできません。そのため、この要件では実行前に、価格が桁違いに異なる2つの方法から選ぶ必要があります。

  • 生成リフレーム(query="reframe"、Luma Ray 3.2 Reframe と Wan 2.2 Reframe、scenario-video の領域)では、フレームの外側を描き足して映像全体を残します。この種の処理では、価格がはるかに高くなります。解像度の上限には注意が必要です。スキーマ上では縦型のアスペクト比と最高解像度のティアをそれぞれ指定できても、実行時にその組み合わせが拒否されることがあります。
  • コンポジター(Video Studio でクロップするか、縦型キャンバスにピラーボックスを配置する方法)は安価ですが、横幅を切り捨てるか黒帯を追加します。また、レイヤーの配置は1行の設定ではなく、scenario-video-assembly の仕様に従います。

dry_run はペイロードの料金を見積もりますが、検証はしません。そのため、どちらの方法でも、実行が完全に失敗したり、寸法だけが正しく合成が不適切なフレームが返されたりして、料金が発生することがあります。

例:グレーディング済みの短縮版を作成する

以下の各 model_run は wait=false で開始し、次のステップでそのアセットを読み込む前に jobs_wait で完了させてください。

  1. asset_get でマスターを取得し、時間を選ぶ前に properties.duration を確認します。
  2. トリミング:model_scenario-video-cut で、秒単位の startTime と endTime を指定します。最初に行うことで、その後のすべてのステップが安くなります。
  3. 縦横比の調整:model_scenario-resize-video で、video を1項目の配列として、width と height を納品サイズに設定し、videoOutputFormat: "mp4" を指定します。後のステップではなく、この段階で fit を使って形状を決めます。端を切り捨ててもよい場合は cover で正確なアスペクト比にできますが、映像全体を残す必要がある場合は、前述のリフレームを選択します。
  4. グレーディング:model_schema_get を実行してから LUT twin を使い、lutIntensity を0.6前後に設定します。
  5. テクスチャ:model_schema_get を実行してから、その出力に Grain twin を使います。grainProfile(22種類の値を持つ列挙型。作成時のデフォルトは kodak_portra_400)を指定し、最後に適用します。これにより、後続のリサイズで粒子が再サンプリングされず、納品フレームに適したサイズになります。
  6. 結果の firstFrame を asset_display で表示して見た目を確認し、format を指定せずに asset_download します。

よくある間違い

  • 元の各クリップを個別にグレーディングしてから結合すること:完成したマスターを一度だけグレーディングしてください。そうしないと、ショットごとに見た目がばらつきます。
  • ローカルの ffmpeg や、video_edit という名前の MCP ツールを使おうとすること:ツールモデルに対して model_run を実行します。
  • jobs_wait ではなく job_get をループでポーリングすること。jobs_wait のタイムアウトはエラーではありません。
  • Grain profile が粒子を追加すると考えること:22種類のプロファイルはルックを指定するもので、強度ではありません。また、画像を柔らかくするものもあります。入力とフレームを比較してください。

コメント