Generación de publicaciones para LinkedIn con IA y aprobación humana
Este es unSocial Media, Multimodal AIflujo de automatización del dominio deautomatización que contiene 19 nodos.Utiliza principalmente nodos como Code, Merge, Filter, HttpRequest, GoogleSheets. Utiliza GPT-4, GoToHuman y Blotato para generar publicaciones de LinkedIn con aprobación humana
- •Pueden requerirse credenciales de autenticación para la API de destino
- •Credenciales de API de Google Sheets
- •Clave de API de OpenAI
Nodos utilizados (19)
Categoría
{
"meta": {
"instanceId": "efb474b59b0341d7791932605bd9ff04a6c7ed9941fdd53dc4a2e4b99a6f9439",
"templateCredsSetupCompleted": true
},
"nodes": [
{
"id": "cebd910c-6c4b-4ff4-95d8-a9bd7f2e6bf0",
"name": "Nota adhesiva",
"type": "n8n-nodes-base.stickyNote",
"position": [
420,
-40
],
"parameters": {
"color": 5,
"width": 1200,
"height": 1140,
"content": "## ✅ Step 2 — Generate Caption with OpenAI\n\n### 1. Add Your OpenAI Credential\n- Go to **Credentials > OpenAI API**.\n- Paste your API key and save.\n- Make sure your model is set to `gpt-4.1` or similar.\n\n### 2. Workflow Logic\n- The `idea` is sent to an **AI Agent node**.\n- The prompt instructs the AI to generate a short, emoji-rich LinkedIn caption.\n- A **Parser node** structures the JSON output to extract just the caption.\n\n### 3. Save Caption\n- The AI-generated caption is written back to the Google Sheet in the `caption` column.\n- The `complete` column is also updated to “Yes”.\n\n---"
},
"typeVersion": 1
},
{
"id": "b8a2624c-e353-47af-b2c7-81d74155499d",
"name": "Herramienta: Inyectar creatividad",
"type": "@n8n/n8n-nodes-langchain.toolThink",
"position": [
800,
760
],
"parameters": {},
"typeVersion": 1
},
{
"id": "e2be1cd1-158f-4599-ae5c-fbc0a39eb64e",
"name": "Analizador: Extraer JSON de Idea",
"type": "@n8n/n8n-nodes-langchain.outputParserStructured",
"position": [
980,
760
],
"parameters": {
"jsonSchemaExample": "[\n {\n \"Caption\": \"\"\n }\n]\n"
},
"typeVersion": 1.2
},
{
"id": "f7456d62-8055-4d03-abc0-f4d633ca8e82",
"name": "openai",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
620,
780
],
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "gpt-4.1",
"cachedResultName": "gpt-4.1"
},
"options": {}
},
"credentials": {
"openAiApi": {
"id": "ghJTvay8CvwXDsXz",
"name": "OpenAi account"
}
},
"typeVersion": 1.2
},
{
"id": "f962953e-7f69-454d-a904-c9813db3a6c4",
"name": "Nota adhesiva1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-580,
-40
],
"parameters": {
"width": 980,
"height": 1140,
"content": "## ✅ Step 1 — Get Today’s Topic from Google Sheets\n\n### 1. Set Up Google Sheets Credential in n8n\n- Go to **Settings > Credentials > Google Sheets OAuth2**.\n- Authorize access to your Google account.\n- Make sure you’ve copied this Google Sheet: \n 👉 [Copy this sheet](https://docs.google.com/spreadsheets/d/1oC3dbRkGF_bSIKuFKtSJsYS-ZypT2uk7jPsAni8y154/copy)\n\n### 2. Workflow Logic\n- A **Schedule Trigger** (or Manual Trigger for testing) runs daily.\n- A **Code Node** generates today’s date in ISO format.\n- The **Merge Node** filters to only return the row in the sheet that matches today’s date.\n- Result: You have today’s `idea` ready to process.\n\n---\n"
},
"typeVersion": 1
},
{
"id": "c539e883-f18d-49f3-980f-3b743145274a",
"name": "Nota adhesiva3",
"type": "n8n-nodes-base.stickyNote",
"position": [
1640,
-40
],
"parameters": {
"color": 3,
"width": 320,
"height": 1140,
"content": "### 1. Set Up GoToHuman\n- Go to [GoToHuman](https://gotohuman.com) and create an account.\n- Create a **Review Template** for content approvals.\n- In n8n, add your **GoToHuman credential** under **Credentials**.\n- Use the **reviewTemplateId** from your template in the workflow node.\n\n### 2. Workflow Logic\n- The caption is sent to the **Ask Human for approval** node (GoToHuman).\n- The approver sees the caption and can choose to **Approve** or **Reject**.\n- A **Filter node** ensures the workflow only continues if the caption is approved.\n\n---"
},
"typeVersion": 1
},
{
"id": "e39e9b93-f95e-4227-808f-031f30b4f579",
"name": "Nota adhesiva4",
"type": "n8n-nodes-base.stickyNote",
"position": [
1980,
-40
],
"parameters": {
"color": 4,
"width": 380,
"height": 1140,
"content": "## ✅ Step 4 — Publish to LinkedIn via Blotato\n\n### 1. Set Up Blotato\n- Go to [Blotato](https://blotato.com) and create an account.\n- Generate a **Blotato API Key** and get your **Account ID**.\n- Paste these into the **HTTP Request node** under headers/body:\n - Header: `blotato-api-key: YOUR_API_KEY`\n - Body:\n ```json\n {\n \"post\": {\n \"accountId\": \"YOUR_ACCOUNT_ID\",\n \"target\": { \"targetType\": \"linkedin\" },\n \"content\": {\n \"text\": \"{{ $('Ask Human for approval').item.json.responseValues.text.value }}\",\n \"platform\": \"linkedin\",\n \"mediaUrls\": []\n }\n }\n }\n ```"
},
"typeVersion": 1
},
{
"id": "5e73c568-4158-422c-b045-c208a5dc018b",
"name": "Activador diario",
"type": "n8n-nodes-base.scheduleTrigger",
"position": [
-420,
480
],
"parameters": {
"rule": {
"interval": [
{}
]
}
},
"typeVersion": 1.2
},
{
"id": "f9c4b8af-412d-4057-825b-9c07f3bf96be",
"name": "Prueba",
"type": "n8n-nodes-base.manualTrigger",
"position": [
-460,
740
],
"parameters": {},
"typeVersion": 1
},
{
"id": "719914a6-a513-4cb7-9e73-c04a68be4239",
"name": "Obtener idea del día",
"type": "n8n-nodes-base.googleSheets",
"position": [
-120,
540
],
"parameters": {
"options": {},
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1oC3dbRkGF_bSIKuFKtSJsYS-ZypT2uk7jPsAni8y154/edit#gid=0",
"cachedResultName": "Sheet1"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1oC3dbRkGF_bSIKuFKtSJsYS-ZypT2uk7jPsAni8y154",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1oC3dbRkGF_bSIKuFKtSJsYS-ZypT2uk7jPsAni8y154/edit?usp=drivesdk",
"cachedResultName": "SampleTopics"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"id": "WsgMg14OYooIdvn7",
"name": "Google Sheets account"
}
},
"typeVersion": 4.6
},
{
"id": "5f200d10-1bf3-4325-945f-1f49e22a77ce",
"name": "Mostrar fecha actual",
"type": "n8n-nodes-base.code",
"position": [
40,
660
],
"parameters": {
"jsCode": "const today = new Date();\ntoday.setHours(0, 0, 0, 0); // Normalize to start of day\n\nreturn [\n {\n json: {\n today: today.toISOString().split('T')[0] // e.g., \"2025-07-30\"\n }\n }\n];\n"
},
"typeVersion": 2
},
{
"id": "7885628d-316a-4c9d-b6b2-0a476c289b03",
"name": "Mantener solo la idea de hoy",
"type": "n8n-nodes-base.merge",
"position": [
180,
440
],
"parameters": {
"mode": "combine",
"options": {},
"advanced": true,
"mergeByFields": {
"values": [
{
"field1": "Date",
"field2": "today"
}
]
}
},
"typeVersion": 3.2
},
{
"id": "e1be8e6f-cf27-4afd-b817-819ec952de4d",
"name": "Agente de IA: Crear título para linkedin",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
680,
500
],
"parameters": {
"text": "=Idea: {{ $json.idea }}",
"options": {
"systemMessage": "=your job is to expand on the idea and turn it into a social media post that will capture users attention. keep it to two sentances using emoji's\n\nOutupt like this. \n\n[\n {\n \"Caption\": \"\"\n }\n]"
},
"promptType": "define",
"hasOutputParser": true
},
"typeVersion": 1.9
},
{
"id": "f138a0e6-aec9-4030-9567-c3b18e388270",
"name": "Marcar como completado en hojas google",
"type": "n8n-nodes-base.googleSheets",
"position": [
1320,
440
],
"parameters": {
"columns": {
"value": {
"Date": "={{ $('Get Today's Idea').item.json.Date }}",
"complete": "Yes"
},
"schema": [
{
"id": "id",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "id",
"defaultMatch": true,
"canBeUsedToMatch": true
},
{
"id": "Date",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Date",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "idea",
"type": "string",
"display": true,
"required": false,
"displayName": "idea",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "caption",
"type": "string",
"display": true,
"required": false,
"displayName": "caption",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "complete",
"type": "string",
"display": true,
"required": false,
"displayName": "complete",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "row_number",
"type": "string",
"display": true,
"removed": true,
"readOnly": true,
"required": false,
"displayName": "row_number",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [
"Date"
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "update",
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1oC3dbRkGF_bSIKuFKtSJsYS-ZypT2uk7jPsAni8y154/edit#gid=0",
"cachedResultName": "Sheet1"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1oC3dbRkGF_bSIKuFKtSJsYS-ZypT2uk7jPsAni8y154",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1oC3dbRkGF_bSIKuFKtSJsYS-ZypT2uk7jPsAni8y154/edit?usp=drivesdk",
"cachedResultName": "SampleTopics"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"id": "WsgMg14OYooIdvn7",
"name": "Google Sheets account"
}
},
"typeVersion": 4.5
},
{
"id": "148a16f9-7bc9-4bf2-8676-520c1fedce07",
"name": "Guardar título en hojas google",
"type": "n8n-nodes-base.googleSheets",
"position": [
1320,
700
],
"parameters": {
"columns": {
"value": {
"Date": "={{ $('Get Today's Idea').item.json.Date }}",
"caption": "={{ $json.output[0].Caption }}"
},
"schema": [
{
"id": "id",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "id",
"defaultMatch": true,
"canBeUsedToMatch": true
},
{
"id": "Date",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Date",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "idea",
"type": "string",
"display": true,
"required": false,
"displayName": "idea",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "caption",
"type": "string",
"display": true,
"required": false,
"displayName": "caption",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "complete",
"type": "string",
"display": true,
"required": false,
"displayName": "complete",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "STATUS",
"type": "string",
"display": true,
"required": false,
"displayName": "STATUS",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [
"Date"
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "appendOrUpdate",
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1oC3dbRkGF_bSIKuFKtSJsYS-ZypT2uk7jPsAni8y154/edit#gid=0",
"cachedResultName": "Sheet1"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1oC3dbRkGF_bSIKuFKtSJsYS-ZypT2uk7jPsAni8y154",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1oC3dbRkGF_bSIKuFKtSJsYS-ZypT2uk7jPsAni8y154/edit?usp=drivesdk",
"cachedResultName": "SampleTopics"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"id": "WsgMg14OYooIdvn7",
"name": "Google Sheets account"
}
},
"typeVersion": 4.5
},
{
"id": "78f79c4f-067d-4388-8a53-7b298d15c342",
"name": "Solicitar aprobación humana",
"type": "@gotohuman/n8n-nodes-gotohuman.gotoHuman",
"position": [
1680,
420
],
"webhookId": "6d42cd89-8e27-4747-8636-87d6adcd9f77",
"parameters": {
"fields": {
"value": {
"text": "={{ $json.caption }}"
},
"schema": [
{
"id": "text",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "text (text)",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [
"text"
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"additionalFields": {},
"reviewTemplateID": {
"__rl": true,
"mode": "list",
"value": "RoUEcfHxQX17pM8Roj7i",
"cachedResultName": "My Review Step (RoUEcfHxQX17pM8Roj7i)"
}
},
"credentials": {
"gotoHumanApi": {
"id": "DDAwJMAARwFCF0fA",
"name": "gotoHuman account"
}
},
"typeVersion": 1
},
{
"id": "0e72f635-22b8-432a-b90f-4d9c0ad7a94f",
"name": "Mantener solo si está aprobado",
"type": "n8n-nodes-base.filter",
"position": [
1820,
720
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "4966b55f-f10b-415a-bc81-f8fedfc60573",
"operator": {
"name": "filter.operator.equals",
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.response }}",
"rightValue": "approved"
}
]
}
},
"typeVersion": 2.2
},
{
"id": "c433a60f-b108-42fe-9eb0-78bd280ab68c",
"name": "Publicar en Linkedin",
"type": "n8n-nodes-base.httpRequest",
"position": [
2140,
700
],
"parameters": {
"url": "https://backend.blotato.com/v2/posts",
"method": "POST",
"options": {},
"jsonBody": "={\n \"post\": {\n \"accountId\": \"your account id\",\n \"target\": {\n \"targetType\": \"linkedin\"\n },\n \"content\": {\n \"text\": \"{{ $('Ask Human for approval').item.json.responseValues.text.value }}\",\n \"platform\": \"linkedin\",\n \"mediaUrls\": []\n }\n }\n}\n",
"sendBody": true,
"sendHeaders": true,
"specifyBody": "json",
"headerParameters": {
"parameters": [
{
"name": "blotato-api-key",
"value": "your api key"
}
]
}
},
"typeVersion": 4.2
},
{
"id": "91e7834b-4280-40e4-aad1-4015c21ef33a",
"name": "Nota adhesiva2",
"type": "n8n-nodes-base.stickyNote",
"position": [
-580,
-280
],
"parameters": {
"color": 6,
"width": 2940,
"height": 200,
"content": "# 🤖 Automated LinkedIn Posting with OpenAI, GoToHuman, and Blotato\n\n## 📬 Need Help?\n\nMessage me on [LinkedIn](https://www.linkedin.com/in/robert-breen-29429625/) \nor email me at **robert@ynteractive.com**\n"
},
"typeVersion": 1
}
],
"pinData": {},
"connections": {
"f9c4b8af-412d-4057-825b-9c07f3bf96be": {
"main": [
[
{
"node": "719914a6-a513-4cb7-9e73-c04a68be4239",
"type": "main",
"index": 0
},
{
"node": "5f200d10-1bf3-4325-945f-1f49e22a77ce",
"type": "main",
"index": 0
}
]
]
},
"f7456d62-8055-4d03-abc0-f4d633ca8e82": {
"ai_languageModel": [
[
{
"node": "e1be8e6f-cf27-4afd-b817-819ec952de4d",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"5e73c568-4158-422c-b045-c208a5dc018b": {
"main": [
[
{
"node": "719914a6-a513-4cb7-9e73-c04a68be4239",
"type": "main",
"index": 0
}
]
]
},
"719914a6-a513-4cb7-9e73-c04a68be4239": {
"main": [
[
{
"node": "7885628d-316a-4c9d-b6b2-0a476c289b03",
"type": "main",
"index": 0
}
]
]
},
"5f200d10-1bf3-4325-945f-1f49e22a77ce": {
"main": [
[
{
"node": "7885628d-316a-4c9d-b6b2-0a476c289b03",
"type": "main",
"index": 1
}
]
]
},
"0e72f635-22b8-432a-b90f-4d9c0ad7a94f": {
"main": [
[
{
"node": "c433a60f-b108-42fe-9eb0-78bd280ab68c",
"type": "main",
"index": 0
}
]
]
},
"7885628d-316a-4c9d-b6b2-0a476c289b03": {
"main": [
[
{
"node": "e1be8e6f-cf27-4afd-b817-819ec952de4d",
"type": "main",
"index": 0
}
]
]
},
"78f79c4f-067d-4388-8a53-7b298d15c342": {
"main": [
[
{
"node": "0e72f635-22b8-432a-b90f-4d9c0ad7a94f",
"type": "main",
"index": 0
}
]
]
},
"b8a2624c-e353-47af-b2c7-81d74155499d": {
"ai_tool": [
[
{
"node": "e1be8e6f-cf27-4afd-b817-819ec952de4d",
"type": "ai_tool",
"index": 0
}
]
]
},
"148a16f9-7bc9-4bf2-8676-520c1fedce07": {
"main": [
[
{
"node": "78f79c4f-067d-4388-8a53-7b298d15c342",
"type": "main",
"index": 0
}
]
]
},
"e2be1cd1-158f-4599-ae5c-fbc0a39eb64e": {
"ai_outputParser": [
[
{
"node": "e1be8e6f-cf27-4afd-b817-819ec952de4d",
"type": "ai_outputParser",
"index": 0
}
]
]
},
"e1be8e6f-cf27-4afd-b817-819ec952de4d": {
"main": [
[
{
"node": "148a16f9-7bc9-4bf2-8676-520c1fedce07",
"type": "main",
"index": 0
},
{
"node": "f138a0e6-aec9-4030-9567-c3b18e388270",
"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
Robert Breen
@rbreenProfessional services consultant with over 10 years of experience solving complex business problems across industries. I specialize in n8n and process automation—designing custom workflows that integrate tools like Google Calendar, Airtable, GPT, and internal systems. Whether you need to automate scheduling, sync data, or streamline operations, I build solutions that save time and drive results.
Compartir este flujo de trabajo