Communitygithub.com

FilmCraft

FilmCraft(Rust製ビデオエディタ/Premiere Pro代替)を操作・自動化するためのスキルです。起動、プロジェクト作成、編集、カラーグレーディング、書き出し、MCPサーバーやCLIの制御をサポートします。

FilmCraft とは?

FilmCraftは、Rustで書かれた高速なビデオ編集アプリケーションで、Premiere Proに匹敵する機能を備えています。このスキルは、エージェントがFilmCraftの全機能(710以上のコマンド、42の名前空間)を操作するためのインターフェースを提供します。主な機能として、プロジェクト・シーケンスの作成・編集、メディアのインポート、カット・トリミング、トランジション・エフェクトの適用、テキスト・キャプションの追加、様々な形式(MP4、ProRes、DNxHR、GIF、FCPXML/AAF/OMFなど)への書き出しをサポート。制御ポート経由のヘッドレスモードと、実際のGUIを操作するブリッジモードの2つの接続方法があり、`@filmcraft` をトリガーに利用できます。起動時には `--control 50051` オプションで制御ポートを有効にし、起動スクリプト(launch.ps1/launch.sh)を用いてデスクトップウィンドウが正しく表示されるようにします。注意点として、コマンドパラメータの型が厳密でないものがあるため、実行後に状態を読み戻して検証することが推奨されます。

対応~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/kjranyone/artcraft-agent-skills/tree/main/skills/filmcraft

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

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

ドキュメント

FilmCraft — エージェント操作ガイド

FilmCraftはネイティブRust製のビデオエディタ(Premiere Proクラス)で、エージェントインターフェースがビルトインされています。すべての操作はidを持つコマンドとして実装されています。メニュー、ショートカット、パネル、タイムライン操作、CLI、制御チャンネル、MCPサーバー、GUIはすべて同じエンジンを駆動します。WindowsおよびLinuxで0.10.0~0.13.0で検証済みです。

マシンおよび環境パス

プラットフォームバイナリCLIデフォルトデータディレクトリ
WindowsC:\Program Files\FilmCraft\filmcraft.exeC:\Program Files\FilmCraft\filmcraft-cli.exe%LOCALAPPDATA%\FilmCraft
Linux/usr/bin/filmcraft/usr/bin/filmcraft-cli~/.local/share/filmcraft
macOS/Applications/FilmCraft.app/Contents/MacOS/filmcraftfilmcraft-cli(~/.local/binまたはPATH内)~/Library/Application Support/filmcraft
  • ログの場所: <data-dir>/Logs/filmcraft.log
  • 制御ポート: ループバックのみ(--control <port> または FILMCRAFT_CONTROL_PORT、例:9876、7991、50051)
  • コマンド数: 42の名前空間に710個
  • エフェクト: 130種類のビデオエフェクト、112種類のビデオトランジション、3種類のオーディオトランジション

メンタルモデル

  • プロジェクト(.fcproj、JSON)はビンとアイテムを保持します:Movie、Audio、Image、Sequence、Multi-Camera Source Sequence。project_inspect はツリー、activeSequence、ダーティフラグを返します。アクティブなシーケンスは1つだけです。コマンドはそのアクティブなシーケンスに対して作用します。
  • シーケンスには video[] と audio[] のトラック配列があり、各トラックは {id, name, items[], transitions[], muted, locked, ...} です。クリップは {clip, item, name, start, duration, startFrame, durationFrames, sourceIn, sourceOut, speed, reverse, enabled, link, gainDb, effects[]} で構成されます。すべての時間はティック単位です。
  • ムービーの配置では、2つのリンクされたクリップ(ビデオ+オーディオ)が作成され、それぞれ異なるidを持ち、link が互いを指します。デフォルトではどちらかを選択すると両方が選択されます。
  • 時間は整数ティックで、1秒あたり254,016,000,000(48000×5292でもあります)。seconds と frame はフレームグリッドにスナップされます。frame と timecode(例:"00:00:02:12"、ドロップフレームの場合は ;)は正確にマッピングされます。正確なカットが必要な場合は frame を優先してください。
  • コマンドは {"id": "timeline.razor", "params": {...}} の形式です。command_list でidとパラメータのドキュメントを検索できます。command_run で1つ実行(元に戻せます)。command_batch で複数実行できます。不正なパラメータ型や未知のコマンドは失敗します。未知のパラメータ名は静かに無視されます(「落とし穴」を参照)。
  • 状態を読み戻して検証してください(sequence_inspect、project_inspect、captions.list、media.status、jobs.list)、またはレンダリング(render_frame、file.exportFrame)で確認してください。null の結果は「実行した」を意味し、「意図した通りに動いた」を意味しません。

2つの接続モード

モード開始方法用途
ヘッドレスfilmcraft-cli mcp(--demo、--project p.fcproj、--data-dir d)ウィンドウなし、バッチビルド、書き出し、スクリプト
アプリブリッジfilmcraft --control 50051 + filmcraft-cli mcp --bridge 127.0.0.1:50051実際のウィンドウ:UI状態、スクリーンショット、クリック、キー操作、ドラッグ、GUI専用コマンド

