mcpField
A
after-effects

after-effects

github.com/aedev-toolsクリエイティブ・メディア115634 回インストール34 週間前に更新
リポジトリ

after-effects について

ExtendScript を使って Adobe After Effects のプロジェクトを自動化するスキルです。プロジェクト状態を調べ、タスク別のルールを参照し、破壊的な変更には確認を求めます。

主な機能

  1. 01プロジェクトとコンポジション状態の取得
  2. 02ExtendScript の生成と実行
  3. 03タスク別ルールファイルの参照
  4. 04変更操作を undo グループ化
  5. 05組み込みの一括操作
  6. 06破壊的操作の事前確認

活用シーン

  1. 01プロジェクトの一般的な問題の監査
  2. 02プロジェクト項目の一括改名や整理
  3. 03レイヤー、キーフレーム、コンポジションの調整
  4. 04フォントやエクスプレッションの置換

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/aedev-tools/adobe-agent-skills --skill after-effects

インストール後、Claude Code で/after-effectsを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
ae-api-versions.md
rules/
assets-footage.md
batch-operations.md
composition-management.md
effects.md
expressions.md
extendscript-fundamentals.md
keyframes-animation.md
layer-manipulation.md
rendering.md
scripts/
active-state.jsx
anchor-point-mover.jsx
batch-comp-settings.jsx
batch-expression.jsx
batch-rename.jsx
blend-mode-set.jsx
comp-detail.jsx
comp-from-csv.jsx
copy-ease.jsx
easing-presets.jsx
explode-shape-layer.jsx
expression-errors.jsx
expression-replace.jsx
fit-to-comp.jsx
font-inventory.jsx
font-replace.jsx
incremental-save.jsx
label-layers.jsx
layer-detail.jsx
layer-sort.jsx

詳細

概要

このスキルは、ExtendScript(.jsx)を生成し、osascript 経由で実行することで After Effects を自動化します。クエリスクリプトでプロジェクトの状態を読み取り、ドメイン知識にはルールファイルを使用し、すべての変更処理を undo グループで囲みます。

初回セットアップ

  1. 任意のクエリスクリプトを指定して scripts/runner.sh を実行し、AE のバージョンを検出します
  2. AE のバージョンが複数インストールされている場合、ユーザーがいずれかを選択する必要があります。runner.sh が選択を促します
  3. AE Preferences > Scripting & Expressions > "Allow Scripts to Write Files and Access Network" が有効になっていることを確認します

ワークフロー

ユーザーからのリクエストごとに、次の手順を実行します。

ステップ 1:コンテキストを収集する(自動実行、確認不要)

すべてのクエリスクリプトで --background を使用します。これにより ae.activate() がスキップされ、AE にフォーカスを奪われません。

bash scripts/runner.sh --background scripts/active-state.jsx

次に /tmp/ae-assistant-result.json を読み込み、アクティブなコンポ、選択中のレイヤー、CTI を確認します。

初めてのやり取りの場合、またはプロジェクトのコンテキストが不明な場合は、次も実行します。

bash scripts/runner.sh --background scripts/project-overview.jsx

デフォルトでは概要が返されます。フォルダーツリーと件数、すべてのコンポの一覧、ファイルの種類ごとにグループ化されたフッテージが含まれます。個々のファイルすべてが一覧表示されるわけではありません。

特定のフォルダーを詳しく確認するには:

bash scripts/runner.sh --background scripts/project-overview.jsx '{"mode": "folder", "folderName": "Images"}'

すべての項目を一覧表示する必要がある場合に限り、フルモードを使用します。

bash scripts/runner.sh --background scripts/project-overview.jsx '{"mode": "full"}'
ステップ 2:必要に応じて詳細を確認する(自動実行)

タスクが特定のコンポを対象とする場合:

bash scripts/runner.sh --background scripts/comp-detail.jsx '{"compName": "Comp Name"}'

タスクが特定のレイヤーを対象とする場合:

bash scripts/runner.sh --background scripts/layer-detail.jsx '{"layerNames": ["Layer 1", "Layer 2"]}'

