Communitygithub.com

FilmCraft

用於操作本機的 Rust 影片編輯器 FilmCraft(Premiere Pro 替代方案),包括啟動應用程式、建立/編輯/剪輯/調色/匯出序列與專案、驅動桌面視窗,以及使用其 MCP 伺服器、filmcraft-cli 或控制頻道。

FilmCraft 是什麼?

FilmCraft 是一款原生 Rust 寫成的專業級影片編輯器,相當於 Premiere Pro 的替代方案。其代理介面將所有操作視為一個帶有唯一 ID 的指令,無論是選單、快捷鍵、面板、時間軸操作、CLI、控制頻道、MCP 伺服器還是圖形介面,都驅動同一核心引擎。此技能涵蓋在 Windows 與 Linux 上經驗證的 0.10.0 到 0.13.0 版本,提供完整的指令目錄(710 個指令、42 個命名空間)、130 個視訊特效、112 個視訊轉場。支援兩種連線模式:無頭模式(透過 filmcraft-cli mcp 進行批次匯出與指令碼)與應用程式橋接模式(透過 filmcraft --control 連接真實視窗,可進行 UI 狀態檢查、螢幕擷取、點擊、鍵盤與拖曳操作)。工作流程從探查專案結構、建構序列、裁切剪輯、套用特效與調色、驗證(透過序列檢查或影格渲染),到最後匯出(支援 MP4/MOV/MXF、影像序列、音訊及各種交換格式如 FCPXML/AAF/OMF)和儲存,全部可透過命令列或 MCP 工具自動化。此外也包含常見的陷阱說明,如參數寬鬆導致的靜默失敗、轉場與字幕查詢的獨立性、匯出時目錄會導致卡住、格式優先於副檔名、HEVC 編碼器不可用等,協助開發者避開常見錯誤。

相容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/kjranyone/artcraft-agent-skills/tree/main/skills/filmcraft

在你喜歡的 AI 中提問

開啟一個已預先載入此 Agent Skill 的新對話。

說明文件

FilmCraft — 代理操作

FilmCraft 是一款原生 Rust 影片編輯器(Premiere Pro 等級),其代理介面內建於核心:每個動作都是一個帶有 ID 的指令。選單、快捷鍵、面板、時間軸手勢、CLI、控制頻道、MCP 伺服器以及圖形介面都驅動同一個引擎。已在 0.10.0–0.13.0 版本上於 Windows 和 Linux 驗證。

機器與環境路徑

平台執行檔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 以及髒旗標。一個序列是作用中的;指令會對其操作。
  • 序列具有 video[] 與 audio[] 軌道陣列,每個軌道為 {id, name, items[], transitions[], muted, locked, ...}。剪輯為 {clip, item, name, start, duration, startFrame, durationFrames, sourceIn, sourceOut, speed, reverse, enabled, link, gainDb, effects[]}——所有時間以滴答表示。
  • 放置一段影片會建立兩個連結的剪輯(視訊 + 音訊),具有不同的 id,且 link 互相指向對方。預設情況下選取一個會同時選取兩個。
  • 時間為整數滴答,每秒 254,016,000,000 個滴答(也是 48000×5292)。seconds 與 frame 會對齊到影格網格;frame 與 timecode(例如 "00:00:02:12" 或 ; 表示掉影格)會精確對應。當需要精確剪切時,優先使用 frame。
  • 指令為 {"id": "timeline.razor", "params": {...}}。command_list 可找出 id 與參數文件;command_run 可執行一個(可復原);command_batch 可執行多個。無效的參數型別與未知指令會失敗;未知的參數名稱則會靜默忽略(參閱陷阱)。
  • 透過回讀驗證(sequence_inspect、project_inspect、captions.list、media.status、jobs.list)或透過渲染(render_frame、file.exportFrame)。null 結果表示「已執行」,而非「如你所願」。

兩種連線模式

模式啟動方式用途
無頭模式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_run執行一個 {id, params}
command_batch執行 {steps:[{id,params}], stop_on_error} → {completed, failed, results}
doc_inspect一次呼叫取得專案樹 + 作用中序列
project_inspect樹狀結構、項目、作用中序列、髒旗標
sequence_inspect作用中序列:設定、軌道、剪輯、轉場、標記
media_import以絕對路徑匯入檔案(paths、bin、image_sequence)
render_frame在 seconds(或播放頭)處的 PNG,max_side
render_preview同 render_frame(橋接:預覽程式監視器)
ui_inspect視窗/UI 狀態(工具、工作區、選取、對話框、播放、元素數量)
ui_elements螢幕上的元素,包含 id、標籤與矩形(prefix)
ui_click按 id 或 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(48 KB JSON:專案 + 序列)以及 filmcraft://commands(192 KB 目錄)。無提示詞。

標準工作流程

  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. 匯出。 file.exportMedia 搭配 wait:true(檢查 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 在 shell 中執行相同功能。所有 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 會出錯。在任何開啟/新建操作後,重新讀取 sequence_inspect。
  3. 轉場不在剪輯上。 它們位於 sequence_inspect.video[i].transitions[] 中,格式為 {id, effect, from, to, start, duration, align, reverse, params}。sequence.removeTransition {transitions:[id]};sequence.setTransition 可編輯持續時間/對齊/參數。
  4. 字幕不在 sequence_inspect 中。 請使用 captions.list;提示帶有 id, start, end, text。captions.newTrack 對於任何未知格式字串會靜默回退到 Subtitle。
  5. 切勿將目錄傳遞給 file.exportMedia。 它會無限掛起(已重現兩次,>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(退格鍵)會留下空隙;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 是工作階段範圍的——它在兩個 --data-dir 工作階段之間不會持久儲存。請使用 GUI 進行持久偏好設定。
  16. MCP 工具引數要求嚴格(未知鍵 → JSON-RPC -32602;錯誤型別 → isError 伴隨反序列化訊息),但 command_run.params 會原封不動地傳遞。

參考資料對應表

檔案內容
references/recipes.md已驗證的 JSON:建構、裁切、特效、調色、字幕、圖形、代理、多機位、TTS、匯出、GUI
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.

相關技能