🚀 n8n: Automatización Visual para Integraciones Técnicas
n8n (n-eight-n) es una plataforma de automatización de flujos de trabajo (workflows) de código abierto. Permite conectar servicios, APIs y bases de datos mediante una interfaz visual de nodos, donde cada nodo representa una acción o un servicio.
A diferencia de herramientas como Zapier o Make, n8n es self-hosted: tú controlas los datos, los servidores y los límites. Esto lo convierte en una opción ideal para desarrolladores que necesitan integraciones complejas sin depender de terceros ni pagar por volumen de ejecuciones.
🖥️ ¿Necesito un Servidor?
Depende de cómo quieras usarlo:
- Uso local (tu PC): No necesitas servidor. n8n se ejecuta en tu máquina. Perfecto para pruebas, desarrollo y automatizaciones que solo funcionan mientras tu PC está encendido.
- Uso 24/7 (producción): Necesitas un servidor o VPS (mínimo 1 GB RAM, 1 CPU). n8n se ejecuta como un servicio más y tus workflows se mantienen activos todo el día.
- n8n Cloud (sin servidor): Ellos gestionan el servidor. No necesitas instalar nada, solo registrarte y empezar.
🏠 Local vs ☁️ Cloud
En Local (Self-hosted)
| Aspecto | Detalle |
|---|---|
| Coste | Gratuito (solo pagas el hardware) |
| Control | Total — datos, logs, versión, seguridad |
| Instalación | Docker, npm o binario |
| Mantenimiento | Tú gestionas updates, backups, uptime |
| Ideal para | Proyectos personales, datos sensibles, experimentar sin límites |
Opciones de instalación local:
- Docker — recomendada, aislada y reproducible (guía oficial)
- npm —
npm install n8n -g && n8n start(docs) - Binario — descargar desde releases, sin dependencias
Ejemplo con Docker:
docker run -it --rm \
--name n8n \
-p 5678:5678 \
-v ~/.n8n:/home/node/.n8n \
n8nio/n8n
En Cloud (n8n Cloud)
| Aspecto | Detalle |
|---|---|
| Coste | Free tier (hasta 20 workflows, 5 ejecuciones/día) |
| Control | Limitado — no accedes al servidor |
| Setup | 5 minutos, solo registro web |
| Mantenimiento | Ellos gestionan todo |
| Ideal para | Empezar rápido, equipos pequeños, pruebas |
Registro: n8n.cloud
💰 Precios (Free vs Pago)
Self-hosted (local o VPS)
| Componente | Precio |
|---|---|
| n8n (software) | Gratuito — código abierto (Sustainable Use License) |
| Servidor/VPS | Desde ~5 €/mes (ej: Oracle Cloud free tier, Hetzner, DigitalOcean) |
| Redis (cola, opcional) | Gratuito si lo instalas tú |
| Total | 0 € software + coste servidor |
Sin límites de workflows, ejecuciones o usuarios. Tú pones el hardware.
n8n Cloud
| Plan | Precio | Workflows | Ejecuciones/día | Usuarios |
|---|---|---|---|---|
| Free | 0 €/mes | 20 | 5 | 1 |
| Pro | ~20 €/mes (ver precios) | Ilimitados | 10.000 | 5 |
| Enterprise | Personalizado | Ilimitados | Personalizado | Ilimitado |
🎯 Ejemplo Práctico Paso a Paso
Vamos a crear un workflow real desde cero: monitorizar el precio de un producto en una web y recibir un email si baja de X euros.
Paso 1: Crear el workflow
Dentro de n8n, creas un nuevo workflow en blanco.
Paso 2: Añadir Schedule Trigger (cada 6h)
Schedule Trigger → HTTP Request → Code → Email
- Schedule Trigger: intervalo cada 6 horas
- HTTP Request: GET a la URL del producto (o a una API)
- Code: extrae el precio, compara con el umbral
- Email: envía alerta si corresponde
Paso 3: Configurar nodo HTTP Request
Method: GET
URL: https://api.ejemplo.com/producto/123
Paso 4: Nodo Code (JavaScript)
const precio = $json.price;
const umbral = 50;
if (precio < umbral) {
return [{ ...$json, alerta: true, precio, umbral }];
}
return [{ alerta: false }];
Paso 5: Nodo Email (solo si alerta === true)
Conectas el nodo Email y usas la condición. Si el precio baja, recibes el correo.
Resultado:
Cada 6 horas n8n consulta el precio. Si baja de 50 €, te llega un email automático. Sin tocar código, sin servidor dedicado (si usas su cloud gratuito).
🔗 Integraciones con Proyectos Actuales
n8n puede conectarse directamente con varios de mis proyectos existentes:
- Blog (Astro + GitHub): Automatizar la publicación de posts. Un workflow que escucha un webhook, genera el markdown, hace commit al repo y dispara el build en Vercel.
- Retos de código (
auto-challenges): Un workflow que cada semana lanza un nuevo reto, lo escribe en el repo y notifica por Telegram o correo. - Scrapers Python: n8n puede ejecutar scripts Python directamente con el nodo
Execute Command, consumiendo los mismos scrapers que ya tengo enscripts/. - Pipeline de imágenes (
fix_images.py): Disparar el fixer de imágenes cuando se detecta contenido nuevo, todo desde un workflow.
🎯 Más Automatizaciones con los Recursos del Blog
En la página de recursos del blog hay decenas de herramientas que n8n puede conectar. Aquí tienes ideas organizadas por categoría.
🤖 Con IA (Gemini, ChatGPT, Claude, Hugging Face)
- Auto-resumen de posts: Workflow que al publicar un post (webhook de GitHub o Vercel), lo envía a la API de Gemini o Claude y genera un resumen listo para redes sociales.
- Chatbot multicanal: Un solo workflow recibe consultas desde Telegram, Discord y Slack, las procesa con IA y responde en el mismo canal. Es la evolución natural del bot de Telegram que tienes más arriba.
- Traductor de contenido: Workflow que toma el markdown de un post, lo traduce con IA y guarda una versión en otro idioma en el mismo repositorio.
📋 Con Productividad (Notion, Obsidian, Todoist, Linear, Jira, Trello, Asana, Clockify)
- Obsidian → Blog: Workflow que detecta cambios en una nota de Obsidian, convierte el markdown a formato MDX y hace commit al repo del blog. Publicas desde tus notas sin tocar el editor.
- Notion ↔ GitHub Issues: Sincronización bidireccional: cuando creas una issue en GitHub, aparece en una base de datos de Notion y viceversa. Trackeas bugs sin cambiar de herramienta.
- Resumen semanal: Cada viernes, n8n recopila tareas completadas de Todoist, tiempo registrado en Clockify y PRs mergeados de GitHub, y genera un informe HTML con diseño para tu correo o el weekly recap del blog.
💬 Con Comunidad (Discord, Telegram, Twitter/X, LinkedIn, DEV, Hashnode, Reddit)
- Cross-publishing: Workflow que al publicar un post, lo republica automáticamente en DEV, Hashnode y LinkedIn con el formato adecuado para cada plataforma.
- Reddit monitor: Workflow que cada hora busca palabras clave en subreddits técnicos y notifica por Telegram cuando alguien pregunta algo que ya tienes cubierto en el blog.
🖥️ Con DevOps y Terminal (Docker, npm, GitHub, tmux, ngrok)
- Docker cleanup automático: Workflow programado que ejecuta
docker system pruneen tu VPS vía nodo SSH y reporta el espacio liberado en una planilla de Google Sheets. - Monitor de dependencias: Workflow semanal que ejecuta
npm outdated, parsea la salida y abre un issue en GitHub con las dependencias que necesitan actualización. - Backup automático del blog: Workflow que cada noche clona el repo, comprime imágenes y sube a un bucket S3 (nodo AWS S3 nativo), Google Drive o FTP.
🎬 Con Multimedia (FFmpeg, OBS, HandBrake, DaVinci Resolve, Audacity)
- Pipeline de video: Workflow que cuando subes un video raw, lo comprime con FFmpeg (vía
Execute Command), sube a YouTube con metadatos generados por IA y actualiza el post del blog automáticamente. - Transcripción de audio: Workflow que toma archivos de audio, los transcribe con Whisper/OpenAI y guarda el texto como nota en Obsidian o Notion.
📡 Con Seguridad (OWASP, Hack The Box, PortSwigger, monitor SSL)
- Monitor SSL: Workflow que cada 24h verifica los certificados SSL de tus dominios, alerta por Telegram si quedan menos de 14 días y registra el histórico en SQLite.
- Auto-enrolamiento en retos: Workflow que consulta APIs de Hack The Box o TryHackMe, detecta nuevas máquinas y te notifica con los detalles para no perderte ninguna.
🧪 Mini Proyecto Completo: Bot de Estudio Semanal
Un workflow que cada lunes:
- Recoge los 3 posts más populares del blog (puedes usar conteo de visitas o Vercel Analytics vía API)
- Envía cada post a Gemini para generar un resumen ejecutivo y 5 preguntas tipo test
- Guarda los resúmenes en una base de datos de Notion
- Genera un email con diseño HTML y lo envía a tu lista de suscriptores
- Publica un tweet con el resumen del post más leído
Todo en un solo workflow, conectando más de 5 servicios distintos del ecosistema del blog.
⚡ Ejemplos Comunes de Integración
Webhook → Slack
{
"nodes": [
{
"name": "Webhook",
"type": "n8n-nodes-base.webhook",
"parameters": { "path": "alerta" }
},
{
"name": "Slack",
"type": "n8n-nodes-base.slack",
"parameters": {
"channel": "C01ABCDEF",
"text": "={{$json.message}}"
}
}
]
}
Email → Google Sheets
Un workflow que lee emails entrantes con adjuntos, extrae los datos y los guarda fila por fila en una planilla de Google Sheets.
HTTP Request → Base de datos
Consultas a APIs externas cada cierto intervalo, transformación de datos con el nodo Code (JavaScript) e inserción en PostgreSQL / SQLite.
🛠️ Herramientas Externas que Puedes Integrar
n8n viene con +400 nodos preconstruidos. Algunos destacados:
- Comunicación: Slack, Discord, Telegram, Email (SMTP/IMAP)
- Almacenamiento: Google Drive, Dropbox, S3, FTP
- Bases de datos: PostgreSQL, MySQL, MongoDB, Redis, SQLite
- IA / ML: OpenAI, Hugging Face, Anthropic, y cualquier API HTTP
- DevOps: GitHub, GitLab, Docker, Jenkins, Jira
- Cloud: AWS, GCP, Azure, Vercel, Netlify
- Social: Twitter/X, LinkedIn, YouTube, Instagram
Si un servicio no tiene nodo dedicado, puedes usar los nodos HTTP Request y Webhook para conectar con cualquier API REST.
🚀 Cómo Explotar n8n al Máximo
- Workflows reutilizables: n8n permite exportar e importar flujos como JSON. Puedes tener una plantilla base para cada tipo de automatización.
- Sub-workflows: Llamar a un workflow desde otro. Útil para tener lógica compartida (ej: autenticación, logging).
- Nodo Code: Ejecuta JavaScript directamente dentro del flujo. No necesitas un servicio externo para transformar datos.
- Execution hooks: Dispara notificaciones cuando un workflow falla o se completa.
- Versión con cola (Queue mode): Para producción, n8n puede ejecutarse con Redis como backend de cola, soportando miles de ejecuciones diarias sin bloqueo.
🧠 Ejemplo Avanzado: Bot de Telegram con IA
Un asistente que recibe preguntas por Telegram, las procesa con Gemini y responde automáticamente.
Workflow
Telegram Trigger → HTTP Request (Gemini) → Telegram Send
Paso 1: Nodo Telegram Trigger
Configuras un bot de Telegram con @BotFather y pegas el token. El nodo escucha mensajes entrantes.
Paso 2: Nodo HTTP Request a Gemini API
Method: POST
URL: https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent?key=TU_API_KEY
Body (JSON):
{
"contents": [{
"parts": [{
"text": "={{$json.message.text}}"
}]
}]
}
Paso 3: Nodo Code (extraer respuesta)
const respuesta = $json.candidates[0].content.parts[0].text;
return [{ respuesta }];
Paso 4: Nodo Telegram Send
Chat ID: {{$json.chat.id}}
Text: {{$json.respuesta}}
Resultado: Bot de Telegram con inteligencia artificial, corriendo 24/7 en tu VPS, usando el plan gratuito de Gemini.
🔒 Seguridad en Producción
Si despliegas n8n en un servidor público, aplica estas medidas:
- HTTPS obligatorio: Usa Caddy o Nginx como reverse proxy con Let’s Encrypt. n8n no tiene TLS nativo.
- Autenticación básica: n8n trae un login por defecto. En producción, actívalo con
N8N_SECURE_COOKIE=true(por defecto desde v1.0). - Firewall de puertos: Solo expón el puerto 5678 si usas reverse proxy. Bloquea el acceso directo desde Internet.
- CORS restrictivo: Configura
N8N_CORS_ORIGINcon tu dominio, nunca en*. - Backups periódicos: La base de datos de n8n (SQLite por defecto) está en
~/.n8n/database.sqlite. Haz copias diarias con un workflow de n8n. - Versiones actualizadas: n8n publica releases frecuentes. Usa el tag
:latestcon pull semanal o fija una versión estable. - Rate limiting: Si expones webhooks al público, usa
N8N_RATE_LIMIT_ENABLED=truepara evitar abusos.
Nginx reverse proxy (mínimo)
server {
listen 443 ssl;
server_name n8n.tudominio.com;
ssl_certificate /etc/letsencrypt/live/n8n.tudominio.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/n8n.tudominio.com/privkey.pem;
location / {
proxy_pass http://localhost:5678;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
📊 Logs, Eventos y Monitorización
n8n guarda un historial completo de cada ejecución. Accedes desde el panel Executions de cada workflow.
Tipos de log
| Log | Dónde verlo | Qué muestra |
|---|---|---|
| Execution Log | Panel del workflow | Cada ejecución: fecha, duración, estado, datos de entrada/salida por nodo |
| Event Bus | Settings > Event Bus | Eventos del sistema (workflow activado/desactivado, errores críticos) |
| Audit Log | Settings > Audit Log (solo Enterprise) | Quién hizo qué y cuándo |
| Logs del contenedor | docker logs n8n | Salida estándar de n8n, errores de arranque, conexiones |
Cómo inspeccionar una ejecución fallida
- Ve al workflow y haz clic en Executions (barra izquierda)
- Busca la ejecución con estado Error (rojo)
- Haz clic para abrir el detalle
- Cada nodo muestra si ejecutó bien (verde) o falló (rojo)
- En el nodo fallido, ves el error exacto y los datos que llegaron
Exportar logs a un servicio externo
n8n puede enviar sus logs a sistemas externos para monitorización centralizada:
- Configuración con Docker: Monta un volumen y usa un sidecar (Fluentd, Logstash) para reenviar los logs.
- Nodo HTTP Request: Crea un workflow que cada hora recoja ejecuciones fallidas con el nodo
n8ny las envíe a un webhook de Slack, Telegram o tu propio backend. - Métricas con Prometheus: n8n expone métricas en
/metricssi activasN8N_METRICS=true. Puedes consumirlas con Prometheus + Grafana para ver gráficas de ejecuciones, errores y tiempos de respuesta.
Eventos que disparan workflows
Además del Schedule Trigger, n8n reacciona a eventos en tiempo real:
- Webhook: Llamadas HTTP entrantes (POST, GET, etc.)
- Form Trigger: Envía un formulario embebido y captura la respuesta
- Telegram Trigger: Escucha mensajes de un bot
- Email Trigger (IMAP): Reacciona a emails nuevos en una bandeja
- RSS Feed Trigger: Detecta nuevas entradas en un feed RSS
- n8n Trigger: Escucha eventos internos de n8n (workflow creado, ejecución completada, error)
Ejemplo: Logging centralizado con un Error Workflow
- Crea un workflow con n8n Trigger tipo “Workflow execution error”
- Conéctalo a un nodo Code que formatee el error:
const error = $json.executionData.error;
return [{
workflow: $json.workflowName,
error: error.message,
timestamp: new Date().toISOString(),
node: error.nodeName
}];
- Añade nodos de salida: Slack (notificar al equipo), Spreadsheet (registrar en Google Sheets), Email (alerta al administrador)
- En Settings > Error Workflow, selecciona este workflow
A partir de ahí, cada error de cualquier workflow se loguea automáticamente en los tres destinos.
🧩 Nodo HTML / Contenido Dinámico
El nodo HTML (HTML Content / HTML Extract) permite trabajar con contenido web y plantillas HTML directamente desde n8n.
HTML Extract — extraer datos de páginas web
Usa selectores CSS para extraer información sin escribir regex:
URL: https://ejemplo.com/producto
Selector: .precio-actual
Output: texto del elemento
Configuración en el nodo:
Source: HTML (pegas el HTML o usas el output de un nodo previo)
Extraction Values:
- Key: precio
Selector: span.price-value
Return Value: Text
- Key: titulo
Selector: h1.product-title
Return Value: Text
HTML Content — generar plantillas HTML
Ideal para crear contenido dinámico: emails con estilo, informes HTML, páginas web generadas:
Source: JSON (datos de entrada)
Template: HTML plano con {{expresiones}}
Ejemplo: Generar un informe HTML desde datos JSON
<h1>Informe de {{$json.titulo}}</h1>
<table>
<tr>
<th>Métrica</th><th>Valor</th>
</tr>
{{#each $json.datos}}
<tr>
<td>{{this.metrica}}</td>
<td>{{this.valor}}</td>
</tr>
{{/each}}
</table>
<p>Generado el {{new Date().toLocaleDateString("es-ES")}}</p>
Casos de uso del nodo HTML:
- Email con diseño: Genera un email HTML con estilos en línea desde datos dinámicos, compatible con clientes de correo (Gmail, Outlook).
- Scraping sin API: Extrae datos de webs que no tienen API pública usando selectores CSS. No necesitas Python ni Puppeteer.
- Informes periódicos: Cada semana, n8n recopila datos de varias fuentes y genera un informe HTML que se envía por email o se guarda en Google Drive.
- Transformación de contenido: Convierte JSON a HTML estructurado para publicarlo en un CMS o como snippet de webhook.
- Generación de PDF: Combina HTML Content + HTML to PDF (o una API externa) para crear facturas, certificados o reportes desde flujos automatizados.
Ejemplo: Scraping con HTML Extract
Schedule Trigger → HTTP Request (GET web) → HTML Extract → Code → Email
El nodo HTML Extract obtiene el precio y la disponibilidad del producto usando selectores CSS. El nodo Code decide si enviar alerta. El Email envía el resultado formateado.
El workflow no se ejecuta cuando toca
Causa: El workflow no está en estado Active. Los workflows se crean desactivados. Solución: Dale al toggle “Active” en la parte superior del editor.
El nodo HTTP Request devuelve error 401/403
Causa: Falta autenticación o las credenciales expiraron. Solución: Revisa las Credentials asociadas al nodo. Si es API Key, asegúrate de que está incluida en el header.
El Schedule Trigger no respeta la zona horaria
Causa: n8n usa UTC por defecto.
Solución: Configura GENERIC_TIMEZONE=Europe/Madrid en las variables de entorno del servidor.
Webhook responde 404
Causa: El workflow debe estar Active para que el webhook funcione. Solución: Activa el workflow y vuelve a probar la URL.
Los datos de un nodo no llegan al siguiente
Causa: El nodo anterior no devuelve datos o devuelve un array vacío.
Solución: Añade un nodo Code con return [{ ...$json }] justo después para inspeccionar la salida.
n8n se queda sin memoria en el VPS
Causa: Workflows con muchas ejecuciones simultáneas o datos grandes en memoria.
Solución: Limita ejecuciones concurrentes (EXECUTIONS_TIMEOUT=300), programa los workflows espaciados, o añade Redis como cola.
El nodo Email no envía correos
Causa: Configuración SMTP incorrecta o el servidor bloquea el puerto. Solución: Verifica que el puerto SMTP (587 para TLS, 465 para SSL) no está bloqueado por tu proveedor de VPS. Usa credenciales de aplicación si tienes 2FA.
⚡ Comparativa Rápida: n8n vs Zapier vs Make
| Aspecto | n8n | Zapier | Make |
|---|---|---|---|
| Precio | Gratuito (self-hosted) | Desde 20 €/mes | Desde 9 €/mes |
| Límites | Los que ponga tu hardware | 100 tareas/mes en gratis | 1000 ops/mes en gratis |
| Datos | Tú los controlas | En servidores de Zapier | En servidores de Make |
| Nodos | 400+ | 5000+ apps | 2000+ apps |
| Código personalizado | JavaScript nativo | Python/JS (plan de pago) | Solo en plan Pro |
| Webhooks | Ilimitados | Limitados por plan | Limitados por plan |
| Open source | Sí | No | No |
| Self-hosted | Sí | No | No |
| Curva aprendizaje | Media | Baja | Baja-Media |
Veredicto: Si necesitas control total, datos privados o automatizaciones complejas con lógica programática, n8n gana. Si solo necesitas conectar apps populares rápido y sin pensar en infraestructura, Zapier o Make son más directos.
💡 Tips y Hacks
Usa $json para depurar rápido
En cualquier nodo Code, pon return [{ ...$json }] para ver exactamente qué datos llegan. Así depuras el flujo sin tener que revisar cada ejecución manualmente.
Pegatinas (Sticky Notes) como documentación viva
Añade nodos Sticky Note entre secciones del workflow para documentar qué hace cada parte. Se exportan con el JSON del workflow — ideal para compartir con el equipo o contigo mismo meses después.
Variables de entorno para secrets
Nunca hardcodees API keys o tokens. En self-hosted usa variables de entorno (N8N_VARIABLE_*) y en cloud usa el panel de Variables de n8n. Se referencian con {{$vars.clave}}.
HTTP Request con autenticación reutilizable
Configura Credentials reutilizables (OAuth2, API Key, Basic Auth) en el panel de credenciales. Así usas la misma auth en múltiples nodos sin repetirla y si cambia un token, lo actualizas en un solo sitio.
Webhook como API temporal
Cada workflow con un nodo Webhook genera una URL pública única. Úsala como endpoint temporal para recibir datos de cualquier servicio sin necesidad de desplegar un servidor.
Date expresiones para programar tareas
En el nodo Schedule Trigger puedes usar expresiones cron avanzadas. Ejemplo útil: ejecutar solo en días laborables:
0 9 * * 1-5
(Lunes a viernes a las 09:00)
Clona workflows de producción a prueba
Exporta un workflow como JSON (botón derecho → Export), impórtalo limpiando conexiones, modifica y prueba sin miedo a romper el original.
Formatea fechas al vuelo con Luxon
n8n incluye Luxon integrado en las expresiones. Transforma fechas directamente:
{{new Date($json.timestamp).toLocaleDateString("es-ES")}}
Error Workflow como manejador global
Configura un workflow como Error Workflow y se ejecutará automáticamente cuando cualquier otro workflow falle. Útil para logging centralizado, notificaciones a Slack o reinicios automáticos.
Etiquetas (Tags) para organizar
A medida que acumulas workflows, usa etiquetas de colores para clasificarlos por tipo (producción, pruebas, temporales), proyecto o prioridad.
Ejecuciones condicionales con IF
El nodo IF permite bifurcar el flujo. Combinado con Merge, crea ramas paralelas que luego se unen — ideal para workflows complejos sin duplicar nodos.
npm i -g n8n en un VPS mínimo
Un VPS de 1 GB RAM y 1 CPU corre n8n sin problemas para uso personal (hasta ~10 workflows activos). Si escalas, añade Redis como cola y duplica la RAM.
📚 Enlaces para Más Información
- Web oficial de n8n — Documentación, precios y casos de uso
- GitHub de n8n — Código fuente, issues y releases
- n8n Cloud Pricing — Planes y precios actualizados
- n8n Templates — Plantillas de workflows listas para importar
- Documentación de instalación — Docker, npm, binario
- Documentación de nodos — Lista completa de integraciones disponibles
- n8n Community — Foro oficial con ejemplos y soporte
- n8n Blog — Artículos técnicos, novedades y tutoriales avanzados
