Automatización con IA

Publicación Multi-plataforma de Contenido

Publica desde una fuente a todas tus plataformas automáticamente

Flujo 08: Publicación Multi-plataforma de Contenido

El problema

Publicas un artículo en tu blog y luego tienes que reescribirlo manualmente para Twitter/X (280 caracteres), LinkedIn (formato largo con emojis), e Instagram (tono visual con hashtags). Cada adaptación tarda entre 20 y 40 minutos. Si publicas 3 artículos por semana en 3 plataformas, eso son 3-4 horas semanales solo en reformatear contenido que ya existe. Este flujo lo hace automáticamente desde el RSS de tu blog.

Herramientas necesarias

Nodo n8n Función
RSS Feed Read Detecta nuevos artículos en el RSS de tu blog
OpenAI Reescribe el artículo en formato Twitter, LinkedIn e Instagram
Split In Batches Procesa cada versión de forma individual
HTTP Request Publica en Buffer API (programa en todas las redes)

Servicios externos:

  • RSS feed de tu blog (WordPress, Ghost, Substack, etc.)
  • API Key de OpenAI (platform.openai.com)
  • Cuenta Buffer con API Key (buffer.com/developers/api)
  • Perfiles conectados en Buffer: Twitter/X, LinkedIn, Instagram

Configuración paso a paso

Nodo 1: RSS Feed Read

Añade el nodo RSS Feed Read:

  • URL: https://tublog.com/feed (URL del RSS de tu blog)
  • Limit: 5 (artículos más recientes a revisar)

n8n recuerda qué artículos ya procesó entre ejecuciones. Combínalo con un Schedule Trigger que lo ejecute cada día a las 9:00 AM o cada vez que quieras publicar.

Campos disponibles:

{{ $json.title }}           → título del artículo
{{ $json.content }}         → contenido HTML del artículo
{{ $json.contentSnippet }}  → extracto sin HTML (más útil para el prompt)
{{ $json.link }}            → URL del artículo
{{ $json.pubDate }}         → fecha de publicación
{{ $json.categories }}      → categorías/etiquetas

Nodo 2: HTML Extract — Limpiar contenido

El campo content del RSS suele contener HTML. Añade un nodo HTML Extract o usa un nodo Code para limpiar las etiquetas:

const htmlContent = $input.first().json.content;
// Eliminar etiquetas HTML y entidades HTML comunes
const textoLimpio = htmlContent
  .replace(/<[^>]+>/g, ' ')
  .replace(/&nbsp;/g, ' ')
  .replace(/&amp;/g, '&')
  .replace(/&lt;/g, '<')
  .replace(/&gt;/g, '>')
  .replace(/\s+/g, ' ')
  .trim()
  .substring(0, 3000); // Limitar para no exceder tokens

return [{json: {
  titulo: $input.first().json.title,
  contenido: textoLimpio,
  url: $input.first().json.link,
  categorias: $input.first().json.categories?.join(', ') || ''
}}];

Nodo 3: OpenAI — Generar versiones por plataforma

Añade el nodo OpenAI:

  • Resource: Chat
  • Operation: Message Model
  • Model: gpt-4o-mini
  • Temperature: 0.7
  • Max Tokens: 1500
  • System Message:
Eres el social media manager de [EMPRESA]. Adaptas contenido de blog
a diferentes formatos de redes sociales sin perder la esencia del artículo.
Respetas el tono del autor: [describe tu tono: técnico/casual/inspiracional].
Siempre en español.
  • User Message (expresión):
=`Adapta este artículo de blog a 3 formatos distintos.

ARTÍCULO ORIGINAL:
Título: ${$json.titulo}
URL: ${$json.url}
Categorías: ${$json.categorias}
Contenido: ${$json.contenido}

FORMATO 1 — TWITTER/X:
- Hilo de 3-4 tweets
- Primer tweet: gancho (máximo 240 caracteres, sin link)
- Tweets 2-3: puntos clave, uno por tweet (máximo 260 caracteres)
- Último tweet: conclusión + URL del artículo
- 2-3 hashtags solo en el último tweet
- Separa cada tweet con: ---TWEET---

FORMATO 2 — LINKEDIN:
- 250-350 palabras
- Primera línea: gancho sin preguntas directas al lector
- Párrafos de máximo 3 líneas, separados con línea en blanco
- 1-2 emojis como máximo (solo si aportan)
- Termina con una pregunta a la audiencia
- 4-5 hashtags al final

FORMATO 3 — INSTAGRAM:
- 150-200 palabras
- Tono más personal y visual
- 4-5 emojis a lo largo del texto
- CTA: "Lee el artículo completo — link en bio"
- 8-10 hashtags relevantes al final

Devuelve un JSON con este formato exacto:
{
  "twitter": ["tweet1", "tweet2", "tweet3", "tweet4"],
  "linkedin": "texto completo del post",
  "instagram": "texto completo del post"
}
`

