¿Qué hace Habilidad de Flujo de Trabajo n8n?
Construye, despliega y gestiona flujos de trabajo de n8n completamente a través de la API usando fragmentos de nodos preconstruidos y patrones probados en batalla.
Configuración
Antes del primer uso, completa los detalles de tu instancia a continuación. Obtén tu clave API desde n8n Configuración > API.
- URL:
https://TU_INSTANCIA.app.n8n.cloud - Clave API:
TU_CLAVE_API - ID del Proyecto:
TU_ID_DE_PROYECTO(opcional, para instancias con múltiples proyectos)
Credenciales
Asigna aquí tus alias de credenciales. Obtén los IDs desde GET /api/v1/credentials.
| Alias | Tipo de Credencial | ID | Nombre |
|---|---|---|---|
| gmail | gmailOAuth2 | ||
| sheets | googleSheetsOAuth2Api | ||
| slack | slackOAuth2Api | ||
| openai | openAiApi | ||
| anthropic | anthropicApi | ||
| telegram | telegramApi | ||
| notion | notionApi |
Añade filas según sea necesario. El campo name debe coincidir exactamente con el nombre que le diste a la credencial en tu instancia de n8n (Configuración > Credenciales). Los fragmentos de nodos en ./references/nodes/ usan credenciales placeholder — Claude reemplaza tus IDs de esta tabla al construir flujos de trabajo.
Inicio Rápido: Nuevo Flujo de Trabajo
- Revisa
./references/nodes/en busca de fragmentos de nodos preconstruidos. Cópialos, renómbralos y establece posiciones. - Construye el JSON (arreglo de nodos + objeto de conexiones).
- Escribe en
/tmp/<nombre>.json. - Ejecuta:
bash ./references/deploy.sh /tmp/<nombre>.json - Listo. El script maneja POST, transferencia de proyecto, verificación y actualización de índice.
Formato de Conexión
"Nombre de Origen": { "main": [[{"node": "Destino", "type": "main", "index": 0}]] }
- Ramificación (una fuente, múltiples destinos):
"main": [[{"node": "A", ...}, {"node": "B", ...}]] - Combinar entradas: la fuente A se conecta con
"index": 0, la fuente B con"index": 1 - Ramificación IF:
"main": [ [destinos verdaderos], [destinos falsos] ] - Subnodo de IA:
"ai_languageModel": [[{"node": "Nombre del Modelo", "type": "ai_languageModel", "index": 0}]] - Subnodo de herramienta de IA:
"ai_tool": [[{"node": "Nombre de la Herramienta", "type": "ai_tool", "index": 0}]]
Estructura JSON del Flujo de Trabajo
{
"name": "Nombre del Flujo de Trabajo",
"nodes": [...],
"connections": {...},
"settings": { "executionOrder": "v1", "callerPolicy": "any" }
}
- El cuerpo del POST NO debe incluir el campo
active(solo lectura, usa PATCH para activar) - Elimina todas las claves de configuración excepto:
executionOrder,callerPolicy,saveDataSuccessExecution,errorWorkflow(si existe) - Claves que DEBEN eliminarse antes de PUT:
binaryMode,availableInMCP,timeSavedMode
Puntos Finales de la API
POST /api/v1/workflows — crear
GET /api/v1/workflows/{id} — obtener (SIEMPRE antes de PUT)
PUT /api/v1/workflows/{id} — actualizar
PATCH /api/v1/workflows/{id} — activar/desactivar: { "active": true }
PUT /api/v1/workflows/{id}/transfer — mover a proyecto
GET /api/v1/executions/{id}?includeData=true — obtener datos de ejecución
GET /api/v1/credentials — listar todas las credenciales
Reglas
- GET antes de PUT — nunca modifiques desde caché, siempre obtén la versión actual primero
- Verificar después de PUT — obtén nuevamente y confirma que los cambios se aplicaron
- Las conexiones usan NOMBRES de nodos, nunca UUIDs
- Prefiere nodos nativos de la plataforma sobre HTTP Request (muestra los logotipos de la plataforma en la interfaz)
- Nodos de código con caracteres
!: escribe JS en/tmp/*.jsprimero, luego léelo de vuelta (el escape de cadenas en Python convierte!en\!) includeData=trueen las obtenciones de ejecución (sin ello,data.resultData.runDataes nulo)- Valores permitidos para
callerPolicy:any,none,workflowsFromAList,workflowsFromSameOwner
Sintaxis de Expresiones (cuerpo de HTTP Request)
- FUNCIONA:
={{ ({ key: value }) }}— objeto entre paréntesis, sin JSON.stringify - ROTO:
={{ JSON.stringify({...}) }}— causa "sintaxis inválida" - ROTO:
={{ }}incrustado dentro de un cuerpo JSON estático — no se evalúa - Referencia entre nodos:
$item(0).$node["NombreDelNodo"].json.campo
Biblioteca de Nodos
Los fragmentos de nodos preconstruidos se encuentran en ./references/nodes/. Cada archivo es un objeto JSON de nodo listo para usar.
Flujo de trabajo obligatorio:
- Antes de construir cualquier nodo, busca con glob
./references/nodes/*.jsonpara ver qué está disponible. - Si el tipo de nodo existe en la biblioteca, copia su JSON y personaliza (nombre, posición, parámetros). NO lo escribas desde cero.
- Si el tipo de nodo NO existe en la biblioteca, constrúyelo desde cero.
- Después de desplegar el flujo de trabajo, guarda cualquier nuevo tipo de nodo que hayas construido en la biblioteca como
./references/nodes/<nombre-del-nodo>.json.
Referencias Detalladas (cargar solo cuando sea necesario)
./references/patterns.md— patrones de reintento, estado persistente, dificultades con expresiones./references/rules.md— reglas de PUT/POST, lista blanca de configuraciones, convenciones de nomenclatura./references/node-types.md— referencia de parámetros para tipos de nodos comunes