chore(skills): consolidar n8n-* (6→1) e cwp-* (8→1) em meta-skills
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -1,313 +0,0 @@
|
||||
---
|
||||
name: n8n-chatbot
|
||||
description: Criação de chatbots e workflows com inteligência artificial usando LangChain no n8n.
|
||||
---
|
||||
|
||||
# /n8n-chatbot - Chatbots e AI Agents n8n
|
||||
|
||||
Criar chatbots e workflows com AI usando LangChain.
|
||||
|
||||
## Contexto NotebookLM
|
||||
|
||||
ANTES de executar, consultar notebooks para contexto especializado:
|
||||
|
||||
| Notebook | ID | Consultar quando |
|
||||
|----------|-----|-----------------|
|
||||
| n8n Deep Research | f2c809b8-1cb5-4dd0-aa7e-be2cfb6704d1 | Sempre |
|
||||
|
||||
```
|
||||
mcp__notebooklm__notebook_query({
|
||||
notebook_id: "f2c809b8-1cb5-4dd0-aa7e-be2cfb6704d1",
|
||||
query: "<adaptar ao contexto do pedido do utilizador>"
|
||||
})
|
||||
```
|
||||
|
||||
Integrar insights do NotebookLM nas recomendações e decisões.
|
||||
|
||||
---
|
||||
|
||||
## Uso
|
||||
|
||||
```
|
||||
/n8n-chatbot create <descrição> # Criar chatbot
|
||||
/n8n-chatbot agent <tipo> # Criar AI agent
|
||||
/n8n-chatbot rag <knowledge_base> # Criar sistema RAG
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Workflow Obrigatório
|
||||
|
||||
```
|
||||
1. Health check → mcp__n8n__n8n_health_check()
|
||||
2. Pesquisar template → mcp__n8n__search_templates({ task: "ai_automation" })
|
||||
3. Se template OK → mcp__n8n__n8n_deploy_template()
|
||||
4. Se criar do zero → Seguir fluxo abaixo
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Nodes LangChain
|
||||
|
||||
### Core
|
||||
|
||||
| Node | Uso |
|
||||
|------|-----|
|
||||
| `@n8n/n8n-nodes-langchain.agent` | AI Agent principal |
|
||||
| `@n8n/n8n-nodes-langchain.chainLlm` | Chain LLM simples |
|
||||
| `@n8n/n8n-nodes-langchain.chainRetrievalQa` | RAG Q&A |
|
||||
|
||||
### Modelos
|
||||
|
||||
| Node | Provider |
|
||||
|------|----------|
|
||||
| `@n8n/n8n-nodes-langchain.lmChatOpenAi` | OpenAI GPT |
|
||||
| `@n8n/n8n-nodes-langchain.lmChatAnthropic` | Claude |
|
||||
| `@n8n/n8n-nodes-langchain.lmChatOllama` | Ollama local |
|
||||
|
||||
### Memória
|
||||
|
||||
| Node | Tipo |
|
||||
|------|------|
|
||||
| `@n8n/n8n-nodes-langchain.memoryBufferWindow` | Últimas N mensagens |
|
||||
| `@n8n/n8n-nodes-langchain.memoryPostgresChat` | PostgreSQL |
|
||||
| `@n8n/n8n-nodes-langchain.memoryRedisChat` | Redis |
|
||||
|
||||
### Tools
|
||||
|
||||
| Node | Função |
|
||||
|------|--------|
|
||||
| `@n8n/n8n-nodes-langchain.toolCalculator` | Cálculos |
|
||||
| `@n8n/n8n-nodes-langchain.toolCode` | Executar código |
|
||||
| `@n8n/n8n-nodes-langchain.toolHttpRequest` | Chamar APIs |
|
||||
| `@n8n/n8n-nodes-langchain.toolWorkflow` | Chamar workflows |
|
||||
|
||||
### Vector Stores (RAG)
|
||||
|
||||
| Node | Sistema |
|
||||
|------|---------|
|
||||
| `@n8n/n8n-nodes-langchain.vectorStoreSupabase` | Supabase |
|
||||
| `@n8n/n8n-nodes-langchain.vectorStorePinecone` | Pinecone |
|
||||
| `@n8n/n8n-nodes-langchain.vectorStorePgVector` | PostgreSQL |
|
||||
|
||||
---
|
||||
|
||||
## Chatbot Básico
|
||||
|
||||
### Estrutura
|
||||
|
||||
```
|
||||
Webhook/Trigger
|
||||
↓
|
||||
LLM Chat Model (OpenAI/Claude)
|
||||
↓
|
||||
Memory (Buffer)
|
||||
↓
|
||||
Agent
|
||||
↓
|
||||
Resposta
|
||||
```
|
||||
|
||||
### Implementação
|
||||
|
||||
```javascript
|
||||
// 1. Modelo LLM
|
||||
mcp__n8n__get_node({
|
||||
nodeType: "@n8n/n8n-nodes-langchain.lmChatOpenAi",
|
||||
detail: "standard"
|
||||
})
|
||||
|
||||
// 2. Memória
|
||||
mcp__n8n__get_node({
|
||||
nodeType: "@n8n/n8n-nodes-langchain.memoryBufferWindow",
|
||||
detail: "standard"
|
||||
})
|
||||
|
||||
// 3. Agent
|
||||
mcp__n8n__get_node({
|
||||
nodeType: "@n8n/n8n-nodes-langchain.agent",
|
||||
detail: "standard"
|
||||
})
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## RAG (Retrieval Augmented Generation)
|
||||
|
||||
### Estrutura
|
||||
|
||||
```
|
||||
Documentos
|
||||
↓
|
||||
Embeddings
|
||||
↓
|
||||
Vector Store
|
||||
↓
|
||||
Query (pergunta)
|
||||
↓
|
||||
Retriever
|
||||
↓
|
||||
LLM (resposta contextualizada)
|
||||
```
|
||||
|
||||
### Configuração Vector Store
|
||||
|
||||
```javascript
|
||||
mcp__n8n__validate_node({
|
||||
nodeType: "@n8n/n8n-nodes-langchain.vectorStoreSupabase",
|
||||
config: {
|
||||
mode: "insert", // ou "retrieve"
|
||||
tableName: "documents",
|
||||
queryName: "match_documents"
|
||||
},
|
||||
mode: "minimal"
|
||||
})
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## AI Agent com Tools
|
||||
|
||||
### Estrutura
|
||||
|
||||
```
|
||||
Input
|
||||
↓
|
||||
Agent
|
||||
├── Tool: Calculator
|
||||
├── Tool: HTTP Request
|
||||
├── Tool: Code
|
||||
└── Tool: Workflow
|
||||
↓
|
||||
Output
|
||||
```
|
||||
|
||||
### Configuração Agent
|
||||
|
||||
```javascript
|
||||
mcp__n8n__validate_node({
|
||||
nodeType: "@n8n/n8n-nodes-langchain.agent",
|
||||
config: {
|
||||
agentType: "conversationalAgent",
|
||||
systemMessage: "Tu és um assistente prestável...",
|
||||
options: {
|
||||
returnIntermediateSteps: true
|
||||
}
|
||||
},
|
||||
mode: "minimal"
|
||||
})
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Exemplos Práticos
|
||||
|
||||
### Chatbot de Suporte
|
||||
|
||||
```
|
||||
Webhook (mensagem cliente)
|
||||
↓
|
||||
Memory PostgreSQL (histórico)
|
||||
↓
|
||||
Vector Store (docs suporte)
|
||||
↓
|
||||
Chain Retrieval QA
|
||||
↓
|
||||
Webhook Response
|
||||
```
|
||||
|
||||
### Agent CRM
|
||||
|
||||
```
|
||||
Webhook (comando)
|
||||
↓
|
||||
Agent
|
||||
├── Tool: Pesquisar clientes
|
||||
├── Tool: Criar lead
|
||||
└── Tool: Actualizar tarefa
|
||||
↓
|
||||
Slack (resultado)
|
||||
```
|
||||
|
||||
### Resumo de Documentos
|
||||
|
||||
```
|
||||
Webhook (upload PDF)
|
||||
↓
|
||||
PDF Extract
|
||||
↓
|
||||
Text Splitter
|
||||
↓
|
||||
LLM Chain (resumo)
|
||||
↓
|
||||
Email (enviar resumo)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Templates Recomendados
|
||||
|
||||
```javascript
|
||||
// AI templates
|
||||
mcp__n8n__search_templates({
|
||||
searchMode: "by_task",
|
||||
task: "ai_automation"
|
||||
})
|
||||
|
||||
// Por keyword
|
||||
mcp__n8n__search_templates({
|
||||
searchMode: "keyword",
|
||||
query: "chatbot langchain openai"
|
||||
})
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Credenciais Necessárias
|
||||
|
||||
| Provider | Credencial | Node |
|
||||
|----------|------------|------|
|
||||
| OpenAI | API Key | lmChatOpenAi |
|
||||
| Anthropic | API Key | lmChatAnthropic |
|
||||
| Supabase | URL + Key | vectorStoreSupabase |
|
||||
| Pinecone | API Key | vectorStorePinecone |
|
||||
|
||||
---
|
||||
|
||||
## Boas Práticas
|
||||
|
||||
| Prática | Razão |
|
||||
|---------|-------|
|
||||
| System prompt claro | Define comportamento |
|
||||
| Temperatura baixa (0.1-0.3) | Respostas consistentes |
|
||||
| Memória limitada | Performance |
|
||||
| Retry on error | Resiliência |
|
||||
| Logs de conversas | Debug e melhoria |
|
||||
|
||||
---
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
| Problema | Solução |
|
||||
|----------|---------|
|
||||
| Respostas inconsistentes | Baixar temperatura |
|
||||
| Contexto perdido | Verificar memória |
|
||||
| RAG não encontra | Verificar embeddings |
|
||||
| Timeout | Aumentar limite |
|
||||
| Token limit | Resumir contexto |
|
||||
|
||||
---
|
||||
|
||||
*Skill v1.0 | Descomplicar®*
|
||||
|
||||
---
|
||||
|
||||
## Healing Log
|
||||
|
||||
Registo de erros conhecidos e como evitá-los. Lido automaticamente antes de executar.
|
||||
|
||||
```jsonl
|
||||
{"date":"","issue":"","fix":"","source":"user|auto"}
|
||||
```
|
||||
|
||||
*Adicionar nova linha após cada erro corrigido.*
|
||||
@@ -1,126 +0,0 @@
|
||||
---
|
||||
name: n8n-health
|
||||
description: Diagnóstico de conectividade e estado da instância n8n. Verificação de saúde do sistema.
|
||||
---
|
||||
|
||||
# /n8n-health - Diagnóstico n8n
|
||||
|
||||
Verificar conectividade e estado da instância n8n.
|
||||
|
||||
## Contexto NotebookLM
|
||||
|
||||
ANTES de executar, consultar notebooks para contexto especializado:
|
||||
|
||||
| Notebook | ID | Consultar quando |
|
||||
|----------|-----|-----------------|
|
||||
| n8n Deep Research | f2c809b8-1cb5-4dd0-aa7e-be2cfb6704d1 | Sempre |
|
||||
|
||||
```
|
||||
mcp__notebooklm__notebook_query({
|
||||
notebook_id: "f2c809b8-1cb5-4dd0-aa7e-be2cfb6704d1",
|
||||
query: "<adaptar ao contexto do pedido do utilizador>"
|
||||
})
|
||||
```
|
||||
|
||||
Integrar insights do NotebookLM nas recomendações e decisões.
|
||||
|
||||
---
|
||||
|
||||
## Uso
|
||||
|
||||
```
|
||||
/n8n-health # Status rápido
|
||||
/n8n-health verbose # Diagnóstico completo
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Instância
|
||||
|
||||
| Aspecto | Valor |
|
||||
|---------|-------|
|
||||
| URL | `https://automator.descomplicar.pt` |
|
||||
| MCP | `mcp__n8n__*` |
|
||||
|
||||
---
|
||||
|
||||
## Execução
|
||||
|
||||
### Status Rápido (default)
|
||||
|
||||
```
|
||||
1. mcp__n8n__n8n_health_check({ mode: "status" })
|
||||
2. Reportar: status, URL, versão, response time
|
||||
```
|
||||
|
||||
### Diagnóstico Completo (verbose)
|
||||
|
||||
```
|
||||
1. mcp__n8n__n8n_health_check({ mode: "diagnostic", verbose: true })
|
||||
2. Reportar: env vars, tool status, cache, erros
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Output Esperado
|
||||
|
||||
```
|
||||
n8n Health Check
|
||||
----------------
|
||||
Status: OK | ERRO
|
||||
URL: https://automator.descomplicar.pt
|
||||
MCP: 2.33.x
|
||||
Response: XXXms
|
||||
Workflows: XX activos
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Se Falhar
|
||||
|
||||
| Erro | Causa | Solução |
|
||||
|------|-------|---------|
|
||||
| Connection refused | n8n offline | Verificar servidor |
|
||||
| 401 Unauthorized | API key inválida | Regenerar no n8n |
|
||||
| Timeout | Rede lenta | Verificar latência |
|
||||
|
||||
### Diagnóstico Manual
|
||||
|
||||
```bash
|
||||
# Verificar se n8n responde
|
||||
curl -I https://automator.descomplicar.pt
|
||||
|
||||
# Verificar API
|
||||
curl -H "X-N8N-API-KEY: $KEY" https://automator.descomplicar.pt/api/v1/workflows
|
||||
|
||||
# Logs MCP
|
||||
~/.claude/logs/mcp-n8n.log
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Skills Relacionadas
|
||||
|
||||
| Skill | Quando Usar |
|
||||
|-------|-------------|
|
||||
| `/n8n-webhook` | Criar webhooks |
|
||||
| `/n8n-schedule` | Automações cron |
|
||||
| `/n8n-sync` | Sincronização dados |
|
||||
| `/n8n-notify` | Alertas |
|
||||
| `/n8n-chatbot` | AI/Chatbots |
|
||||
|
||||
---
|
||||
|
||||
*Skill v1.0 | Descomplicar®*
|
||||
|
||||
---
|
||||
|
||||
## Healing Log
|
||||
|
||||
Registo de erros conhecidos e como evitá-los. Lido automaticamente antes de executar.
|
||||
|
||||
```jsonl
|
||||
{"date":"","issue":"","fix":"","source":"user|auto"}
|
||||
```
|
||||
|
||||
*Adicionar nova linha após cada erro corrigido.*
|
||||
@@ -1,246 +0,0 @@
|
||||
---
|
||||
name: n8n-notify
|
||||
description: Criação de sistemas de notificações e alertas n8n via Slack, email e SMS.
|
||||
disable-model-invocation: true
|
||||
---
|
||||
|
||||
# /n8n-notify - Notificações e Alertas n8n
|
||||
|
||||
Criar sistemas de alertas via Slack, email, SMS.
|
||||
|
||||
---
|
||||
|
||||
## Uso
|
||||
|
||||
```
|
||||
/n8n-notify create <descrição> # Criar sistema de alertas
|
||||
/n8n-notify slack <mensagem> # Quick Slack notification
|
||||
/n8n-notify email <para> <assunto> # Quick email
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Workflow Obrigatório
|
||||
|
||||
```
|
||||
1. Health check → mcp__n8n__n8n_health_check()
|
||||
2. Pesquisar template → mcp__n8n__search_templates({ query: "notification" })
|
||||
3. Se template OK → mcp__n8n__n8n_deploy_template()
|
||||
4. Se criar do zero → Seguir fluxo abaixo
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Canais Disponíveis
|
||||
|
||||
| Canal | Node | Uso |
|
||||
|-------|------|-----|
|
||||
| Slack | `nodes-base.slack` | Notificações equipa |
|
||||
| Email | `nodes-base.emailSend` | Alertas formais |
|
||||
| Telegram | `nodes-base.telegram` | Alertas mobile |
|
||||
| Discord | `nodes-base.discord` | Comunidades |
|
||||
| SMS | `nodes-base.twilio` | Alertas críticos |
|
||||
|
||||
---
|
||||
|
||||
## Slack
|
||||
|
||||
### Documentação
|
||||
|
||||
```javascript
|
||||
mcp__n8n__get_node({
|
||||
nodeType: "nodes-base.slack",
|
||||
detail: "standard",
|
||||
includeExamples: true
|
||||
})
|
||||
```
|
||||
|
||||
### Configuração
|
||||
|
||||
```javascript
|
||||
mcp__n8n__validate_node({
|
||||
nodeType: "nodes-base.slack",
|
||||
config: {
|
||||
resource: "message",
|
||||
operation: "post",
|
||||
channel: "#alertas",
|
||||
text: "Mensagem de alerta"
|
||||
},
|
||||
mode: "minimal"
|
||||
})
|
||||
```
|
||||
|
||||
### Mensagem Formatada (Blocks)
|
||||
|
||||
```javascript
|
||||
{
|
||||
blocksUi: {
|
||||
blocksValues: [
|
||||
{
|
||||
type: "header",
|
||||
text: { type: "plain_text", text: "Alerta" }
|
||||
},
|
||||
{
|
||||
type: "section",
|
||||
text: { type: "mrkdwn", text: "*Detalhes:*\n{{ $json.message }}" }
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Email
|
||||
|
||||
### Configuração
|
||||
|
||||
```javascript
|
||||
mcp__n8n__validate_node({
|
||||
nodeType: "nodes-base.emailSend",
|
||||
config: {
|
||||
fromEmail: "alertas@descomplicar.pt",
|
||||
toEmail: "emanuel@descomplicar.pt",
|
||||
subject: "Alerta: {{ $json.title }}",
|
||||
text: "{{ $json.message }}"
|
||||
},
|
||||
mode: "minimal"
|
||||
})
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Padrões Comuns
|
||||
|
||||
### Webhook → Slack
|
||||
|
||||
```
|
||||
Webhook (evento externo)
|
||||
↓
|
||||
Set (formatar)
|
||||
↓
|
||||
Slack (enviar)
|
||||
```
|
||||
|
||||
### Monitor → Multi-canal
|
||||
|
||||
```
|
||||
Schedule (cada 5min)
|
||||
↓
|
||||
HTTP Request (check health)
|
||||
↓
|
||||
IF (erro?)
|
||||
↓ TRUE
|
||||
Slack + Email (alertar)
|
||||
```
|
||||
|
||||
### Error Handler
|
||||
|
||||
```
|
||||
Qualquer workflow
|
||||
↓ (erro)
|
||||
Error Trigger
|
||||
↓
|
||||
Slack (alertar erro)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Níveis de Alerta
|
||||
|
||||
| Nível | Canal | Quando |
|
||||
|-------|-------|--------|
|
||||
| Info | Slack | Eventos normais |
|
||||
| Warning | Slack + Email | Atenção necessária |
|
||||
| Critical | Todos + SMS | Acção imediata |
|
||||
|
||||
### Implementação
|
||||
|
||||
```
|
||||
IF (severity = "critical")
|
||||
↓ TRUE
|
||||
Slack + Email + SMS
|
||||
↓ FALSE
|
||||
IF (severity = "warning")
|
||||
↓ TRUE
|
||||
Slack + Email
|
||||
↓ FALSE
|
||||
Slack
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Exemplos
|
||||
|
||||
### Alerta de Servidor Down
|
||||
|
||||
```
|
||||
Schedule (5min)
|
||||
↓
|
||||
HTTP Request (ping servidor)
|
||||
↓
|
||||
IF (falhou?)
|
||||
↓ TRUE
|
||||
Slack (#infra)
|
||||
Email (admin)
|
||||
```
|
||||
|
||||
### Novo Lead
|
||||
|
||||
```
|
||||
Webhook (lead criado)
|
||||
↓
|
||||
Set (formatar)
|
||||
↓
|
||||
Slack (#vendas)
|
||||
```
|
||||
|
||||
### Factura Vencida
|
||||
|
||||
```
|
||||
Schedule (diário 9h)
|
||||
↓
|
||||
HTTP Request (facturas vencidas)
|
||||
↓
|
||||
Loop (cada factura)
|
||||
↓
|
||||
Email (cliente)
|
||||
Slack (#contabilidade)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Templates
|
||||
|
||||
```javascript
|
||||
mcp__n8n__search_templates({
|
||||
searchMode: "keyword",
|
||||
query: "slack notification alert"
|
||||
})
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
| Problema | Solução |
|
||||
|----------|---------|
|
||||
| Slack não envia | Verificar token e canal |
|
||||
| Email em spam | Configurar SPF/DKIM |
|
||||
| Rate limited | Agrupar notificações |
|
||||
|
||||
---
|
||||
|
||||
*Skill v1.0 | Descomplicar®*
|
||||
|
||||
---
|
||||
|
||||
## Healing Log
|
||||
|
||||
Registo de erros conhecidos e como evitá-los. Lido automaticamente antes de executar.
|
||||
|
||||
```jsonl
|
||||
{"date":"","issue":"","fix":"","source":"user|auto"}
|
||||
```
|
||||
|
||||
*Adicionar nova linha após cada erro corrigido.*
|
||||
@@ -1,181 +0,0 @@
|
||||
---
|
||||
name: n8n-schedule
|
||||
description: Criação de workflows n8n com execução agendada via cron para automações recorrentes.
|
||||
disable-model-invocation: true
|
||||
---
|
||||
|
||||
# /n8n-schedule - Automações Agendadas n8n
|
||||
|
||||
Criar workflows com execução agendada (cron).
|
||||
|
||||
---
|
||||
|
||||
## Uso
|
||||
|
||||
```
|
||||
/n8n-schedule create <descrição> # Criar automação agendada
|
||||
/n8n-schedule list # Listar agendamentos
|
||||
/n8n-schedule disable <id> # Desactivar
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Workflow Obrigatório
|
||||
|
||||
```
|
||||
1. Health check → mcp__n8n__n8n_health_check()
|
||||
2. Pesquisar template → mcp__n8n__search_templates({ task: "scheduling" })
|
||||
3. Se template OK → mcp__n8n__n8n_deploy_template()
|
||||
4. Se criar do zero → Seguir fluxo abaixo
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Expressões Cron Comuns
|
||||
|
||||
| Expressão | Descrição |
|
||||
|-----------|-----------|
|
||||
| `0 9 * * *` | Diário às 9h |
|
||||
| `0 9 * * 1-5` | Seg-Sex às 9h |
|
||||
| `0 */2 * * *` | A cada 2 horas |
|
||||
| `*/15 * * * *` | A cada 15 minutos |
|
||||
| `0 0 1 * *` | Dia 1 de cada mês |
|
||||
| `0 3 * * 0` | Domingos às 3h |
|
||||
|
||||
### Formato
|
||||
|
||||
```
|
||||
┌───────── minuto (0-59)
|
||||
│ ┌─────── hora (0-23)
|
||||
│ │ ┌───── dia mês (1-31)
|
||||
│ │ │ ┌─── mês (1-12)
|
||||
│ │ │ │ ┌─ dia semana (0-6)
|
||||
* * * * *
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Configuração Schedule Trigger
|
||||
|
||||
```javascript
|
||||
mcp__n8n__validate_node({
|
||||
nodeType: "nodes-base.scheduleTrigger",
|
||||
config: {
|
||||
rule: {
|
||||
interval: [{
|
||||
field: "cronExpression",
|
||||
expression: "0 9 * * 1-5"
|
||||
}]
|
||||
}
|
||||
},
|
||||
mode: "minimal"
|
||||
})
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Timezone
|
||||
|
||||
```javascript
|
||||
{
|
||||
options: {
|
||||
timezone: "Europe/Lisbon"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Exemplos
|
||||
|
||||
### Relatório Diário
|
||||
|
||||
```
|
||||
Schedule (0 9 * * 1-5)
|
||||
↓
|
||||
PostgreSQL (query)
|
||||
↓
|
||||
Set (formatar)
|
||||
↓
|
||||
Email (enviar)
|
||||
```
|
||||
|
||||
### Backup Semanal
|
||||
|
||||
```
|
||||
Schedule (0 3 * * 0)
|
||||
↓
|
||||
SSH (backup)
|
||||
↓
|
||||
IF (sucesso?)
|
||||
↓
|
||||
Slack (confirmar/alertar)
|
||||
```
|
||||
|
||||
### Limpeza de Logs
|
||||
|
||||
```
|
||||
Schedule (0 2 * * *)
|
||||
↓
|
||||
SSH (limpar)
|
||||
↓
|
||||
Slack (reportar)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Gestão
|
||||
|
||||
### Desactivar
|
||||
|
||||
```javascript
|
||||
mcp__n8n__n8n_update_partial_workflow({
|
||||
id: "wf-xxx",
|
||||
operations: [{ type: "deactivateWorkflow" }]
|
||||
})
|
||||
```
|
||||
|
||||
### Reactivar
|
||||
|
||||
```javascript
|
||||
mcp__n8n__n8n_update_partial_workflow({
|
||||
id: "wf-xxx",
|
||||
operations: [{ type: "activateWorkflow" }]
|
||||
})
|
||||
```
|
||||
|
||||
### Ver Execuções
|
||||
|
||||
```javascript
|
||||
mcp__n8n__n8n_executions({
|
||||
workflowId: "wf-xxx",
|
||||
limit: 10,
|
||||
status: "all"
|
||||
})
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
| Problema | Solução |
|
||||
|----------|---------|
|
||||
| Não executa | Verificar workflow activo |
|
||||
| Hora errada | Verificar timezone |
|
||||
| Duplicado | Verificar múltiplos triggers |
|
||||
|
||||
---
|
||||
|
||||
*Skill v1.0 | Descomplicar®*
|
||||
|
||||
---
|
||||
|
||||
## Healing Log
|
||||
|
||||
Registo de erros conhecidos e como evitá-los. Lido automaticamente antes de executar.
|
||||
|
||||
```jsonl
|
||||
{"date":"","issue":"","fix":"","source":"user|auto"}
|
||||
```
|
||||
|
||||
*Adicionar nova linha após cada erro corrigido.*
|
||||
@@ -1,180 +0,0 @@
|
||||
---
|
||||
name: n8n-sync
|
||||
description: Sincronização de dados entre sistemas via workflows n8n. Mantém dados consistentes entre plataformas.
|
||||
disable-model-invocation: true
|
||||
---
|
||||
|
||||
# /n8n-sync - Sincronização de Dados n8n
|
||||
|
||||
Manter dados sincronizados entre sistemas.
|
||||
|
||||
---
|
||||
|
||||
## Uso
|
||||
|
||||
```
|
||||
/n8n-sync create <origem> <destino> # Criar sync
|
||||
/n8n-sync list # Listar syncs
|
||||
/n8n-sync status <workflow_id> # Ver estado
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Workflow Obrigatório
|
||||
|
||||
```
|
||||
1. Health check → mcp__n8n__n8n_health_check()
|
||||
2. Pesquisar template → mcp__n8n__search_templates({ task: "data_sync" })
|
||||
3. Se template OK → mcp__n8n__n8n_deploy_template()
|
||||
4. Se criar do zero → Seguir fluxo abaixo
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Padrões de Sync
|
||||
|
||||
### One-Way (Unidireccional)
|
||||
|
||||
```
|
||||
Origem → Transform → Destino
|
||||
```
|
||||
|
||||
### Two-Way (Bidireccional)
|
||||
|
||||
```
|
||||
A ←→ B (com resolução de conflitos)
|
||||
```
|
||||
|
||||
### Hub-and-Spoke
|
||||
|
||||
```
|
||||
A ↔ HUB ↔ B
|
||||
↕
|
||||
C
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Nodes por Sistema
|
||||
|
||||
### APIs/CRM
|
||||
|
||||
| Node | Sistema |
|
||||
|------|---------|
|
||||
| `nodes-base.httpRequest` | APIs genéricas |
|
||||
| `nodes-base.webhook` | Receber dados |
|
||||
|
||||
### Bases de Dados
|
||||
|
||||
| Node | Sistema |
|
||||
|------|---------|
|
||||
| `nodes-base.postgres` | PostgreSQL |
|
||||
| `nodes-base.mySql` | MySQL |
|
||||
| `nodes-base.mongoDb` | MongoDB |
|
||||
|
||||
### Ficheiros
|
||||
|
||||
| Node | Sistema |
|
||||
|------|---------|
|
||||
| `nodes-base.googleSheets` | Google Sheets |
|
||||
| `nodes-base.spreadsheetFile` | Excel/CSV |
|
||||
| `nodes-base.ftp` | FTP/SFTP |
|
||||
|
||||
---
|
||||
|
||||
## Exemplo: CRM → Sheets
|
||||
|
||||
```
|
||||
Schedule (horário)
|
||||
↓
|
||||
HTTP Request (GET leads)
|
||||
↓
|
||||
IF (há dados?)
|
||||
↓
|
||||
Set (mapear campos)
|
||||
↓
|
||||
Google Sheets (append)
|
||||
↓
|
||||
Slack (confirmar)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Estratégias
|
||||
|
||||
| Estratégia | Uso |
|
||||
|------------|-----|
|
||||
| Full Sync | Apagar tudo + inserir tudo |
|
||||
| Incremental | Apenas modificados (updated_at) |
|
||||
| Delta | Comparar hashes |
|
||||
|
||||
---
|
||||
|
||||
## Upsert Pattern
|
||||
|
||||
```javascript
|
||||
{
|
||||
nodeType: "nodes-base.postgres",
|
||||
config: {
|
||||
operation: "upsert",
|
||||
table: "clientes",
|
||||
columns: "email,nome,empresa",
|
||||
conflictColumns: "email"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Gestão de Erros
|
||||
|
||||
### Retry
|
||||
|
||||
```javascript
|
||||
{
|
||||
options: {
|
||||
retry: {
|
||||
maxRetries: 3,
|
||||
retryInterval: 1000
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Dead Letter Queue
|
||||
|
||||
```
|
||||
Operação
|
||||
↓ (erro)
|
||||
Error Trigger
|
||||
↓
|
||||
BD (guardar erro)
|
||||
↓
|
||||
Slack (alertar)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
| Problema | Solução |
|
||||
|----------|---------|
|
||||
| Duplicados | Usar upsert |
|
||||
| Timeout | Batches menores |
|
||||
| Rate limit | Adicionar delays |
|
||||
|
||||
---
|
||||
|
||||
*Skill v1.0 | Descomplicar®*
|
||||
|
||||
---
|
||||
|
||||
## Healing Log
|
||||
|
||||
Registo de erros conhecidos e como evitá-los. Lido automaticamente antes de executar.
|
||||
|
||||
```jsonl
|
||||
{"date":"","issue":"","fix":"","source":"user|auto"}
|
||||
```
|
||||
|
||||
*Adicionar nova linha após cada erro corrigido.*
|
||||
@@ -1,172 +0,0 @@
|
||||
---
|
||||
name: n8n-webhook
|
||||
description: Criação e gestão de webhooks n8n para receber dados de sistemas externos.
|
||||
---
|
||||
|
||||
# /n8n-webhook - Webhooks n8n
|
||||
|
||||
Criar e gerir webhooks para receber dados externos.
|
||||
|
||||
---
|
||||
|
||||
## Uso
|
||||
|
||||
```
|
||||
/n8n-webhook create <descrição> # Criar novo webhook
|
||||
/n8n-webhook list # Listar webhooks existentes
|
||||
/n8n-webhook test <workflow_id> # Testar webhook
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Workflow Obrigatório
|
||||
|
||||
```
|
||||
1. Health check → mcp__n8n__n8n_health_check()
|
||||
2. Pesquisar template → mcp__n8n__search_templates({ query: "webhook" })
|
||||
3. Se template OK → mcp__n8n__n8n_deploy_template()
|
||||
4. Se criar do zero → Seguir fluxo abaixo
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Criar Webhook do Zero
|
||||
|
||||
### Passo 1: Documentação do Node
|
||||
|
||||
```javascript
|
||||
mcp__n8n__get_node({
|
||||
nodeType: "nodes-base.webhook",
|
||||
detail: "standard",
|
||||
includeExamples: true
|
||||
})
|
||||
```
|
||||
|
||||
### Passo 2: Validar Configuração
|
||||
|
||||
```javascript
|
||||
mcp__n8n__validate_node({
|
||||
nodeType: "nodes-base.webhook",
|
||||
config: {
|
||||
httpMethod: "POST",
|
||||
path: "meu-webhook",
|
||||
responseMode: "onReceived"
|
||||
},
|
||||
mode: "minimal"
|
||||
})
|
||||
```
|
||||
|
||||
### Passo 3: Nodes de Processamento
|
||||
|
||||
| Node | Uso |
|
||||
|------|-----|
|
||||
| `nodes-base.set` | Transformar dados |
|
||||
| `nodes-base.if` | Condicionais |
|
||||
| `nodes-base.code` | JavaScript custom |
|
||||
| `nodes-base.httpRequest` | Chamar APIs |
|
||||
|
||||
### Passo 4: Deploy
|
||||
|
||||
```javascript
|
||||
mcp__n8n__n8n_create_workflow({
|
||||
name: "Webhook - Descrição",
|
||||
nodes: [...],
|
||||
connections: {...},
|
||||
active: true
|
||||
})
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Configurações Webhook
|
||||
|
||||
| Parâmetro | Opções | Default |
|
||||
|-----------|--------|---------|
|
||||
| `httpMethod` | GET, POST, PUT, DELETE | POST |
|
||||
| `path` | String única | (obrigatório) |
|
||||
| `authentication` | none, basicAuth, headerAuth | none |
|
||||
| `responseMode` | onReceived, lastNode | onReceived |
|
||||
|
||||
---
|
||||
|
||||
## URL do Webhook
|
||||
|
||||
Após deploy:
|
||||
```
|
||||
https://automator.descomplicar.pt/webhook/<path>
|
||||
```
|
||||
|
||||
Modo teste (workflow inactivo):
|
||||
```
|
||||
https://automator.descomplicar.pt/webhook-test/<path>
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Exemplos
|
||||
|
||||
### Webhook → Slack
|
||||
|
||||
```
|
||||
Webhook (POST /notify)
|
||||
↓
|
||||
Set (formatar)
|
||||
↓
|
||||
Slack (enviar)
|
||||
```
|
||||
|
||||
### Webhook → CRM
|
||||
|
||||
```
|
||||
Webhook (POST /lead)
|
||||
↓
|
||||
HTTP Request (criar no Desk)
|
||||
↓
|
||||
Email (notificar)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Testar
|
||||
|
||||
```javascript
|
||||
mcp__n8n__n8n_test_workflow({
|
||||
workflowId: "wf-xxx",
|
||||
inputData: {
|
||||
body: { "test": "data" },
|
||||
headers: { "Content-Type": "application/json" }
|
||||
}
|
||||
})
|
||||
```
|
||||
|
||||
```bash
|
||||
curl -X POST https://automator.descomplicar.pt/webhook/meu-webhook \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{"test": "data"}'
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
| Problema | Solução |
|
||||
|----------|---------|
|
||||
| 404 Not Found | Workflow não está activo |
|
||||
| 401 Unauthorized | Verificar autenticação |
|
||||
| Dados não chegam | Verificar responseMode |
|
||||
|
||||
---
|
||||
|
||||
*Skill v1.0 | Descomplicar®*
|
||||
|
||||
---
|
||||
|
||||
## Healing Log
|
||||
|
||||
Registo de erros conhecidos e como evitá-los. Lido automaticamente antes de executar.
|
||||
|
||||
```jsonl
|
||||
{"date":"","issue":"","fix":"","source":"user|auto"}
|
||||
```
|
||||
|
||||
*Adicionar nova linha após cada erro corrigido.*
|
||||
@@ -0,0 +1,270 @@
|
||||
---
|
||||
name: n8n
|
||||
description: Meta-skill n8n para criação e gestão de workflows na instância automator.descomplicar.pt. Cobre health check, webhooks, schedule (cron), sync de dados, notify (Slack/email/SMS) e chatbots/AI agents (LangChain/RAG). Triggers — n8n, workflow, automação, webhook, schedule, cron, sync, notify, alerta, slack, chatbot, ai agent, langchain, rag, automator, health check n8n.
|
||||
---
|
||||
|
||||
# /n8n - Meta-skill n8n
|
||||
|
||||
Skill unificada para a instância n8n Descomplicar (`https://automator.descomplicar.pt`, MCP `mcp__n8n__*`). Substitui as antigas n8n-chatbot, n8n-health, n8n-notify, n8n-schedule, n8n-sync, n8n-webhook.
|
||||
|
||||
## Contexto NotebookLM (sempre antes de executar)
|
||||
|
||||
| Notebook | ID |
|
||||
|----------|-----|
|
||||
| n8n Deep Research | `f2c809b8-1cb5-4dd0-aa7e-be2cfb6704d1` |
|
||||
|
||||
```
|
||||
mcp__notebooklm__notebook_query({ notebook_id: "f2c809b8-1cb5-4dd0-aa7e-be2cfb6704d1", query: "<adaptar ao pedido>" })
|
||||
```
|
||||
|
||||
## Workflow obrigatório (qualquer criação)
|
||||
|
||||
```
|
||||
1. mcp__n8n__n8n_health_check()
|
||||
2. mcp__n8n__search_templates({ task: "<webhook|scheduling|data_sync|notification|ai_automation>" })
|
||||
3. Se template adequado -> mcp__n8n__n8n_deploy_template()
|
||||
4. Caso contrário, criar do zero seguindo a secção apropriada abaixo
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 1. Health (diagnóstico)
|
||||
|
||||
```
|
||||
/n8n health # status rápido
|
||||
/n8n health verbose # diagnóstico completo
|
||||
```
|
||||
|
||||
```js
|
||||
mcp__n8n__n8n_health_check({ mode: "status" })
|
||||
mcp__n8n__n8n_health_check({ mode: "diagnostic", verbose: true })
|
||||
```
|
||||
|
||||
Output esperado: status (OK/ERRO), URL, versão MCP, response time, workflows activos.
|
||||
|
||||
Erros comuns: Connection refused (n8n offline), 401 (API key inválida — regenerar), timeout (rede). Diagnóstico manual:
|
||||
```bash
|
||||
curl -I https://automator.descomplicar.pt
|
||||
curl -H "X-N8N-API-KEY: $KEY" https://automator.descomplicar.pt/api/v1/workflows
|
||||
tail ~/.claude/logs/mcp-n8n.log
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 2. Webhook
|
||||
|
||||
Receber dados de sistemas externos.
|
||||
|
||||
```
|
||||
/n8n webhook create <descrição>
|
||||
/n8n webhook list
|
||||
/n8n webhook test <workflow_id>
|
||||
```
|
||||
|
||||
```js
|
||||
mcp__n8n__get_node({ nodeType: "nodes-base.webhook", detail: "standard", includeExamples: true })
|
||||
mcp__n8n__validate_node({ nodeType: "nodes-base.webhook", config: { httpMethod: "POST", path: "meu-webhook", responseMode: "onReceived" }, mode: "minimal" })
|
||||
mcp__n8n__n8n_create_workflow({ name: "Webhook - X", nodes: [...], connections: {...}, active: true })
|
||||
```
|
||||
|
||||
Parâmetros: `httpMethod` (GET/POST/PUT/DELETE, default POST), `path` (obrigatório), `authentication` (none/basicAuth/headerAuth), `responseMode` (onReceived/lastNode).
|
||||
|
||||
URLs: produção `https://automator.descomplicar.pt/webhook/<path>` | teste `https://automator.descomplicar.pt/webhook-test/<path>`.
|
||||
|
||||
Nodes processamento: `nodes-base.set`, `nodes-base.if`, `nodes-base.code`, `nodes-base.httpRequest`.
|
||||
|
||||
Teste:
|
||||
```js
|
||||
mcp__n8n__n8n_test_workflow({ workflowId: "wf-xxx", inputData: { body: {test:"data"}, headers: {"Content-Type":"application/json"} } })
|
||||
```
|
||||
```bash
|
||||
curl -X POST https://automator.descomplicar.pt/webhook/meu-webhook -H "Content-Type: application/json" -d '{"test":"data"}'
|
||||
```
|
||||
|
||||
Troubleshooting: 404 (workflow não activo), 401 (auth), dados não chegam (responseMode).
|
||||
|
||||
---
|
||||
|
||||
## 3. Schedule (cron)
|
||||
|
||||
Workflows com execução agendada.
|
||||
|
||||
```
|
||||
/n8n schedule create <descrição>
|
||||
/n8n schedule list
|
||||
/n8n schedule disable <id>
|
||||
```
|
||||
|
||||
Cron comuns: `0 9 * * *` (diário 9h), `0 9 * * 1-5` (Seg-Sex 9h), `0 */2 * * *` (cada 2h), `*/15 * * * *` (15min), `0 0 1 * *` (dia 1), `0 3 * * 0` (domingos 3h).
|
||||
|
||||
```js
|
||||
mcp__n8n__validate_node({
|
||||
nodeType: "nodes-base.scheduleTrigger",
|
||||
config: { rule: { interval: [{ field: "cronExpression", expression: "0 9 * * 1-5" }] }, options: { timezone: "Europe/Lisbon" } },
|
||||
mode: "minimal"
|
||||
})
|
||||
```
|
||||
|
||||
Gestão:
|
||||
```js
|
||||
mcp__n8n__n8n_update_partial_workflow({ id: "wf-xxx", operations: [{ type: "deactivateWorkflow" }] })
|
||||
mcp__n8n__n8n_update_partial_workflow({ id: "wf-xxx", operations: [{ type: "activateWorkflow" }] })
|
||||
mcp__n8n__n8n_executions({ workflowId: "wf-xxx", limit: 10, status: "all" })
|
||||
```
|
||||
|
||||
Exemplos: relatório diário (Schedule -> Postgres -> Set -> Email), backup semanal (Schedule -> SSH -> IF -> Slack), limpeza logs.
|
||||
|
||||
Troubleshooting: não executa (workflow inactivo), hora errada (timezone), duplicado (múltiplos triggers).
|
||||
|
||||
---
|
||||
|
||||
## 4. Sync (sincronização de dados)
|
||||
|
||||
```
|
||||
/n8n sync create <origem> <destino>
|
||||
/n8n sync list
|
||||
/n8n sync status <workflow_id>
|
||||
```
|
||||
|
||||
Padrões: One-Way (origem -> transform -> destino), Two-Way (com resolução conflitos), Hub-and-Spoke.
|
||||
|
||||
Nodes:
|
||||
- APIs: `nodes-base.httpRequest`, `nodes-base.webhook`
|
||||
- BD: `nodes-base.postgres`, `nodes-base.mySql`, `nodes-base.mongoDb`
|
||||
- Ficheiros: `nodes-base.googleSheets`, `nodes-base.spreadsheetFile`, `nodes-base.ftp`
|
||||
|
||||
Estratégias: Full Sync, Incremental (updated_at), Delta (hashes).
|
||||
|
||||
Upsert:
|
||||
```js
|
||||
{ nodeType: "nodes-base.postgres", config: { operation: "upsert", table: "clientes", columns: "email,nome,empresa", conflictColumns: "email" } }
|
||||
```
|
||||
|
||||
Erros: retry (`{ options: { retry: { maxRetries: 3, retryInterval: 1000 } } }`), Dead Letter Queue (Error Trigger -> BD -> Slack).
|
||||
|
||||
Exemplo CRM->Sheets: Schedule -> HTTP GET leads -> IF -> Set -> Google Sheets append -> Slack.
|
||||
|
||||
Troubleshooting: duplicados (upsert), timeout (batches menores), rate limit (delays).
|
||||
|
||||
---
|
||||
|
||||
## 5. Notify (alertas)
|
||||
|
||||
```
|
||||
/n8n notify create <descrição>
|
||||
/n8n notify slack <mensagem>
|
||||
/n8n notify email <para> <assunto>
|
||||
```
|
||||
|
||||
Canais: Slack (`nodes-base.slack`), Email (`nodes-base.emailSend`), Telegram, Discord, SMS Twilio.
|
||||
|
||||
Slack:
|
||||
```js
|
||||
mcp__n8n__validate_node({
|
||||
nodeType: "nodes-base.slack",
|
||||
config: { resource: "message", operation: "post", channel: "#alertas", text: "..." },
|
||||
mode: "minimal"
|
||||
})
|
||||
```
|
||||
|
||||
Mensagem formatada (Blocks): header + section com `mrkdwn` e `{{ $json.message }}`.
|
||||
|
||||
Email:
|
||||
```js
|
||||
mcp__n8n__validate_node({
|
||||
nodeType: "nodes-base.emailSend",
|
||||
config: { fromEmail: "alertas@descomplicar.pt", toEmail: "emanuel@descomplicar.pt", subject: "Alerta: {{ $json.title }}", text: "{{ $json.message }}" },
|
||||
mode: "minimal"
|
||||
})
|
||||
```
|
||||
|
||||
Padrões: Webhook->Slack, Monitor->Multi-canal (Schedule -> HTTP -> IF -> Slack+Email), Error Handler (Error Trigger -> Slack).
|
||||
|
||||
Níveis: Info (Slack), Warning (Slack+Email), Critical (Slack+Email+SMS) — implementar com IF aninhado por `severity`.
|
||||
|
||||
Troubleshooting: Slack não envia (token/canal), email em spam (SPF/DKIM), rate limited (agrupar).
|
||||
|
||||
---
|
||||
|
||||
## 6. Chatbot / AI Agents (LangChain)
|
||||
|
||||
```
|
||||
/n8n chatbot create <descrição>
|
||||
/n8n chatbot agent <tipo>
|
||||
/n8n chatbot rag <knowledge_base>
|
||||
```
|
||||
|
||||
### Nodes LangChain
|
||||
|
||||
Core: `@n8n/n8n-nodes-langchain.agent`, `chainLlm`, `chainRetrievalQa`.
|
||||
Modelos: `lmChatOpenAi`, `lmChatAnthropic`, `lmChatOllama`.
|
||||
Memória: `memoryBufferWindow`, `memoryPostgresChat`, `memoryRedisChat`.
|
||||
Tools: `toolCalculator`, `toolCode`, `toolHttpRequest`, `toolWorkflow`.
|
||||
Vector Stores: `vectorStoreSupabase`, `vectorStorePinecone`, `vectorStorePgVector`.
|
||||
|
||||
### Chatbot básico
|
||||
|
||||
```
|
||||
Webhook -> LLM Chat -> Memory Buffer -> Agent -> Resposta
|
||||
```
|
||||
|
||||
### RAG
|
||||
|
||||
```
|
||||
Documentos -> Embeddings -> Vector Store -> Query -> Retriever -> LLM
|
||||
```
|
||||
|
||||
```js
|
||||
mcp__n8n__validate_node({
|
||||
nodeType: "@n8n/n8n-nodes-langchain.vectorStoreSupabase",
|
||||
config: { mode: "insert", tableName: "documents", queryName: "match_documents" },
|
||||
mode: "minimal"
|
||||
})
|
||||
```
|
||||
|
||||
### AI Agent com tools
|
||||
|
||||
```js
|
||||
mcp__n8n__validate_node({
|
||||
nodeType: "@n8n/n8n-nodes-langchain.agent",
|
||||
config: { agentType: "conversationalAgent", systemMessage: "Tu és um assistente prestável...", options: { returnIntermediateSteps: true } },
|
||||
mode: "minimal"
|
||||
})
|
||||
```
|
||||
|
||||
### Exemplos práticos
|
||||
|
||||
- Suporte: Webhook -> Memory Postgres -> Vector Store -> Chain Retrieval QA -> Webhook Response.
|
||||
- Agent CRM: Webhook -> Agent (tools: pesquisar/criar lead/actualizar tarefa) -> Slack.
|
||||
- Resumo PDFs: Webhook -> PDF Extract -> Text Splitter -> LLM Chain -> Email.
|
||||
|
||||
### Credenciais
|
||||
|
||||
OpenAI/Anthropic (API Key), Supabase (URL+Key), Pinecone (API Key).
|
||||
|
||||
### Boas práticas
|
||||
|
||||
System prompt claro | temperatura 0.1-0.3 | memória limitada | retry on error | logs de conversas.
|
||||
|
||||
### Troubleshooting
|
||||
|
||||
Inconsistente (baixar temperatura), contexto perdido (memória), RAG vazio (embeddings), timeout (limite), token limit (resumir).
|
||||
|
||||
---
|
||||
|
||||
## Templates
|
||||
|
||||
```js
|
||||
mcp__n8n__search_templates({ searchMode: "by_task", task: "ai_automation" })
|
||||
mcp__n8n__search_templates({ searchMode: "keyword", query: "chatbot langchain openai" })
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
**Versão:** 2.0.0 (consolidação 6->1, 07-04-2026) | **Autor:** Descomplicar®
|
||||
|
||||
## Healing Log
|
||||
|
||||
```jsonl
|
||||
{"date":"","issue":"","fix":"","source":"user|auto"}
|
||||
```
|
||||
Reference in New Issue
Block a user