compName を省略すると、アクティブなコンポが使用されます。layerNames を省略すると、選択中のレイヤーが使用されます。

追加のクエリスクリプト

エクスプレッションエラー — 壊れたエクスプレッションをスキャンします。

bash scripts/runner.sh --background scripts/expression-errors.jsx
bash scripts/runner.sh --background scripts/expression-errors.jsx '{"compName": "Main Comp"}'

フォント一覧 — プロジェクト全体で使用されているすべてのフォントを一覧表示します。

bash scripts/runner.sh --background scripts/font-inventory.jsx

プロジェクト監査 — 包括的な健全性チェックを行います(未使用のフッテージ、見つからないファイル、エクスプレッションエラー、重複した平面、フォントの問題、空のフォルダー)。

bash scripts/runner.sh --background scripts/project-audit.jsx
bash scripts/runner.sh --background scripts/project-audit.jsx '{"checks": ["unused", "missing", "expressions"]}'
ステップ 3:ドメイン知識を読み込む

rules/ から関連するルールファイルを読み込みます。rules/extendscript-fundamentals.md は必ず読み込んでください。生成するすべてのスクリプトに適用される ES3 の制約が記載されています。

タスクの内容読み込むルールファイル
レイヤー(作成、移動、親子関係の設定、複製)rules/layer-manipulation.md
キーフレーム、アニメーション、イージングrules/keyframes-animation.md
エクスプレッションrules/expressions.md
コンポジション(作成、プリコンポーズ、ネスト)rules/composition-management.md
エフェクトとパラメーターrules/effects.md
インポート、フッテージ、アセットrules/assets-footage.md
レンダーキュー、書き出しrules/rendering.md
一括/バッチ処理rules/batch-operations.md
バージョン固有の機能references/ae-api-versions.md
ステップ 4:アクションスクリプトを生成する

重要:まずスキルの実際のパスを解決してください

アクションスクリプトを作成または実行する前に、スキルの実際のパス(シンボリックリンクを経由しないパス)を解決します。ExtendScript の #include はシンボリックリンクをたどれないため、必ず実際のファイルシステム上のパスを使用してください。

各セッションの開始時に一度実行します。

SKILL_SCRIPTS="$(readlink -f ~/.claude/skills/after-effects-assistant/scripts 2>/dev/null || readlink ~/.claude/skills/after-effects-assistant/scripts)"
echo "$SKILL_SCRIPTS"

このセッションで以降のすべての Write コマンドと Bash コマンドには、解決したパス($SKILL_SCRIPTS)を使用します。

これが重要な理由:

  • ~/.claude/skills/ は通常シンボリックリンクであり、シンボリックリンク経由では ExtendScript の #include が失敗します
  • 実際の scripts/ ディレクトリに書き込むと、#include "lib/json2.jsx" が正しく解決されます
  • 解決されるパスはマシンごとに異なるため、ハードコードしないでください

生成するすべてのスクリプトは、必ず次のテンプレートに従ってください。

#include "lib/json2.jsx"
#include "lib/utils.jsx"

(function() {
    app.beginUndoGroup("AE Assistant: <action description>");
    try {
        var args = readArgs();
        var comp = getActiveComp();
        if (!comp) return;

        // ... action code ...

        writeResult({ success: true, message: "<what was done>" });
    } catch (e) {
        try { writeResult({ error: e.toString(), line: e.line, fileName: e.fileName }); }
        catch(e2) { writeError(e.toString(), "line:" + e.line); }
    } finally {
        app.endUndoGroup();
    }
})();
生成スクリプトで使用できる utils.jsx ヘルパー
関数用途
writeResult(obj)JSON の結果を /tmp/ae-assistant-result.json に書き込みます
writeError(msg, detail)JSON.stringify が失敗した場合に、最後の手段としてエラーを記録します
readArgs()/tmp/ae-assistant-args.json から引数を読み取ります
getLayerType(layer)タイプ文字列を返します(「shape」「text」「null」「precomp」など)
getBlendModeName(mode)BlendingMode 列挙型を文字列名に変換します
getActiveComp()アクティブなコンポジションを返します。存在しない場合はエラーを書き込み、null を返します
getSelectedOrAllLayers(comp)選択中のレイヤーの配列を返します。選択中のレイヤーがない場合は、すべてのレイヤーを返します
hexToRGB(hex)"#ff0000" → [1, 0, 0]
getCompByName(name)プロジェクト項目から名前でコンポジションを検索します
walkProperties(group, leafFn, path)プロパティツリーを再帰的にたどります。末端のプロパティで leafFn(prop, path) を呼び出します
bubbleSort(arr, compareFn)ES3 互換のインプレースソートです
framesToSeconds(frames, comp)comp.frameDuration を使ってフレーム数を秒に変換します
appendLog(message)~/.ae-assistant-extendscript.log に追記します

