Manual n8n: De Cero a Experto

Créditos:
* Solicitado por: Shuberth (mail@shub.sh)


Introducción a n8n: Conceptos Básicos y Visión General

n8n es una potente plataforma de automatización de flujos de trabajo diseñada para conectar diversas aplicaciones y servicios, permitiendo automatizar tareas repetitivas y complejas sin necesidad, en muchos casos, de conocimientos avanzados de programación. Se destaca por ser una herramienta flexible, personalizable y con un fuerte enfoque en la interoperabilidad a través de APIs.

¿Qué es n8n?

n8n (pronunciado "n-eight-n") se define como una herramienta de automatización de flujos de trabajo extensibles. Permite a los usuarios conectar diferentes aplicaciones y servicios para crear cadenas de acciones automatizadas. Sus características principales incluyen:


Ilustración: n8n como un hub central conectando diversas aplicaciones para la automatización.

Conceptos Clave


Ilustración: Representación visual de un flujo de trabajo básico en n8n: Disparador -> Acción 1 -> Acción 2.
* Nodo (Node): Representa una aplicación, servicio o una función específica dentro de un flujo de trabajo. Cada nodo realiza una tarea concreta (leer datos, enviar un email, actualizar una base de datos, etc.).
* Nodo Disparador (Trigger Node): Inicia la ejecución del flujo de trabajo. Puede ser un evento (ej. nuevo email recibido, formulario enviado), una programación horaria (cron), o una llamada manual (webhook).
* Nodo de Acción (Action Node): Ejecuta una tarea específica utilizando los datos recibidos del nodo anterior. n8n ofrece nodos para cientos de aplicaciones y servicios, así como nodos genéricos para lógica (IF, Switch), manipulación de datos, ejecución de código, llamadas HTTP, etc.


Ilustración: Diferencia conceptual entre un Nodo Disparador y un Nodo de Acción.
* Conexión (Connection): Líneas que unen los nodos, definiendo el flujo de datos y el orden de ejecución de las acciones.


Ilustración: Cómo los datos JSON fluyen y se transforman a través de los nodos en n8n.
* Credenciales (Credentials): Permiten a n8n autenticarse de forma segura con las diferentes aplicaciones y servicios utilizados en los flujos de trabajo.


Ilustración: n8n utilizando credenciales seguras para conectar con diversos servicios externos.
* Integraciones: n8n soporta oficialmente cientos de integraciones con aplicaciones populares (Google Sheets, Slack, Discord, OpenAI, bases de datos SQL, CRM, ERP, etc.) y su comunidad contribuye constantemente con nuevas integraciones.

Ventajas Frente a Otras Herramientas (Zapier, Make)

Casos de Uso Comunes

n8n es extremadamente versátil y se puede utilizar para:


Ilustración: Concepto de n8n sincronizando datos entre una base de datos, una hoja de cálculo y una aplicación en la nube.
* Notificaciones: Enviar alertas personalizadas a través de Slack, Discord, Email, SMS, etc., basadas en eventos específicos.
* Automatización del Hogar (Smart Home): Integrar y controlar dispositivos inteligentes.

Esta visión general sienta las bases para comprender el potencial de n8n. Las siguientes secciones del manual profundizarán en sus nodos, funcionalidades y ejemplos prácticos.

Parte 1: Resumen Rápido de n8n

Esta sección ofrece una visión general y concisa de n8n, ideal para entender rápidamente qué es, qué puede hacer y cómo empezar.

1. ¿Qué es n8n?

n8n es una plataforma de automatización de flujos de trabajo extensible y de código abierto (con opciones de autoalojamiento o en la nube). Permite conectar cientos de aplicaciones y servicios (más de 1047 integraciones confirmadas) para automatizar tareas repetitivas y complejas mediante una interfaz visual basada en nodos, aunque también permite código personalizado para mayor flexibilidad. Sus ventajas clave incluyen el control sobre los datos (especialmente si se autoaloja), una gran personalización y un coste potencialmente inferior a alternativas como Zapier o Make, de las que se diferencia principalmente por su naturaleza open-source y su capacidad para manejar flujos más complejos.

2. Conceptos Fundamentales (Resumen)

3. Visión General de Nodos y Funcionalidades Clave

n8n organiza sus nodos en categorías. Algunos nodos y funcionalidades esenciales incluyen:

4. Primeros Pasos (Resumen)


