Orientação de configuração de nós com conhecimento de operação. Use ao configurar nós, entender dependências de propriedades, determinar campos obrigatórios, escolher entre get_node_essentials e get_node_info, ou aprender padrões comuns de configuração por tipo de nó.
Scanned 9/8/2026
Install to Claude Code
npx -y skills add artubss/SKILLS-CLAUDE-CODE --skill n8n-node-configuration --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of N8n Node Configuration?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/artubss-n8n-node-configuration)More formats (shields.io, HTML) on the badges page.
---
name: n8n-node-configuration
description: Orientação de configuração de nós com conhecimento de operação. Use ao configurar nós, entender dependências de propriedades, determinar campos obrigatórios, escolher entre get_node_essentials e get_node_info, ou aprender padrões comuns de configuração por tipo de nó.
---
# Configuração de Nós n8n
Orientação especializada para configuração de nós com conhecimento de operação e dependências de propriedades.
---
## Filosofia de Configuração
**Divulgação progressiva**: Comece de forma mínima, adicione complexidade conforme necessário
Melhores práticas de configuração:
- get_node_essentials é o padrão de descoberta mais utilizado
- 56 segundos de média entre edições de configuração
- 91,7% de taxa de sucesso com configuração baseada em essenciais
**Insight-chave**: A maioria das configurações precisa apenas de essenciais, não do schema completo!
---
## Conceitos Principais
### 1. Configuração com Conhecimento de Operação
**Nem todos os campos são sempre obrigatórios** - depende da operação!
**Exemplo**: Nó Slack
```javascript
// Para operation='post'
{
"resource": "message",
"operation": "post",
"channel": "#general", // Obrigatório para post
"text": "Hello!" // Obrigatório para post
}
// Para operation='update'
{
"resource": "message",
"operation": "update",
"messageId": "123", // Obrigatório para update (diferente!)
"text": "Updated!" // Obrigatório para update
// channel NÃO é obrigatório para update
}
```
**Chave**: Recurso + operação determinam quais campos são obrigatórios!
### 2. Dependências de Propriedades
**Campos aparecem/desaparecem baseado em valores de outros campos**
**Exemplo**: Nó HTTP Request
```javascript
// Quando method='GET'
{
"method": "GET",
"url": "https://api.example.com"
// sendBody não é exibido (GET não tem body)
}
// Quando method='POST'
{
"method": "POST",
"url": "https://api.example.com",
"sendBody": true, // Agora visível!
"body": { // Obrigatório quando sendBody=true
"contentType": "json",
"content": {...}
}
}
```
**Mecanismo**: displayOptions controlam a visibilidade dos campos
### 3. Descoberta Progressiva
**Use a ferramenta certa para o trabalho certo**:
1. **get_node_essentials** (91,7% de taxa de sucesso)
- Visão geral rápida
- Campos obrigatórios
- Opções comuns
- **Use primeiro** - cobre 90% das necessidades
2. **get_property_dependencies** (para nós complexos)
- Mostra o que os campos dependem uns dos outros
- Revela requisitos condicionais
- Use quando essenciais não forem suficientes
3. **get_node_info** (schema completo)
- Documentação completa
- Todos os campos possíveis
- Use quando essenciais + dependências não forem suficientes
---
## Fluxo de Trabalho de Configuração
### Processo Padrão
```
1. Identifique o tipo de nó e operação
↓
2. Use get_node_essentials
↓
3. Configure os campos obrigatórios
↓
4. Valide a configuração
↓
5. Se as dependências não forem claras → get_property_dependencies
↓
6. Adicione campos opcionais conforme necessário
↓
7. Valide novamente
↓
8. Implante
```
### Exemplo: Configurando HTTP Request
**Passo 1**: Identifique o que você precisa
```javascript
// Objetivo: POST JSON para API
```
**Passo 2**: Obtenha essenciais
```javascript
const info = get_node_essentials({
nodeType: "nodes-base.httpRequest"
});
// Retorna: method, url, sendBody, body, authentication obrigatório/opcional
```
**Passo 3**: Configuração mínima
```javascript
{
"method": "POST",
"url": "https://api.example.com/create",
"authentication": "none"
}
```
**Passo 4**: Valide
```javascript
validate_node_operation({
nodeType: "nodes-base.httpRequest",
config,
profile: "runtime"
});
// → Erro: "sendBody obrigatório para POST"
```
**Passo 5**: Adicione o campo obrigatório
```javascript
{
"method": "POST",
"url": "https://api.example.com/create",
"authentication": "none",
"sendBody": true
}
```
**Passo 6**: Valide novamente
```javascript
validate_node_operation({...});
// → Erro: "body obrigatório quando sendBody=true"
```
**Passo 7**: Complete a configuração
```javascript
{
"method": "POST",
"url": "https://api.example.com/create",
"authentication": "none",
"sendBody": true,
"body": {
"contentType": "json",
"content": {
"name": "={{$json.name}}",
"email": "={{$json.email}}"
}
}
}
```
**Passo 8**: Validação final
```javascript
validate_node_operation({...});
// → Válido! ✅
```
---
## get_node_essentials vs get_node_info
### Use get_node_essentials Quando:
**✅ Iniciando configuração** (91,7% de taxa de sucesso)
```javascript
get_node_essentials({
nodeType: "nodes-base.slack"
});
```
**Retorna**:
- Campos obrigatórios
- Opções comuns
- Exemplos básicos
- Lista de operações
**Rápido**: ~18 segundos de média (da busca aos essenciais)
### Use get_node_info Quando:
**✅ Essenciais insuficientes**
```javascript
get_node_info({
nodeType: "nodes-base.slack"
});
```
**Retorna**:
- Schema completo
- Todas as propriedades
- Documentação completa
- Opções avançadas
**Mais lento**: Mais dados para processar
### Árvore de Decisão
```
┌─────────────────────────────────┐
│ Iniciando nova configuração? │
├─────────────────────────────────┤
│ SIM → get_node_essentials │
└─────────────────────────────────┘
↓
┌─────────────────────────────────┐
│ Essenciais têm o necessário? │
├─────────────────────────────────┤
│ SIM → Configure com essenciais │
│ NÃO → Continuar │
└─────────────────────────────────┘
↓
┌─────────────────────────────────┐
│ Precisa de info de dependência? │
├─────────────────────────────────┤
│ SIM → get_property_dependencies │
│ NÃO → Continuar │
└─────────────────────────────────┘
↓
┌─────────────────────────────────┐
│ Ainda precisa de mais detalhes? │
├─────────────────────────────────┤
│ SIM → get_node_info │
└─────────────────────────────────┘
```
---
## Mergulho Profundo em Dependências de Propriedades
### Mecanismo displayOptions
**Os campos têm regras de visibilidade**:
```javascript
{
"name": "body",
"displayOptions": {
"show": {
"sendBody": [true],
"method": ["POST", "PUT", "PATCH"]
}
}
}
```
**Tradução**: O campo "body" é exibido quando:
- sendBody = true E
- method = POST, PUT ou PATCH
### Padrões Comuns de Dependência
#### Padrão 1: Alternância Booleana
**Exemplo**: HTTP Request sendBody
```javascript
// sendBody controla a visibilidade de body
{
"sendBody": true // → campo body aparece
}
```
#### Padrão 2: Mudança de Operação
**Exemplo**: Slack resource/operation
```javascript
// Operações diferentes → campos diferentes
{
"resource": "message",
"operation": "post"
// → Exibe: channel, text, attachments, etc.
}
{
"resource": "message",
"operation": "update"
// → Exibe: messageId, text (campos diferentes!)
}
```
#### Padrão 3: Seleção de Tipo
**Exemplo**: Condições do nó IF
```javascript
{
"type": "string",
"operation": "contains"
// → Exibe: value1, value2
}
{
"type": "boolean",
"operation": "equals"
// → Exibe: value1, value2, operadores diferentes
}
```
### Usando get_property_dependencies
**Exemplo**:
```javascript
const deps = get_property_dependencies({
nodeType: "nodes-base.httpRequest"
});
// Retorna árvore de dependências
{
"dependencies": {
"body": {
"shows_when": {
"sendBody": [true],
"method": ["POST", "PUT", "PATCH", "DELETE"]
}
},
"queryParameters": {
"shows_when": {
"sendQuery": [true]
}
}
}
}
```
**Use isto quando**: A validação falha e você não entende por que um campo está faltando/obrigatório
---
## Padrões Comuns de Nós
### Padrão 1: Nós Resource/Operation
**Exemplos**: Slack, Google Sheets, Airtable
**Estrutura**:
```javascript
{
"resource": "<entidade>", // Que tipo de coisa
"operation": "<ação>", // O que fazer com ela
// ... campos específicos da operação
}
```
**Como configurar**:
1. Escolha o recurso
2. Escolha a operação
3. Use get_node_essentials para ver requisitos específicos da operação
4. Configure os campos obrigatórios
### Padrão 2: Nós Baseados em HTTP
**Exemplos**: HTTP Request, Webhook
**Estrutura**:
```javascript
{
"method": "<HTTP_METHOD>",
"url": "<endpoint>",
"authentication": "<tipo>",
// ... campos específicos do método
}
```
**Dependências**:
- POST/PUT/PATCH → sendBody disponível
- sendBody=true → body obrigatório
- authentication != "none" → credentials obrigatórios
### Padrão 3: Nós de Banco de Dados
**Exemplos**: Postgres, MySQL, MongoDB
**Estrutura**:
```javascript
{
"operation": "<query|insert|update|delete>",
// ... campos específicos da operação
}
```
**Dependências**:
- operation="executeQuery" → query obrigatório
- operation="insert" → table + values obrigatórios
- operation="update" → table + values + where obrigatórios
### Padrão 4: Nós de Lógica Condicional
**Exemplos**: IF, Switch, Merge
**Estrutura**:
```javascript
{
"conditions": {
"<tipo>": [
{
"operation": "<operador>",
"value1": "...",
"value2": "..." // Apenas para operadores binários
}
]
}
}
```
**Dependências**:
- Operadores binários (equals, contains, etc.) → value1 + value2
- Operadores unários (isEmpty, isNotEmpty) → value1 apenas + singleValue: true
---
## Configuração Específica da Operação
### Exemplos de Nó Slack
#### Postar Mensagem
```javascript
{
"resource": "message",
"operation": "post",
"channel": "#general", // Obrigatório
"text": "Hello!", // Obrigatório
"attachments": [], // Opcional
"blocks": [] // Opcional
}
```
#### Atualizar Mensagem
```javascript
{
"resource": "message",
"operation": "update",
"messageId": "1234567890", // Obrigatório (diferente de post!)
"text": "Updated!", // Obrigatório
"channel": "#general" // Opcional (pode ser inferido)
}
```
#### Criar Canal
```javascript
{
"resource": "channel",
"operation": "create",
"name": "new-channel", // Obrigatório
"isPrivate": false // Opcional
// Nota: text NÃO é obrigatório para esta operação
}
```
### Exemplos de Nó HTTP Request
#### Solicitação GET
```javascript
{
"method": "GET",
"url": "https://api.example.com/users",
"authentication": "predefinedCredentialType",
"nodeCredentialType": "httpHeaderAuth",
"sendQuery": true, // Opcional
"queryParameters": { // Exibido quando sendQuery=true
"parameters": [
{
"name": "limit",
"value": "100"
}
]
}
}
```
#### POST com JSON
```javascript
{
"method": "POST",
"url": "https://api.example.com/users",
"authentication": "none",
"sendBody": true, // Obrigatório para POST
"body": { // Obrigatório quando sendBody=true
"contentType": "json",
"content": {
"name": "John Doe",
"email": "john@example.com"
}
}
}
```
### Exemplos de Nó IF
#### Comparação de Strings (Binária)
```javascript
{
"conditions": {
"string": [
{
"value1": "={{$json.status}}",
"operation": "equals",
"value2": "active" // Binária: precisa de value2
}
]
}
}
```
#### Verificação de Vazio (Unária)
```javascript
{
"conditions": {
"string": [
{
"value1": "={{$json.email}}",
"operation": "isEmpty",
// Sem value2 - operador unário
"singleValue": true // Auto-adicionado por sanitização
}
]
}
}
```
---
## Tratando Requisitos Condicionais
### Exemplo: Body do HTTP Request
**Cenário**: campo body obrigatório, mas apenas às vezes
**Regra**:
```
body é obrigatório quando:
- sendBody = true E
- method IN (POST, PUT, PATCH, DELETE)
```
**Como descobrir**:
```javascript
// Opção 1: Leia o erro de validação
validate_node_operation({...});
// Erro: "body obrigatório quando sendBody=true"
// Opção 2: Verifique dependências
get_property_dependencies({
nodeType: "nodes-base.httpRequest"
});
// Exibe: body → shows_when: sendBody=[true], method=[POST,PUT,PATCH,DELETE]
// Opção 3: Tente configuração mínima e itere
// Comece sem body, validação dirá se necessário
```
### Exemplo: singleValue do Nó IF
**Cenário**: propriedade singleValue aparece para operadores unários
**Regra**:
```
singleValue deve ser true quando:
- operation IN (isEmpty, isNotEmpty, true, false)
```
**Boa notícia**: Auto-sanitização corrige isso!
**Verificação manual**:
```javascript
get_property_dependencies({
nodeType: "nodes-base.if"
});
// Exibe dependências específicas do operador
```
---
## Anti-padrões de Configuração
### ❌ Não Faça: Sobre-configurar Antecipadamente
**Ruim**:
```javascript
// Adicionar todos os campos possíveis
{
"method": "GET",
"url": "...",
"sendQuery": false,
"sendHeaders": false,
"sendBody": false,
"timeout": 10000,
"ignoreResponseCode": false,
// ... 20 campos opcionais a mais
}
```
**Bom**:
```javascript
// Comece mínimo
{
"method": "GET",
"url": "...",
"authentication": "none"
}
// Adicione campos apenas quando necessário
```
### ❌ Não Faça: Pule a Validação
**Ruim**:
```javascript
// Configure e implante sem validar
const config = {...};
n8n_update_partial_workflow({...}); // YOLO
```
**Bom**:
```javascript
// Valide antes de implantar
const config = {...};
const result = validate_node_operation({...});
if (result.valid) {
n8n_update_partial_workflow({...});
}
```
### ❌ Não Faça: Ignore o Contexto da Operação
**Ruim**:
```javascript
// Mesma config para todas as operações Slack
{
"resource": "message",
"operation": "post",
"channel": "#general",
"text": "..."
}
// Depois trocar operação sem atualizar config
{
"resource": "message",
"operation": "update", // Trocado
"channel": "#general", // Campo errado para update!
"text": "..."
}
```
**Bom**:
```javascript
// Verifique requisitos ao trocar operação
get_node_essentials({
nodeType: "nodes-base.slack"
});
// Veja o que a operação update precisa (messageId, não channel)
```
---
## Melhores Práticas
### ✅ Faça
1. **Comece com get_node_essentials**
- 91,7% de taxa de sucesso
- Mais rápido que get_node_info
- Suficiente para a maioria das necessidades
2. **Valide iterativamente**
- Configure → Valide → Corrija → Repita
- Média de 2-3 iterações é normal
- Leia os erros de validação com cuidado
3. **Use dependências de propriedades quando preso**
- Se um campo parece faltando, verifique dependências
- Entenda o que controla a visibilidade do campo
- get_property_dependencies revela as regras
4. **Respeite o contexto da operação**
- Operações diferentes = requisitos diferentes
- Sempre verifique essenciais ao trocar operação
- Não assuma que configurações são transferíveis
5. **Confie na auto-sanitização**
- Estrutura de operador corrigida automaticamente
- Não adicione/remova singleValue manualmente
- Metadados IF/Switch adicionados ao salvar
### ❌ Não Faça
1. **Pule direto para get_node_info**
- Tente essenciais primeiro
- Apenas escale se necessário
- Schema completo é avassalador
2. **Configure às cegas**
- Sempre valide antes de implantar
- Entenda por que campos são obrigatórios
- Verifique dependências para campos condicionais
3. **Copie configurações sem entender**
- Operações diferentes precisam de campos diferentes
- Valide após copiar
- Ajuste para novo contexto
4. **Corrija manualmente problemas de auto-sanitização**
- Deixe auto-sanitização lidar com estrutura de operador
- Foque na lógica de negócio
- Salve e deixe o sistema corrigir a estrutura
---
## Referências Detalhadas
Para guias abrangentes em tópicos específicos:
- **[DEPENDENCIES.md](DEPENDENCIES.md)** - Mergulho profundo em dependências de propriedades e displayOptions
- **[OPERATION_PATTERNS.md](OPERATION_PATTERNS.md)** - Padrões comuns de configuração por tipo de nó
---
## Resumo
**Estratégia de Configuração**:
1. Comece com get_node_essentials (91,7% de sucesso)
2. Configure campos obrigatórios para operação
3. Valide a configuração
4. Verifique dependências se preso
5. Itere até válido (média 2-3 ciclos)
6. Implante com confiança
**Princípios-chave**:
- **Com conhecimento de operação**: Operações diferentes = requisitos diferentes
- **Divulgação progressiva**: Comece mínimo, adicione conforme necessário
- **Com conhecimento de dependência**: Entenda as regras de visibilidade de campos
- **Orientado por validação**: Deixe validação guiar configuração
**Habilidades Relacionadas**:
- **Especialista em n8n MCP Tools** - Como usar as ferramentas de descoberta corretamente
- **Especialista em Validação n8n** - Interpretar erros de validação
- **Sintaxe de Expressão n8n** - Configurar campos de expressão
- **Padrões de Workflow n8n** - Aplicar padrões com configuração apropriadaIs this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!