Write ツールでスクリプトを書き込み、その後、短い bash コマンドで実行します。

  1. Write ツールを使って、スクリプトを $SKILL_SCRIPTS/ae-action.jsx(解決済みの実パス)に書き込みます
  2. bash で実行します。
bash "$SKILL_SCRIPTS/runner.sh" "$SKILL_SCRIPTS/ae-action.jsx"

重要: cat > file << 'SCRIPT' のヒアドキュメントは使用しないでください。スクリプト全体が bash コマンドに含まれ、権限確認のプロンプトが煩雑になります。必ず Write ツールでスクリプトの内容を書き込み、その後、短い bash コマンドで実行してください。

ステップ 5:実行または確認

自動実行(確認は不要です):

  • 読み取り専用のクエリすべて(active-state、project-overview、comp-detail、layer-detail、expression-errors、font-inventory、project-audit)
  • 非破壊的な追加:キーフレームの追加、エフェクトの追加、レイヤーの作成、コンポジションの作成

実行前に確認(スクリプトを表示してユーザーに確認します):

  • レイヤーまたはコンポジションの削除
  • キーフレームの削除
  • フッテージの置き換え
  • エクスプレッションのクリア
  • レンダーキューの操作
  • プロジェクトのクリーンアップ(未使用項目の削除、平面の統合)
  • ユーザーが予期しない可能性のある操作
組み込みアクションスクリプト

カスタムの ae-action.jsx を生成する前に、組み込みスクリプトでタスクを処理できるか確認してください。これらは、引数に基づいて動作する、永続的に利用でき、テスト済みのスクリプトです。

True Comp Duplicator — サブコンポを独立させたままコンポをディープクローンします(実行前に確認してください)。

bash "$SKILL_SCRIPTS/runner.sh" "$SKILL_SCRIPTS/true-comp-duplicator.jsx" '{"compName": "Main Comp", "suffix": " COPY"}'

Font Replace — プロジェクト全体のフォントを検索して置換します。必ず最初に dryRun を実行してください。

bash "$SKILL_SCRIPTS/runner.sh" "$SKILL_SCRIPTS/font-replace.jsx" '{"find": "Helvetica", "replace": "Inter-Regular", "dryRun": true}'
bash "$SKILL_SCRIPTS/runner.sh" "$SKILL_SCRIPTS/font-replace.jsx" '{"find": "Helvetica", "replace": "Inter-Regular"}'

Project Cleanup — 未使用のフッテージを削除し、重複する平面を統合し、空のフォルダーを削除します。必ず最初に dryRun を実行してください。

bash "$SKILL_SCRIPTS/runner.sh" "$SKILL_SCRIPTS/project-cleanup.jsx" '{"dryRun": true}'
bash "$SKILL_SCRIPTS/runner.sh" "$SKILL_SCRIPTS/project-cleanup.jsx"

Batch Rename — レイヤー、コンポ、またはプロジェクト項目を一括で名前変更します。

bash "$SKILL_SCRIPTS/runner.sh" "$SKILL_SCRIPTS/batch-rename.jsx" '{"target": "layers", "mode": "find-replace", "find": "Layer", "replace": "Element"}'
bash "$SKILL_SCRIPTS/runner.sh" "$SKILL_SCRIPTS/batch-rename.jsx" '{"target": "layers", "mode": "prefix", "prefix": "BG_"}'
bash "$SKILL_SCRIPTS/runner.sh" "$SKILL_SCRIPTS/batch-rename.jsx" '{"target": "layers", "mode": "sequence", "base": "Card", "start": 1}'

