[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-652db945-24c1-4d4d-a3e9-a428a850aca2":3,"$f8j_mQul8MHNc3QNc-INa-_czMAFaDSigfCDQJZ9CAkE":42},{"id":4,"title":5,"description":6,"categoryId":7,"moduleId":8,"tags":9,"prompt":10,"icon":11,"source":12,"sourceUrl":13,"authorId":14,"authorName":15,"isPublic":16,"stars":17,"runs":18,"createdAt":19,"updatedAt":19,"module":20,"category":27,"packages":33},"652db945-24c1-4d4d-a3e9-a428a850aca2","n8n-node-configuration","操作感知节点配置指南。在配置节点、理解属性依赖、确定所需字段、选择获取节点详细级别或通过节点类型学习常见配置模式时使用。","cat_coding_backend","mod_coding","sickn33,coding","---\nname: n8n-node-configuration\ndescription: Operation-aware node configuration guidance. Use when configuring nodes, understanding property dependencies, determining required fields, choosing between get_node detail levels, or learning common configuration patterns by node type.\nrisk: unknown\nsource: community\n---\n\n# n8n Node Configuration\n\nExpert guidance for operation-aware node configuration with property dependencies.\n\n## When to Use\n- You need to configure an n8n node correctly for a specific resource and operation.\n- The task involves required fields, property dependencies, or choosing the right `get_node` detail level.\n- You are troubleshooting node setup rather than overall workflow architecture.\n\n---\n\n## Configuration Philosophy\n\n**Progressive disclosure**: Start minimal, add complexity as needed\n\nConfiguration best practices:\n- `get_node` with `detail: \"standard\"` is the most used discovery pattern\n- 56 seconds average between configuration edits\n- Covers 95% of use cases with 1-2K tokens response\n\n**Key insight**: Most configurations need only standard detail, not full schema!\n\n---\n\n## Core Concepts\n\n### 1. Operation-Aware Configuration\n\n**Not all fields are always required** - it depends on operation!\n\n**Example**: Slack node\n```javascript\n\u002F\u002F For operation='post'\n{\n  \"resource\": \"message\",\n  \"operation\": \"post\",\n  \"channel\": \"#general\",  \u002F\u002F Required for post\n  \"text\": \"Hello!\"        \u002F\u002F Required for post\n}\n\n\u002F\u002F For operation='update'\n{\n  \"resource\": \"message\",\n  \"operation\": \"update\",\n  \"messageId\": \"123\",     \u002F\u002F Required for update (different!)\n  \"text\": \"Updated!\"      \u002F\u002F Required for update\n  \u002F\u002F channel NOT required for update\n}\n```\n\n**Key**: Resource + operation determine which fields are required!\n\n### 2. Property Dependencies\n\n**Fields appear\u002Fdisappear based on other field values**\n\n**Example**: HTTP Request node\n```javascript\n\u002F\u002F When method='GET'\n{\n  \"method\": \"GET\",\n  \"url\": \"https:\u002F\u002Fapi.example.com\"\n  \u002F\u002F sendBody not shown (GET doesn't have body)\n}\n\n\u002F\u002F When method='POST'\n{\n  \"method\": \"POST\",\n  \"url\": \"https:\u002F\u002Fapi.example.com\",\n  \"sendBody\": true,       \u002F\u002F Now visible!\n  \"body\": {               \u002F\u002F Required when sendBody=true\n    \"contentType\": \"json\",\n    \"content\": {...}\n  }\n}\n```\n\n**Mechanism**: displayOptions control field visibility\n\n### 3. Progressive Discovery\n\n**Use the right detail level**:\n\n1. **get_node({detail: \"standard\"})** - DEFAULT\n   - Quick overview (~1-2K tokens)\n   - Required fields + common options\n   - **Use first** - covers 95% of needs\n\n2. **get_node({mode: \"search_properties\", propertyQuery: \"...\"})** (for finding specific fields)\n   - Find properties by name\n   - Use when looking for auth, body, headers, etc.\n\n3. **get_node({detail: \"full\"})** (complete schema)\n   - All properties (~3-8K tokens)\n   - Use only when standard detail is insufficient\n\n---\n\n## Configuration Workflow\n\n### Standard Process\n\n```\n1. Identify node type and operation\n   ↓\n2. Use get_node (standard detail is default)\n   ↓\n3. Configure required fields\n   ↓\n4. Validate configuration\n   ↓\n5. If field unclear → get_node({mode: \"search_properties\"})\n   ↓\n6. Add optional fields as needed\n   ↓\n7. Validate again\n   ↓\n8. Deploy\n```\n\n### Example: Configuring HTTP Request\n\n**Step 1**: Identify what you need\n```javascript\n\u002F\u002F Goal: POST JSON to API\n```\n\n**Step 2**: Get node info\n```javascript\nconst info = get_node({\n  nodeType: \"nodes-base.httpRequest\"\n});\n\n\u002F\u002F Returns: method, url, sendBody, body, authentication required\u002Foptional\n```\n\n**Step 3**: Minimal config\n```javascript\n{\n  \"method\": \"POST\",\n  \"url\": \"https:\u002F\u002Fapi.example.com\u002Fcreate\",\n  \"authentication\": \"none\"\n}\n```\n\n**Step 4**: Validate\n```javascript\nvalidate_node({\n  nodeType: \"nodes-base.httpRequest\",\n  config,\n  profile: \"runtime\"\n});\n\u002F\u002F → Error: \"sendBody required for POST\"\n```\n\n**Step 5**: Add required field\n```javascript\n{\n  \"method\": \"POST\",\n  \"url\": \"https:\u002F\u002Fapi.example.com\u002Fcreate\",\n  \"authentication\": \"none\",\n  \"sendBody\": true\n}\n```\n\n**Step 6**: Validate again\n```javascript\nvalidate_node({...});\n\u002F\u002F → Error: \"body required when sendBody=true\"\n```\n\n**Step 7**: Complete configuration\n```javascript\n{\n  \"method\": \"POST\",\n  \"url\": \"https:\u002F\u002Fapi.example.com\u002Fcreate\",\n  \"authentication\": \"none\",\n  \"sendBody\": true,\n  \"body\": {\n    \"contentType\": \"json\",\n    \"content\": {\n      \"name\": \"={{$json.name}}\",\n      \"email\": \"={{$json.email}}\"\n    }\n  }\n}\n```\n\n**Step 8**: Final validation\n```javascript\nvalidate_node({...});\n\u002F\u002F → Valid! ✅\n```\n\n---\n\n## get_node Detail Levels\n\n### Standard Detail (DEFAULT - Use This!)\n\n**✅ Starting configuration**\n```javascript\nget_node({\n  nodeType: \"nodes-base.slack\"\n});\n\u002F\u002F detail=\"standard\" is the default\n```\n\n**Returns** (~1-2K tokens):\n- Required fields\n- Common options\n- Operation list\n- Metadata\n\n**Use**: 95% of configuration needs\n\n### Full Detail (Use Sparingly)\n\n**✅ When standard isn't enough**\n```javascript\nget_node({\n  nodeType: \"nodes-base.slack\",\n  detail: \"full\"\n});\n```\n\n**Returns** (~3-8K tokens):\n- Complete schema\n- All properties\n- All nested options\n\n**Warning**: Large response, use only when standard insufficient\n\n### Search Properties Mode\n\n**✅ Looking for specific field**\n```javascript\nget_node({\n  nodeType: \"nodes-base.httpRequest\",\n  mode: \"search_properties\",\n  propertyQuery: \"auth\"\n});\n```\n\n**Use**: Find authentication, headers, body fields, etc.\n\n### Decision Tree\n\n```\n┌─────────────────────────────────┐\n│ Starting new node config?       │\n├─────────────────────────────────┤\n│ YES → get_node (standard)       │\n└─────────────────────────────────┘\n         ↓\n┌─────────────────────────────────┐\n│ Standard has what you need?     │\n├─────────────────────────────────┤\n│ YES → Configure with it         │\n│ NO  → Continue                  │\n└─────────────────────────────────┘\n         ↓\n┌─────────────────────────────────┐\n│ Looking for specific field?     │\n├─────────────────────────────────┤\n│ YES → search_properties mode    │\n│ NO  → Continue                  │\n└─────────────────────────────────┘\n         ↓\n┌─────────────────────────────────┐\n│ Still need more details?        │\n├─────────────────────────────────┤\n│ YES → get_node({detail: \"full\"})│\n└─────────────────────────────────┘\n```\n\n---\n\n## Property Dependencies Deep Dive\n\n### displayOptions Mechanism\n\n**Fields have visibility rules**:\n\n```javascript\n{\n  \"name\": \"body\",\n  \"displayOptions\": {\n    \"show\": {\n      \"sendBody\": [true],\n      \"method\": [\"POST\", \"PUT\", \"PATCH\"]\n    }\n  }\n}\n```\n\n**Translation**: \"body\" field shows when:\n- sendBody = true AND\n- method = POST, PUT, or PATCH\n\n### Common Dependency Patterns\n\n#### Pattern 1: Boolean Toggle\n\n**Example**: HTTP Request sendBody\n```javascript\n\u002F\u002F sendBody controls body visibility\n{\n  \"sendBody\": true   \u002F\u002F → body field appears\n}\n```\n\n#### Pattern 2: Operation Switch\n\n**Example**: Slack resource\u002Foperation\n```javascript\n\u002F\u002F Different operations → different fields\n{\n  \"resource\": \"message\",\n  \"operation\": \"post\"\n  \u002F\u002F → Shows: channel, text, attachments, etc.\n}\n\n{\n  \"resource\": \"message\",\n  \"operation\": \"update\"\n  \u002F\u002F → Shows: messageId, text (different fields!)\n}\n```\n\n#### Pattern 3: Type Selection\n\n**Example**: IF node conditions\n```javascript\n{\n  \"type\": \"string\",\n  \"operation\": \"contains\"\n  \u002F\u002F → Shows: value1, value2\n}\n\n{\n  \"type\": \"boolean\",\n  \"operation\": \"equals\"\n  \u002F\u002F → Shows: value1, value2, different operators\n}\n```\n\n### Finding Property Dependencies\n\n**Use get_node with search_properties mode**:\n```javascript\nget_node({\n  nodeType: \"nodes-base.httpRequest\",\n  mode: \"search_properties\",\n  propertyQuery: \"body\"\n});\n\n\u002F\u002F Returns property paths matching \"body\" with descriptions\n```\n\n**Or use full detail for complete schema**:\n```javascript\nget_node({\n  nodeType: \"nodes-base.httpRequest\",\n  detail: \"full\"\n});\n\n\u002F\u002F Returns complete schema with displayOptions rules\n```\n\n**Use this when**: Validation fails and you don't understand why field is missing\u002Frequired\n\n---\n\n## Common Node Patterns\n\n### Pattern 1: Resource\u002FOperation Nodes\n\n**Examples**: Slack, Google Sheets, Airtable\n\n**Structure**:\n```javascript\n{\n  \"resource\": \"\u003Centity>\",      \u002F\u002F What type of thing\n  \"operation\": \"\u003Caction>\",     \u002F\u002F What to do with it\n  \u002F\u002F ... operation-specific fields\n}\n```\n\n**How to configure**:\n1. Choose resource\n2. Choose operation\n3. Use get_node to see operation-specific requirements\n4. Configure required fields\n\n### Pattern 2: HTTP-Based Nodes\n\n**Examples**: HTTP Request, Webhook\n\n**Structure**:\n```javascript\n{\n  \"method\": \"\u003CHTTP_METHOD>\",\n  \"url\": \"\u003Cendpoint>\",\n  \"authentication\": \"\u003Ctype>\",\n  \u002F\u002F ... method-specific fields\n}\n```\n\n**Dependencies**:\n- POST\u002FPUT\u002FPATCH → sendBody available\n- sendBody=true → body required\n- authentication != \"none\" → credentials required\n\n### Pattern 3: Database Nodes\n\n**Examples**: Postgres, MySQL, MongoDB\n\n**Structure**:\n```javascript\n{\n  \"operation\": \"\u003Cquery|insert|update|delete>\",\n  \u002F\u002F ... operation-specific fields\n}\n```\n\n**Dependencies**:\n- operation=\"executeQuery\" → query required\n- operation=\"insert\" → table + values required\n- operation=\"update\" → table + values + where required\n\n### Pattern 4: Conditional Logic Nodes\n\n**Examples**: IF, Switch, Merge\n\n**Structure**:\n```javascript\n{\n  \"conditions\": {\n    \"\u003Ctype>\": [\n      {\n        \"operation\": \"\u003Coperator>\",\n        \"value1\": \"...\",\n        \"value2\": \"...\"  \u002F\u002F Only for binary operators\n      }\n    ]\n  }\n}\n```\n\n**Dependencies**:\n- Binary operators (equals, contains, etc.) → value1 + value2\n- Unary operators (isEmpty, isNotEmpty) → value1 only + singleValue: true\n\n---\n\n## Operation-Specific Configuration\n\n### Slack Node Examples\n\n#### Post Message\n```javascript\n{\n  \"resource\": \"message\",\n  \"operation\": \"post\",\n  \"channel\": \"#general\",      \u002F\u002F Required\n  \"text\": \"Hello!\",           \u002F\u002F Required\n  \"attachments\": [],          \u002F\u002F Optional\n  \"blocks\": []                \u002F\u002F Optional\n}\n```\n\n#### Update Message\n```javascript\n{\n  \"resource\": \"message\",\n  \"operation\": \"update\",\n  \"messageId\": \"1234567890\",  \u002F\u002F Required (different from post!)\n  \"text\": \"Updated!\",         \u002F\u002F Required\n  \"channel\": \"#general\"       \u002F\u002F Optional (can be inferred)\n}\n```\n\n#### Create Channel\n```javascript\n{\n  \"resource\": \"channel\",\n  \"operation\": \"create\",\n  \"name\": \"new-channel\",      \u002F\u002F Required\n  \"isPrivate\": false          \u002F\u002F Optional\n  \u002F\u002F Note: text NOT required for this operation\n}\n```\n\n### HTTP Request Node Examples\n\n#### GET Request\n```javascript\n{\n  \"method\": \"GET\",\n  \"url\": \"https:\u002F\u002Fapi.example.com\u002Fusers\",\n  \"authentication\": \"predefinedCredentialType\",\n  \"nodeCredentialType\": \"httpHeaderAuth\",\n  \"sendQuery\": true,                    \u002F\u002F Optional\n  \"queryParameters\": {                  \u002F\u002F Shows when sendQuery=true\n    \"parameters\": [\n      {\n        \"name\": \"limit\",\n        \"value\": \"100\"\n      }\n    ]\n  }\n}\n```\n\n#### POST with JSON\n```javascript\n{\n  \"method\": \"POST\",\n  \"url\": \"https:\u002F\u002Fapi.example.com\u002Fusers\",\n  \"authentication\": \"none\",\n  \"sendBody\": true,                     \u002F\u002F Required for POST\n  \"body\": {                             \u002F\u002F Required when sendBody=true\n    \"contentType\": \"json\",\n    \"content\": {\n      \"name\": \"John Doe\",\n      \"email\": \"john@example.com\"\n    }\n  }\n}\n```\n\n### IF Node Examples\n\n#### String Comparison (Binary)\n```javascript\n{\n  \"conditions\": {\n    \"string\": [\n      {\n        \"value1\": \"={{$json.status}}\",\n        \"operation\": \"equals\",\n        \"value2\": \"active\"              \u002F\u002F Binary: needs value2\n      }\n    ]\n  }\n}\n```\n\n#### Empty Check (Unary)\n```javascript\n{\n  \"conditions\": {\n    \"string\": [\n      {\n        \"value1\": \"={{$json.email}}\",\n        \"operation\": \"isEmpty\",\n        \u002F\u002F No value2 - unary operator\n        \"singleValue\": true             \u002F\u002F Auto-added by sanitization\n      }\n    ]\n  }\n}\n```\n\n---\n\n## Handling Conditional Requirements\n\n### Example: HTTP Request Body\n\n**Scenario**: body field required, but only sometimes\n\n**Rule**:\n```\nbody is required when:\n  - sendBody = true AND\n  - method IN (POST, PUT, PATCH, DELETE)\n```\n\n**How to discover**:\n```javascript\n\u002F\u002F Option 1: Read validation error\nvalidate_node({...});\n\u002F\u002F Error: \"body required when sendBody=true\"\n\n\u002F\u002F Option 2: Search for the property\nget_node({\n  nodeType: \"nodes-base.httpRequest\",\n  mode: \"search_properties\",\n  propertyQuery: \"body\"\n});\n\u002F\u002F Shows: body property with displayOptions rules\n\n\u002F\u002F Option 3: Try minimal config and iterate\n\u002F\u002F Start without body, validation will tell you if needed\n```\n\n### Example: IF Node singleValue\n\n**Scenario**: singleValue property appears for unary operators\n\n**Rule**:\n```\nsingleValue should be true when:\n  - operation IN (isEmpty, isNotEmpty, true, false)\n```\n\n**Good news**: Auto-sanitization fixes this!\n\n**Manual check**:\n```javascript\nget_node({\n  nodeType: \"nodes-base.if\",\n  detail: \"full\"\n});\n\u002F\u002F Shows complete schema with operator-specific rules\n```\n\n---\n\n## Configuration Anti-Patterns\n\n### ❌ Don't: Over-configure Upfront\n\n**Bad**:\n```javascript\n\u002F\u002F Adding every possible field\n{\n  \"method\": \"GET\",\n  \"url\": \"...\",\n  \"sendQuery\": false,\n  \"sendHeaders\": false,\n  \"sendBody\": false,\n  \"timeout\": 10000,\n  \"ignoreResponseCode\": false,\n  \u002F\u002F ... 20 more optional fields\n}\n```\n\n**Good**:\n```javascript\n\u002F\u002F Start minimal\n{\n  \"method\": \"GET\",\n  \"url\": \"...\",\n  \"authentication\": \"none\"\n}\n\u002F\u002F Add fields only when needed\n```\n\n### ❌ Don't: Skip Validation\n\n**Bad**:\n```javascript\n\u002F\u002F Configure and deploy without validating\nconst config = {...};\nn8n_update_partial_workflow({...});  \u002F\u002F YOLO\n```\n\n**Good**:\n```javascript\n\u002F\u002F Validate before deploying\nconst config = {...};\nconst result = validate_node({...});\nif (result.valid) {\n  n8n_update_partial_workflow({...});\n}\n```\n\n### ❌ Don't: Ignore Operation Context\n\n**Bad**:\n```javascript\n\u002F\u002F Same config for all Slack operations\n{\n  \"resource\": \"message\",\n  \"operation\": \"post\",\n  \"channel\": \"#general\",\n  \"text\": \"...\"\n}\n\n\u002F\u002F Then switching operation without updating config\n{\n  \"resource\": \"message\",\n  \"operation\": \"update\",  \u002F\u002F Changed\n  \"channel\": \"#general\",  \u002F\u002F Wrong field for update!\n  \"text\": \"...\"\n}\n```\n\n**Good**:\n```javascript\n\u002F\u002F Check requirements when changing operation\nget_node({\n  nodeType: \"nodes-base.slack\"\n});\n\u002F\u002F See what update operation needs (messageId, not channel)\n```\n\n---\n\n## Best Practices\n\n### ✅ Do\n\n1. **Start with get_node (standard detail)**\n   - ~1-2K tokens response\n   - Covers 95% of configuration needs\n   - Default detail level\n\n2. **Validate iteratively**\n   - Configure → Validate → Fix → Repeat\n   - Average 2-3 iterations is normal\n   - Read validation errors carefully\n\n3. **Use search_properties mode when stuck**\n   - If field seems missing, search for it\n   - Understand what controls field visibility\n   - `get_node({mode: \"search_properties\", propertyQuery: \"...\"})`\n\n4. **Respect operation context**\n   - Different operations = different requirements\n   - Always check get_node when changing operation\n   - Don't assume configs are transferable\n\n5. **Trust auto-sanitization**\n   - Operator structure fixed automatically\n   - Don't manually add\u002Fremove singleValue\n   - IF\u002FSwitch metadata added on save\n\n### ❌ Don't\n\n1. **Jump to detail=\"full\" immediately**\n   - Try standard detail first\n   - Only escalate if needed\n   - Full schema is 3-8K tokens\n\n2. **Configure blindly**\n   - Always validate before deploying\n   - Understand why fields are required\n   - Use search_properties for conditional fields\n\n3. **Copy configs without understanding**\n   - Different operations need different fields\n   - Validate after copying\n   - Adjust for new context\n\n4. **Manually fix auto-sanitization issues**\n   - Let auto-sanitization handle operator structure\n   - Focus on business logic\n   - Save and let system fix structure\n\n---\n\n## Detailed References\n\nFor comprehensive guides on specific topics:\n\n- **DEPENDENCIES.md** - Deep dive into property dependencies and displayOptions\n- **OPERATION_PATTERNS.md** - Common configuration patterns by node type\n\n---\n\n## Summary\n\n**Configuration Strategy**:\n1. Start with `get_node` (standard detail is default)\n2. Configure required fields for operation\n3. Validate configuration\n4. Search properties if stuck\n5. Iterate until valid (avg 2-3 cycles)\n6. Deploy with confidence\n\n**Key Principles**:\n- **Operation-aware**: Different operations = different requirements\n- **Progressive disclosure**: Start minimal, add as needed\n- **Dependency-aware**: Understand field visibility rules\n- **Validation-driven**: Let validation guide configuration\n\n**Related Skills**:\n- **n8n MCP Tools Expert** - How to use discovery tools correctly\n- **n8n Validation Expert** - Interpret validation errors\n- **n8n Expression Syntax** - Configure expression fields\n- **n8n Workflow Patterns** - Apply patterns with proper configuration\n\n## Limitations\n- Use this skill only when the task clearly matches the scope described above.\n- Do not treat the output as a substitute for environment-specific validation, testing, or expert review.\n- Stop and ask for clarification if required inputs, permissions, safety boundaries, or success criteria are missing.\n","","imported","https:\u002F\u002Fgithub.com\u002Fsickn33\u002Fantigravity-awesome-skills","user_system_seed","SkillOPIC",true,107,1188,"2026-05-16 13:30:20",{"id":8,"name":21,"slug":22,"icon":23,"description":24,"sort":25,"createdAt":26},"编程开发","coding","mdi-code-braces","代码生成、调试、审查，提升开发效率",2,"2026-05-16 12:53:40",{"id":7,"name":28,"slug":29,"icon":30,"description":31,"moduleId":8,"sort":25,"skillCount":32,"createdAt":26},"后端开发","backend","mdi-server","API、数据库、服务端架构",296,[34],{"id":35,"skillId":4,"version":36,"fileName":37,"fileSize":38,"filePath":39,"fileHash":40,"manifest":41,"createdAt":19},"f1863f96-6a47-4348-bb06-3a2f5ef59cb7","1.0.0","n8n-node-configuration.zip",5363,"uploads\u002Fskills\u002F652db945-24c1-4d4d-a3e9-a428a850aca2\u002Fn8n-node-configuration.zip","a7b0eafc4d5cb10369aae150d211e4687c9227c6095fef3c8b3a40df0bae0671","[{\"path\":\"SKILL.md\",\"isDirectory\":false,\"size\":17948}]",{"code":43,"message":44,"data":45},200,"success",{"items":46,"stats":47,"page":50},[],{"averageRating":48,"totalRatings":48,"ratingCounts":49},0,[48,48,48,48,48],{"limit":51,"offset":48,"hasMore":52,"nextOffset":51,"ratedOnly":16},15,false]