Guia de Referência: Tipos de Nó no Template

Este documento serve como um guia essencial para desenvolvedores que utilizam o template guides/templates/node.md no Obsidian. Ele detalha os campos específicos que cada tipo de nó requer e a estrutura Markdown esperada para a documentação atômica. O entendimento aprofundado destes padrões garante consistência, agilidade e precisão na documentação de nossos fluxos de automação.

1. Como Usar o Template node.md

O template node.md é o ponto de partida para documentar nós individuais. Ele é configurado com prompts interativos para coletar as informações pertinentes a cada tipo de nó.

Passo a passo

  1. Crie uma Nova Nota com o Template: No Obsidian, utilize o comando “Templater: Create new note from template” (ou o atalho configurado) e selecione guides/templates/node.md.
  2. Responda aos Prompts: O template iniciará uma sequência de perguntas. A primeira e mais importante é a seleção do tipo do nó, que irá configurar o restante dos prompts para aquele tipo específico.
  3. Salve o Arquivo: Após preencher os prompts, o Obsidian gerará o arquivo Markdown com a estrutura preenchida. Salve-o na pasta do fluxo correspondente, seguindo as regras de nomenclatura.

💡 Dica: Para uma explicação mais detalhada sobre a estrutura geral, o processo de contribuição e as boas práticas, consulte o Guia Completo de Desenvolvedores.


2. Guia Detalhado por Tipo de Nó

A seguir, você encontrará a descrição dos prompts específicos que cada tipo de nó pedirá, e a estrutura de saída esperada do Markdown após o preenchimento do template.

Índice de Tipos de Nó

Controle de Fluxo:

Variáveis e Dados:

Comunicação e Interação:

Integrações Externas:

Temporização:

Atendimento:

Processamento:


2.1. Nó: Condition (Condição)

Propósito: Documenta nós que avaliam uma ou mais condições e direcionam o fluxo com base no resultado.

Prompts Específicos:

  • Valor de entrada (ex: {{flow.is_weekend}})
  • Tipo de condição (ex: =, !=, >, <, contains)
  • Param 2 (valor a comparar)
  • Nome da condição
  • Deseja adicionar mais condições? (Sim/Não)

Estrutura de Saída Esperada:

## Configuração da Condição
 
### Condição 1
 
| Campo | Valor |
|-------|-------|
| **Valor de entrada** | `{{flow.is_weekend}}` |
| **Tipo de condição** | = |
| **Param 2** | `true` |
| **Nome da condição** | É fim de semana? |
| **Segue para** | |
 
### Senão
 
| Campo        | Valor |
|--------------|-------|
| **Segue para** |       |
 
## Saídas
 
- Baseado no resultado da condição, o fluxo segue para o próximo nó apropriado

2.2. Nó: Split (Divisão)

Propósito: Divide a execução do fluxo em múltiplas ramificações com porcentagens definidas (útil para testes A/B).

Prompts Específicos:

  • Porcentagem (ex: 50%)
  • Nome da ramificação
  • Deseja adicionar mais ramificações? (Sim/Não)

Estrutura de Saída Esperada:

## Configuração do Split
 
| Porcentagem | Ramificação | Segue para |
|-------------|-------------|------------|
| 50% | Variante A | |
| 50% | Variante B | |
 
## Saídas
 
- A execução é dividida entre as ramificações configuradas

2.3. Nó: Jump (Salto para Fluxo Externo)

Propósito: Descreve nós que redirecionam a execução para outro fluxo.

Prompts Específicos:

  • Fluxo de destino
  • Data (JSON com dados a serem passados)
  • Retorno (true ou false)

Estrutura de Saída Esperada:

## Configuração do Jump
 
**Fluxo de destino**: fluxo-de-cobranca
 
**Data**:
```json
{
  "user_id": "{{input.user_id}}"
}

Retorno: true


---

### 2.4. Nó: End Flow (Finalizar Fluxo)

**Propósito:** Finaliza a execução do fluxo atual com um status definido.

**Prompts Específicos:**
- Status de finalização (Sucesso/Erro)
- Retorno (JSON opcional)

**Estrutura de Saída Esperada:**

```markdown
## Configuração de Fim de Fluxo

**Status**: Success