Layer Stagger — 選択したレイヤーの時間をずらし、カスケードアニメーションを作成します。

bash "$SKILL_SCRIPTS/runner.sh" "$SKILL_SCRIPTS/layer-stagger.jsx" '{"offset": 0.1, "unit": "seconds", "direction": "forward"}'
bash "$SKILL_SCRIPTS/runner.sh" "$SKILL_SCRIPTS/layer-stagger.jsx" '{"offset": 2, "unit": "frames"}'

Expression Replace — プロジェクト全体のエクスプレッション内のテキストを検索して置換します。必ず最初に dryRun を実行してください。

bash "$SKILL_SCRIPTS/runner.sh" "$SKILL_SCRIPTS/expression-replace.jsx" '{"find": "comp(\"Old\")", "replace": "comp(\"New\")", "dryRun": true}'
bash "$SKILL_SCRIPTS/runner.sh" "$SKILL_SCRIPTS/expression-replace.jsx" '{"find": "comp(\"Old\")", "replace": "comp(\"New\")"}'

Organize Project — プロジェクトパネルの項目を種類ごとにフォルダーへ自動分類します。

bash "$SKILL_SCRIPTS/runner.sh" "$SKILL_SCRIPTS/organize-project.jsx" '{"structure": "by-type"}'
bash "$SKILL_SCRIPTS/runner.sh" "$SKILL_SCRIPTS/organize-project.jsx" '{"structure": "by-extension"}'

Batch Comp Settings — 複数のコンポの fps、解像度、デュレーションを変更します。

bash "$SKILL_SCRIPTS/runner.sh" "$SKILL_SCRIPTS/batch-comp-settings.jsx" '{"scope": "all", "fps": 25}'
bash "$SKILL_SCRIPTS/runner.sh" "$SKILL_SCRIPTS/batch-comp-settings.jsx" '{"compNames": ["Comp 1", "Comp 2"], "width": 3840, "height": 2160}'
bash "$SKILL_SCRIPTS/runner.sh" "$SKILL_SCRIPTS/batch-comp-settings.jsx" '{"scope": "nested", "fps": 30, "duration": 10}'

Easing Presets — プロフェッショナルなイージングやバウンス/エラスティックのエクスプレッションを適用します。

bash "$SKILL_SCRIPTS/runner.sh" "$SKILL_SCRIPTS/easing-presets.jsx" '{"preset": "smooth"}'
bash "$SKILL_SCRIPTS/runner.sh" "$SKILL_SCRIPTS/easing-presets.jsx" '{"preset": "snappy"}'
bash "$SKILL_SCRIPTS/runner.sh" "$SKILL_SCRIPTS/easing-presets.jsx" '{"preset": "bounce"}'

Anchor Point Mover — 見た目の位置を補正しながらアンカーポイントを再配置します。

bash "$SKILL_SCRIPTS/runner.sh" "$SKILL_SCRIPTS/anchor-point-mover.jsx" '{"position": "center"}'
bash "$SKILL_SCRIPTS/runner.sh" "$SKILL_SCRIPTS/anchor-point-mover.jsx" '{"position": "bottom-left"}'

Reverse Keyframes — 選択したプロパティのアニメーションを反転します。

bash "$SKILL_SCRIPTS/runner.sh" "$SKILL_SCRIPTS/reverse-keyframes.jsx"

Select Layers — 種類、ラベル、属性、または名前でレイヤーを選択します。

bash "$SKILL_SCRIPTS/runner.sh" "$SKILL_SCRIPTS/select-layers.jsx" '{"type": "text"}'
bash "$SKILL_SCRIPTS/runner.sh" "$SKILL_SCRIPTS/select-layers.jsx" '{"hasExpressions": true}'
bash "$SKILL_SCRIPTS/runner.sh" "$SKILL_SCRIPTS/select-layers.jsx" '{"nameContains": "BG"}'

Layer Sort — 名前、位置、インポイント、種類、またはラベルでタイムラインのレイヤーを並べ替えます。

