Community程式設計與開發github.com

EffectCraft

用於操作 EffectCraft 的代理技能。EffectCraft 是一個 Rust 編寫的動態圖形 / VFX 合成器(After Effects 替代品)。包括啟動應用程式(含控制埠)、建立或編輯合成、圖層、關鍵影格、遮罩、動態追蹤、動態轉描、特效與文字(.ecproj、MP4/MOV/WebM/ProRes/EXR/PNG 序列、.ectemplate、.ecpreset、ExtendScript/.jsx)、操控執行中的桌面視窗,以及使用其 MCP 伺服器、effectcraft-cli 或控制通道。

EffectCraft 是什麼?

EffectCraft 是一個原生的 Rust 動態圖形 / VFX 合成器,定位為 After Effects 的替代品。其代理介面內建於軟體中:每個動作都是一個帶有 ID 的命令。GUI、選單、CLI、控制通道和 MCP 伺服器都驅動同一個引擎。此技能針對 0.17.0 版本在 Windows 上進行了驗證。 EffectCraft 提供兩種連接模式:無頭模式(headless)和應用程式橋接模式(app bridge)。無頭模式使用 `effectcraft-cli mcp --demo` 啟動,適合批次建置和渲染;橋接模式則需先啟動 GUI(`effectcraft --control <port>`),再用 `effectcraft-cli mcp --bridge <port>` 連接,以實現完整的 UI 操控能力。MCP 伺服器在無頭模式下提供 27 個工具,在橋接模式下額外增加 9 個 UI 工具,總共 36 個工具,涵蓋命令清單、執行、批次處理、專案/合成/圖層查詢、屬性讀寫、關鍵影格動畫、特效套用、腳本執行、渲染輸出以及 UI 自動化(點擊、拖曳、鍵盤輸入等)。 此技能的核心工作流程為:探測狀態 -> 建置(建立合成與圖層) -> 動畫(新增關鍵影格或表達式) -> 特效 -> 驗證(讀回屬性或渲染預覽) -> 輸出(渲染與存檔)。注意參數驗證非常嚴格,未知參數會直接報錯並列出可接受的鍵值,這是與 FilmCraft 最大的不同。所有 CLI 每次呼叫都是獨立的工作階段,狀態不會保留;MCP 工作階段則會在伺服器退出前保持狀態。

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

Installed? Explore more 程式設計與開發 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

在你喜歡的 AI 中提問

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

說明文件

EffectCraft — 代理操作

EffectCraft 是一個原生的 Rust 動態圖形 / VFX 合成器(After Effects 等級),其代理介面是內建的:每個動作都是一個帶有 ID 的命令。GUI、選單、CLI、控制通道和 MCP 伺服器都驅動同一個引擎。已針對 0.17.0 版本在 Windows 上進行驗證。

機器與環境路徑

平台二進位檔CLI預設資料目錄
WindowsC:\Program Files\EffectCraft\effectcraft.exeC:\Program Files\EffectCraft\effectcraft-cli.exe%LOCALAPPDATA%\EffectCraft(磁碟快取)
Linux/usr/bin/effectcraft/usr/bin/effectcraft-cli~/.local/share/effectcraft
  • 控制埠: --control <port> 或 EFFECTCRAFT_CONTROL_PORT(無令牌——橋接器接受純環回連線,與 FilmCraft 不同)
  • 命令: 55 個命名空間中的 734 個(在全新的無頭環境中啟用了 439 個;其餘需要選取 / 啟用合成 / 工具模式)
  • 特效: 註冊表中有 307 個(list_effects);149 種字型系列(list_fonts)

心理模型

  • 專案(.ecproj)包含項目:Composition、Folder、Solid、Footage。get_project 會回傳項目樹、髒標記和啟用中的合成。一次只有一個合成是啟用中的;大多數命令作用於它。
  • 合成為 {width, height, frameRate, duration, startTime, background, renderer: classic3D|advanced3D}。時間單位為秒(浮點數,非 tick——這裡沒有像 FilmCraft 那樣的 tick 數學)。
  • 圖層為 Text、Shape、Solid、Null、Composition(預合成)、Adjustment、Light 或 Camera。圖層以 1 為頂層。透過 id、#n(堆疊索引)或 name 來定址圖層。
  • 每個圖層都有一個屬性樹:Transform(anchor, position, scale, rotation, opacity),加上 effects、masks、文字或形狀 contents。屬性路徑接受 transform.position 和 Transform/Position——但裸 position(無群組)會被拒絕。
  • 動畫 = 屬性上的關鍵影格(prop.addKey)或表達式(prop.setExpression,AE JavaScript)。prop.get {time} 回傳插值、關鍵影格清單和 animated 標記。
  • 參數經過嚴格驗證:未知的參數名稱會導致命令失敗,並附上可接受的鍵值清單;未知的命令 ID 也一樣。這與 FilmCraft 默默丟棄參數的行為相反——閱讀錯誤、修正呼叫、不要盲目重試。
  • 透過讀回驗證(get_state、get_project、get_comp、get_layer、get_property)或透過渲染驗證(render_frame——PNG 可以捕捉到任何讀回都無法顯示的錯誤位置、隱形的圖層和遺漏的特效)。

