Saltar al contenido principal

Technology·14 min de lectura

Automatizando la creación de contenido con n8n para mejorar el SEO orgánico

Cover image for article: Automatizando la creación de contenido con n8n para mejorar el SEO orgánico

El origen del proyecto

Cuando lancé VITRi (ahora Shourly), me enfrenté a un dilema común en cualquier plataforma digital: necesitaba contenido. Mucho contenido. El SEO orgánico es innegociable si quieres que tu plataforma crezca, pero crear artículos de calidad de forma consistente mientras desarrollas el producto es prácticamente imposible.

La opción obvia era contratar redactores, pero había algo que me interesaba más que simplemente resolver el problema. Nunca he sido de los que confían ciegamente en titulares o promesas. Prefiero experimentar yo mismo para entender realmente las limitaciones de las tecnologías. Y n8n era una herramienta que llevaba tiempo queriendo explorar a fondo.

Así que vi la oportunidad perfecta: resolver mi necesidad de contenido mientras aprendía n8n en el proceso. Dos objetivos con una sola solución.

El descubrimiento que lo cambió todo

Cuando empecé a entender n8n, se abrió un mundo de posibilidades. La herramienta es increíblemente poderosa para automatizar flujos de trabajo complejos. Pero esta es la realidad: n8n solo es tan bueno como las plataformas funcionales que puedas conectar. Las herramientas de automatización existen para automatizar cosas que ya se hacen, no para crearlas desde cero.

Con eso en mente, empecé a pensar: ¿por qué limitarme a solo generar texto? Si voy a automatizar, que sea el flujo completo de creación de contenido. Desde la selección del autor hasta la publicación final del artículo, incluyendo imágenes, SEO y todo lo que hace que un artículo se sienta profesional y único.

El desafío de crear presencia real en cada artículo

Aquí es donde el proyecto se puso interesante. No quería simplemente generar artículos genéricos. Quería que cada uno tuviera su propia presencia, su propia voz. La única forma de lograrlo era simulando cómo funciona el mundo real de la creación de contenido.

En la vida real, los autores tienen conocimientos en campos específicos. Cada uno tiene su propia forma de escribir, su propio estilo. Así que decidí crear un sistema de autores ficticios, cada uno con su propia personalidad y áreas de especialización.

Diseñé cuatro autores diferentes, cada uno con su biografía, tono de escritura y campos de conocimiento asignados a través de categorías. Alex Rivera podía escribir sobre comercio electrónico con un tono más técnico, mientras que Sofía Martínez hablaría sobre emprendimiento digital con un enfoque más accesible y práctico. La idea era que, dependiendo del tema del artículo, el sistema eligiera al autor más apropiado y GPT-4 escribiera siguiendo esa personalidad específica.

El problema de la repetición

Uno de los mayores obstáculos técnicos fue evitar que los artículos se repitieran. No quería dos artículos que básicamente hablaran de lo mismo con palabras diferentes. Necesitaba un sistema que recordara qué temas ya había cubierto.

La solución fue crear una pequeña base de datos en Notion donde se guarda cada concepto de artículo con un resumen bien compactado. Antes de generar un nuevo artículo, el sistema revisa todos los conceptos anteriores y se asegura de no crear algo demasiado similar.

Lo interesante aquí es que organicé estos resúmenes por categoría. Esto evita muchos cuellos de botella potenciales, porque el sistema solo compara contra artículos de la misma categoría, no contra toda la base de datos. Más eficiente y más relevante.

Optimizando costos y tiempo

Un aspecto crítico del proyecto era hacerlo económicamente sostenible. Cargué mi cuenta de OpenAI con $20 específicamente para esta automatización, así que necesitaba ser estratégico con el uso de tokens.

Después de varios experimentos y optimizaciones, logré reducir el costo por artículo a aproximadamente $0.07. Sí, siete centavos por artículo. Esto significa que con $20 puedo generar alrededor de 300 artículos completos, cada uno con imágenes, SEO optimizado y todo el contenido pulido.

Pero lo más impresionante no es solo el costo, sino la velocidad. Todo el proceso, desde la generación del concepto hasta la publicación del artículo con imágenes y metadatos, toma menos de un minuto. Un minuto para crear algo que manualmente me tomaría horas.

La clave para mantener los costos tan bajos fue ser muy específico con los prompts para evitar regeneraciones innecesarias, usar GPT-4.1 mini donde fuera posible y GPT-4.1 solo para tareas que realmente lo requieren, estructurar el flujo para que cada llamada a la API tenga un propósito claro y no desperdicie tokens en contexto innecesario, y cachear respuestas cuando tiene sentido, especialmente para información de autores y categorías que no cambia frecuentemente.

