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(/ /g, ' ')
.replace(/&/g, '&')
.replace(/</g, '<')
.replace(/>/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.