兩種連線模式

模式啟動方式用途
無頭模式effectcraft-cli mcp --demo(--project p.ecproj、--empty、--autosave)無視窗、批次建置、渲染、腳本
應用程式橋接模式effectcraft --control 50052 + effectcraft-cli mcp --bridge 50052真實視窗:UI 狀態、螢幕截圖、點擊、按鍵、僅 GUI 命令

每個 CLI 呼叫都是獨立的工作階段。 在一個 run 中建立的狀態在進程退出時消失——使用 file.saveAs + --save-as 完成,或在單一的 render/run 呼叫中完成所有工作(建置 → 渲染)。

應使用者要求啟動 EffectCraft(「起動して」/「啟動 EffectCraft」)

  1. 檢查是否已在執行: Get-Process effectcraft / pgrep effectcraft。 如果正在執行,測試埠:effectcraft-cli --bridge 50052 info。 如果正在執行但沒有控制埠,請要求使用者以 --control 重新啟動(否則未儲存的工作將會遺失)。
  2. 以 --control <port>(預設 50052)啟動:
    • Windows——使用 scripts/launch.ps1 讓視窗出現在可見的桌面上,而不是背景工作階段中: powershell -File scripts/launch.ps1 -Port 50052
    • Linux:./scripts/launch.sh 50052
  3. 驗證: 等待 1–3 秒,然後 effectcraft-cli --bridge 50052 info——它會印出版本、命令/特效計數和開啟的專案。

MCP 工具

無頭模式暴露 27 個工具;橋接模式增加了 9 個 UI 工具(ui_inspect、ui_elements、ui_click、ui_drag、ui_key、ui_set、ui_type、screenshot、control)加上用於 ScriptUI 對話方塊的 script_ui = 總共 36 個。

工具用途
command_list / list_commands每個命令(--filter、--enabled)
command_run / execute_command執行一個 {id, params}(可復原)
command_batch / batch多個命令,一個復原步驟(batch)
describe_command一個命令的結構描述
doc_inspect / get_project一次呼叫取得專案樹 + 啟用中合成
get_comp一個合成:設定、圖層、工作區域
get_layer一個圖層的完整屬性樹
get_property / set_property讀取 / 寫入一個屬性(設定鍵值時為動畫狀態)
add_keyframe屬性的關鍵影格(開啟碼錶)
add_effect / list_effects套用一個特效(一次呼叫 + 參數)/ 307 個特效的註冊表
list_fonts149 種文字圖層可用的字型系列
run_scriptAfter Effects 風格的 ExtendScript(app.project、合成、圖層)
render_frame / render_preview在 time 處渲染(啟用中合成的)PNG
open_project / save_project開啟(path、demo:true、empty:true)/ 儲存(+另存新檔)
undo / redo / history分支復原歷史記錄
get_state啟用中合成、目前時間、選取狀態、播放
script_ui驅動已開啟的 ScriptUI 對話方塊/面板腳本

資源:effectcraft://document 和 effectcraft://commands。

標準工作流程

  1. 探查。 get_state + get_project;無頭模式啟動時為空白,除非指定 --demo/--project。橋接模式下先使用 ui_inspect。
  2. 建置。 comp.new {name,width,height,frameRate,duration} → layer.newText/newShape/newSolid/newNull(內嵌樣式參數)→ file.import {paths} 用於素材 → layer.addItem 風格的放置。
  3. 動畫。 每個關鍵影格使用 prop.addKey {layer,path,time,value};keys.setEase、keys.interpolation、prop.setExpression。
  4. 樣式。 effect.apply {effect:"Gaussian Blur", layers:[id]} + effects/#1/... 下的參數路徑;遮罩(mask.new)、文字動畫器、形狀漸層筆畫。
  5. 驗證。 在關鍵時間點使用 get_property;在那些時間點使用 render_frame 並檢視 PNG(位置、緩動和模糊都可見)。
  6. 渲染。 render --out file.mp4 --format h264(CLI),或 renderQueue.add + renderQueue.render;用於 RGBA 的 render-frame --transparent;用於範本工作的 render --template t.ectemplate --values v.json。
  7. 儲存。 file.saveAs {path}(或 CLI --save-as);重新讀取 get_project——髒標記在儲存後清除。