bash "$SKILL_SCRIPTS/runner.sh" "$SKILL_SCRIPTS/layer-sort.jsx" '{"sortBy": "name", "order": "ascending"}'
bash "$SKILL_SCRIPTS/runner.sh" "$SKILL_SCRIPTS/layer-sort.jsx" '{"sortBy": "position-y"}'

Smart Precompose — デュレーションを自動でトリミングしてプリコンポーズします。

bash "$SKILL_SCRIPTS/runner.sh" "$SKILL_SCRIPTS/smart-precompose.jsx" '{"name": "My Precomp", "trimToContent": true}'

Copy Ease — あるキーフレームからイージングをコピーし、ほかのキーフレームに貼り付けます。

bash "$SKILL_SCRIPTS/runner.sh" "$SKILL_SCRIPTS/copy-ease.jsx" '{"mode": "both"}'
bash "$SKILL_SCRIPTS/runner.sh" "$SKILL_SCRIPTS/copy-ease.jsx" '{"sourceLayer": "Logo", "sourceProperty": "Position", "sourceKeyIndex": 2}'

Relink Footage — 検索ディレクトリからオフラインのフッテージを一括で再リンクします。必ず最初に dryRun を実行してください。

bash "$SKILL_SCRIPTS/runner.sh" "$SKILL_SCRIPTS/relink-footage.jsx" '{"searchPaths": ["/Volumes/Projects/footage"], "dryRun": true}'
bash "$SKILL_SCRIPTS/runner.sh" "$SKILL_SCRIPTS/relink-footage.jsx" '{"searchPaths": ["/Volumes/Projects/footage"]}'

SRT Import — SRT ファイルからタイミング付きの字幕テキストレイヤーを作成します。

bash "$SKILL_SCRIPTS/runner.sh" "$SKILL_SCRIPTS/srt-import.jsx" '{"srtPath": "/path/to/subs.srt", "fontSize": 48}'

Text Export/Import — すべてのテキストを CSV にエクスポートし、外部で編集してから再インポートします。

bash "$SKILL_SCRIPTS/runner.sh" "$SKILL_SCRIPTS/text-export-import.jsx" '{"mode": "export", "csvPath": "/tmp/text.csv"}'
bash "$SKILL_SCRIPTS/runner.sh" "$SKILL_SCRIPTS/text-export-import.jsx" '{"mode": "import", "csvPath": "/tmp/text.csv"}'

Batch Expression — エクスプレッションを一括で適用、削除、有効化、または無効化します。

bash "$SKILL_SCRIPTS/runner.sh" "$SKILL_SCRIPTS/batch-expression.jsx" '{"property": "opacity", "expression": "wiggle(2, 10)", "mode": "apply"}'
bash "$SKILL_SCRIPTS/runner.sh" "$SKILL_SCRIPTS/batch-expression.jsx" '{"mode": "remove"}'
bash "$SKILL_SCRIPTS/runner.sh" "$SKILL_SCRIPTS/batch-expression.jsx" '{"mode": "disable"}'

Randomize Properties — トランスフォームプロパティにランダムな値を適用します。

bash "$SKILL_SCRIPTS/runner.sh" "$SKILL_SCRIPTS/randomize-properties.jsx" '{"property": "rotation", "min": -15, "max": 15}'
bash "$SKILL_SCRIPTS/runner.sh" "$SKILL_SCRIPTS/randomize-properties.jsx" '{"property": "position", "minX": 0, "maxX": 1920, "minY": 0, "maxY": 1080}'

Un-PreCompose — プリコンポから親コンポへレイヤーを抽出します(実行前に確認してください)。

bash "$SKILL_SCRIPTS/runner.sh" "$SKILL_SCRIPTS/un-precompose.jsx" '{"precompLayerName": "Precomp 1"}'

Comp from CSV — スプレッドシートのデータからコンポのバリエーションを生成します(実行前に確認してください)。

bash "$SKILL_SCRIPTS/runner.sh" "$SKILL_SCRIPTS/comp-from-csv.jsx" '{"templateComp": "Lower Third", "csvPath": "/path/data.csv"}'

