🧠 Clase 2: Primeros Pasos con N8N y Automatización Básica (Petición HTTP + Procesamiento)
🧠 Clase 2: Primeros Pasos con N8N y Automatización Básica (Petición HTTP + Procesamiento)
📌 Objetivo de esta clase
-
Crear una cuenta en N8N (en la nube)
-
Entender el concepto de workflow y trigger
-
Realizar una petición HTTP a una API real (Dockerlabs)
-
Procesar la información recibida con JavaScript
-
Obtener el número total de máquinas disponibles
🚀 Paso 1: Crear una cuenta en N8N (nube)
-
Ve a https://n8n.io
-
Haz clic en “Start for Free”
-
Llena el formulario:
-
Nombre completo
-
Correo electrónico
-
Contraseña
-
Nombre de cuenta (importante, será tu subdominio:
tunombre.n8n.cloud
)
-
-
Accede a tu panel de N8N
👉 Recuerda: tienes 15 días de prueba gratuita en la nube de N8N. Más adelante aprenderemos cómo instalarlo localmente para uso 100% gratuito.
🧪 Paso 2: Crear tu primer flujo (workflow)
-
Haz clic en "Create Workflow"
-
Aparecerá el lienzo vacío para comenzar a automatizar
-
Haz clic en el botón “+” y agrega un nodo de tipo Manual Trigger
🔹 El trigger es lo que inicia la automatización. En este caso será manual: se activa al hacer clic.
🌐 Paso 3: Hacer una petición HTTP
-
Agrega un nuevo nodo: busca HTTP Request
-
Pega esta URL:
https://dockerlabs.es/api
-
Ejecuta el nodo y verás una respuesta en formato JSON que contiene:
-
Nombre de las máquinas
-
Categorías
-
Enlaces
-
Dificultad
-
Autores
-
Etc.
-
🧮 Paso 4: Procesar los datos con JavaScript
-
Añade un nodo de tipo Code
-
En el campo de código, pega lo siguiente:
// Este código cuenta cuántas máquinas hay
const items = $input.all();
const data = items[0].json;
const total = data.length;
return [
{
json: {
total_maquinas: total,
}
}
];
- Ejecuta el nodo y verás el resultado:
{
"total_maquinas": 162
}
✅ ¡Perfecto! Has hecho tu primer flujo completo: disparador → petición HTTP → procesamiento con código.
✉️ ¿Qué puedes hacer con ese dato ahora?
Con la variable total_maquinas
, puedes:
-
Enviarte un correo con el número de máquinas
-
Crear un mensaje automático en Telegram o Discord
-
Guardarlo en Google Sheets
-
Usarlo como condición para otras automatizaciones
📌 En la próxima clase: aprenderás cómo enviar correos electrónicos desde N8N usando Gmail.
🛠️ Herramientas utilizadas
-
Dockerlabs API:
https://dockerlabs.es/api
-
JavaScript básico
🎓 Recapitulación
-
Has creado tu cuenta en N8N
-
Comprendiste el concepto de flujo y trigger
-
Hiciste una petición HTTP real
-
Procesaste datos usando código JavaScript dentro de N8N
📩 Ejemplo práctico: Contar flashcards y preguntas de ciberseguridad
-
Creamos un flujo manual en n8n.
-
Hacemos una petición HTTP al archivo JavaScript que contiene las preguntas:
👉 https://flashcardgooglecybersecurity.netlify.app/js/modulo1.js
- Queremos contar el total de preguntas de ciberseguridad y flashcards dentro del bloque
window.dataModulo1
.
✅ Código para usar en un nodo Code
de n8n (JavaScript)
// Paso 1: Obtener contenido bruto
let raw = items[0].json.data;
// Paso 2: Desescapar correctamente (muy importante)
raw = raw
.replace(/\\n/g, '\n')
.replace(/\\r/g, '\r')
.replace(/\\"/g, '"')
.replace(/\\\\/g, '\\');
// Paso 3: Buscar el bloque window.dataModulo1 = {...};
const inicio = raw.indexOf('window.dataModulo1 =');
if (inicio === -1) {
throw new Error("No se encontró 'window.dataModulo1 =' en el texto.");
}
// Cortamos desde esa posición
const desde = raw.slice(inicio);
// Buscamos las llaves para extraer el bloque completo
const apertura = desde.indexOf('{');
let nivel = 0;
let fin = -1;
for (let i = apertura; i < desde.length; i++) {
const char = desde[i];
if (char === '{') nivel++;
else if (char === '}') nivel--;
if (nivel === 0) {
fin = i;
break;
}
}
if (fin === -1) {
throw new Error("No se pudo cerrar correctamente el bloque de datos.");
}
const bloqueObjeto = desde.slice(apertura, fin + 1);
// Paso 4: Evaluar el objeto
let data;
try {
data = eval('(' + bloqueObjeto + ')');
} catch (err) {
throw new Error("No se pudo evaluar el bloque de datos.");
}
// Paso 5: Contar y devolver
const flashcards = Array.isArray(data.flashcards) ? data.flashcards.length : 0;
const quiz = Array.isArray(data.quiz) ? data.quiz.length : 0;
return [
{
json: {
flashcards,
quiz_preguntas: quiz,
total_preguntas_y_flashcards: flashcards + quiz
}
}
];
🔄 ¿Y si quieres usar otro módulo?
Si en lugar del módulo 1 usas el archivo:
👉 https://flashcardgooglecybersecurity.netlify.app/js/modulo2.js
Entonces solo tienes que cambiar esta línea:
const modulo = 'dataModulo1';
const modulo = 'dataModulo2';
Y el mensaje de error de la misma manera que lo anterior, se intercambia el 1 por el 2 y así sucesivamente
✅ Y listo, ya n8n te devuelve el total automáticamente. ¡Superfácil!