El flujo completo de automatización

El flujo principal de creación de artículos tiene dos puntos de entrada diferentes, cada uno con su propósito específico:

Entrada manual a través de formulario

La primera entrada es un formulario web que me permite crear artículos bajo demanda. Esto es útil cuando necesito contenido sobre un tema específico o cuando identifico un vacío en el contenido existente.

El formulario solicita el entorno (desarrollo o producción), el autor, la categoría y una descripción detallada del tema. Esta descripción es el contexto que el agente necesita para entender exactamente qué tipo de artículo quiero.

La ventaja de esta entrada es el control. Puedo decidir exactamente qué se escribe, cuándo y por quién. Es perfecto para responder a tendencias, eventos específicos o necesidades inmediatas de contenido.

Entrada automática programada

La segunda entrada es completamente automática. Un flujo separado se ejecuta cada tres días y alimenta al flujo principal con conceptos generados automáticamente.

Este flujo automático funciona de la siguiente manera: cada tres días a las 6am, el Schedule Trigger activa el proceso. El sistema obtiene todos los autores disponibles de PostgreSQL y todas las categorías existentes. También consulta el concepto de VITRi desde Notion para mantener coherencia con la narrativa de la plataforma.

La parte inteligente viene después. El flujo revisa todos los conceptos de artículos creados anteriormente en Notion para evitar repeticiones. Con toda esta información (autores, categorías, concepto de VITRi y artículos anteriores), GPT-4.1 mini genera un nuevo concepto de artículo.

Este concepto incluye la selección del autor más apropiado según su experiencia, la categoría que mejor se ajusta al tema y un brief detallado del artículo. El brief explica el propósito del artículo, el enfoque central, el público objetivo, los beneficios que obtendrá el lector y qué elementos prácticos debe contener.

Una vez generado y validado contra los conceptos existentes para asegurar su unicidad, el nuevo concepto se guarda en Notion y ejecuta automáticamente el flujo principal de creación de artículos.

Lo elegante de este diseño es la separación de responsabilidades. El flujo automático se enfoca en generar ideas únicas y relevantes. El flujo principal se especializa en convertir esas ideas en artículos completos y profesionales. Esta entrada es lo que hace posible el contenido continuo sin intervención manual, crucial para mantener activo el SEO orgánico.

La parte donde me pongo artístico con las imágenes

Aquí es donde el flujo pasa de interesante a verdaderamente impresionante. Porque una cosa es generar texto automáticamente, eso ya lo hacen muchos. Pero generar texto y buscar automáticamente imágenes relevantes de Unsplash, colocarlas estratégicamente y hacer que todo parezca curado por un humano, eso es otra historia.

La mayoría de los artículos automatizados son muros interminables de texto. Aburridos. Yo quería que cada artículo se sintiera visual, dinámico, con imágenes que realmente complementen lo que estás leyendo. No fotos genéricas de oficinas o personas señalando gráficos en pizarras.

Cómo le enseñé al sistema a pensar visualmente

El truco está en que no todas las secciones de un artículo necesitan una imagen. Si estás hablando de "mejores prácticas de SEO" puede que no necesites una foto. Pero si estás explicando "cómo configurar tu panel de analíticas" definitivamente sí. Así que tuve que enseñarle al sistema a distinguir.

Le paso el artículo completo a GPT y básicamente le pregunto cuáles de estas secciones son visualmente representables. Pero no solo eso. Le pido que me diga de qué trata cada sección en una oración, genere una palabra clave súper específica para buscar en Unsplash, y me dé un texto alternativo descriptivo para accesibilidad. También que le dé una puntuación de 0 a 100 de qué tan apropiada es esa sección para tener una imagen.

[IMAGEN SUGERIDA: Salida del nodo "Keywords for find images" mostrando el JSON estructurado]

El prompt que uso es muy específico sobre qué considerar visual. Le digo que marque imágenes solo para cosas concretas como productos, personas, interfaces, procesos, objetos reales. Nada de conceptos abstractos o secciones administrativas. Porque nadie necesita ver una foto de stock de "confianza" o "innovación".

La búsqueda en Unsplash que no falla

Para cada sección que el sistema decide que merece una imagen, comienza la búsqueda en Unsplash. Y aquí hay un truco que descubrí: no uses simplemente la primera imagen que Unsplash te da. Eso es lo que hace todo el mundo y por eso todos los artículos de internet tienen las mismas 5 fotos.

