KI-generierte LinkedIn-Beiträge mit manueller Freigabe

Experte

Dies ist ein Social Media, Multimodal AI-Bereich Automatisierungsworkflow mit 19 Nodes. Hauptsächlich werden Code, Merge, Filter, HttpRequest, GoogleSheets und andere Nodes verwendet. Verwendung von GPT-4, GoToHuman und Blotato für KI-generierte LinkedIn-Beiträge mit manueller Freigabe

Voraussetzungen
  • Möglicherweise sind Ziel-API-Anmeldedaten erforderlich
  • Google Sheets API-Anmeldedaten
  • OpenAI API Key
Workflow-Vorschau
Visualisierung der Node-Verbindungen, mit Zoom und Pan
Workflow exportieren
Kopieren Sie die folgende JSON-Konfiguration und importieren Sie sie in n8n
{
  "meta": {
    "instanceId": "efb474b59b0341d7791932605bd9ff04a6c7ed9941fdd53dc4a2e4b99a6f9439",
    "templateCredsSetupCompleted": true
  },
  "nodes": [
    {
      "id": "cebd910c-6c4b-4ff4-95d8-a9bd7f2e6bf0",
      "name": "Haftnotiz",
      "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": "Werkzeug: Inject Creativity",
      "type": "@n8n/n8n-nodes-langchain.toolThink",
      "position": [
        800,
        760
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "e2be1cd1-158f-4599-ae5c-fbc0a39eb64e",
      "name": "Parser: Extract JSON from 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": "Haftnotiz1",
      "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": "Haftnotiz3",
      "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": "Haftnotiz4",
      "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": "Daily Trigger",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        -420,
        480
      ],
      "parameters": {
        "rule": {
          "interval": [
            {}
          ]
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "f9c4b8af-412d-4057-825b-9c07f3bf96be",
      "name": "Test",
      "type": "n8n-nodes-base.manualTrigger",
      "position": [
        -460,
        740
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "719914a6-a513-4cb7-9e73-c04a68be4239",
      "name": "Get Today's Idea",
      "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": "Output Today's Date",
      "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": "Keep only todays idea",
      "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": "KI-Agent: Create caption for 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": "Mark complete in google sheets",
      "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": "Save caption to google sheets",
      "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": "Ask Human for approval",
      "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": "Keep only if approved",
      "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": "Post to 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": "Haftnotiz2",
      "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": "AI Agent: Create caption for linkedin",
            "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": "AI Agent: Create caption for linkedin",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "78f79c4f-067d-4388-8a53-7b298d15c342": {
      "main": [
        [
          {
            "node": "0e72f635-22b8-432a-b90f-4d9c0ad7a94f",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Tool: Inject Creativity": {
      "ai_tool": [
        [
          {
            "node": "AI Agent: Create caption for linkedin",
            "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": "AI Agent: Create caption for linkedin",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "AI Agent: Create caption for linkedin": {
      "main": [
        [
          {
            "node": "148a16f9-7bc9-4bf2-8676-520c1fedce07",
            "type": "main",
            "index": 0
          },
          {
            "node": "f138a0e6-aec9-4030-9567-c3b18e388270",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
Häufig gestellte Fragen

Wie verwende ich diesen Workflow?

Kopieren Sie den obigen JSON-Code, erstellen Sie einen neuen Workflow in Ihrer n8n-Instanz und wählen Sie "Aus JSON importieren". Fügen Sie die Konfiguration ein und passen Sie die Anmeldedaten nach Bedarf an.

Für welche Szenarien ist dieser Workflow geeignet?

Experte - Soziale Medien, Multimodales KI

Ist es kostenpflichtig?

Dieser Workflow ist völlig kostenlos. Beachten Sie jedoch, dass Drittanbieterdienste (wie OpenAI API), die im Workflow verwendet werden, möglicherweise kostenpflichtig sind.

Workflow-Informationen
Schwierigkeitsgrad
Experte
Anzahl der Nodes19
Kategorie2
Node-Typen13
Schwierigkeitsbeschreibung

Für fortgeschrittene Benutzer, komplexe Workflows mit 16+ Nodes

Autor
Robert Breen

Robert Breen

@rbreen

Professional 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.

Externe Links
Auf n8n.io ansehen

Diesen Workflow teilen

Kategorien

Kategorien: 34