Render Queue Batch — 複数のコンポをレンダーキューに追加します(実行前に確認してください)。

bash "$SKILL_SCRIPTS/runner.sh" "$SKILL_SCRIPTS/render-queue-batch.jsx" '{"compNames": ["Final_16x9", "Final_9x16"], "outputPath": "~/Desktop/renders/"}'
bash "$SKILL_SCRIPTS/runner.sh" "$SKILL_SCRIPTS/render-queue-batch.jsx" '{"scope": "folder", "folderName": "Finals"}'

Explode Shape Layer — シェイプレイヤーのグループを個別のレイヤーに分割します。

bash "$SKILL_SCRIPTS/runner.sh" "$SKILL_SCRIPTS/explode-shape-layer.jsx" '{"layerName": "AI Import"}'

Incremental Save — バージョン番号を自動で増分しながらプロジェクトを保存します。

bash "$SKILL_SCRIPTS/runner.sh" "$SKILL_SCRIPTS/incremental-save.jsx" '{"comment": "before revisions"}'

Purge Cache — メモリーキャッシュとディスクキャッシュを消去し、リソースを解放します。まず dryRun でサイズを確認してください。

bash "$SKILL_SCRIPTS/runner.sh" "$SKILL_SCRIPTS/purge-cache.jsx" '{"dryRun": true}'
bash "$SKILL_SCRIPTS/runner.sh" "$SKILL_SCRIPTS/purge-cache.jsx"
bash "$SKILL_SCRIPTS/runner.sh" "$SKILL_SCRIPTS/purge-cache.jsx" '{"memory": true, "disk": false}'

Trim Comp to Content — レイヤーの内容にぴったり合うよう、コンポのデュレーションをトリミングまたは延長します。

bash "$SKILL_SCRIPTS/runner.sh" "$SKILL_SCRIPTS/trim-comp-to-content.jsx"
bash "$SKILL_SCRIPTS/runner.sh" "$SKILL_SCRIPTS/trim-comp-to-content.jsx" '{"padding": 0.5}'
bash "$SKILL_SCRIPTS/runner.sh" "$SKILL_SCRIPTS/trim-comp-to-content.jsx" '{"recursive": true}'

Null from Layers — 選択した各レイヤーの位置にヌルを作成し、自動で親子付けします。

bash "$SKILL_SCRIPTS/runner.sh" "$SKILL_SCRIPTS/null-from-layers.jsx"
bash "$SKILL_SCRIPTS/runner.sh" "$SKILL_SCRIPTS/null-from-layers.jsx" '{"naming": "custom", "prefix": "Driver"}'
bash "$SKILL_SCRIPTS/runner.sh" "$SKILL_SCRIPTS/null-from-layers.jsx" '{"position": "comp-center"}'

Fit to Comp — 選択したレイヤーをコンポのサイズに合わせて拡大縮小、またはフィットさせます。

bash "$SKILL_SCRIPTS/runner.sh" "$SKILL_SCRIPTS/fit-to-comp.jsx" '{"mode": "fit"}'
bash "$SKILL_SCRIPTS/runner.sh" "$SKILL_SCRIPTS/fit-to-comp.jsx" '{"mode": "fill"}'
bash "$SKILL_SCRIPTS/runner.sh" "$SKILL_SCRIPTS/fit-to-comp.jsx" '{"mode": "stretch"}'

Label Layers — 種類、名前、または選択状態に基づいて、レイヤーのラベルカラーを一括設定します。

bash "$SKILL_SCRIPTS/runner.sh" "$SKILL_SCRIPTS/label-layers.jsx" '{"label": 3, "target": "selected"}'
bash "$SKILL_SCRIPTS/runner.sh" "$SKILL_SCRIPTS/label-layers.jsx" '{"label": 1, "target": "text"}'
bash "$SKILL_SCRIPTS/runner.sh" "$SKILL_SCRIPTS/label-layers.jsx" '{"label": 5, "target": "all", "nameContains": "BG"}'

Blend Mode Set — 選択したレイヤーのブレンドモードを設定します。

