Publicador automático de RSS a LinkedIn
Este es unSocial Media, Multimodal AIflujo de automatización del dominio deautomatización que contiene 19 nodos.Utiliza principalmente nodos como If, Code, LinkedIn, Aggregate, HttpRequest. Usar RSS + Gemini AI + Templated.io para planificar y publicar automáticamente en la página de empresa de LinkedIn
- •Credenciales de API de LinkedIn
- •Pueden requerirse credenciales de autenticación para la API de destino
- •Clave de API de Google Gemini
Nodos utilizados (19)
Categoría
{
"meta": {
"templateCredsSetupCompleted": false
},
"name": "RSS to LinkedIn Auto-Poster",
"nodes": [
{
"name": "Nota adhesiva",
"type": "n8n-nodes-base.stickyNote",
"position": [
-496,
-360
],
"parameters": {
"width": 384,
"height": 704,
"content": "## 🧠 Workflow Overview \n\nThis workflow automatically curates articles from an RSS feed and turns them into short, ready-to-post LinkedIn updates using **Gemini AI**.\n\n### 🔁 What it does \n- Fetches fresh articles twice a week \n- Uses AI to pick the most relevant one for your audience \n- Summarizes it into a crisp LinkedIn-style post \n- Checks post quality → only publishes if score ≥ 7/10 \n- Creates a graphic using Templated\n- Auto-posts to your LinkedIn Page \n\n### ⚙️ What you need \n- Gemini API credentials \n- LinkedIn OAuth2 connection \n- Any RSS feed URL (replace the default)\n- Templated API\n"
},
"typeVersion": 1,
"id": "Nota-adhesiva-0"
},
{
"name": "Nota adhesiva1",
"type": "n8n-nodes-base.stickyNote",
"position": [
208,
176
],
"parameters": {
"color": 7,
"width": 464,
"height": 80,
"content": "## Curator\nRSS Read curates articles and sends to Article Finder"
},
"typeVersion": 1,
"id": "Nota-adhesiva1-1"
},
{
"name": "Nota adhesiva2",
"type": "n8n-nodes-base.stickyNote",
"position": [
1264,
16
],
"parameters": {
"color": 7,
"width": 464,
"height": 80,
"content": "## Creator & Optimizer\nCreates Content & Optimizes"
},
"typeVersion": 1,
"id": "Nota-adhesiva2-2"
},
{
"name": "Nota adhesiva3",
"type": "n8n-nodes-base.stickyNote",
"position": [
2176,
160
],
"parameters": {
"color": 7,
"width": 464,
"height": 80,
"content": "## Designer & Poster\nCreates Design & Posts on LinkedIn"
},
"typeVersion": 1,
"id": "Nota-adhesiva3-3"
},
{
"name": "Activador programado",
"type": "n8n-nodes-base.scheduleTrigger",
"position": [
0,
300
],
"parameters": {
"rule": {
"interval": [
{
"field": "cronExpression",
"expression": "0 11 * * TUE"
},
{
"field": "cronExpression",
"expression": "0 11 * * THU"
}
]
}
},
"typeVersion": 1.2,
"id": "Activador-programado-4"
},
{
"name": "Lectura RSS",
"type": "n8n-nodes-base.rssFeedRead",
"position": [
224,
300
],
"parameters": {
"url": "https://blog.hubspot.com/marketing/rss.xml",
"options": {}
},
"retryOnFail": true,
"typeVersion": 1.2,
"id": "Lectura-RSS-5"
},
{
"name": "Agregar",
"type": "n8n-nodes-base.aggregate",
"position": [
448,
300
],
"parameters": {
"options": {},
"fieldsToAggregate": {
"fieldToAggregate": [
{
"fieldToAggregate": "title"
},
{
"fieldToAggregate": "content"
},
{
"fieldToAggregate": "link"
}
]
}
},
"typeVersion": 1,
"id": "Agregar-6"
},
{
"name": "Agrupar las noticias en 1 elemento",
"type": "n8n-nodes-base.code",
"position": [
672,
300
],
"parameters": {
"jsCode": "// Inputs expected from Aggregate/RSS: arrays: title[], content[], link[]\nconst all = items[0].json; // aggregated item\nconst titles = all.title || [];\nconst contents = all.content || [];\nconst links = all.link || [];\n\nconst articles = [];\nconst lines = [];\n\nconst maxLen = Math.max(titles.length, contents.length, links.length);\nfor (let i = 0; i < maxLen; i++) {\n const obj = {\n id: i + 1, // stable ID (1..N). Use guid if you have one.\n title: titles[i] ?? \"\",\n content: contents[i] ?? \"\",\n link: links[i] ?? \"\"\n };\n articles.push(obj);\n // Short preview for the AI to choose from:\n const preview = (obj.content || \"\").replace(/\\s+/g, \" \").slice(0, 220);\n lines.push(`${obj.id}. ${obj.title}\\n${preview}${preview.length === 220 ? \"…\" : \"\"}`);\n}\n\nreturn [\n {\n json: {\n articles, // keep the structured mapping\n forAI: lines.join(\"\\n\\n\") // human-readable list for the model\n }\n }\n];"
},
"typeVersion": 2,
"id": "Agrupar-las-noticias-en-1-elemento-7"
},
{
"name": "Buscador del mejor artículo",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
896,
300
],
"parameters": {
"text": "=You are (company name) content curator. Select the BEST article for our audience.\n\nCOMPANY AUDIENCE:\n\n\nSELECTION CRITERIA:\nCHECK:\n- Can someone practically apply this TODAY or is it just knowledge?\n- Will they want to save this?\n\nSKIP ARTICLES ABOUT:\n- Pure theory without practical steps\n\nPick only 1 and give only {{ $json.articles[0].link }} as output\n\n{{ $json.forAI }}\n\n",
"options": {},
"promptType": "define"
},
"typeVersion": 2.2,
"id": "Buscador-del-mejor-art-culo-8"
},
{
"name": "Google Gemini Chat Model",
"type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
"position": [
968,
524
],
"parameters": {
"options": {},
"modelName": "models/gemini-1.5-flash"
},
"typeVersion": 1,
"id": "Google-Gemini-Chat-Model-9"
},
{
"name": "Google Gemini Chat Model1",
"type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
"position": [
1320,
400
],
"parameters": {
"options": {}
},
"typeVersion": 1,
"id": "Google-Gemini-Chat-Model1-10"
},
{
"name": "Creador de contenido",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
1248,
176
],
"parameters": {
"text": "=Turn blog into quick byte below 200 words. \n\nCOMPANY AUDIENCE:\n\n\nWRITING RULES:\n- Write for the audience keeping in mind that they need opinion/insights, they don't have time to spare so be very on point and crisp and profound\n- Include specific numbers/time when possible\n- Keep it to the point like in news/bulletin \n- Always use bullets/classified structure, no extra output needed\n\nHere is the blog to use: {{ $json.output }}",
"options": {},
"promptType": "define"
},
"retryOnFail": true,
"typeVersion": 2.2,
"id": "Creador-de-contenido-11"
},
{
"name": "Optimizador de publicaciones",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
1600,
176
],
"parameters": {
"text": "=Analyze this post deeply\n\nPost = {{ $json.output }}\n\nCHECK & OPTIMIZE FOR:\n- Can someone practically apply this TODAY or is it just knowledge?\n- Will THEY want to save this?\n- Does this have fluff/filler words that inflate sentences? Keep sentences small and easy to read.\n- Does it look AI Generated? Prefer human sentence construction\n- No emoji, use → or other symbols for bullets, don't use * or em dash in post, space after every bullet\n- Analyze First line: should not be in text:text format, only mention crux like \"loop marketing strategy\", or use title like \"here's why you need loop marketing\"\n\nAlso create a headline for image for this post, keep it crisp and catchy\n\nOUTPUT:\n{\n \"final_post\": \"[LinkedIn-ready post]\",\n\"image_text\": \"[Headline for image= what the post is about]\"\n \"confidence_score\": [1-10],\n \"post_now\": [true if score >= 7]\n} ",
"options": {},
"promptType": "define",
"hasOutputParser": true
},
"retryOnFail": true,
"typeVersion": 2.2,
"id": "Optimizador-de-publicaciones-12"
},
{
"name": "Google Gemini Chat Model2",
"type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
"position": [
1608,
400
],
"parameters": {
"options": {},
"modelName": "models/gemini-1.5-pro"
},
"typeVersion": 1,
"id": "Google-Gemini-Chat-Model2-13"
},
{
"name": "Analizador de salida estructurada",
"type": "@n8n/n8n-nodes-langchain.outputParserStructured",
"position": [
1736,
400
],
"parameters": {
"jsonSchemaExample": "{\n \"final_post\": \"[LinkedIn-ready post]\",\n \"image_text\": \"[Image Title Catcy]\",\n \"confidence_score\": [10],\n \"post_now\": [true]\n} "
},
"typeVersion": 1.3,
"id": "Analizador-de-salida-estructurada-14"
},
{
"name": "Si",
"type": "n8n-nodes-base.if",
"position": [
1952,
300
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"operator": {
"type": "boolean",
"operation": "true",
"singleValue": true
},
"leftValue": "={{ $json.output.post_now[0] }}",
"rightValue": "true"
}
]
}
},
"typeVersion": 2.2,
"id": "Si-15"
},
{
"name": "Templated",
"type": "n8n-nodes-templated.templated",
"position": [
2176,
300
],
"parameters": {
"layers": {
"layer": [
{
"text": "={{ $json.output.image_text }}",
"layerName": "paragraph-text"
}
]
},
"template": "",
"requestOptions": {}
},
"retryOnFail": true,
"typeVersion": 1,
"id": "Templated-16"
},
{
"name": "Crear una publicación",
"type": "n8n-nodes-base.linkedIn",
"position": [
2624,
300
],
"parameters": {
"text": "={{ $('Post optimizer').item.json.output.final_post }}",
"postAs": "organization",
"organization": "",
"additionalFields": {},
"shareMediaCategory": "IMAGE"
},
"typeVersion": 1,
"id": "Crear-una-publicaci-n-17"
},
{
"name": "HTTP Request",
"type": "n8n-nodes-base.httpRequest",
"position": [
2400,
300
],
"parameters": {
"url": "={{ $json.render_url }}",
"options": {
"response": {
"response": {
"responseFormat": "file"
}
}
}
},
"typeVersion": 4.2,
"id": "HTTP-Request-18"
}
],
"pinData": {},
"connections": {
"Si-15": {
"main": [
[
{
"node": "Templated-16",
"type": "main",
"index": 0
}
],
[
{
"node": "Buscador-del-mejor-art-culo-8",
"type": "main",
"index": 0
}
]
]
},
"Lectura-RSS-5": {
"main": [
[
{
"node": "Agregar-6",
"type": "main",
"index": 0
}
]
]
},
"Agregar-6": {
"main": [
[
{
"node": "Agrupar-las-noticias-en-1-elemento-7",
"type": "main",
"index": 0
}
]
]
},
"Templated-16": {
"main": [
[
{
"node": "HTTP-Request-18",
"type": "main",
"index": 0
}
]
]
},
"HTTP-Request-18": {
"main": [
[
{
"node": "Crear-una-publicaci-n-17",
"type": "main",
"index": 0
}
]
]
},
"Optimizador-de-publicaciones-12": {
"main": [
[
{
"node": "Si-15",
"type": "main",
"index": 0
}
]
]
},
"Creador-de-contenido-11": {
"main": [
[
{
"node": "Optimizador-de-publicaciones-12",
"type": "main",
"index": 0
}
]
]
},
"Activador-programado-4": {
"main": [
[
{
"node": "Lectura-RSS-5",
"type": "main",
"index": 0
}
]
]
},
"Buscador-del-mejor-art-culo-8": {
"main": [
[
{
"node": "Creador-de-contenido-11",
"type": "main",
"index": 0
}
]
]
},
"Google-Gemini-Chat-Model-9": {
"ai_languageModel": [
[
{
"node": "Buscador-del-mejor-art-culo-8",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Analizador-de-salida-estructurada-14": {
"ai_outputParser": [
[
{
"node": "Optimizador-de-publicaciones-12",
"type": "ai_outputParser",
"index": 0
}
]
]
},
"Google-Gemini-Chat-Model1-10": {
"ai_languageModel": [
[
{
"node": "Creador-de-contenido-11",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Google-Gemini-Chat-Model2-13": {
"ai_languageModel": [
[
{
"node": "Optimizador-de-publicaciones-12",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Agrupar-las-noticias-en-1-elemento-7": {
"main": [
[
{
"node": "Buscador-del-mejor-art-culo-8",
"type": "main",
"index": 0
}
]
]
}
}
}¿Cómo usar este flujo de trabajo?
Copie el código de configuración JSON de arriba, cree un nuevo flujo de trabajo en su instancia de n8n y seleccione "Importar desde JSON", pegue la configuración y luego modifique la configuración de credenciales según sea necesario.
¿En qué escenarios es adecuado este flujo de trabajo?
Avanzado - Redes sociales, IA Multimodal
¿Es de pago?
Este flujo de trabajo es completamente gratuito, puede importarlo y usarlo directamente. Sin embargo, tenga en cuenta que los servicios de terceros utilizados en el flujo de trabajo (como la API de OpenAI) pueden requerir un pago por su cuenta.
Flujos de trabajo relacionados recomendados
Shrishti S Nagar
@shrishtisnagarCompartir este flujo de trabajo