Ilustración: Comparativa visual entre n8n Cloud (gestionado, fácil configuración) y n8n Autoalojado (control total, personalizable).

5. ¿Por dónde seguir?

Este resumen cubre lo esencial. Para una comprensión profunda, ejemplos detallados, configuración avanzada, casos de uso complejos y dominio de todas las funcionalidades:

Parte 2: Guía Detallada

Bienvenido a la guía detallada de n8n. Esta sección profundiza en cada aspecto de la plataforma, desde sus fundamentos arquitectónicos hasta casos de uso avanzados y desarrollo personalizado. A diferencia del resumen rápido, aquí exploraremos cada concepto con ejemplos prácticos, explicaciones paso a paso y consideraciones importantes para que puedas dominar n8n y aplicarlo eficazmente en tus propios proyectos de automatización.

Capítulo 1: Fundamentos Profundos de n8n

Para utilizar n8n de manera efectiva y solucionar problemas complejos, es crucial comprender su arquitectura subyacente y los conceptos fundamentales que rigen su funcionamiento. Este capítulo sienta las bases para todo lo que sigue.

Arquitectura de n8n

n8n, aunque presenta una interfaz de usuario intuitiva, se compone de varios elementos que trabajan conjuntamente. Comprender estos componentes es especialmente importante si optas por autoalojar n8n.

Esta arquitectura modular permite a n8n ser flexible, desde una configuración simple en una sola máquina hasta despliegues escalables y de alta disponibilidad en entornos empresariales.

Flujos de Trabajo (Workflows): Creación, Edición, Gestión

Un flujo de trabajo es la representación visual de tu proceso automatizado. Es una secuencia de nodos conectados que definen las tareas a realizar y el flujo de datos entre ellas.

Nodos: Tipos, Configuración Detallada

Los nodos son los bloques de construcción fundamentales de cualquier flujo de trabajo en n8n.

Conexiones y Flujo de Datos (JSON, Expresiones, Mapeo)

Las conexiones entre nodos no solo definen el orden de ejecución, sino también cómo fluyen los datos.

Credenciales: Tipos, Creación, Gestión, Seguridad

Las credenciales almacenan de forma segura la información necesaria para que n8n se autentique con servicios de terceros.

Ejecuciones: Monitorización, Debugging, Logs

Una ejecución representa una única instancia de un flujo de trabajo que se ha disparado y ha corrido (o está corriendo).

Comprender estos fundamentos te permitirá no solo construir flujos de trabajo, sino también entender por qué funcionan (o no funcionan) y cómo optimizarlos y escalarlos eficazmente.

Capítulo 2: Instalación y Configuración

Ahora que comprendemos los fundamentos de n8n, el siguiente paso es ponerlo en marcha. Este capítulo cubre las diferentes formas de instalar y configurar n8n, desde la opción más sencilla en la nube hasta el autoalojamiento avanzado, junto con la configuración inicial esencial.

Opciones de Instalación

n8n ofrece flexibilidad en cómo puedes ejecutarlo:

Autoalojamiento: Métodos Detallados

Si eliges autoalojar, tienes varias opciones:


Ilustración: Concepto general de la instalación de n8n usando Docker.
* Persistencia: El volume - ~/.n8n:/home/node/.n8n es crucial. Mapea el directorio .n8n dentro del contenedor (donde n8n guarda sus datos) a un directorio en tu máquina host (~/.n8n en este ejemplo). Esto asegura que tus flujos de trabajo y credenciales persistan incluso si el contenedor se detiene y se reinicia.
* Actualizaciones: Para actualizar, generalmente ejecutas docker-compose pull n8n y luego docker-compose up -d.
* npm:
* Descripción: Instalar n8n directamente usando el gestor de paquetes de Node.js.
* Ventajas: Puede ser más simple si ya tienes Node.js y npm configurados y no quieres usar Docker.
* Desventajas: Gestionar las dependencias de Node.js puede ser más complejo, menos aislamiento que Docker, las actualizaciones pueden requerir más pasos manuales.
* Requisitos: Tener Node.js (versión LTS recomendada) y npm instalados.
* Proceso:
1. Instalar n8n globalmente: npm install n8n -g
2. Iniciar n8n: Simplemente ejecuta n8n en tu terminal.
3. Persistencia: Por defecto, n8n creará un directorio .n8n en tu directorio home (~/.n8n) para almacenar los datos.
* n8n AI Starter Kit (Docker):
* Descripción: Un paquete preconfigurado por n8n que utiliza Docker Compose para desplegar n8n junto con otras herramientas útiles para casos de uso de IA, como un LLM local (Ollama) y una base de datos vectorial (Qdrant).
* Ventajas: Configuración rápida para experimentar con las capacidades de IA de n8n sin depender completamente de APIs externas.
* Proceso: Clona el repositorio de GitHub (git clone https://github.com/n8n-io/self-hosted-ai-starter-kit.git), sigue las instrucciones del README.md para configurar las variables de entorno (en .env) y ejecuta docker compose up -d.
* Kubernetes (Avanzado):
* Descripción: Para despliegues a gran escala, de alta disponibilidad y con orquestación avanzada, puedes desplegar n8n en un clúster de Kubernetes usando Helm Charts proporcionados por la comunidad o configuraciones personalizadas.
* Ventajas: Máxima escalabilidad, resiliencia, gestión centralizada.
* Desventajas: Requiere experiencia significativa con Kubernetes.

Configuración Inicial Esencial

Independientemente del método de instalación (especialmente para autoalojamiento), hay varias variables de entorno y configuraciones importantes:

Verificación Post-Instalación

Una vez instalado y configurado n8n:

  1. Accede a la Interfaz: Abre la URL de tu instancia n8n en un navegador.
  2. Crea un Flujo Simple: Intenta crear un flujo de trabajo básico, por ejemplo, con un disparador Manual y un nodo Respond to Webhook. Ejecútalo manualmente para asegurarte de que el núcleo funciona.
  3. Prueba un Webhook: Crea un flujo con un disparador Webhook. Copia la URL de prueba y envíale una solicitud (usando curl o una herramienta como Postman). Verifica que la ejecución se registre en n8n.
  4. Configura y Prueba Credenciales: Intenta configurar una credencial para un servicio que uses (ej. Google Sheets si tienes una cuenta) y ejecuta un nodo simple que la utilice (ej. List Spreadsheets).
  5. Verifica la Zona Horaria: Crea un flujo con Cron y un nodo Code que devuelva {{ $now.toISO() }}. Ejecútalo y verifica que la hora refleje la zona horaria que configuraste.

Superar estos pasos confirma que tu instancia de n8n está correctamente instalada, configurada y lista para empezar a automatizar.

Capítulo 3: Explorando la Interfaz de Usuario (UI)

La interfaz de usuario de n8n es donde pasarás la mayor parte del tiempo diseñando, probando y gestionando tus flujos de trabajo. Aunque es intuitiva, conocer a fondo sus componentes y funcionalidades te permitirá trabajar de manera más eficiente.

Vista General del Dashboard

Al iniciar sesión en tu instancia de n8n (Cloud o autoalojada), lo primero que verás es el dashboard principal. Este actúa como tu centro de control.


Ilustración: Vista general del Editor UI de n8n, mostrando el lienzo, paneles y barras principales.

El Editor de Flujos de Trabajo (Canvas)

Esta es el área principal donde construyes tus automatizaciones.

Gestión de Nodos en el Lienzo


Ilustración: Detalle del panel lateral izquierdo, mostrando acceso a Flujos, Credenciales, Ejecuciones, Plantillas y Configuración.

Panel de Credenciales

Accesible desde el menú lateral izquierdo.

Panel de Ejecuciones

Accesible desde el menú lateral izquierdo.

Panel de Plantillas (Templates)

Accesible desde el menú lateral izquierdo.

Panel de Configuración (Settings)

Accesible desde el menú lateral izquierdo. Las opciones disponibles pueden variar dependiendo de si usas n8n Cloud o una instancia autoalojada, y si eres administrador.

Dominar la navegación y el uso eficiente de estos paneles y herramientas en la interfaz de usuario es clave para construir y mantener tus automatizaciones en n8n de forma productiva.

Capítulo 4: Categorías Principales de Nodos (según Interfaz)

Cuando comienzas a construir flujos de trabajo en n8n, notarás que al añadir un nuevo nodo, la interfaz te presenta varias categorías principales para ayudarte a encontrar lo que necesitas. Estas categorías agrupan los nodos según su función general. Comprender estas categorías te facilitará la navegación y la selección de las herramientas adecuadas para tus automatizaciones. Basándonos en la interfaz común y la documentación, exploremos estas categorías principales (anteriormente Capítulo 3, renumerado para coherencia):

1. Disparadores (Triggers / Add another trigger)

2. Acción en una App (Action in an app / Integrations)

3. Flujo (Flow)

4. Transformación de Datos (Data transformation)

5. Núcleo (Core)

6. IA Avanzada (Advanced AI)

7. Humano en el Bucle (Human in the loop / HITL)

Comprender estas categorías te da una visión estructurada de las capacidades de n8n y te ayuda a pensar en cómo combinar diferentes tipos de nodos para construir las automatizaciones que necesitas.

Capítulo 5: Nodos Principales (Core Nodes) en Detalle

Los Nodos Principales (Core Nodes) son la columna vertebral de la mayoría de los flujos de trabajo en n8n. A diferencia de los nodos de integración, no se conectan a un servicio externo específico (con la excepción notable del HTTP Request), sino que proporcionan funcionalidades esenciales para iniciar flujos, controlar la lógica, manipular datos y gestionar el flujo de ejecución. Dominar estos nodos es crucial para construir automatizaciones robustas y flexibles.

Disparadores (Triggers)

Los disparadores inician la ejecución de un flujo de trabajo.

Lógica y Control de Flujo

Estos nodos dirigen el camino que toman los datos a través del flujo.


Ilustración: Funcionamiento conceptual del nodo IF, dividiendo el flujo basado en una condición Verdadera o Falsa.
* Switch:
* Propósito: Divide el flujo en múltiples ramas basándose en el valor de un campo específico.
* Configuración:
* Field to Route By: La expresión que define el valor a evaluar (ej. {{ $json.priority }}).
* Routing Rules: Define reglas donde cada regla especifica un valor y una salida correspondiente. Si el campo coincide con el valor de una regla, el ítem se dirige a esa salida.
* Fallback Output: Una salida para los ítems que no coinciden con ninguna regla.
* Salida: Múltiples puntos de salida (0, 1, 2,... y Fallback).
* Caso de Uso: Manejar diferentes tipos de eventos o estados con acciones específicas para cada uno (ej. dirigir un ticket a diferentes equipos según su categoría), más eficiente que múltiples nodos IF anidados para el mismo campo.
* Merge:
* Propósito: Combina datos de diferentes ramas del flujo o controla cómo se agrupan los ítems.
* Configuración:
* Mode:
* Append: Simplemente concatena los ítems de todas las entradas en un solo array de salida.
* Pass-through: Espera a que lleguen datos de todas las entradas conectadas, pero solo pasa los datos de una entrada específica (definida por Source Input).
* Combine: Intenta emparejar ítems de diferentes entradas basándose en una clave (Key) y combina sus datos. Modos de combinación: Merge By Key (combina objetos JSON), Keep Key Matches (solo pasa ítems cuya clave existe en todas las entradas), Remove Key Matches (solo pasa ítems cuya clave NO existe en otras entradas).
* Wait for: All inputs (espera a que todas las ramas conectadas terminen) o Any input (procesa tan pronto como llega un ítem).
* Caso de Uso: Reunir resultados después de un IF o Switch, combinar datos enriquecidos desde diferentes fuentes, sincronizar ramas paralelas.


Ilustración: Funcionamiento conceptual del nodo Merge, combinando múltiples entradas en una salida única.
* Wait:
* Propósito: Pausa la ejecución del flujo durante un tiempo determinado o hasta una hora específica.
* Configuración: Define la duración (segundos, minutos, horas) o la hora exacta y la zona horaria.
* Caso de Uso: Esperar a que un sistema externo procese algo, introducir retrasos deliberados, esperar hasta un momento específico para continuar (ej. enviar un informe solo después de las 8 AM).
* No Operation, do nothing (NoOp):
* Propósito: Un nodo que no realiza ninguna acción. Es sorprendentemente útil.
* Configuración: Ninguna.
* Caso de Uso: Como marcador de posición, para terminar explícitamente una rama de un IF donde no se necesita acción, para organizar visualmente el flujo, como punto de entrada para un Merge.
* Execute Workflow:
* Propósito: Llama y ejecuta otro flujo de trabajo (sub-flujo) dentro del flujo actual.
* Configuración: Selecciona el flujo de trabajo a ejecutar. Los datos del nodo actual se pasan como entrada al disparador Start del sub-flujo.
* Salida: Los datos producidos por el nodo final del sub-flujo.
* Caso de Uso: Reutilizar lógica común en múltiples flujos, dividir flujos muy grandes en partes más manejables.


Ilustración: Funcionamiento conceptual del nodo Execute Workflow, mostrando un flujo principal que llama a un sub-flujo.
* Execute Command:
* Propósito: Ejecuta un comando de shell en el servidor donde se ejecuta n8n.
* Configuración: El comando a ejecutar.
* Salida: La salida estándar (stdout) y el error estándar (stderr) del comando.
* Caso de Uso: Interactuar con scripts locales, ejecutar herramientas de línea de comandos. ¡Usar con extrema precaución! Permite ejecutar cualquier comando, lo que puede ser un riesgo de seguridad significativo si el flujo puede ser disparado o influenciado por entradas externas.

Manipulación de Datos

Estos nodos permiten modificar, crear o reestructurar los datos que fluyen.

Comunicación Genérica

Utilidades Binarias

Estos nodos trabajan con datos binarios (archivos).

Dominar los Nodos Principales te proporciona las herramientas fundamentales para estructurar tus flujos, controlar su lógica, manipular datos de diversas formas e interactuar con el mundo exterior a través de HTTP. Son la base sobre la cual se construyen las integraciones más específicas.

Capítulo 6: Nodos de Integración Populares

n8n brilla por su vasta biblioteca de integraciones con cientos de servicios y aplicaciones. Si bien los Nodos Principales proporcionan la estructura y la lógica, los Nodos de Integración son los que conectan tus flujos de trabajo con las herramientas que usas a diario. Este capítulo explora algunos de los nodos de integración más populares y versátiles, mostrando cómo configurarlos y utilizarlos en escenarios comunes.

Recuerda que casi todos los nodos de integración requerirán Credenciales. El proceso de creación de credenciales se cubrió en el Capítulo 1, pero cada servicio tendrá sus particularidades (API Keys, OAuth2, etc.).

Hojas de Cálculo (Spreadsheets)

Comunicación y Notificaciones

Bases de Datos SQL

n8n soporta las bases de datos SQL más comunes.

Inteligencia Artificial (AI)

n8n tiene integraciones potentes con modelos y plataformas de IA.

CRM y Marketing

Otros Nodos Útiles

Esta es solo una pequeña muestra de las cientos de integraciones disponibles. La clave es buscar el servicio que necesitas en el panel de nodos, explorar sus recursos y operaciones, configurar las credenciales y luego usar los Nodos Principales (como IF, Set, Code) para adaptar los datos y la lógica a tus necesidades específicas.

Capítulo 7: Casos de Uso y Ejemplos Prácticos

La teoría y el conocimiento de los nodos individuales son importantes, pero la verdadera comprensión de n8n proviene de ver cómo se combinan para resolver problemas del mundo real. Este capítulo presenta varios casos de uso prácticos, guiándote paso a paso a través de la construcción de los flujos de trabajo correspondientes. Estos ejemplos están diseñados para ilustrar diferentes conceptos y combinaciones de nodos.

Nota: Para seguir estos ejemplos, necesitarás tener acceso a una instancia de n8n (Cloud o autoalojada) y, para algunos ejemplos, credenciales para los servicios específicos involucrados (ej. Google Sheets, Slack, OpenAI).

Ejemplo 1: Guardar Envíos de Formularios Web en Google Sheets y Notificar en Slack

Objetivo: Capturar datos enviados desde un formulario web simple, guardar cada envío como una nueva fila en una hoja de Google Sheets y enviar una notificación a un canal de Slack.

Conceptos Clave: Webhook Trigger, Google Sheets (Append Row), Slack (Post Message), Mapeo de Datos.

Pasos:

  1. Preparar Google Sheet:
  2. Crear el Flujo en n8n:
  3. Activar el Flujo:

Resultado: Cada vez que se envíe el formulario web, los datos se guardarán en Google Sheets y recibirás una notificación en Slack.


Ilustración: Un ejemplo visual de un flujo de trabajo construido en n8n, mostrando la conexión entre diferentes nodos.

Ejemplo 1: Resumen Diario de Noticias RSS Enviado por Email

Objetivo: Leer las últimas entradas de varios feeds RSS, combinarlas, obtener un resumen de IA para cada una, y enviar un único correo electrónico diario con todos los resúmenes.

Conceptos Clave: Cron Trigger, RSS Read, Merge, OpenAI (Chat), Loop (implícito), Set, Email.

Pasos:

  1. Crear el Flujo en n8n:
  2. Activar el Flujo:

Resultado: Recibirás un correo electrónico diario con los resúmenes de las últimas noticias de tus feeds RSS seleccionados.

Ejemplo 3: Procesamiento Básico de Pedidos (Webhook -> Base de Datos -> Slack)

Objetivo: Recibir detalles de un nuevo pedido a través de un webhook (simulando una tienda online), guardar el pedido en una base de datos PostgreSQL y notificar al equipo de ventas en Slack.

Conceptos Clave: Webhook, PostgreSQL (Execute Query), Placeholders SQL, IF, Slack.

Pasos:

  1. Preparar Base de Datos PostgreSQL:
  2. Crear el Flujo en n8n:
  3. Activar el Flujo:

Resultado: Los nuevos pedidos se registran en la base de datos y se envía una notificación a Slack, con un manejo básico de errores si falla la inserción en la base de datos.

Estos ejemplos muestran cómo combinar diferentes nodos para crear automatizaciones útiles. La clave es descomponer el problema, elegir los nodos adecuados para cada paso, configurar sus parámetros usando expresiones para pasar datos dinámicamente y manejar posibles errores.

Capítulo 8: Técnicas Avanzadas y Mejores Prácticas

Una vez que dominas los fundamentos y has construido algunos flujos de trabajo, puedes empezar a explorar técnicas más avanzadas para crear automatizaciones más potentes, robustas y eficientes. Este capítulo cubre estrategias para manejar escenarios complejos, optimizar el rendimiento y seguir las mejores prácticas para mantener tus flujos de trabajo.

Looping e Iteración

A veces necesitas repetir un conjunto de acciones para cada ítem en una lista o hasta que se cumpla una condición. n8n no tiene un nodo de "Loop" explícito como algunas otras herramientas, pero la iteración se maneja de forma inherente o se puede construir.


Ilustración: Diagrama conceptual de un bucle Do-While simulado con nodos IF y Merge.d.
* Nodo Split In Batches:
* Propósito: Divide una gran cantidad de ítems de entrada en lotes más pequeños. Aunque no es un bucle en sí mismo, es crucial para manejar la iteración implícita cuando se trabaja con APIs que tienen límites de tasa o de tamaño de payload.
* Configuración: Batch Size (cuántos ítems por lote).
* Salida: Se ejecuta una vez por cada lote, y cada ejecución produce un ítem que contiene un array (items) con los ítems de ese lote.
* Caso de Uso: Si necesitas insertar 1000 filas en una base de datos pero la API o el nodo de DB es más eficiente con lotes de 100, usa Split In Batches con tamaño 100. El nodo de la base de datos se ejecutará 10 veces, cada vez procesando un lote de 100 ítems (puede requerir un nodo Code o configuración específica en el nodo de DB para manejar el array items).

Manejo Avanzado de Errores

Más allá de Continue On Fail, puedes implementar patrones más sofisticados.


Ilustración: Diagrama conceptual del patrón de reintentos con retraso exponencial.
* Transacciones (Simuladas):
* Propósito: Asegurar que una serie de operaciones (ej. actualizar DB y luego llamar a una API) se completen todas o ninguna.
* Implementación: n8n no tiene soporte transaccional incorporado que abarque múltiples nodos. La implementación depende de las capacidades de los sistemas involucrados.
* Compensación: Si un paso falla después de que otros tuvieron éxito, ejecuta acciones de "compensación" para deshacer los pasos anteriores (ej. si la llamada API falla después de actualizar la DB, ejecuta una consulta SQL para revertir la actualización). Esto puede ser complejo.
* Idempotencia: Diseña tus operaciones para que puedan ejecutarse múltiples veces sin efectos secundarios negativos. Si un flujo falla a la mitad y se reintenta, las operaciones idempotentes aseguran que el resultado final sea correcto.


Ilustración: Diagrama conceptual del uso de un Error Trigger para manejar fallos en otros flujos de trabajo.

Trabajo con Datos Binarios

Uso Efectivo del Nodo Code

El nodo Code es tu navaja suiza para lógica compleja.

Optimización del Rendimiento

Flujos lentos pueden ser frustrantes y costosos.

Mejores Prácticas Generales

Adoptar estas técnicas y prácticas te ayudará a pasar de crear automatizaciones simples a construir sistemas de flujo de trabajo sofisticados, mantenibles y fiables con n8n.

Capítulo 9: Desarrollo de Nodos Personalizados

Si bien n8n ofrece cientos de integraciones, puede haber ocasiones en las que necesites conectarte a un servicio interno, una API específica no soportada, o implementar una lógica muy particular que no se ajusta bien a los nodos existentes. Aquí es donde entra en juego el desarrollo de nodos personalizados. Crear tus propios nodos te permite extender n8n para que se ajuste perfectamente a tus necesidades.

Este capítulo proporciona una introducción al desarrollo de nodos personalizados, cubriendo los conceptos básicos, la estructura y el proceso general. Ten en cuenta que el desarrollo de nodos requiere conocimientos de programación, específicamente TypeScript (que es un superconjunto de JavaScript), Node.js y npm.

¿Por Qué Desarrollar un Nodo Personalizado?

Prerrequisitos

Configuración del Entorno de Desarrollo

La forma recomendada de empezar es usando el paquete de inicio oficial:

  1. Clonar el Repositorio:
    git clone https://github.com/n8n-io/n8n-node-starter.git tu-nombre-de-nodo
    cd tu-nombre-de-nodo
  2. Instalar Dependencias:
    npm install
  3. Construcción Inicial:
    npm run build
  4. Enlazar para Pruebas Locales: Para que tu instancia local de n8n reconozca tu nodo en desarrollo, necesitas enlazarlo:
    npm link
    # En el directorio donde está instalado n8n globalmente (o en tu proyecto n8n si no es global):
    npm link n8n-nodes-tu-nombre-de-nodo # Usa el nombre definido en tu package.json
  5. Iniciar n8n: Ejecuta n8n en tu terminal. Ahora deberías poder encontrar tu nodo de ejemplo en el panel de nodos dentro de n8n.

Estructura de un Nodo

El repositorio de inicio (n8n-node-starter) proporciona una estructura básica. Los archivos clave son:


Ilustración: Diagrama simplificado de la estructura de archivos y directorios para un nodo personalizado.

Estilos de Construcción de Nodos

n8n ofrece dos enfoques principales:

  1. Estilo Declarativo:
  2. Estilo Programático:

La documentación de n8n proporciona tutoriales detallados para ambos estilos.

Conceptos Clave en el Código del Nodo (Estilo Programático)

El archivo .node.ts es el corazón de un nodo programático.

import { IExecuteFunctions } from 'n8n-core';
import {
    INodeExecutionData,
    INodeType,
    INodeTypeDescription,
    NodeOperationError,
} from 'n8n-workflow';

export class MyNode implements INodeType {
    description: INodeTypeDescription = {
        displayName: 'My Custom Node',
        name: 'myNode', // Nombre interno, debe ser único
        icon: 'file:myNode.svg', // Icono SVG en el mismo directorio
        group: ['transform'], // Categoría en el panel de nodos
        version: 1,
        description: 'Descripción breve de lo que hace el nodo',
        defaults: {
            name: 'My Node', // Nombre por defecto en el lienzo
        },
        inputs: ['main'], // Espera una entrada
        outputs: ['main'], // Produce una salida
        credentials: [
            // Referencia a la clase de credencial si es necesaria
            // { name: 'myCredentialApi', required: true }
        ],
        properties: [
            // Aquí se definen los campos de la UI del nodo
            {
                displayName: 'Operation',
                name: 'operation',
                type: 'options',
                noDataExpression: true,
                options: [
                    {
                        name: 'Say Hello',
                        value: 'sayHello',
                        action: 'Say hello action',
                    },
                ],
                default: 'sayHello',
            },
            // Ejemplo de campo de texto
            {
                displayName: 'Name',
                name: 'name',
                type: 'string',
                default: '',
                placeholder: 'Enter a name',
                description: 'The name to say hello to',
                displayOptions: {
                    show: {
                        operation: ['sayHello'], // Mostrar solo si la operación es 'sayHello'
                    },
                },
            },
        ],
    };

    // Método principal que ejecuta la lógica del nodo
    async execute(this: IExecuteFunctions): Promise<INodeExecutionData[][]> {
        const items = this.getInputData(); // Obtener datos de entrada
        let item: INodeExecutionData;
        const returnData: INodeExecutionData[] = [];

        const operation = this.getNodeParameter('operation', 0, '') as string;

        for (let itemIndex = 0; itemIndex < items.length; itemIndex++) {
            try {
                item = items[itemIndex];

                if (operation === 'sayHello') {
                    const name = this.getNodeParameter('name', itemIndex, '') as string;

                    // Lógica del nodo: hacer algo con 'name' y los datos de 'item.json'
                    // Ejemplo: Llamar a una API
                    /*
                    const options: OptionsWithUri = {
                        method: 'GET',
                        uri: `https://api.example.com/greet?name=${name}`,
                        json: true,
                    };
                    const responseData = await this.helpers.httpRequest(options);
                    */

                    const responseData = { message: `Hello, ${name || 'World'}!` };

                    // Añadir resultado a los datos de retorno
                    returnData.push({ json: responseData, pairedItem: itemIndex });
                }

            } catch (error) {
                // Manejo de errores
                if (this.continueOnFail()) {
                    returnData.push({ json: { error: error.message }, pairedItem: itemIndex });
                }
                 else {
                    if (error.context) error.context.itemIndex = itemIndex;
                    throw error;
                }
            }
        }

        return [this.helpers.returnJsonArray(returnData)];
    }
}

Definición de Credenciales (.credentials.ts)

import { ICredentialType, INodeProperties } from 'n8n-workflow';

export class MyCredential implements ICredentialType {
    name = 'myCredentialApi'; // Nombre interno, debe coincidir con el usado en el nodo
    displayName = 'My Service API';
    documentationUrl = 'https://docs.example.com/api'; // Enlace a la documentación de la API
    properties: INodeProperties[] = [
        {
            displayName: 'API Key',
            name: 'apiKey',
            type: 'string',
            typeOptions: { password: true }, // Oculta el valor en la UI
            default: '',
        },
        {
            displayName: 'API Endpoint',
            name: 'endpoint',
            type: 'string',
            default: 'https://api.example.com',
        },
    ];
    // Opcional: Lógica de prueba de credencial
    /*
    async test(this: ICredentialTestFunctions): Promise<boolean> {
        try {
            await this.helpers.httpRequest({
                method: 'GET',
                url: this.credentials.endpoint + '/ping',
                headers: { 'X-Api-Key': this.credentials.apiKey as string },
            });
            return true;
        } catch (error) {
            throw new NodeApiError(this.getNode(), error);
        }
    }
    */
}

Pruebas y Depuración

  1. Construir: Después de hacer cambios en el código (.ts), ejecuta npm run build para compilar a JavaScript (.js) en el directorio dist/.
  2. Desarrollo Automático: Ejecuta npm run dev. Esto vigilará los cambios en tus archivos .ts, los compilará automáticamente y reiniciará n8n si es necesario, acelerando el ciclo de desarrollo.
  3. Probar en n8n:

Linting y Formateo

El starter kit viene configurado con ESLint y Prettier.

Es importante ejecutar estos comandos antes de considerar compartir tu nodo.

Compartir tu Nodo

El desarrollo de nodos personalizados abre un mundo de posibilidades para adaptar n8n a cualquier flujo de trabajo imaginable. Aunque requiere esfuerzo de desarrollo, la capacidad de crear integraciones a medida es una de las características más potentes de n8n.

Capítulo 10: Lista Completa de Integraciones (Proveedores)

n8n se destaca por su amplia capacidad de integración con una vasta gama de aplicaciones y servicios. En el momento de la elaboración de este manual, la plataforma cuenta con más de 1000 integraciones oficiales y comunitarias, permitiendo conectar flujos de trabajo con prácticamente cualquier herramienta que utilices.


Ilustración: Visualización del vasto ecosistema de integraciones de n8n conectando diversas aplicaciones y servicios.

Dada la constante expansión y actualización de estas integraciones, mantener una lista exhaustiva y detallada dentro de este manual resulta impráctico. Sin embargo, podemos destacar las principales categorías bajo las cuales se agrupan estas integraciones en la documentación oficial:

Explora la Lista Completa:

Para explorar la lista completa, actualizada y searchable de todas las integraciones disponibles en n8n, te recomendamos visitar directamente la página oficial de integraciones:

https://n8n.io/integrations/

Allí podrás buscar por nombre, categoría o palabra clave para encontrar exactamente las herramientas que necesitas conectar.


(Fin del Manual)