n8n-node-configuration
czlonkowski/n8n-skills
具備運作意識的節點配置指南。適用於配置節點、理解屬性依賴關係、確定必填欄位、在不同 get_node 詳細程度之間進行選擇,或依據節點類型學習常見的配置模式。
...展開全部關於n8n-node-configuration
n8n-node-configuration 技能提供專業指引,協助使用者以「操作感知」的方式配置節點,針對特定操作所涉及的屬性依賴關係與必填欄位等複雜性問題提供解決方案。此技能旨在透過解析常見模式與最佳實務,簡化配置流程,確保使用者能以最低的阻礙有效設定節點。 它解決了根據所選操作來識別哪些欄位是必要的挑戰,最終提升了節點配置任務的整體效率。
此技能的關鍵特色包括採用漸進式揭露方法,讓使用者能從最基本的設定開始,並根據需求逐步增加複雜度。透過運用「get_node」探索模式,使用者可輕鬆取得關於必填欄位及常見設定選項的關鍵資訊。 此技能亦強調在每個步驟驗證配置的重要性,以確保部署前的準確性,從而降低出錯機率並提升使用者體驗。這種結構化的指引對於參與 n8n 工作流程,且需要精確配置以達成預期成果的開發人員、資料工程師及技術使用者而言,尤為有益。
n8n-node-configuration 技能的應用場景包括:設定與各種 API 的整合、自動化需要特定資料處理的工作流程,以及確保配置符合不同節點類型的最佳實踐。目標使用者涵蓋希望優化自動化流程的開發人員、管理複雜整合的技術團隊,以及任何希望加深對 n8n 節點配置的理解以提升工作流程效率的人士。
常見問題
如何確定特定操作所需的必填欄位?
您可以參考此技能提供的「操作感知型」配置指南。該指南會根據所使用的資源和操作,列出哪些欄位是必要的。
此技能是否與所有 n8n 節點相容?
是的,所提供的指引可套用至 n8n 內的各種節點類型,但各節點之間的欄位依賴關係可能有所不同。
漸進式揭露方法有哪些限制?
漸進式揭露方法主要針對常見的使用情境而設計。較複雜的配置可能仍需進一步探索,或進行完整的架構擷取。
我能否將此技能用於需要驗證的節點?
當然可以!此技能包含針對需要驗證之節點配置驗證欄位的指引。
若在設定過程中遇到驗證錯誤,該如何處理?
請依照技能提供的驗證提示操作,並參閱 get_node 的詳細說明,以確保所有必填欄位均已包含。
n8n Node Configuration
Expert guidance for operation-aware node configuration with property dependencies.
Configuration Philosophy
Progressive disclosure: Start minimal, add complexity as needed
Configuration best practices:
get_nodewithdetail: "standard"is the most used discovery pattern- 56 seconds average between configuration edits
- Covers 95% of use cases with 1-2K tokens response
Key insight: Most configurations need only standard detail, not full schema!
Core Concepts
1. Operation-Aware Configuration
Not all fields are always required - it depends on operation!
Example: Slack node
// 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}
Key: Resource + operation determine which fields are required!
2. Property Dependencies
Fields appear/disappear based on other field values
Example: HTTP Request node
// 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": {...} }}
Mechanism: displayOptions control field visibility
3. Progressive Discovery
Use the right detail level:
get_node({detail: "standard"}) - DEFAULT
- Quick overview (~1-2K tokens)
- Required fields + common options
- Use first - covers 95% of needs
get_node({mode: "search_properties", propertyQuery: "..."}) (for finding specific fields)
- Find properties by name
- Use when looking for auth, body, headers, etc.
get_node({detail: "full"}) (complete schema)
- All properties (~3-8K tokens)
- Use only when standard detail is insufficient
Configuration Workflow
Standard Process
- Identify node type and operation.
- Use
get_node(standard detail is default). - Configure required fields.
- Validate configuration.
- If a field is unclear →
get_node({mode: "search_properties"}). - Add optional fields as needed.
- Validate again.
- Deploy.
Example: Configuring HTTP Request
The validate-driven loop in practice: start minimal (method, url, authentication), then let each validate_node error surface the next required field (sendBody for POST → body when sendBody=true) until valid. Full step-by-step walkthrough in OPERATION_PATTERNS.md.
get_node Detail Levels
Standard Detail (DEFAULT - Use This!)
✅ Starting configuration
get_node({ nodeType: "nodes-base.slack"});// detail="standard" is the default
Returns (~1-2K tokens):
- Required fields
- Common options
- Operation list
- Metadata
Use: 95% of configuration needs
Full Detail (Use Sparingly)
✅ When standard isn't enough
get_node({ nodeType: "nodes-base.slack", detail: "full"});
Returns (~3-8K tokens):
- Complete schema
- All properties
- All nested options
Warning: Large response, use only when standard insufficient
Search Properties Mode
✅ Looking for specific field
get_node({ nodeType: "nodes-base.httpRequest", mode: "search_properties", propertyQuery: "auth"});
Use: Find authentication, headers, body fields, etc.
Decision Tree
- Starting a new node config →
get_node(standard). - Standard has what you need → configure with it. Otherwise continue.
- Looking for a specific field →
search_propertiesmode. Otherwise continue. - Still need more →
get_node({detail: "full"}).
Property Dependencies Deep Dive
Fields have displayOptions visibility rules: show/hide blocks where multiple conditions are AND'd and multiple values are OR'd (e.g. body shows when sendBody=true AND method IN (POST, PUT, PATCH)). The three recurring patterns are the boolean toggle (sendBody → body), the operation switch (post vs update show different fields), and type selection (string vs boolean conditions). To find what controls a field, use get_node({mode: "search_properties", propertyQuery: "..."}) or get_node({detail: "full"}) — especially when validation flags a field you don't see.
Mechanism details, all four dependency patterns, complex flows, nested dependencies, and troubleshooting are in DEPENDENCIES.md (quick-reference recap under Quick Reference: displayOptions and Common Dependency Patterns).
Common Node Patterns
Pattern 1: Resource/Operation Nodes
Examples: Slack, Google Sheets, Airtable
Structure:
{ "resource": "<entity>", // What type of thing "operation": "<action>", // What to do with it // ... operation-specific fields}
How to configure:
- Choose resource
- Choose operation
- Use get_node to see operation-specific requirements
- Configure required fields
Pattern 2: HTTP-Based Nodes
Examples: HTTP Request, Webhook
Structure:
{ "method": "<HTTP_METHOD>", "url": "<endpoint>", "authentication": "<type>", // ... method-specific fields}
Dependencies:
- POST/PUT/PATCH → sendBody available
- sendBody=true → body required
- authentication != "none" → credentials required
Critical: credentials block, node id, typeVersion
- Never set a placeholder credential ID (e.g.
"id": "REPLACE_ME") — n8n's UI renders a permanently disabled credential selector for unknown IDs. Omit thecredentialsblock when the real ID is unknown; the user then gets a normal clickable dropdown. - Node
idmust be a UUID v4, not a readable slug — the frontend binds forms and the credential component to it. - Don't hardcode old
typeVersionvalues — verify the current version withget_node(httpRequest is 4.4+).
Pattern 3: Database Nodes
Examples: Postgres, MySQL, MongoDB
Structure:
{ "operation": "<query|insert|update|delete>", // ... operation-specific fields}
Dependencies:
- operation="executeQuery" → query required
- operation="insert" → table + values required
- operation="update" → table + values + where required
Critical: Write operations may return 0 items
- INSERT, UPDATE, DELETE can produce 0 n8n output items, depending on the node and operation (raw query execution reliably returns 0 result rows; some database nodes return the affected rows)
- Set
alwaysOutputData: trueon write-operation nodes to keep downstream chains alive - Downstream nodes should use
$('UpstreamNode').all()instead of$inputif they need data
Pattern 4: Conditional Logic Nodes
Examples: IF, Switch, Merge
Structure:
{ "conditions": { "<type>": [ { "operation": "<operator>", "value1": "...", "value2": "..." // Only for binary operators } ] }}
Dependencies:
- Binary operators (equals, contains, etc.) → value1 + value2
- Unary operators (isEmpty, isNotEmpty) → value1 only + singleValue: true
Operation-Specific Configuration
Required fields shift with resource + operation: Slack post needs channel+text, but update needs messageId+text (channel optional) and channel/create needs name. HTTP GET uses sendQuery+queryParameters; POST needs sendBody+body. IF binary operators (equals) need value1+value2; unary (isEmpty) need only value1 plus auto-added singleValue: true. Concrete minimal configs for each in OPERATION_PATTERNS.md.
Handling Conditional Requirements
Some fields are required only under certain conditions: HTTP body is required when sendBody=true AND method IN (POST, PUT, PATCH, DELETE); IF singleValue should be true when the operator is unary (isEmpty, isNotEmpty, true, false) — and auto-sanitization sets it for you. Discover conditional requirements by reading the validation error, searching the property (get_node({mode: "search_properties"})), or iterating from a minimal config. Worked discovery examples in DEPENDENCIES.md.
Node-Specific Configuration Notes
SplitInBatches v3
{ "batchSize": 100, // Number of items per batch "options": {}}
Output wiring:
main[0](done) → Connect to downstream processing (add Limit 1 first)main[1](each batch) → Connect to loop body, then loop back to SplitInBatches input
See the n8n Workflow Patterns skill for detailed loop and nested loop patterns.
Google Sheets Node
Per-item execution: Each input item triggers a separate API call. If you have 100 items and use a Google Sheets "Append Row" node, it makes 100 API calls. To write in bulk, aggregate items in a Code node first, then use a single HTTP Request with the Sheets API.
Formula columns: Never use append on sheets with formula columns — it overwrites formulas. Instead, use HTTP Request with Google Sheets API values.update (PUT) method and a googleApi credential.
Configuration Anti-Patterns
❌ Don't: Over-configure Upfront
Bad:
// Adding every possible field{ "method": "GET", "url": "...", "sendQuery": false, "sendHeaders": false, "sendBody": false, "timeout": 10000, "ignoreResponseCode": false, // ... 20 more optional fields}
Good:
// Start minimal{ "method": "GET", "url": "...", "authentication": "none"}// Add fields only when needed
❌ Don't: Skip Validation
Bad:
// Configure and deploy without validatingconst config = {...};n8n_update_partial_workflow({...}); // YOLO
Good:
// Validate before deployingconst config = {...};const result = validate_node({...});if (result.valid) { n8n_update_partial_workflow({...});}
❌ Don't: Ignore Operation Context
Bad:
// 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": "..."}
Good:
// Check requirements when changing operationget_node({ nodeType: "nodes-base.slack"});// See what update operation needs (messageId, not channel)
Surgical Field Edits with patchNodeField
When you need to edit a specific string inside a node field — rather than replacing the whole field — use patchNodeField in n8n_update_partial_workflow. This is especially useful for:
- Editing code inside Code nodes without re-transmitting the full code block
- Updating URLs or text in large HTML email templates
- Fixing typos in JSON bodies or long text fields
// 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 is strict — it errors if the find string isn't found or matches multiple times (unless replaceAll: true). This prevents accidental silent failures during configuration updates. See the n8n MCP Tools Expert skill for full syntax and examples.
Best Practices
Do
Start with get_node (standard detail)
- ~1-2K tokens response
- Covers 95% of configuration needs
- Default detail level
Validate iteratively
- Configure → Validate → Fix → Repeat
- Average 2-3 iterations is normal
- Read validation errors carefully
Use search_properties mode when stuck
- If field seems missing, search for it
- Understand what controls field visibility
get_node({mode: "search_properties", propertyQuery: "..."})
Respect operation context
- Different operations = different requirements
- Always check get_node when changing operation
- Don't assume configs are transferable
Trust auto-sanitization
- Operator structure fixed automatically
- Don't manually add/remove singleValue
- IF/Switch metadata added on save
❌ Don't
Jump to detail="full" immediately
- Try standard detail first
- Only escalate if needed
- Full schema is 3-8K tokens
Configure blindly
- Always validate before deploying
- Understand why fields are required
- Use search_properties for conditional fields
Copy configs without understanding
- Different operations need different fields
- Validate after copying
- Adjust for new context
Manually fix auto-sanitization issues
- Let auto-sanitization handle operator structure
- Focus on business logic
- Save and let system fix structure
Silent-Failure Gotchas by Node Family
Some misconfigurations pass validate_node and validate_workflow clean, run without error, and quietly do the wrong thing — get_node shows the fields exist but not what happens when you omit them. The high-frequency ones:
- Switch — no
options.fallbackOutput⇒ unmatched items silently dropped. - Merge —
numberOfInputsdefaults to 2 (extra sources drop);useDataOfInputis 1-indexed vs the 0-indexedconnections.<src>.main[idx]slot (useDataOfInput: "N"→main[N-1]). - Database —
{{ }}interpolation intoparameters.queryis SQL injection; use$1/$2placeholders +options.queryReplacement. - Slack — Block Kit must be wrapped
={{ { "blocks": ... } }}or it posts as plain text. - Webhook / Respond —
responseCodedefaults to 200 even on error branches. - Schedule Trigger — timezone is workflow-level (Workflow Settings), not per-rule.
Full symptom/cause/fix detail (in JSON + n8n_update_partial_workflow terms) in NODE_FAMILY_GOTCHAS.md.
Detailed References
For comprehensive guides on specific topics:
- DEPENDENCIES.md - Deep dive into property dependencies and displayOptions
- OPERATION_PATTERNS.md - Common configuration patterns by node type
- NODE_FAMILY_GOTCHAS.md - Silent runtime traps by family (Switch, Merge, Database, Slack, Webhook, Schedule)
Summary
Configuration Strategy:
- Start with
get_node(standard detail is default) - Configure required fields for operation
- Validate configuration
- Search properties if stuck
- Iterate until valid (avg 2-3 cycles)
- Deploy with confidence
Key Principles:
- Operation-aware: Different operations = different requirements
- Progressive disclosure: Start minimal, add as needed
- Dependency-aware: Understand field visibility rules
- Validation-driven: Let validation guide configuration
Related Skills:
- n8n MCP Tools Expert - How to use discovery tools correctly
- n8n Validation Expert - Interpret validation errors
- n8n Expression Syntax - Configure expression fields
- n8n Workflow Patterns - Apply patterns with proper configuration





首頁
