n8nワークフロースキル は何をしますか?
事前に構築されたノードスニペットと実戦で検証されたパターンを使用して、n8nワークフローをAPI経由で構築、デプロイ、管理します。
セットアップ
最初の使用前に、以下にインスタンスの詳細を入力してください。APIキーはn8nの設定 > APIから取得できます。
- URL:
https://YOUR_INSTANCE.app.n8n.cloud - APIキー:
YOUR_API_KEY - プロジェクトID:
YOUR_PROJECT_ID(オプション、マルチプロジェクトインスタンス用)
資格情報
ここに資格情報のエイリアスをマッピングします。IDは GET /api/v1/credentials から取得してください。
| エイリアス | 資格情報タイプ | ID | 名前 |
|---|---|---|---|
| gmail | gmailOAuth2 | ||
| sheets | googleSheetsOAuth2Api | ||
| slack | slackOAuth2Api | ||
| openai | openAiApi | ||
| anthropic | anthropicApi | ||
| telegram | telegramApi | ||
| notion | notionApi |
必要に応じて行を追加してください。nameフィールドは、n8nインスタンス(設定 > 資格情報)で付けた名前と完全に一致する必要があります。./references/nodes/内のノードスニペットはプレースホルダーの資格情報を使用しています。Claudeはワークフロー構築時にこのテーブルからIDを置き換えます。
クイックスタート: 新規ワークフロー
./references/nodes/で事前構築済みノードスニペットを確認します。コピー、リネーム、位置を設定します。- JSON(nodes配列 + connectionsオブジェクト)を構築します。
/tmp/<name>.jsonに書き込みます。- 実行:
bash ./references/deploy.sh /tmp/<name>.json - 完了。スクリプトがPOST、プロジェクト転送、確認、インデックス更新を処理します。
接続フォーマット
"送信元名": { "main": [[{"node": "ターゲット", "type": "main", "index": 0}]] }
- 分岐(1つの送信元、複数のターゲット):
"main": [[{"node": "A", ...}, {"node": "B", ...}]] - 入力のマージ: 送信元Aは
"index": 0、送信元Bは"index": 1で接続 - IF分岐:
"main": [ [trueのターゲット], [falseのターゲット] ] - AIサブノード:
"ai_languageModel": [[{"node": "モデル名", "type": "ai_languageModel", "index": 0}]] - AIツールサブノード:
"ai_tool": [[{"node": "ツール名", "type": "ai_tool", "index": 0}]]
ワークフローJSON構造
{
"name": "ワークフロー名",
"nodes": [...],
"connections": {...},
"settings": { "executionOrder": "v1", "callerPolicy": "any" }
}
- POSTボディに
activeフィールドを含めないでください(読み取り専用、有効化にはPATCHを使用) executionOrder、callerPolicy、saveDataSuccessExecution、errorWorkflow(存在する場合)以外の設定キーはすべて削除- PUTの前に削除する必要があるキー:
binaryMode、availableInMCP、timeSavedMode
APIエンドポイント
POST /api/v1/workflows — 作成
GET /api/v1/workflows/{id} — 取得(PUTの前に必ず実行)
PUT /api/v1/workflows/{id} — 更新
PATCH /api/v1/workflows/{id} — 有効化/無効化: { "active": true }
PUT /api/v1/workflows/{id}/transfer — プロジェクトに移動
GET /api/v1/executions/{id}?includeData=true — 実行データを取得
GET /api/v1/credentials — すべての資格情報を一覧表示
ルール
- PUTの前にGET — キャッシュから変更せず、常に最新バージョンを取得する
- PUT後に確認 — 再度取得し、変更が反映されたことを確認する
- 接続にはノードの名前を使用し、UUIDは使用しない
- HTTPリクエストノードよりもプラットフォームネイティブノードを優先する(UIにプラットフォームのロゴが表示される)
!文字を含むコードノード: 最初にJSを/tmp/*.jsに書き込み、その後読み戻す(Pythonの文字列エスケープにより!が\!になるため)- 実行取得時は
includeData=trueを指定(指定しないとdata.resultData.runDataがnullになる) callerPolicyの許容値:any、none、workflowsFromAList、workflowsFromSameOwner
式構文(HTTPリクエストボディ)
- 動作:
={{ ({ key: value }) }}— 括弧内のオブジェクト、JSON.stringify不要 - 非動作:
={{ JSON.stringify({...}) }}— 構文エラーになる - 非動作:
={{ }}を静的なJSONボディ内に埋め込む — 評価されない - ノード間参照:
$item(0).$node["ノード名"].json.field
ノードライブラリ
事前構築済みのノードスニペットは ./references/nodes/ にあります。各ファイルは使用可能なJSONノードオブジェクトです。
必須のワークフロー:
- ノードを構築する前に、
./references/nodes/*.jsonをグロブして利用可能なものを確認する。 - ノードタイプがライブラリに存在する場合、そのJSONをコピーしてカスタマイズ(名前、位置、パラメータ)する。ゼロから作成しない。
- ノードタイプがライブラリに存在しない場合、ゼロから構築する。
- ワークフローをデプロイした後、構築した新しいノードタイプがあれば、
./references/nodes/<node-name>.jsonとしてライブラリに保存する。
詳細リファレンス(必要な場合のみ読み込む)
./references/patterns.md— リトライパターン、永続状態、式の注意点./references/rules.md— PUT/POSTルール、設定のホワイトリスト、命名規則./references/node-types.md— 一般的なノードタイプのパラメータリファレンス