n8n-node-configuration について
n8n ワークフローのノード設定を支援するガイドスキルです。リソース、操作、プロパティ依存関係に応じて必要な項目を段階的に調べ、検証しながら設定を整えます。
主な機能
- 01リソースと操作に応じた項目の特定
- 02standard、full、プロパティ検索の活用
- 03項目の表示条件と依存関係の把握
- 04最小構成からの反復検証
活用シーン
- 01Slack やデータベースの操作設定
- 02HTTP メソッドに応じたリクエスト項目の設定
- 03検証で示された条件付き必須項目の調査
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ czlonkowski/ n8n-skills --skill n8n-node-configurationインストール後、Claude Code で/n8n-node-configurationを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
DEPENDENCIES.mdNATIVE_NODES.mdNODE_FAMILY_GOTCHAS.mdOPERATION_PATTERNS.mdREADME.md詳細
翻訳後に原文が更新されています。最新の内容は原文をご確認ください。
n8n ノードの設定
プロパティの依存関係を考慮した、操作に応じたノード設定の専門的なガイダンスです。
設定の考え方
段階的な情報開示:最小限の設定から始め、必要に応じて複雑さを加えます。
設定のベストプラクティス:
detail: "standard"を指定したget_nodeは、最もよく使われる探索パターンです。- 設定編集の平均間隔は56秒です。
- 1~2Kトークンの応答で、ユースケースの95%をカバーします。
重要なポイント:ほとんどの設定で必要なのは標準の詳細度だけで、完全なスキーマは不要です!
基本概念
1. 操作に応じた設定
すべてのフィールドが常に必須とは限りません。操作によって異なります!
例:Slack ノード
// For operation='post'
{
"resource": "message",
"operation": "post",
"channel": "#general", // Required for post
"text": "Hello!" // Required for post
}
// For operation='update'
{
"resource": "message",
"operation": "update",
"messageId": "123", // Required for update (different!)
"text": "Updated!" // Required for update
// channel NOT required for update
}
ポイント:リソースと操作によって、必須フィールドが決まります!
2. プロパティの依存関係
ほかのフィールドの値に応じて、フィールドが表示されたり非表示になったりします
例:HTTP Request ノード
// When method='GET'
{
"method": "GET",
"url": "https://api.example.com"
// sendBody not shown (GET doesn't have body)
}
// When method='POST'
{
"method": "POST",
"url": "https://api.example.com",
"sendBody": true, // Now visible!
"body": { // Required when sendBody=true
"contentType": "json",
"content": {...}
}
}
仕組み:displayOptions がフィールドの表示を制御します。
3. 段階的な探索
適切な詳細度を使います:
-
get_node({detail: "standard"}) - デフォルト
- すばやく概要を確認できます(約1~2Kトークン)。
- 必須フィールドと一般的なオプションが含まれます。
- 最初に使用します。必要な内容の95%をカバーします。
-
get_node({mode: "search_properties", propertyQuery: "..."})(特定のフィールドを探す場合)
- 名前からプロパティを検索します。
- 認証、本文、ヘッダーなどを探す場合に使用します。
-
get_node({detail: "full"})(完全なスキーマ)
- すべてのプロパティが含まれます(約3~8Kトークン)。
- 標準の詳細度では不十分な場合にのみ使用します。
設定ワークフロー
標準的な手順
- ノードの種類と操作を特定します。
get_nodeを使います(標準の詳細度がデフォルトです)。- 必須フィールドを設定します。
- 設定を検証します。
- フィールドが不明な場合は、
get_node({mode: "search_properties"})を使います。 - 必要に応じてオプションのフィールドを追加します。
- もう一度検証します。
- デプロイします。
例:HTTP Request の設定
検証を繰り返しながら設定する手順の例です。まずは最小限の設定(method、url、authentication)から始め、validate_node の各エラーに応じて次の必須フィールドを追加します(POST の場合は sendBody、続いて sendBody=true の場合は body)。詳細な手順は OPERATION_PATTERNS.md を参照してください。
get_node の詳細度
標準の詳細度(デフォルト - こちらを使用してください!)
✅ 設定の開始時
get_node({
nodeType: "nodes-base.slack"
});
// detail="standard" is the default
返される内容(約1~2Kトークン):
- 必須フィールド
- 一般的なオプション
- 操作の一覧
- メタデータ
用途:設定ニーズの95%をカバーします。
完全な詳細度(必要な場合のみ使用)
✅ 標準の詳細度では不十分な場合
get_node({
nodeType: "nodes-base.slack",
detail: "full"
});
返される内容(約3~8Kトークン):
- 完全なスキーマ
- すべてのプロパティ
- すべてのネストされたオプション
注意:応答が大きいため、標準の詳細度では不十分な場合にのみ使用してください。
プロパティの検索モード
✅ 特定のフィールドを探す場合
get_node({
nodeType: "nodes-base.httpRequest",
mode: "search_properties",
propertyQuery: "auth"
});
用途:認証、ヘッダー、本文フィールドなどを検索します。
判断フロー
- 新しいノード設定を始める場合 →
get_node(標準)。 - 標準の詳細度で必要な情報が得られた場合 → その情報を使って設定します。得られない場合は次に進みます。
- 特定のフィールドを探している場合 →
search_propertiesモードを使います。そうでない場合は次に進みます。 - さらに情報が必要な場合 →
get_node({detail: "full"})を使います。
動的プロパティ:standard の詳細度でプロパティに dynamicOptions: {methodName, methodType, dependsOn} と示されている場合、その実際の値はバンドルされたドキュメントではなく、ライブの loadOptions/listSearch メソッドから取得されます。IDを推測しないでください。n8n_explore_node_resources(N8N_MCP_ACCESS_TOKEN が必要。n8n 2.34以降)で値を解決し、返された value を設定に指定してください。name は表示用のテキストにすぎません。
6つのパラメーターはすべて必須で、互いから推測されるものはありません。
n8n_explore_node_resources({
nodeType: "n8n-nodes-base.googleSheets", // LONG form
version: 4.5, // the node typeVersion the method belongs to
methodName: "getSheets", // copied verbatim from dynamicOptions
methodType: "listSearch", // "listSearch" for resource locators, "loadOptions" for plain dropdowns
credentialType: "googleSheetsOAuth2Api",
credentialId: "c2", // from n8n_manage_credentials({action: "list"})
currentNodeParameters: { // whatever dependsOn names, in its real shape
documentId: {__rl: true, mode: "id", value: "1AbC…"}
}
})
dependsOn は、メソッドの実行前に選択しておく必要があるパラメーターを指定します。それらを currentNodeParameters に渡してください。その際、リソースロケーターの値は {__rl: true, mode, value} の形式を維持してください。そうしないと、メソッドから有用な結果が返されません。methodName は大文字と小文字を区別し、nodeType と version の組み合わせごとに固有です。一致しない場合は、空のリストではなく OFFICIAL_MCP_ERROR が返されます。
プロパティ依存関係の詳細
フィールドには displayOptions の表示ルールがあります。複数の条件が AND で結合され、複数の値が OR で結合される show/hide ブロックです(例:sendBody=true かつ method IN (POST, PUT, PATCH) の場合に body が表示されます)。繰り返し登場するパターンは、ブール値の切り替え(sendBody → body)、操作の切り替え(post と update で異なるフィールドを表示)、型の選択(string と boolean の条件)の3つです。フィールドを制御しているものを確認するには、get_node({mode: "search_properties", propertyQuery: "..."}) または get_node({detail: "full"}) を使用してください。特に、検証で表示されていないフィールドが指摘された場合に役立ちます。
仕組みの詳細、4種類すべての依存関係パターン、複雑なフロー、ネストされた依存関係、トラブルシューティングについては、DEPENDENCIES.md(簡易リファレンスは クイックリファレンス:displayOptions と一般的な依存関係パターン)をご覧ください。
一般的なノードパターン
パターン 1:リソース/操作ノード
例:Slack、Google Sheets、Airtable
構造:
{
"resource": "<entity>", // What type of thing
"operation": "<action>", // What to do with it
// ... operation-specific fields
}
設定方法:
- リソースを選択します
- 操作を選択します
- get_node を使用して、操作ごとの要件を確認します
- 必須フィールドを設定します
パターン 2:HTTP ベースのノード
例:HTTP Request、Webhook
構造:
{
"method": "<HTTP_METHOD>",
"url": "<endpoint>",
"authentication": "<type>",
// ... method-specific fields
}
依存関係:
- POST/PUT/PATCH → sendBody を使用できます
- sendBody=true → body が必須です
- authentication != "none" → 認証情報が必須です
重要:credentials ブロック、ノード ID、typeVersion
- プレースホルダーの認証情報 ID(例:
"id": "REPLACE_ME")は絶対に設定しないでください。n8n の UI では、認識されない ID の認証情報セレクターが常に無効な状態で表示されます。実際の ID が不明な場合はcredentialsブロックを省略してください。そうすると、通常のクリック可能なドロップダウンが表示されます。 - ノードの
idは、読みやすいスラッグではなく UUID v4 である必要があります。フロントエンドはフォームと認証情報コンポーネントをこの ID に紐付けます。 - 古い
typeVersionの値をハードコードしないでください。現在のバージョンをget_nodeで確認してください(httpRequest は 4.4+ です)。
パターン 3:データベースノード
例:Postgres、MySQL、MongoDB
構造:
{
"operation": "<query|insert|update|delete>",
// ... operation-specific fields
}
依存関係:
- operation="executeQuery" → query が必須です
- operation="insert" → table + values が必須です
- operation="update" → table + values + where が必須です
重要:書き込み操作では 0 件のアイテムが返される場合があります
- INSERT、UPDATE、DELETE では、ノードと操作によっては n8n の出力アイテムが 0 件になることがあります(クエリを直接実行した場合、結果行は常に 0 件になります。一部のデータベースノードでは、影響を受けた行が返されます)
- 後続のチェーンを維持するには、書き込み操作のノードで
alwaysOutputData: trueを設定します - 後続ノードでデータが必要な場合は、
$inputの代わりに$('UpstreamNode').all()を使用してください
パターン 4:条件分岐ロジックノード
例:IF、Switch、Merge
構造:
{
"conditions": {
"<type>": [
{
"operation": "<operator>",
"value1": "...",
"value2": "..." // Only for binary operators
}
]
}
}
依存関係:
- 二項演算子(equals、contains など)→ value1 + value2
- 単項演算子(isEmpty、isNotEmpty)→ value1 のみ + singleValue: true
操作ごとの設定
必須フィールドは、リソースと操作の組み合わせによって変わります。Slack の post には channel+text が必要ですが、update には messageId+text が必要です(channel は任意)。channel/create には name が必要です。HTTP の GET では sendQuery+queryParameters を使用し、POST では sendBody+body が必要です。IF の二項演算子(equals)には value1+value2 が必要です。単項演算子(isEmpty)では value1 のみが必要で、singleValue: true が自動的に追加されます。それぞれの具体的な最小設定例については、OPERATION_PATTERNS.md をご覧ください。
条件付き要件の扱い
一部のフィールドは、特定の条件下でのみ必須になります。HTTP の body は、sendBody=true かつ method IN (POST, PUT, PATCH, DELETE) の場合に必須です。また、演算子が単項演算子(isEmpty、isNotEmpty、true、false)の場合は、singleValue を true にする必要があります。これは自動サニタイズによって自動設定されます。条件付き要件を確認するには、検証エラーを読む、プロパティを検索する(get_node({mode: "search_properties"}))、または最小限の設定から反復して調整します。実際の確認例については、DEPENDENCIES.md を参照してください。
ノード固有の設定に関する注意事項
SplitInBatches v3
{
"batchSize": 100, // Number of items per batch
"options": {}
}
出力の接続:
main[0](完了)→ 後続の処理に接続します(先に Limit 1 を追加します)main[1](各バッチ)→ ループ本体に接続し、その後 SplitInBatches の入力にループバックします
詳細なループおよびネストされたループのパターンについては、n8n Workflow Patterns スキルを参照してください。
Google Sheets ノード
アイテムごとの実行:入力アイテムごとに個別の API 呼び出しが行われます。アイテムが 100 件あり、Google Sheets の「Append Row」ノードを使う場合、API 呼び出しは 100 回行われます。一括で書き込むには、まず Code ノードでアイテムを集約し、その後 Sheets API を使う単一の HTTP Request を使用します。
数式列:数式列があるシートでは、append を使用しないでください。数式が上書きされます。代わりに、googleApi 認証情報を使い、Google Sheets API の values.update(PUT)メソッドで HTTP Request を使用します。
設定におけるアンチパターン
❌ 避けること:最初から設定しすぎる
悪い例:
// Adding every possible field
{
"method": "GET",
"url": "...",
"sendQuery": false,
"sendHeaders": false,
"sendBody": false,
"timeout": 10000,
"ignoreResponseCode": false,
// ... 20 more optional fields
}
良い例:
// Start minimal
{
"method": "GET",
"url": "...",
"authentication": "none"
}
// Add fields only when needed
❌ 避けること:検証を省略する
悪い例:
// Configure and deploy without validating
const config = {...};
n8n_update_partial_workflow({...}); // YOLO
良い例:
// Validate before deploying
const config = {...};
const result = validate_node({...});
if (result.valid) {
n8n_update_partial_workflow({...});
}
❌ 避けること:操作のコンテキストを無視する
悪い例:
// Same config for all Slack operations
{
"resource": "message",
"operation": "post",
"channel": "#general",
"text": "..."
}
// Then switching operation without updating config
{
"resource": "message",
"operation": "update", // Changed
"channel": "#general", // Wrong field for update!
"text": "..."
}
良い例:
// Check requirements when changing operation
get_node({
nodeType: "nodes-base.slack"
});
// See what update operation needs (messageId, not channel)
patchNodeField によるフィールドのピンポイント編集
ノードフィールド全体を置き換えるのではなく、フィールド内の特定の文字列を編集する場合は、n8n_update_partial_workflow の patchNodeField を使用します。特に、次のような場合に便利です。
- コードブロック全体を再送信せずに、Code ノード内のコードを編集する
- 大きな HTML メールテンプレート内の URL やテキストを更新する
- JSON の本文や長いテキストフィールドの誤字を修正する
// Instead of replacing the entire jsCode field:
n8n_update_partial_workflow({
id: "wf-123",
operations: [{
type: "patchNodeField",
nodeName: "Code",
fieldPath: "parameters.jsCode",
patches: [{find: "const limit = 10;", replace: "const limit = 50;"}]
}]
})
patchNodeField は厳密に動作します。検索文字列が見つからない場合、または複数箇所に一致する場合(replaceAll: true の場合を除く)、エラーになります。これにより、設定更新時の予期しない失敗を防ぎます。完全な構文と使用例については、n8n MCP Tools Expert スキルを参照してください。
ベストプラクティス
推奨事項
-
まず get_node(標準詳細)から始める
- 応答は約 1~2K トークンです
- 設定要件の 95% をカバーします
- デフォルトの詳細レベルです
-
反復的に検証する
- 設定 → 検証 → 修正 → 繰り返し
- 平均 2~3 回の反復は通常の範囲です
- 検証エラーを注意深く読みます
-
行き詰まったら search_properties モードを使う
- フィールドが見つからないように思える場合は、検索します
- フィールドの表示を制御するものを把握します
get_node({mode: "search_properties", propertyQuery: "..."})
-
操作のコンテキストを考慮する
- 操作によって要件は異なります
- 操作を変更するときは、必ず get_node を確認します
- 設定をそのまま別の操作に流用できると思い込まないでください
-
自動サニタイズを活用する
- 演算子の構造は自動的に修正されます
singleValueを手動で追加・削除しないでください- IF/Switch のメタデータは保存時に追加されます
❌ 避けること
-
いきなり detail="full" にする
- まず標準の詳細レベルを試します
- 必要な場合にのみ詳細レベルを上げます
- 完全なスキーマは 3~8K トークンです
-
確認せずに設定する
- デプロイ前に必ず検証します
- フィールドが必須である理由を把握します
- 条件付きフィールドには search_properties を使用します
-
内容を理解せずに設定をコピーする
- 操作によって必要なフィールドは異なります
- コピー後に検証します
- 新しいコンテキストに合わせて調整します
-
自動サニタイズの問題を手動で修正する
- 演算子の構造は自動サニタイズに任せます
- ビジネスロジックに集中します
- 保存して、システムに構造を修正させます
ノードファミリー別のサイレント失敗の落とし穴
設定ミスの中には、validate_node と validate_workflow を問題なく通過し、エラーなしで実行されるものの、気づかないうちに誤った動作をするものがあります。get_node ではフィールドの存在は確認できますが、省略した場合に何が起きるかまではわかりません。特に多いものは次のとおりです。
- Switch —
options.fallbackOutputがない場合 ⇒ 条件に一致しないアイテムは気づかないうちに破棄されます。 - Merge —
numberOfInputsのデフォルト値は 2 です(追加のソースは破棄されます)。useDataOfInputは 1 始まりですが、connections.<src>.main[idx]のスロットは 0 始まりです(useDataOfInput: "N"→main[N-1])。 - Database —
parameters.queryへの{{ }}補間は SQL インジェクションにつながります。$1/$2プレースホルダーとoptions.queryReplacementを使用してください。 - Slack — Block Kit は
={{ { "blocks": ... } }}でラップする必要があります。そうしないと、プレーンテキストとして投稿されます。 - Webhook / Respond — エラー分岐でも、
responseCodeのデフォルト値は 200 です。 - Schedule Trigger — タイムゾーンはルールごとではなく、ワークフローレベル(Workflow Settings)で設定します。
症状・原因・修正方法の詳細(JSON と n8n_update_partial_workflow の用語を使用)は、NODE_FAMILY_GOTCHAS.md をご覧ください。
詳細なリファレンス
特定のトピックについて詳しくは、以下のガイドをご覧ください。
- DEPENDENCIES.md - プロパティの依存関係と displayOptions の詳細
- OPERATION_PATTERNS.md - ノードタイプ別の一般的な設定パターン
- NODE_FAMILY_GOTCHAS.md - ファミリー別のサイレントな実行時の落とし穴(Switch、Merge、Database、Slack、Webhook、Schedule)
まとめ
設定の進め方:
get_nodeから始めます(標準の詳細表示がデフォルトです)- 操作に必要なフィールドを設定します
- 設定を検証します
- 行き詰まったらプロパティを検索します
- 有効になるまで繰り返します(平均 2~3 サイクル)
- 安心してデプロイします
主な原則:
- 操作を考慮する:操作ごとに必要な項目は異なります
- 段階的に情報を開示する:最小限から始め、必要に応じて追加します
- 依存関係を考慮する:フィールドの表示ルールを理解します
- 検証を活用する:検証結果を設定の指針にします
関連スキル:
- n8n MCP Tools Expert - 検出ツールの正しい使い方
- n8n Validation Expert - 検証エラーの解釈
- n8n Expression Syntax - 式フィールドの設定
- n8n Workflow Patterns - 適切な設定でパターンを適用する