FilmCraft エキスパート
FilmCraft(ArtCraft の Premiere Pro クラスエディター)で Claude Code または SKILL.md 対応エージェントからビデオ編集を行うための運用知識です。FilmCraft MCP サーバーが接続されている必要があります(SoundCraft と EffectCraft はオプションの引き継ぎ先です)。レッスンごとのサマリーは references/ にあります。以下のすべてのマッピングは、2026-11-03 時点で command_list(716 コマンド)と effects.list(304 エフェクト)に対して確認済みです。
出典. このワークフローは Adobe の『Premiere Classroom in a Book 2026 Release』(Adobe Press)を参考にし、2026-11-03 時点の FilmCraft のライブコマンドカタログで検証されています。このスキルは独立して作成されており、同書からのテキストは一切引用していません。
何を カットすべきか、なぜ(フック、ペーシング、保持率、構成)については、video-editor スキルと組み合わせてください。FilmCraft 以外でのコマンドライン変換、プローブ、バッチ変換については、ffmpeg を参照してください。
検証凡例. "(verified)" / "Verified:" = コマンドが実際に FilmCraft セッションで実行され、説明された動作が確認されたもの。マークなしのマッピング = コマンド/エフェクト ID が 2026-11-03 時点のライブカタログに存在し、パラメータが一致するが、エンドツーエンドで実行されていないもの。"Not available" = 同日のカタログで一致するものなし(スナップショット、§0 参照)。
0. アプリは毎日変化する — 「ない」と言う前に再確認
ArtCraft アプリはほぼ毎日更新されます。このスキルや references/ にある「不在」「欠落」の項目はすべて 2026-11-03 時点のスナップショットであり、恒久的な制限ではありません。
- ユーザーに機能がないと伝えたり、回避策に頼る前に、
command_list/list_effects/effects.listでライブカタログをフィルタ検索してください。コマンドが存在するなら、それを使ってください。 - ここで説明されている Adobe の方法が 目標 です。アプリがサポートしたらすぐに完全に適用してください。
- このスキルに「不在」とあるコマンドが見つかったり、マッピングが変更されている場合は、このスキルを更新するか(またはリポジトリに issue を開いて)スナップショットを正確に維持してください。
エージェントの基本ルール
- 時間: 254016000000 ティック = 1 秒。ほとんどのコマンドは
seconds、frame、timecodeも受け付けます。トランジションの長さはframesで指定します。 - キーフレーム時間:
effects.setParam {time, keyframe:true}は タイムライン 時間を使用します。effects.setInterpolation、setKeyframe、moveKeyframe、deleteKeyframeはmediaTime= ソース 時間 =sourceIn + (t_timeline − start)を使用します(確認済み)。 - ID: タイムラインクリップとプロジェクトアイテムは異なる ID を持ちます。
timeline.placeはリンクされた[video, audio]のペアを返します。sequence_inspectは非常に冗長です(3 クリップで約 15000 トークン)。特定の質問にはstate.inspect、graphics.list、essentialSound.inspect、mixer.inspect、captions.listを使用してください。 - バッチ:
command_batch {stop_on_error:false}はすべてを実行し、ステップごとにok/エラーを報告します。各ステップは独立したアンドウ(edit.undo)になります。 - 書き出し: 常に 明示的な
pathを渡してください(指定しない場合、ファイルはユーザーのホームフォルダに<シーケンス名>.mp4として保存されます)。結果を得るにはwait:trueを指定します。最初にexport.resolveで確認してください。 - ユーザーファイル: 依頼がない限り、ユーザーのプロジェクトを開いたり保存したりしないでください。実験には
file.newProject+file.importDemoFootage(OceanSunset、Aurora、CityNight、Dunes、Plasma、Forest)を使用します。 - 視覚確認: 複数のポイントで
render_frame {seconds, max_side:480}を実行します。色の確認にはscopes.read(数値、画像ではありません)を使用します。
主要概念(簡略)
- プロジェクト: ビン、クリップ、シーケンス、設定を保持しますが、メディアファイルへの 参照 のみです。クリップを削除/名前変更しても、元のファイルは決して変更されません。
- ビン: プロジェクトフォルダ(
file.newBin、project.moveToBin)。検索ビン(file.newSearchBin)は動的なメタデータコレクションです。 - シーケンス: タイムラインです。その設定(フレームサイズ、fps、オーディオ)が作業フォーマットを決定します。主なフッテージに合わせるか、ソースが混在する場合は配信に合わせます。
- トラック: 上の V トラックは下のトラックを覆い隠します。A トラックは加算されます。ターゲット設定(
timeline.setTargeting)は挿入/上書きの配置先を決定します。ソースパッチング はどのソースチャンネルが入ってくるかを決定します。同期ロック と ロック:timeline.setTrack。 - イン/アウト: ソース上では使用する部分を選択し、タイムライン上では削除、レンダリング、書き出しする範囲をマークします。
- 挿入 vs 上書き: 挿入は後続をすべて押し出します(シーケンスが長くなります)。上書きは下にあるものを置き換えます。
- 3/4 点編集: 3 点を指定すると 4 点目が計算されます。4 点が矛盾する場合は、トリミングと速度変更の選択を迫られます。
- リフト vs 抽出: リフトはギャップを残し、抽出はギャップを閉じます。削除とリップル削除も同様です。
- トリム: 通常 は片方のエッジを移動してギャップを残します。リップル はエッジを移動し、残りを引きずります。ロール は 2 つのクリップ間のカット位置を変更し、全体の長さは変わりません。スリップ は固定位置で表示されるソース部分を変更します。スライド はクリップを移動し、その隣接クリップを短縮/延長します。
- ハンドル: イン/アウトを超えた追加のメディア。これがないとトランジションはフレームを繰り返します。
- マーカー: シーケンスまたはクリップマーカー。名前、コメント、色、長さを持ちます。チャプターマーカーやフラッシュキューマーカーもあります。
- ネスト:
clip.nestは複数のクリップを 1 つのクリップのように動作するサブシーケンスにします(グループエフェクト、リフレーム、部分的な書き出し)。 - 固定エフェクト: モーション、不透明度、タイムリマップ、ボリューム、チャンネルボリューム、パンナーはすべてのクリップにすでにあります。
推奨ワークフロー
- プロジェクト + ビン(フッテージ、オーディオ、グラフィックス、シーケンス)→ インポート → フォーマット確認(
file.mediaProperties、media.colorInfo)。 - 正しい設定のシーケンス(または最初の
timeline.placeにmatchSequence:trueを指定)。 - イン/アウトまたはサブクリップでセレクション → ラフカット。
- ファインカット:トリム、ペーシング、J/L カット、トランジションは必要不可欠な場合のみ。
- オーディオ:タイプ、ラウドネス、クリーンアップ、音楽、ダッキング、ミックス。
- エフェクト、モーション、スタビライゼーション、コンポジット。
- カラー:まず補正(バランス、ショットマッチング)、次にグレーディング(ルック)。
- タイトル、グラフィックス、キャプション。
- QC → 書き出し → アーカイブ(プロジェクトマネージャー)。
Premiere → FilmCraft マッピング
| Premiere 機能 | FilmCraft |
|---|---|
| 新規プロジェクト / シーケンス / ビン | file.newProject、file.newSequence {width,height,fps}、file.newBin |
| シーケンス設定 | sequence.settings、sequence.colorSettings |
| インポート / メディアブラウザ | media_import(ツール)、file.import、mediaBrowser.list/import |
| レイヤー化 PSD/AI | レイヤーダイアログなし:PhotoCraft/VectorCraft からレイヤーを PNG として書き出し |
| ボイスオーバー録音 | audio.voiceover.start/stop(オーディオ入力のあるアプリが必要) |
| 合成ナレーション | tts.create(Premiere にはない) |
| メタデータと列 | metadata.set、project.columns.set、edit.find |
| サブクリップ | clip.makeSubclip |
| オーディオチャンネル / フッテージの解釈 | clip.audioChannels、clip.interpretFootage |
| クリップのマージ(デュアルシステムオーディオ)/ 同期 | clip.mergeClips、clip.synchronize {method:"audio"} |
| ソースモニター、イン/アウト | source.open、markers.markIn/markOut {target:"source"}、project.setMarks |
| 挿入 / 上書き | source.insert、source.overwrite、timeline.place {insert} |
| ストーリーボード → シーケンス | clip.automateToSequence |
| レーザー / 編集の追加 | timeline.razor、sequence.addEdit(AllTracks) |
| リフト / 抽出 / リップル削除 | sequence.lift、sequence.extract、edit.rippleDelete、timeline.delete {ripple} |
| ギャップを閉じる | sequence.closeGap、timeline.selectGap |
| トリム、リップル、ロール、スリップ、スライド | timeline.trim {mode}、timeline.roll、timeline.slip、timeline.slide |
| キーボードトリム Q/W、E | trim.ripplePrevious/rippleNext、trim.extendToPlayhead |
| 動的トリミング | trim.shuttle、trim.playAround |
| レートストレッチ / 速度 / 逆再生 | timeline.rateStretch、clip.speedDuration {speed,reverse,ripple} |
| フレームホールド / オプティカルフロー | clip.frameHold、clip.setTimeInterpolation |
| クリップ / フッテージの置き換え | clip.replaceFromBin、media.replaceFootage |
| マーカー | markers.add/addRange/addChapter/edit/exportCsv |
| リンク、グループ、有効化 | clip.link、clip.group、clip.enable |
| ネスト | clip.nest、sequence.makeSubsequence |
| ビデオ/オーディオトランジション | sequence.applyVideoTransition、sequence.applyAudioTransition、trim.applyDefaultTransition |
| モーフカット | トランジションエフェクト morph_cut |
| テキストベース編集 | transcript.generate → transcript.extract/lift、removePauses、removeFillers |
| エフェクト / パラメータ / キーフレーム | effects.apply、effects.setParam、effects.addKeyframe、effects.setInterpolation |
| エフェクトプリセット / 調整レイヤー | presets.save/apply、file.newAdjustmentLayer |
| 属性の貼り付け / 削除 | edit.pasteAttributes、edit.removeAttributes |
| マスクとトラッキング | masks.add、masks.set、masks.track |
| Warp Stabilizer / Auto Reframe | エフェクト warp_stabilizer、auto_reframe;clip.fillFrame/fitToFrame |
| シーン編集検出 | clip.sceneEditDetection |
| Lumetri(パネル、プリセット、LUT、マッチ) | エフェクト lumetri + effects.setParam、lumetri.applyPreset、lumetri.setInputLut/setLook、lumetri.applyMatch、lut.import |
| Lumetri スコープ | scopes.read(波形、パレード、ヒストグラム、ベクトルスコープを数値で) |
| ビデオリミッター | エフェクト video_limiter または書き出し設定のリミッター |
| 不透明度、ブレンドモード | effects.setParam {effect:"opacity", param:"blend", value:"Screen"} |
| Ultra Key / Track Matte / Luma Key | エフェクト ultra_key、track_matte、luma_key、color_key |
| Essential Graphics テキスト/シェイプ | graphics.newText、graphics.newShape/newRectangle、graphics.set、graphics.setCharStyle、graphics.align |
| タイトルロール / クロール | graphics.setRoll |
| モーショングラフィックステンプレート | graphics.template.list/apply/export(.fcgt; .mogrt は拒否されます) |
| キャプション | captions.newTrack/add/setStyle/import/export、transcript.createCaptions、graphics.upgradeCaption |
| オーディオゲイン / ノーマライズ | `clip.audioGain {mode:"set |
| クリップボリュームとキーフレーム | clipMixer.set、effects.setParam {effect:"volume", param:"level"} |
| トラックミキサー、サブミックス、センド、オートメーション | mixer.setStrip/addSubmix/addSend/addInsert/writeAutomation |
| Essential Sound(タイプ、修復、明瞭度、ダッキング、自動マッチ) | essentialSound.setType/set/applyPreset/autoMatch/generateDucking |
| Remix(音楽の長さ調整) | clip.remix {seconds} |
| オーディオエフェクト(EQ、ノッチ、DeNoise、DeHum、Enhance Speech…) | effects.apply(references/11-improving-audio.md 参照) |
| マルチカム | clip.createMulticam、multicam.cut、clip.multicamFlatten |
| プロキシ / インジェスト | media.createProxies、media.toggleProxies、project.ingestSettings |
| クイック書き出し / メディア書き出し / Media Encoder | export.quick、file.exportMedia、export.queue.add/start |
| フレームの書き出し | file.exportFrame |
| EDL/XML/AAF/OMF/OTIO | file.exportInterchange、file.exportAaf、file.exportOmf |
| プロジェクトマネージャー / 未使用の削除 / メディアのリンク | file.projectManager {mode, handles, dryRun}、edit.removeUnused、media.findMissing/relink/autoRelink |
| キャッシュのクリーンアップ | mediaCache.clean、sequence.deleteRenderFiles |
2026-11-03 時点で利用不可 — スナップショット、再確認(§0)(command_list/effects.list で検索、一致なし):Generative Extend(AI)、Object Mask ツール(AI)、Media Intelligence 検索 / "類似フレームを検索"、Adobe Stock(ビデオとオーディオ)、Lumetri 基本補正の自動ボタン(applyMatch のみ存在)、Render and Replace、After Effects/Audition への Dynamic Link、Team Projects/Productions/Frame.io、ソーシャルプラットフォームへの直接アップロード、レイヤー化 PSD/AI インポート。ワークスペースと比較ビューは UI のみ(ブリッジモードでは ui_* ツールを使用)。回避策:フレームホールド/スリップで手動延長、手動マスク + masks.track、モーションには EffectCraft、オーディオには SoundCraft。
レシピ
ラフ → ファインカット
- インポート、ビンに整理、クリップに名前を付ける。フッテージが多い場合はサブクリップを使用。
- シーケンスを作成し、
timeline.place {items:[...]}で順に配置(またはclip.automateToSequence)。範囲を選ぶにはsourceIn/durationを使用。 - 不要部分を削除:
timeline.razor+edit.rippleDelete、またはイン/アウト +sequence.extract。 - ペーシング:カットには
timeline.roll、適切な瞬間を選ぶにはtimeline.slip。 - 長いトーキングヘッド:
transcript.generate(Whisper モデルが必要。未インストールならtranscript.downloadModel、約 290 MB、まず確認)→removeFillers、removePauses。
16:9 フッテージから 9:16 リール
file.newSequence {width:1080, height:1920, fps:<フッテージの fps>}。- クリップを
timeline.place→clip.fillFrame(フレームを埋める。1080p から 177.8% 拡大)、必要に応じてauto_reframeエフェクトまたは手動のmotion.positionキーフレーム。別の方法:16:9 シーケンスをネストしてネストをリフレーム。 - テキストはセーフゾーン内に:上部約 15%、下部約 25% はプラットフォームの UI のために空けておく。
- 大きなキャプションと太字のグラフィックスが標準。フックは短く(最初の 1-2 秒)。
- プリセット「Social Vertical 1080×1920」+
loudnessLufs:-14で書き出し。
トランジション: ストレートカットがデフォルト。ディゾルブ(cross_dissolve、dip_to_black)は時間や場所の変化を示す。effects.setDefaultTransition → 選択したクリップに trim.applyDefaultTransition。オーディオ:目立つカットには 6〜12 フレームの constant_power。最初にハンドルを確認すること。
モーションとキーフレーム: 2 つの時点で effects.setParam {effect:"motion", param:"scale|position|rotation", value, time, keyframe:true} → effects.setInterpolation {mediaTime, interpolation:"easeIn|easeOut|bezier"}。オブジェクトとともに回転する影が必要な場合は、Motion ではなく、drop_shadow を下に置いた transform または basic_3d を使用(Motion は最後に適用されます)。
オーディオ: essentialSound.setType(ダイアログ/音楽/SFX/アンビエンス)→ autoMatch(デフォルト:ダイアログ −23、音楽 −25、SFX −21、アンビエンス −30 LUFS)→ ボイス set {key:"repair.noise.on"} など → 音楽 type:"music" + generateDucking → マスターは書き出しの loudnessLufs(ソーシャル −14、放送 −23)で。ピークは約 −6/−3 dBFS。SoundCraft に引き継ぎ、波形/スペクトル編集、本格的な修復を行う。