ユーザーリクエストに応じてFilmCraftを起動(「起動して」/「start FilmCraft」)

ユーザーがFilmCraftの起動を依頼した場合(「FilmCraftを起動して」「立ち上げて」「開いて」「start FilmCraft」):

  1. 既に起動しているか確認:
    • Windows:Get-Process filmcraft -ErrorAction SilentlyContinue
    • Linux / macOS:pgrep filmcraft
    • 起動している場合、制御ポートが応答するか確認する(filmcraft-cli --bridge 127.0.0.1:50051 inspect)。
    • 制御ポートなしで起動している場合、ユーザーに通知:「FilmCraftは現在制御ポートなしで起動しています。作業内容を保存して再起動するか、--control 50051 を付けて閉じてから再起動することを許可してください。」
  2. --control <port>(デフォルト:50051)と64文字の FILMCRAFT_CONTROL_TOKEN を指定して起動:
    • Windows(PowerShell)— scripts/launch.ps1 を使用して、WinSta0\Default 上にデスクトップウィンドウが表示されるようにする:
      powershell -File scripts/launch.ps1 -Port 50051
      
      (これにより自動的に FILMCRAFT_CONTROL_TOKEN が設定・保持され、ポートが構成され、対話型タスクとして起動されるため、GUIがバックグラウンドセッションに隠れずログインユーザーに表示されます。)
    • Linux:
      ./scripts/launch.sh 50051
      
    • macOS:
      ./scripts/launch.sh 50051
      
  3. 接続を確認:
    • 1~3秒待ってから filmcraft-cli --bridge 127.0.0.1:50051 inspect を実行。
    • 応答があれば、FilmCraftがアクティブでポート50051で待機中であり、ライブタイムライン編集や協調コマンドの準備ができていることを報告する。

17のMCPツール

ツール目的
command_listすべてのコマンド(filter、enabled_only)
command_run1つの {id, params} を実行
command_batch{steps:[{id,params}], stop_on_error} を実行 → {completed, failed, results} を返す
doc_inspectプロジェクトツリー+アクティブシーケンスを1回の呼び出しで取得
project_inspectツリー、アイテム、アクティブシーケンス、ダーティフラグ
sequence_inspectアクティブシーケンス:設定、トラック、クリップ、トランジション、マーカー
media_import絶対パスでファイルをインポート(paths、bin、image_sequence)
render_frame指定秒数(またはプレイヘッド位置)でPNG出力、max_side 指定可能
render_previewrender_frame と同じ(ブリッジ:プログラムモニター)
ui_inspectウィンドウ/UIの状態(ツール、ワークスペース、選択、ダイアログ、再生、要素数)
ui_elements画面上の要素(id、ラベル、矩形)を prefix 指定で取得
ui_clickid または x,y でクリック(button、count、modifiers)
ui_dragポイント間または要素id間で押下→移動→解放(steps)
ui_keyキーまたはショートカット(Space、Cmd+Z、Shift+Delete)
ui_typeフォーカスされたフィールドに入力
ui_screenshotウィンドウ全体または指定 panel のPNG画像
ui_control任意の制御方法:ui.set、ui.menu.list、ui.playback など

リソース:filmcraft://document(48KB JSON:プロジェクト+シーケンス)および filmcraft://commands(192KB カタログ)。プロンプトはありません。

標準ワークフロー

  1. 調査。 project_inspect / doc_inspect。ヘッドレスモードでは --demo または --project が指定されていない限り空の状態で開始。ブリッジモードでは最初に ui_inspect。
  2. 構築。 file.newProject → file.import(絶対パス)または file.importDemoFootage → file.newSequence → timeline.place。
  3. カット。 playhead.set + timeline.razor、timeline.trim、timeline.slip、timeline.move、edit.clear / edit.rippleDelete。
  4. スタイル。 effects.apply + effects.setParam。sequence.applyVideoTransition。lumetri.applyPreset。graphics.newText。markers.add。captions.add。
  5. 検証。 sequence_inspect/captions.list を読み取り。適切な時点で render_frame を行い、生成されたPNGを確認(これにより、読み戻しでは検出できない間違ったクリップ、黒フレーム、欠落したトランジションを発見できます)。
  6. 書き出し。 wait:true を指定して file.exportMedia(offlineMedia と書き出されたファイルを確認)。file.exportInterchange はNLEラウンドトリップ用。
  7. 保存。 file.saveAs(ディレクトリは自動生成されません — 親ディレクトリが存在する必要があります)。その後 project_inspect.dirty を再読み取り(保存後は false)。

コマンドの検索

command_list {filter:"razor"} はid、ラベル、メニュー、パラメータを検索します。filmcraft-cli commands razor、describe <id>、filmcraft-cli inspect もシェルから同様の操作が可能です。全701個のidとパラメータドキュメントは references/commands.md にあり、検証済みのステップバイステップJSONは references/recipes.md にあります。