**Retorno**:
```json
{
  "message": "Fluxo concluído com sucesso"
}

Saídas

  • Finaliza a execução do fluxo atual

---

### 2.5. Nó: Flow Variables (Variáveis de Fluxo)

**Propósito:** Detalha nós que criam ou modificam variáveis internas do fluxo.

**Prompts Específicos:**
- Cole o bloco JSON completo das variáveis

**Estrutura de Saída Esperada:**

```markdown
## Variáveis do Fluxo

```json
{
  "app_cta_message_slug": "/download-app",
  "user_segment": "premium"
}

Saídas

  • flow.app_cta_message_slug: /download-app
  • flow.user_segment: premium

---

### 2.6. Nó: User Variables (Variáveis de Usuário)

**Propósito:** Define ou atualiza variáveis associadas ao usuário específico.

**Prompts Específicos:**
- Cole o bloco JSON completo das variáveis de usuário

**Estrutura de Saída Esperada:**

```markdown
## Variáveis de Usuário

```json
{
  "last_interaction": "2024-01-15",
  "preference": "email"
}

Saídas

  • user.last_interaction: 2024-01-15
  • user.preference: email

---

### 2.7. Nó: Execution Data (Dados de Execução)

**Propósito:** Define chaves e valores para indexar e facilitar a busca por execuções específicas dentro do fluxo no N8N. Esses dados são essenciais para rastrear execuções e depurar problemas.

**Prompts Específicos:**
- Chave de busca (ex: `order_id`)
- Valor da chave (ex: `{{flow.order_id}}`)
- Deseja adicionar mais pares Key/Value? (Sim/Não)

**Estrutura de Saída Esperada:**

```markdown
## Configuração de Dados de Execução

| Chave | Valor |
|-------|-------|
| `order_id` | `{{flow.order_id}}` |
| `user_email` | `{{input.email}}` |

## Saídas

N/A (Este nó é usado para indexação e busca de execuções no N8N)

2.8. Nó: Chat (Mensagem de Chat)

Propósito: Documenta nós que enviam mensagens e interagem com o usuário via chat.