En su lugar, solicito las 24 mejores imágenes por relevancia, filtradas por orientación horizontal (porque el formato apaisado se ve mejor en artículos). Y de esas 24, selecciono una al azar. El resultado es que cada vez que se ejecuta el flujo, incluso si es el mismo tema, las imágenes son diferentes. Variedad y frescura constantes.

// El código que hace la magia
function getRandomImageUrl(x) {
  const arr = x?.json?.results ?? [];
  if (!Array.isArray(arr) || arr.length === 0) return null;
  const idx = Math.floor(Math.random() * arr.length);
  return (
    arr[idx]?.urls?.regular ??
    arr[idx]?.urls?.full ??
    arr[idx]?.urls?.raw ??
    null
  );
}

La inserción que parece hecha a mano

Ahora viene la parte técnicamente más satisfactoria. Tengo que insertar estas imágenes en el artículo en markdown, pero no de cualquier manera. Tienen que ir justo después del encabezado correcto, sin duplicar si ya existe una imagen, y con texto alternativo apropiado.

[IMAGEN SUGERIDA: Código del nodo "Add images to the content" mostrando la lógica de inserción]

Lo que hace el nodo de código es lo siguiente:

Primero normaliza todos los títulos de las secciones. Porque "Mejores Prácticas de SEO" y "mejores prácticas de seo" y "¡¡¡Mejores Prácticas de SEO!!!" deberían coincidir como la misma sección. Así que elimino acentos, signos de puntuación, mayúsculas, todo. Lo convierto a una versión súper simple para comparar.

Luego mapea cada título normalizado con su imagen correspondiente. Es como crear un diccionario donde la clave es el título limpio y el valor es la imagen encontrada en Unsplash.

Finalmente recorre el artículo línea por línea buscando encabezados H2. Cuando encuentra uno, verifica si tiene una imagen para esa sección. Si la tiene y no hay ya una imagen inmediatamente después, inserta la imagen en formato markdown con el texto alternativo y el título de la sección. Si ya hay una imagen, la omite. No queremos sobrecarga visual.

El resultado es satisfactorio. Cada artículo termina con imágenes perfectamente ubicadas que realmente se sienten relevantes para el contenido. Y lo mejor es que todo sucede automáticamente sin intervención manual.

Porque la estética también importa

Además de las imágenes de contenido, cada artículo también necesita una portada que no sea la misma plantilla aburrida de siempre. Así que implementé un sistema que genera portadas únicas usando patrones geométricos y paletas de colores de Tailwind CSS.

El sistema tiene 7 patrones diferentes (Memphis, abstracto, topográfico, fluido...). Selecciona uno al azar, luego elige una paleta de colores de Tailwind, y de esa paleta toma dos colores que tengan suficiente contraste entre sí. El resultado es que cada artículo tiene su propia identidad visual sin que ninguno se vea igual.

Hay algo satisfactorio en ver artículos con portadas que realmente se sienten únicas.

El editor invisible que mejora todo

Después de que el artículo se genera, con imágenes, con SEO, con portada bonita... aún no he terminado. Porque aquí viene mi parte favorita: la mejora editorial automatizada.

Básicamente le digo a un segundo agente de GPT que revise el artículo completo, mantenga el mismo tono del autor, pero lo extienda donde tenga sentido, elimine redundancias, agregue nuevas secciones si encuentra vacíos, y en general lo mejore. Es como tener un editor que revisa tu trabajo pero nunca se cansa.

Las reglas son específicas. No puede inventar datos. No puede cambiar el concepto principal. Debe respetar el tono del autor religiosamente. Y tiene un límite de máximo 5 párrafos por sección porque nadie quiere leer un ensayo dentro de otro ensayo.

También le digo que elimine la primera imagen del artículo porque la portada ya es suficientemente visual y no necesito sobrecarga desde el inicio.

Lo que me encanta de esta etapa es que toma un artículo que ya es bueno y lo hace realmente bueno. Agrega contexto donde falta, expande ideas interesantes, sugiere mejores prácticas. Y todo sin perder la voz original del autor.

Disparadores

  • Form Trigger: Formulario web para crear artículos manualmente

  • Execute Workflow Trigger: Para ejecución programada o desde otros flujos

Lógica y control

  • Switch: 6 nodos para gestionar rutas dev/prod en diferentes etapas

  • Code: Nodos de JavaScript para lógica personalizada (formateo, selección aleatoria, inserción de imágenes)

Datos

  • Notion: Obtiene conceptos y datos de configuración

  • Postgres: 4 consultas para autores y categorías en ambos entornos

IA y contenido

  • AI Agent con GPT-4.1: Generación de artículos, SEO, análisis de imágenes, mejora final

  • Structured Output Parser: 3 parsers para formatear respuestas de IA en JSON