bash "$SKILL_SCRIPTS/runner.sh" "$SKILL_SCRIPTS/blend-mode-set.jsx" '{"mode": "SCREEN"}'
bash "$SKILL_SCRIPTS/runner.sh" "$SKILL_SCRIPTS/blend-mode-set.jsx" '{"mode": "MULTIPLY"}'
bash "$SKILL_SCRIPTS/runner.sh" "$SKILL_SCRIPTS/blend-mode-set.jsx" '{"mode": "ADD"}'

Split Layer — CTI で選択したレイヤーを分割します(レイヤーのタイミングが変更されるため、実行前に確認してください)。

bash "$SKILL_SCRIPTS/runner.sh" "$SKILL_SCRIPTS/split-layer.jsx"
bash "$SKILL_SCRIPTS/runner.sh" "$SKILL_SCRIPTS/split-layer.jsx" '{"time": 2.5}'
ステップ 6:実行して結果を読み取る
# Execute the action script (already written to $SKILL_SCRIPTS/ae-action.jsx in Step 4)
bash "$SKILL_SCRIPTS/runner.sh" "$SKILL_SCRIPTS/ae-action.jsx" '{"arg1": "value1"}'

結果を確認するには /tmp/ae-assistant-result.json を読み取ってください。

失敗時のデバッグ

スクリプトが失敗した場合は、次の順に確認してください。

  1. ~/.ae-assistant-log — runner.sh がすべての実行、引数、結果、エラーをここに記録します
  2. /tmp/ae-assistant-error.txt — JXA レベルのエラー(AE が応答しない、DoScriptFile の失敗)
  3. ~/.ae-assistant-extendscript.log — utils.jsx の appendLog() による ExtendScript レベルのログ
  4. AE の環境設定 — 「Allow Scripts to Write Files and Access Network」が有効になっていることを確認してください

エラーが発生した場合は、~/.ae-assistant-log を読み取って状況を把握し、スクリプトを修正して再試行してください。

必須事項

  • 変更は必ず app.beginUndoGroup() / app.endUndoGroup() で囲んでください
  • プロパティへのアクセスには、必ず表示名ではなく matchNames を使用してください(表示名はローカライズされています)
  • レイヤーとプロジェクトアイテムには、必ず 1 始まりのインデックスを使用してください
  • アクションスクリプトは必ず $SKILL_SCRIPTS/ae-action.jsx(解決済みの実際のパス。/tmp/ ではありません)に書き込んでください
  • 必ず相対パスの #include "lib/json2.jsx" と #include "lib/utils.jsx" を使用してください(絶対パスは使用しないでください)
  • グローバルスコープの汚染を避けるため、必ず IIFE で囲んでください
  • 必ず var を使用し、let や const は使用しないでください(ES3)
  • 必ず writeResult() を使って結果を /tmp/ae-assistant-result.json に書き込んでください
  • アクティブなコンポを取得するには、必ず getActiveComp() を使用してください(null/CompItem のチェックとエラーの書き込みを処理します)
  • クエリスクリプトでは、フォーカスを奪わないよう、必ず --background フラグを使用してください

禁止事項

  • ES5 以降の構文(let、const、アロー関数、テンプレートリテラル、分割代入)は絶対に使用しないでください
  • Array.map、Array.filter、Array.reduce、Array.forEach は絶対に使用しないでください(ES3 では使用できません)
  • json2.jsx をインクルードせずに JSON.parse や JSON.stringify を絶対に使用しないでください
  • アクションスクリプトを /tmp/ に絶対に書き込まないでください — ExtendScript の #include はそこからパスを解決できません
  • #include で絶対パスを絶対に使用しないでください — シンボリックリンク経由では動作しません
  • レイヤーのインデックスを絶対にハードコードしないでください — 名前、選択状態、または反復処理を使用してください
  • ユーザーの確認なしに、破壊的な操作を絶対に実行しないでください
  • コンポがアクティブであることを、確認せずに絶対に前提としないでください
  • スクリプトの書き込みに cat > file << 'SCRIPT' のヒアドキュメントを絶対に使用しないでください — 代わりに Write ツールを使ってから、短い bash コマンドで実行してください

コメント