Prompts Específicos:

  • Conteúdo da mensagem
  • Rodapé (opcional)
  • Botões (opcional, ex: Acessar app Konsi (https://konsi.com.br))
  • Aguardar resposta do usuário? (Sim/Não)
  • Tratar mensagem fora de contexto? (Sim/Não)
  • Continuar automaticamente? (Sim/Não)

Estrutura de Saída Esperada:

## Configuração do Chat
 
**Conteúdo**: Olá, {{user.name.first}}, temos uma novidade para você!
 
**Rodapé**: Clique para saber mais.
 
**Botões**: Ver Detalhes (https://link.com)
 
**Opções**:
- Aguardar resposta do usuário: true
- Tratar mensagem fora de contexto: false
- Continuar automaticamente: false
 
## Saídas
 
N/A (Interação com usuário via chat)

2.9. Nó: Label (Rótulo)

Propósito: Descreve nós que aplicam um rótulo ou tag a uma entidade (por exemplo, um usuário, um atendimento, um lead).

Prompts Específicos:

  • Rótulo (ex: 'Low Touch - Interessado')

Estrutura de Saída Esperada:

## Rótulo
 
**Rótulo**: Low Touch - Interessado
 
## Saídas
 
N/A (Este nó apenas aplica um rótulo)

2.10. Nó: HTTP Request (Requisição HTTP)

Propósito: Descreve nós que realizam requisições HTTP para APIs externas ou serviços.

Prompts Específicos:

  • URL
  • Método (GET, POST, PUT, DELETE, etc)
  • Headers (opcional)
  • Body (opcional)

Estrutura de Saída Esperada:

## Configuração da Requisição
 
**URL**: https://api.exemplo.com/v1/data
 
**Método**: POST
 
**Headers**:
```json
{
  "Content-Type": "application/json"
}

Body:

{
  "id": "{{input.id}}",
  "value": "{{flow.data_processed}}"
}

Saídas

  • Resposta da requisição HTTP (depende do retorno da API)

---

### 2.11. Nó: Webhook (Entrada de Webhook)

**Propósito:** Descreve um nó que serve como um endpoint, aguardando uma requisição HTTP externa para acionar o fluxo.

**Prompts Específicos:**
- URL do webhook
- Método HTTP (GET, POST, PUT, DELETE, etc)
- Authentication method (opcional)
- Respond With (opcional)

**Estrutura de Saída Esperada:**

```markdown
## Configuração do Webhook

| Campo | Valor |
| -------------------------- | ------------- |
| **URL**                    | https://api.yourdomain.com/webhook/my_event |
| **Método**                 | POST |
| **Authentication method**  | API Key (header: X-API-Key) |
| **Respond**                | 200 OK |

## Saídas

- Dados recebidos via webhook (depende da requisição externa)

2.12. Nó: Respond to Webhook (Resposta ao Webhook)

Propósito: Documenta nós que enviam uma resposta HTTP específica de volta para a origem de um webhook que invocou o fluxo.

Prompts Específicos:

  • Respond With (Status HTTP e/ou tipo de resposta)
  • Response Body (Corpo da resposta)

Estrutura de Saída Esperada:

## Configuração do Response to Webhook
 
| Campo | Valor |
| -------------------------- | ------------- |
| **Respond With**           | 200 OK |
| **Response Body**          | {"status": "success", "message": "Processado"} |
 
## Saídas
 
- Resposta enviada ao chamador do webhook

2.13. Nó: HubSpot

Propósito: Interage com o CRM HubSpot para criar, atualizar ou buscar entidades.

Prompts Específicos:

  • Entidade (ex: contacts, deals, companies)
  • Operação (ex: create, update, search)
  • Campos (JSON opcional)
  • ID (opcional, para operações de update/search)

Estrutura de Saída Esperada:

## Configuração do HubSpot
 
**Entidade**: contacts
 
**Operação**: create
 
**Campos**:
```json
{
  "email": "{{input.email}}",
  "firstname": "{{user.name.first}}"
}

ID: N/A

Protocolo da conversa HF: Link para o chat

Saídas

  • Resultado da operação no HubSpot (depende da entidade e operação)

---

### 2.14. Nó: RabbitMQ

**Propósito:** Interage com o RabbitMQ para consumir mensagens de filas (Trigger) ou enviar/gerenciar mensagens em filas (Action).

**Tipo de Operação:** Primeiro, escolha entre `Trigger` ou `Action`.

#### 2.14.1. RabbitMQ Trigger (Consumir Fila)

**Prompts Específicos:**
- Nome da fila
- Reconhecimento (Automático/Manual)
- Prefetch Count

**Estrutura de Saída Esperada:**

```markdown
## Configuração do RabbitMQ Trigger

| Campo | Valor |
|-------|-------|
| **Tipo de Operação** | Trigger |
| **Nome da fila** | `fila_de_pedidos` |
| **Reconhecimento (ack)** | Automático |
| **Prefetch Count** | `10` |

## Saídas

- `output.message`: O conteúdo da mensagem consumida (geralmente JSON ou string).
- `output.properties`: Objeto com as propriedades da mensagem (headers, routingKey, etc.).

2.14.2. RabbitMQ Action - Enviar Mensagem

Prompts Específicos:

  • Nome da fila/exchange de destino
  • Corpo da mensagem (JSON ou string)
  • Routing Key (opcional)
  • Propriedades da mensagem (opcional)

Estrutura de Saída Esperada:

## Configuração do RabbitMQ Action (Enviar Mensagem)
 
| Campo | Valor |
|-------|-------|
| **Tipo de Operação** | Action |
| **Ação** | Enviar Mensagem |
| **Fila/Exchange de destino** | `fila_de_processamento` |
| **Corpo da mensagem** |
```json
{
  "order_id": "{{flow.order_id}}",
  "status": "processing"
}

| | Routing Key | N/A | | Propriedades da mensagem | N/A |

Saídas

  • output.status: success ou failure.
  • output.details: Detalhes sobre a operação (ex: ID da mensagem).

#### 2.14.3. RabbitMQ Action - Apagar Conteúdo da Fila

**Prompts Específicos:**
- Nome da fila alvo
- Confirmar Apagar (Sim/Não)

**Estrutura de Saída Esperada:**

```markdown
## Configuração do RabbitMQ Action (Apagar Conteúdo da Fila)

| Campo | Valor |
|-------|-------|
| **Tipo de Operação** | Action |
| **Ação** | Apagar Conteúdo da Fila |
| **Fila alvo** | `fila_de_erros` |
| **Confirmar Apagar** | `true` |

## Saídas

- `output.status`: `success` ou `failure`.
- `output.messages_purged`: Número de mensagens removidas.

2.15. Nó: Mongo (MongoDB)

Propósito: Executa operações em banco de dados MongoDB.

Prompts Específicos:

  • Resource (ex: mongo-prod)
  • Operation (ex: find, insert, update)
  • Collection (ex: users, logs)
  • Fields (JSON opcional)

Estrutura de Saída Esperada:

## Configuração do Mongo
 
**Resource**: mongo-prod
 
**Operation**: find
 
**Collection**: users
 
**Fields**:
```json
{
  "email": "{{input.email}}"
}

Saídas

  • Resultado da operação no Mongo (depende da operação)

---

### 2.16. Nó: Start Inactivity (Iniciar Inatividade)

**Propósito:** Documenta nós que iniciam um período de monitoramento de inatividade antes de prosseguir com o fluxo ou ativar outro evento.

**Prompts Específicos:**
- Tempo de inatividade (minutos)

**Estrutura de Saída Esperada:**

```markdown
## Configuração de Inatividade

**Tempo de inatividade**: 30 minutos

## Saídas

- Avança para o próximo nó após o período de inatividade configurado

2.17. Nó: End Inactivity (Finalizar Inatividade)

Propósito: Interrompe o monitoramento de inatividade em andamento.

Prompts Específicos: Nenhum

Estrutura de Saída Esperada:

## Saídas
 
- Interrompe o monitoramento de inatividade em andamento

2.18. Nó: Iniciar/Atualizar Atendimento

Propósito: Inicia ou atualiza um registro de atendimento no sistema.

Prompts Específicos:

  • Departamento

Estrutura de Saída Esperada:

## Configuração de Atendimento
 
**Departamento**: Suporte Técnico
 
## Saídas
 
- Sucesso: Atendimento iniciado/atualizado
- Erro: Falha ao iniciar/atualizar atendimento

2.19. Nó: Finish Attendance (Finalizar Atendimento)

Propósito: Finaliza um atendimento com classificação e status específicos.

Prompts Específicos:

  • Classificação (ex: Atendimento Finalizado, Cliente Inativo)
  • Status
  • Continuar automaticamente? (Sim/Não)

Estrutura de Saída Esperada:

## Configuração de Finalizar Atendimento
 
**Classificação**: Atendimento Finalizado
 
**Status**: Resolvido
 
**Continuar automaticamente**: Não
 
## Saídas
 
N/A (Finaliza o atendimento, o fluxo pode continuar ou parar dependendo da configuração)

2.20. Nó: Code (Código)

Propósito: Executa código JavaScript customizado dentro do fluxo.

Prompts Específicos:

  • Cole o bloco de código JavaScript

Estrutura de Saída Esperada:

## Código
 
```javascript
const userData = input.user;
const processedData = userData.map(u => ({
  ...u,
  fullName: `${u.firstName} ${u.lastName}`
}));
return processedData;

Saídas

  • Resultado da execução do código acima

---

### 2.21. Nós de Processamento Genérico

**Tipos:** Flow Index, AI, API, Database, Transform, etc.

**Propósito:** Para nós que não possuem uma estrutura de configuração tão específica e são mais focados em processamento de dados, transformações, ou interações com serviços genéricos.

**Prompts Específicos:**
- Nome do campo de entrada
- Descrição/exemplo do valor de entrada
- Nome da variável de saída
- Descrição da saída

**Estrutura de Saída Esperada:**

```markdown
## Entradas

```json
{
  "user_id": "ID único do usuário"
}

Saídas

  • flow.user_data: Objeto com dados detalhados do usuário

---

## 3. Convenções Gerais

### 3.1. Formatação de Código e JSON

- Sempre use blocos de código com sintaxe apropriada (```json, ```javascript)
- Mantenha a indentação consistente (2 espaços)
- Escape caracteres especiais quando necessário (backticks, pipes em tabelas)

### 3.2. Nomenclatura de Variáveis

- Variáveis de fluxo: `flow.nome_da_variavel`
- Variáveis de usuário: `user.nome_da_variavel`
- Variáveis de entrada: `input.nome_da_variavel`
- Variáveis de saída: `output.nome_da_variavel`

### 3.3. Relações entre Nós

Todas as notas devem incluir a seção de relações:

```markdown
## Relações

← Recebe de: [[nome-do-no-anterior]]
→ Envia para: [[nome-do-proximo-no]]

Para nós com múltiplas saídas (Condition, Code, HTTP Request):

## Relações
 
← Recebe de: [[nome-do-no-anterior]]
→ Envia para (Sucesso): [[nome-do-no-sucesso]]
→ Envia para (Erro): [[nome-do-no-erro]]

4. Referências