Communityコーディング&開発github.com

EffectCraft

ネイティブなRust製モーション・グラフィックス/VFXコンポジター(After Effectsクラス)のエージェント操作スキル。アプリ起動、コンポジション作成、レイヤー・キーフレーム・マスク・トラッキング・ロトスコープ・エフェクト・テキスト操作、MCPサーバー駆動に対応。

EffectCraft とは?

EffectCraftは、Rustで実装された高性能なモーション・グラフィックス/VFXコンポジターであり、After Effectsに匹敵する機能を持ちます。このスキルは、AIエージェント(Claude Code, Cursor, Codexなど)がEffectCraftの全機能をプログラムから操作できるようにするためのインターフェースを提供します。具体的には、アプリの起動(--controlポート経由)、ヘッドレスモードでのバッチ処理(effectcraft-cli mcp --demo)、MCPサーバー経由の直接操作、GUI操作(ui_*ツール)、スクリプト実行(ExtendScript/.jsx)など、多様な接続モードをサポートします。スキルは、プロジェクト(.ecproj)、コンポジション、レイヤー(テキスト、シェイプ、ソリッド、ヌルなど)、プロパティツリー、キーフレームアニメーション、エフェクト(307種類)、マスク、レンダリング(MP4/MOV/WebM/ProRes/EXR/PNG)のすべてを網羅し、厳密なパラメータ検証と状態読み戻しによる信頼性の高いワークフローを実現します。WindowsとLinuxに対応し、エージェントは「@effectcraft」で呼び出します。

対応~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に質問する

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

ドキュメント

EffectCraft — エージェント操作

EffectCraft はネイティブな Rust 製モーション・グラフィックス / VFX コンポジター(After Effects クラス)で、エージェント・インターフェースは組み込み済みです。すべての操作は、id を持つコマンドとして実行されます。GUI、メニュー、CLI、制御チャンネル、MCP サーバーはすべて同一のエンジンを駆動します。Windows 上の 0.17.0 で検証済みです。

マシンと環境のパス

プラットフォームバイナリ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 はアイテムツリー、ダーティフラグ、アクティブコンポを返します。1 つのコンポが アクティブ であり、ほとんどのコマンドはアクティブコンポに対して作用します。
  • コンポ は {width, height, frameRate, duration, startTime, background, renderer: classic3D|advanced3D} です。時刻は秒(浮動小数点数、ティックではありません — FilmCraft のようなティック演算はありません)。
  • レイヤー は 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 は、読み戻しでは表示されない、誤った位置、不可視レイヤー、欠落エフェクトを捕捉します)で検証します。

2つの接続モード

モード起動方法用途
ヘッドレスeffectcraft-cli mcp --demo(--project p.ecproj, --empty, --autosave)ウィンドウなし、バッチビルド、レンダリング、スクリプト
アプリブリッジeffectcraft --control 50052 + effectcraft-cli mcp --bridge 50052実際のウィンドウ: UI 状態、スクリーンショット、クリック、キー入力、GUI 専用コマンド

各 CLI 呼び出しは独立したセッションです。 1 回の run で構築した状態は、プロセス終了時に失われます — file.saveAs + --save-as で終了するか、すべて(ビルド→レンダリング)を 1 回の render/run 呼び出しで実行してください。

ユーザー要求による EffectCraft の起動("起動して" / "start 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_command1 つの {id, params} を実行(アンドゥ可能)
command_batch / batch複数コマンドを 1 つのアンドゥステップに(batch)
describe_command1 つのコマンドのスキーマ
doc_inspect / get_projectプロジェクトツリー + アクティブコンポを 1 回の呼び出しで
get_comp1 つのコンポ: 設定、レイヤー、ワークエリア
get_layerレイヤーの完全なプロパティツリー
get_property / set_property1 つのプロパティの読み取り / 書き込み(アニメーション時はキーを設定)
add_keyframeプロパティのキーフレーム(ストップウォッチをオンにする)
add_effect / list_effectsエフェクトの適用(+パラメータを 1 回の呼び出しで)/ 307 個のエフェクトレジストリ
list_fontsテキストレイヤーで使用可能な 149 フォントファミリー
run_scriptAfter Effects スタイルの ExtendScript(app.project, comps, layers)
render_frame / render_preview(アクティブ)コンポの PNG を time で
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、ラベル、メニューにマッチします。シェルからは: 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. レイヤー時刻とコンポ時刻の違い。 書き込みコマンド(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} を返し、そのコンポをアクティブにします(検証済み: 2 回の comp.new 呼び出しで、テキストレイヤーは 2 つ目のコンポに配置されます)。comp.open {comp: id|name} で切り替え、get_state で確認 — "アクティブコンポ" をターゲットとするコマンドとレンダリングは、--empty プロジェクトで最初の comp.new の前に no active composition で失敗します。
  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.

関連スキル