Nodo 4: Code — Preparar posts para Buffer

Añade un nodo Code para estructurar el array de publicaciones:

const contenido = JSON.parse(
  $input.first().json.message.content
    .replace(/```json\n?/g, '')
    .replace(/```\n?/g, '')
    .trim()
);

const url = $('Code Limpiar').item.json.url;
const ahora = new Date();
// Programa: Twitter ahora, LinkedIn +2h, Instagram +4h
const scheduledTimes = [
  Math.floor(ahora.getTime() / 1000) + 300,              // Twitter en 5 min
  Math.floor(ahora.getTime() / 1000) + 7200,             // LinkedIn en 2h
  Math.floor(ahora.getTime() / 1000) + 14400             // Instagram en 4h
];

return [
  { json: { plataforma: 'twitter', texto: contenido.twitter.join('\n\n'), scheduled_at: scheduledTimes[0] }},
  { json: { plataforma: 'linkedin', texto: contenido.linkedin, scheduled_at: scheduledTimes[1] }},
  { json: { plataforma: 'instagram', texto: contenido.instagram, scheduled_at: scheduledTimes[2] }}
];

Nodo 5: Split In Batches

Añade el nodo Split In Batches:

  • Batch Size: 1

Esto procesa cada una de las 3 publicaciones (Twitter, LinkedIn, Instagram) de forma secuencial a través del siguiente nodo.

Nodo 6: HTTP Request — Buffer API

Añade el nodo HTTP Request:

  • Method: POST
  • URL: https://api.bufferapp.com/1/updates/create.json
  • Authentication: Header Auth
    • Authorization: Bearer TU_BUFFER_ACCESS_TOKEN
  • Body Content Type: Form-Data
  • Body Parameters:
    • text: ={{ $json.texto }}
    • profile_ids[]: ={{ $json.plataforma === 'twitter' ? 'ID_TWITTER' : $json.plataforma === 'linkedin' ? 'ID_LINKEDIN' : 'ID_INSTAGRAM' }}
    • scheduled_at: ={{ $json.scheduled_at }}
    • shorten: false

Obtén los profile_ids de tu cuenta Buffer: GET https://api.bufferapp.com/1/profiles.json con tu token.

Ejemplo de prompt IA

Artículo de entrada:

Título: 5 automatizaciones de n8n que todo SaaS debería tener
URL: https://blog.ejemplo.com/automatizaciones-n8n-saas
Contenido: Las empresas SaaS pierden entre 3 y 5 horas semanales en tareas
manuales que podrían automatizarse...

Fragmento del JSON que devuelve GPT-4o-mini:

{
  "twitter": [
    "Las empresas SaaS pierden 3-5h/semana en tareas manuales que podrían automatizarse con n8n en una tarde.",
    "Las 5 automatizaciones que más tiempo ahorran:\n→ Onboarding de clientes\n→ Cualificación de leads\n→ Informes semanales\n→ Respuesta de emails\n→ Publicación de contenido",
    "Cada una de estas puede implementarse en menos de 2 horas. Sin código. Sin contratos de consultoría.\nGuía completa: https://blog.ejemplo.com/automatizaciones-n8n-saas\n#n8n #Automatizacion #SaaS"
  ],
  "linkedin": "Las empresas SaaS tienen un problema silencioso...",
  "instagram": "¿Sabes cuántas horas pierde tu equipo cada semana en tareas repetitivas? 🤔..."
}

Ahorro estimado

Tarea Antes Con automatización
Adaptar artículo a Twitter 20 min/artículo 0 min
Adaptar a LinkedIn 25 min/artículo 0 min
Adaptar a Instagram 20 min/artículo 0 min
Programar en Buffer 10 min/artículo 0 min
Con 3 artículos/semana 3,75 h/semana 5 min (revisión)

Ahorro neto: ~3,5 horas/semana. Coste de GPT-4o-mini para adaptar un artículo a 3 formatos: ~€0,03. Coste mensual para 12 artículos: ~€0,36.