まずは以下から始めてください:file.newProject、file.import、file.newSequence、timeline.place、timeline.razor、timeline.trim、timeline.slip、timeline.move、timeline.select、edit.clear、edit.rippleDelete、edit.undo、effects.apply、effects.setParam、sequence.applyVideoTransition、sequence.setTransition、markers.add、captions.newTrack、captions.add、graphics.newText、file.exportMedia、file.exportInterchange、file.exportFrame、file.saveAs。

時間を浪費する落とし穴

  1. コマンドパラメータは寛容 — 未知のキーや一部の間違った型は静かに無視されます。 timeline.trim {seconds:-1} は {"delta":0} を返します(キーは delta です)。timeline.place {seconds:"2"} は0に配置します。fps:"fast" は23.976にフォールバックします。一部のコマンドはバリデーションを行います(graphics.set、markers.add)ので、エラーで不正なパラメータを検出できるとは決して考えないでください。パラメータドキュメントを読み、状態を読み戻してください。
  2. file.newSequence はアクティブシーケンスを切り替え、{sequence: id} を返します。sequence.open は {item: id} を必要とします — sequence やクリップidを渡すとエラーになります。open/newの後は必ず sequence_inspect を再読み取りしてください。
  3. トランジションはクリップ上にはありません。 これらは sequence_inspect.video[i].transitions[] に {id, effect, from, to, start, duration, align, reverse, params} として存在します。sequence.removeTransition {transitions:[id]} で削除。sequence.setTransition でduration/align/paramsを編集します。
  4. キャプションは sequence_inspect に含まれません。 captions.list を使用してください。各キューの手がかりは id, start, end, text を持ちます。captions.newTrack は未知のフォーマット文字列に対して静かに Subtitle にフォールバックします。
  5. file.exportMedia にディレクトリを渡さないでください。 無期限にハングします(2回再現、>3分、出力なし)。完全なファイルパスを使用してください。
  6. フォーマットが拡張子より優先されます。 format:"gif" で out.mp4 を指定すると out.mp4.gif が書き出されます。ProResで out.mp4 を指定すると out.mp4.mov が書き出されます。結果の path が信頼できる情報です。
  7. timeline.place で duration がソースより長い場合、警告なしに最後のフレームを保持します。メディアの長さを考慮してトリミングしてください。
  8. range:"inOut" でマークがない場合、静かにシーケンス全体を書き出します。 range:"custom" + startSeconds/endSeconds が信頼できるサブレンジ指定方法です。
  9. jobs.list はツールではなくコマンドです。 command_run {id:"jobs.list"} で実行。jobs.cancel {job} で部分ファイルを削除します。wait:false の書き出しは {job, path, poll, cancel} を返します。
  10. デモフッテージは合成素材です。 デモメディアのインターチェンジ書き出し(FCPXML/AAF/OMF)はクリップを失います。実際のディスク上のメディアではラウンドトリップします(references/formats-and-roundtrip.md を参照)。
  11. edit.clear(Backspace)はギャップを残します。edit.rippleDelete はギャップを閉じます。 sequence.lift/extract は選択ではなくシーケンスのイン/アウトマークを必要とします。
  12. lumetri.applyPreset は、以前のルックを置き換える代わりに毎回新しいLumetriエフェクトを追加します。古いエフェクトを削除するか、パラメータを直接設定してください。
  13. GUI専用コマンドは command_list に表示されません: window.workspace.{editing,assembly,color,effects,audio}、window.workspace.reset、window.toggleFullScreen、app.about。これらはブリッジ上にのみ存在します。
  14. HEVC書き出しはここでは利用できません(「エンコーダーが登録されていません」)。H.264、ProRes、DNxHR、MJPEG、MXF、イメージシーケンス、オーディオはすべて動作します。
  15. ヘッドレスセッションでの prefs.set はセッションスコープです — 2つの異なる --data-dir セッション間で永続化されませんでした。永続的な設定にはGUIを使用してください。
  16. MCPツールの引数は厳格です(未知のキー → JSON-RPC -32602、間違った型 → デシリアライズメッセージ付き isError)が、command_run.params はそのまま通過します。

リファレンスマップ

ファイル内容
references/recipes.mdビルド、カット、エフェクト、カラー、キャプション、グラフィックス、プロキシ、マルチカム、TTS、書き出し、GUIの検証済みJSON
references/commands.md名前空間ごとにグループ化された全701コマンド、パラメータドキュメント付き
references/mcp-and-control.mdMCP詳細、エラー形状、リソース、制御方法、GUI専用コマンド
references/cli.mdfilmcraft-cli サブコマンド、フラグ、終了コード、オフラインメディア、ヘッドレスジョブ
references/formats-and-roundtrip.md書き出しマトリックス+独立検証、インターチェンジラウンドトリップ
references/bugs-and-workarounds.md再現されたすべての不具合と最小限の再現手順
references/maintenance.mdバージョンの再検証、コマンドのダンプ、このスキルの更新
scripts/probe.shMCPハンドシェイク+ツール数+バージョン
scripts/dump-commands.shコマンドカタログの再生成
scripts/smoke-test.shビルド→レンダリング→書き出し→独立検証

コミュニティ:https://discord.gg/artcraft · https://getartcraft.com/apps/filmcraft · https://github.com/storytold/filmcraft。

Individual skills in this repo

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

関連スキル