尋找命令

command_list {filter:"mask"} 會比對 id、標籤和選單。從 shell:effectcraft-cli commands --filter mask,以及使用 describe_command/describe 來取得一個命令的結構描述。所有 734 個 id 及其參數文件都在 references/catalog/commands.md 中;經過驗證的逐步 JSON 在 references/recipes.md 中。

從這些開始:comp.new、comp.settings、comp.open、layer.newText、layer.newShape、layer.newSolid、layer.newNull、layer.select、layer.moveLater、layer.setTransform、layer.setText、prop.get、prop.set、prop.addKey、keys.setEase、keys.interpolation、prop.setExpression、effect.apply、mask.new、time.set、file.import、file.saveAs、renderQueue.add、renderQueue.render、app.quit。

耗時的陷阱

  1. 到處都是嚴格的驗證。 未知參數 → invalid parameters … accepted: name, width, … 帶有完整的鍵值清單;未知命令 ID → unknown command。錯誤本身就是文件——但一個有效參數帶有錯誤的值類型仍可能行為異常,所以請讀回狀態。
  2. 圖層時間 vs 合成時間。 寫入命令(prop.addKey、keys.set、prop.set)預設使用圖層秒數作為 time(timeBase:"layer"|"comp" 可切換);prop.get 讀取 time 為合成秒數。當圖層從 0 開始時兩者一致;在 layer.move 之後則不然。錯誤的基準 = 關鍵影格會根據圖層起始時間而偏移。
  3. 許多命令需要選取。 prop.set、effect.apply、keys.easyEase 在未選取任何東西時顯示 enabled:false(無頭模式啟動時為空白)。請傳遞明確的 layer/layers 參數,或先使用 layer.select。
  4. comp.new 會回傳 {comp: id} 並使其成為啟用中合成(已驗證:兩次 comp.new 呼叫後,文字圖層會落在第二個合成中)。使用 comp.open {comp: id|name} 切換,並透過 get_state 確認——在第一次 comp.new 之前,針對「啟用中合成」的命令和渲染會在全新的 --empty 專案上失敗,並顯示無啟用中合成。
  5. 屬性路徑需要群組:transform.position / Transform/Position 有效,裸 position 會報錯 no property。使用 props <comp> <layer> --flat 或 get_layer 尋找確切路徑。
  6. 特效參數是特效下的路徑,例如 effects/#1/Blurriness(索引 = 套用順序)。effect.apply 會回傳 paths:["effects/#1"]——請使用它們。
  7. 每個 CLI 呼叫都是獨立的工作階段(見上文)。MCP 工作階段會保持狀態,直到伺服器退出。
  8. render 將相對的 --out 寫入程序工作目錄;請始終傳遞絕對路徑以獲得可預測的輸出。
  9. 文字圖層在建立時接受完整的樣式設定(layer.newText {size,fill,tracking,…}——數十個參數)。後續的重新樣式設定需透過文字來源/文件屬性進行;請檢查 get_layer 以取得確切路徑。
  10. 僅 GUI 的表面:ui_*、screenshot、control、script_ui 僅存在於橋接模式;window.*、view.* 和 help.* 大多需要 GUI。
  11. mcp --autosave 在退出時保留未儲存的無頭編輯;沒有它則會遺失(對於一次性執行是可預期的,但對於實際工作則令人驚訝)。

參考地圖

檔案內容
references/recipes.md經過驗證的 JSON:建置、文字、形狀、關鍵影格、緩動、表達式、特效、遮罩、渲染、匯出、GUI
references/catalog/commands.md所有 734 個命令,按命名空間分組,附帶參數文件
references/mcp-and-control.md27+9 個工具、錯誤形式、資源、橋接模式詳細資訊
references/cli.mdeffectcraft-cli 子命令、渲染格式、範本、基準測試
references/bugs-and-workarounds.md已重現的缺陷及最小重現方式
references/maintenance.md重新驗證版本、匯出命令、更新此技能
scripts/probe.sh / .ps1MCP 握手 + 工具計數 + 版本
scripts/dump-commands.sh / .ps1重新產生命令目錄
scripts/launch.sh / .ps1以控制埠啟動 GUI(可見桌面)
scripts/smoke-test.sh / .ps1建置 → 關鍵影格 → 渲染 → 驗證

社群:https://discord.gg/artcraft · https://getartcraft.com/apps/effectcraft。

Individual skills in this repo

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

相關技能