Servicios externos

  • HTTP Request: 14 nodos para comunicación con la API de Strapi y Unsplash

  • Strapi: CMS headless para almacenar artículos

  • Unsplash: API para búsqueda de imágenes

El flujo completo de datos

Concepto (Notion/Formulario)
    ↓
Selección de entorno (Switch)
    ↓
Autor + Categoría (Postgres)
    ↓
Generación del artículo (GPT-4.1)
    ↓
Limpieza de contenido (Code)
    ↓
Publicación inicial (API de Strapi)
    ↓
Generación de SEO (GPT-4.1)
    ↓
Actualización de metadatos (API de Strapi)
    ↓
Artículos relacionados (API de Strapi + Code)
    ↓
Análisis de secciones (GPT-4.1)
    ↓
Filtrado de secciones (Code)
    ↓
Búsqueda de imágenes (API de Unsplash)
    ↓
Selección y mapeo (Code)
    ↓
Inserción en contenido (Code)
    ↓
Generación de portada (Code)
    ↓
Actualización con imágenes (API de Strapi)
    ↓
Mejora editorial (GPT-4.1)
    ↓
Actualización final (API de Strapi)

Resultados reales

Puedes ver ejemplos de contenido generado:

  1. Construyendo confianza y visibilidad para marcas digitales

  2. Integra estrategias de marketing offline con tu tienda digital

Lo que más me gusta de estos artículos es que tienen personalidad. Cada uno se siente escrito por una persona real, no por un bot. Son visualmente atractivos, con imágenes bien elegidas y estratégicamente ubicadas. La estructura es coherente, con encabezados claros, párrafos bien elaborados y uso apropiado de elementos Markdown. El SEO está optimizado con metadatos bien pensados que no suenan forzados. Y la extensión es la justa, ni demasiado cortos ni innecesariamente largos.

Por qué funciona este enfoque

No se trata solo de generar texto

La diferencia con otras soluciones de automatización es que esto no es simplemente "pedirle a GPT que escriba un artículo". Es un sistema completo que:

  • Gestiona múltiples voces de autores

  • Cura contenido visual

  • Optimiza para SEO

  • Mantiene coherencia con el contenido existente

  • Revisa y mejora su propia producción

Escalable y mantenible

El flujo puede ejecutarse indefinidamente:

  • Programado cada 3 días

  • Sin intervención manual

  • Con diferentes autores y categorías

  • Adaptándose al contenido existente

Flexible

Puedo ajustar cualquier parte del proceso:

  • Cambiar los prompts de IA

  • Agregar nuevos autores

  • Modificar criterios de selección de imágenes

  • Agregar más pasos de validación

Lecciones aprendidas

Los prompts son críticos. Pasé mucho tiempo refinando cada prompt de GPT, y pequeños cambios hacen una gran diferencia. Especificar "máximo 5 párrafos por sección" evita secciones interminables. Decir "NO uses 'Ejemplo:' en los encabezados" elimina patrones robóticos. Incluir buenos ejemplos de formato en el prompt mejora significativamente la salida.

La estructura importa más de lo que pensaba. Tener etapas claramente separadas (generación, limpieza, publicación, SEO, imágenes, mejora) hace que el flujo sea más fácil de depurar, más simple de modificar y más confiable en cada ejecución. Dividir el proceso en fases distintas fue crucial para la mantenibilidad.

El entorno de desarrollo es esencial. Poder probar todo en desarrollo antes de publicar en producción me salvó de muchos errores. Los nodos Switch que dividen el flujo entre entornos dev y prod fueron la mejor decisión arquitectónica que tomé.

La IA necesita contexto rico. No basta con decir "escribe un artículo". El sistema necesita el concepto de la plataforma (VITRi), la biografía del autor, el tono de escritura específico, la categoría y el contexto, y ejemplos de formato. Cuanto más contexto proporcionas, mejor es la salida.

Conclusión

Construir este flujo tomó tiempo, pero valió totalmente la pena. Ahora tengo un sistema que produce contenido de calidad cada 3 días, mantiene personalidad y voz auténtica, incluye imágenes relevantes automáticamente, está optimizado para SEO y requiere cero intervención manual.

Si estás pensando en automatizar tu contenido, mi consejo es: no te conformes con soluciones genéricas. n8n te da el poder de construir exactamente lo que necesitas. Solo necesitas entender bien tu proceso actual, dividirlo en pasos claros, construir y probar iterativamente, y refinar los prompts de IA en el camino.

La automatización no tiene que sacrificar la calidad. Con la arquitectura correcta, puedes tener ambas cosas.

Mantente al día

Suscríbete para recibir los nuevos artículos por correo.