AutomationFlowsAI & RAG › Linkedin Content Factory with Openai Research & Replicate Branded Images

Linkedin Content Factory with Openai Research & Replicate Branded Images

ByOnur @onurpolat05 on n8n.io

Template Description: > Never run out of high-quality LinkedIn content again. This workflow is a complete content factory that takes a simple topic from a Google Sheet, uses AI to research a trending angle, writes a full post, generates a unique and on-brand image, and…

Event trigger★★★★☆ complexityAI-powered23 nodesOpenAI ChatTool Serp ApiOutput Parser StructuredGoogle SheetsAgentHTTP RequestLinkedIn
AI & RAG Trigger: Event Nodes: 23 Complexity: ★★★★☆ AI nodes: yes Added:

This workflow corresponds to n8n.io template #8686 — we link there as the canonical source.

This workflow follows the Agent → Google Sheets recipe pattern — see all workflows that pair these two integrations.

The workflow JSON

Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →

Download .json
{
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "nodes": [
    {
      "id": "2c1594d5-e16b-440a-8c27-e000a63584f8",
      "name": "OpenAI Chat Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        -1488,
        464
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4.1-mini"
        },
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "755d6c54-06e7-41ff-8d4b-30c3e40a5797",
      "name": "SerpAPI",
      "type": "@n8n/n8n-nodes-langchain.toolSerpApi",
      "position": [
        -1344,
        464
      ],
      "parameters": {
        "options": {}
      },
      "credentials": {
        "serpApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "e9b499b6-258f-41f9-9571-198194aebdd5",
      "name": "SerpAPI1",
      "type": "@n8n/n8n-nodes-langchain.toolSerpApi",
      "position": [
        -1904,
        480
      ],
      "parameters": {
        "options": {}
      },
      "credentials": {
        "serpApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "bf080aa1-0c97-4645-8acc-48b990efad08",
      "name": "OpenAI Chat Model1",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        -2080,
        464
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4.1-mini"
        },
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "53c9d576-d12a-4996-bf38-656790002255",
      "name": "Edit Fields",
      "type": "n8n-nodes-base.set",
      "position": [
        1088,
        192
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "0abb508c-1bca-4e53-a85e-8bcc223f0365",
              "name": "topic",
              "type": "string",
              "value": "={{ $node[\"4. Generate Branded Image Prompt\"].json.title }}"
            },
            {
              "id": "fb39379c-0ae3-4d6d-81ca-c7fdf26616e2",
              "name": "text",
              "type": "string",
              "value": "={{ $node[\"4. Generate Branded Image Prompt\"].json.text }}"
            },
            {
              "id": "5b01a54d-215f-4d0a-9c9a-4b2a9fc10013",
              "name": "hashtags",
              "type": "string",
              "value": "={{ $node[\"4. Generate Branded Image Prompt\"].json.hashtags }}"
            },
            {
              "id": "060ce06e-55a3-4c63-a642-e3a0af572ddd",
              "name": "imageUrl",
              "type": "string",
              "value": "={{ $('6. Download Generated Image').item.json.output }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "64c5c53e-e326-4949-a058-95ab5f777edd",
      "name": "If",
      "type": "n8n-nodes-base.if",
      "position": [
        -112,
        208
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "ab549fdc-dde3-4bb0-ab38-3635335c5680",
              "operator": {
                "name": "filter.operator.equals",
                "type": "string",
                "operation": "equals"
              },
              "leftValue": "={{ $json.status }}",
              "rightValue": "=succeeded"
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "1e63915c-8b5a-4c7e-ad32-4472d9d08193",
      "name": "When clicking \u2018Execute workflow\u2019",
      "type": "n8n-nodes-base.manualTrigger",
      "position": [
        -2640,
        208
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "2b6f8dec-90b7-4bc0-92b2-0742a9788300",
      "name": "Wait",
      "type": "n8n-nodes-base.wait",
      "position": [
        432,
        368
      ],
      "parameters": {
        "amount": 2
      },
      "typeVersion": 1.1
    },
    {
      "id": "d73df605-2db0-4d19-888a-8c0aaf096a5e",
      "name": "Structured Output Parser",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        -1728,
        464
      ],
      "parameters": {
        "jsonSchemaExample": "{\n  \"selected_topic\": \"string\",\n  \"research_data\": \"detailed info with sources\",\n  \"engagement_score\": \"1-10 rating\"\n} "
      },
      "typeVersion": 1.3
    },
    {
      "id": "3f6e8d03-23ba-4e78-9176-14eb2b0ed2d9",
      "name": "Structured Output Parser1",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        -1184,
        464
      ],
      "parameters": {
        "jsonSchemaExample": "{\n  \"title\": \"Catchy title\",\n  \"text\": \"Main post content\", \n  \"hashtags\": [\"#AI\", \"#Automation\"],\n  \"engagement_elements\": \"hooks, questions, CTAs\"\n}"
      },
      "typeVersion": 1.3
    },
    {
      "id": "d8523615-74aa-4233-a9a7-b76dfa86ecd0",
      "name": "1. Get Pending Topic from Google Sheets",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        -2304,
        208
      ],
      "parameters": {
        "options": {
          "returnFirstMatch": false
        },
        "filtersUI": {
          "values": [
            {
              "lookupValue": "Pending",
              "lookupColumn": "Status"
            }
          ]
        },
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=0",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1YbdujYtvaupBhQ0Aiwt8AKsswLAuge3n0cf6nqdiWcg/edit#gid=0",
          "cachedResultName": "Sayfa1"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1YbdujYtvaupBhQ0Aiwt8AKsswLAuge3n0cf6nqdiWcg",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1YbdujYtvaupBhQ0Aiwt8AKsswLAuge3n0cf6nqdiWcg/edit?usp=drivesdk",
          "cachedResultName": "Linkedin"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.7
    },
    {
      "id": "8cb80dcb-e0e4-4776-9289-bc7564730707",
      "name": "2. Research Topic & Find Viral Angle with AI",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        -1936,
        208
      ],
      "parameters": {
        "text": "=Search for the most engaging and viral AI automation topic from the following sheet data: {{ $json.Topic }} . \n\nFind 3 recent developments, trends, or news that would:\n1. Generate high engagement on LinkedIn\n2. Be relevant to business professionals \n3. Have strong search potential\n\nReturn ONLY a JSON object with:\n{\n  \"selected_topic\": \"string\",\n  \"research_data\": \"detailed info with sources\",\n  \"engagement_score\": \"1-10 rating\"\n} ",
        "options": {
          "systemMessage": "You are a highly specialized researcher and content creator. Your area of expertise is strictly limited to recent developments in artificial intelligence, machine learning models, and automation technologies. Your primary goal is to find trending topics within this specific domain.\n"
        },
        "promptType": "define",
        "hasOutputParser": true
      },
      "typeVersion": 2.2
    },
    {
      "id": "c13fc205-ea81-48bb-b42c-b2b8fabbb783",
      "name": "3. Generate LinkedIn Post Content with AI",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        -1408,
        208
      ],
      "parameters": {
        "text": "=Create a complete LinkedIn post from this research:  {{ $json.output.research_data }}\n\nRequirements:\n- 150-250 words\n- Include 3-5 relevant hashtags  \n- Add engaging hook\n- Professional tone\n- Include call-to-action\n\nSTRICT JSON OUTPUT:\n{\n  \"title\": \"Catchy title\",\n  \"text\": \"Main post content\", \n  \"hashtags\": [\"#AI\", \"#Automation\"],\n  \"engagement_elements\": \"hooks, questions, CTAs\"\n}",
        "options": {
          "systemMessage": "You are a professional content creator and researcher for a leading technology and automation brand. Your task is to use your search tools to find information on a given topic, and then generate a complete LinkedIn post based on your findings. All outputs must be in fluent and professional English and strictly follow the requested JSON format.\n"
        },
        "promptType": "define",
        "hasOutputParser": true
      },
      "typeVersion": 2.2
    },
    {
      "id": "ee1c04cd-bfbc-4694-8abf-230f980a5bcd",
      "name": "4. Generate Branded Image Prompt",
      "type": "n8n-nodes-base.code",
      "position": [
        -1056,
        208
      ],
      "parameters": {
        "jsCode": "// Get the output string from the previous AI Agent node.\nconst parsedData = $json.output;\n\n// Parse the JSON string into a JavaScript object.\n\n\n// Define the fixed image style guide with RAL codes.\nconst fixedImageStyleDetails = `\n  Style: Cinematic, highly detailed, professional, sleek, modern.\n  Composition: Minimalist, concept-driven, abstract elements representing technology and AI. Avoid literal depictions.\n  Color Palette:\n    - Dominant Background Color: Grainy dark grey (RAL 7016 - Anthracite Grey).\n    - Main Element Color: Light grey (RAL 7035 - Light Grey).\n    - Highlight / Accent Color: Vibrant bright red (RAL 3020 - Traffic Red), used for key elements to draw attention.\n  Lighting: Emphasize studio lighting with sharp focus, creating subtle shadows and reflections.\n  Texture: Slightly textured, metallic or matte finishes where appropriate.\n  Output Format: High-resolution, suitable for professional social media platforms (e.g., LinkedIn).\n`;\n\n// Create the final image prompt by combining the dynamic content and the fixed style guide.\nconst imagePrompt = `\n  Create a visually striking and professional image that effectively represents the core message of a LinkedIn post.\n  The post is titled \"${parsedData.title}\" and its content discusses: \"${parsedData.text}\".\n  The image should evoke themes of modern technology, artificial intelligence, and innovation.\n  All images must strictly adhere to the following style guide for aesthetic consistency:\n  ${fixedImageStyleDetails}\n`;\n\n// Return a single object with all the necessary data for the next steps.\n// This includes all the original parsed data and the new image prompt.\nreturn [{\n  json: {\n    title: parsedData.title,\n    text: parsedData.text,\n    hashtags: parsedData.hashtags,\n    imagePrompt: imagePrompt\n  }\n}];"
      },
      "typeVersion": 2
    },
    {
      "id": "1d46afb2-9e14-4ef3-8a01-7dce0a587e95",
      "name": "4.1. Generate Branded Image Prompt",
      "type": "n8n-nodes-base.code",
      "position": [
        -832,
        208
      ],
      "parameters": {
        "jsCode": "// Get the parsed data from the previous node.\nconst postTitle = $json.title;\nconst postText = $json.text;\n\n// A professional style guide to ensure visual consistency.\nconst styleGuide = \"Cinematic, highly detailed, professional, sleek, modern, photorealistic. Color Palette: Dominant background is grainy dark grey (RAL 7016). Main elements are light grey (RAL 7035). Highlights are vibrant bright red (RAL 3020). Lighting: Studio lighting, sharp focus, subtle shadows. Composition: Minimalist, abstract, concept-driven.\";\n\n// Extract keywords from the post text to add to the prompt.\n// This is a simple keyword extraction. A more complex function could be used here.\nconst keywords = postText.split(/[,\\s.!?:]+/).filter(word => word.length > 3).slice(0, 10).join(', ');\n\n// Construct the final, optimized prompt.\nconst imagePrompt = `${styleGuide} A conceptual image for a LinkedIn post. The topic is \"${postTitle}\". Key concepts include: ${keywords}.`;\n\n// Return the new, refined prompt.\nreturn [{\n  json: {\n    imagePrompt: imagePrompt\n  }\n}];"
      },
      "typeVersion": 2
    },
    {
      "id": "243ff9e4-dca7-4826-8a31-71a89188efd8",
      "name": "5a. Start Image Generation (Replicate)",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -608,
        208
      ],
      "parameters": {
        "url": "https://api.replicate.com/v1/models/black-forest-labs/flux-1.1-pro-ultra/predictions",
        "method": "POST",
        "options": {},
        "jsonBody": "={{ \n  {\n    \"input\": {\n      \"raw\": false,\n      \"prompt\": $json.imagePrompt,\n      \"aspect_ratio\": \"3:2\",\n      \"output_format\": \"jpg\",\n      \"safety_tolerance\": 2,\n      \"image_prompt_strength\": 0.1\n    }\n  }\n}}",
        "sendBody": true,
        "sendHeaders": true,
        "specifyBody": "json",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth",
        "headerParameters": {
          "parameters": [
            {
              "name": "Prefer",
              "value": "wait"
            }
          ]
        }
      },
      "credentials": {
        "httpHeaderAuth": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "804ee2af-53cb-4ef0-b778-661f7e3783ef",
      "name": "5b. Check Image Status",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -352,
        208
      ],
      "parameters": {
        "url": "=https://api.replicate.com/v1/predictions/{{ $json.id }}",
        "options": {},
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth"
      },
      "credentials": {
        "httpHeaderAuth": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "d0479474-a74a-4652-bc71-5a2e03cde61d",
      "name": "6. Download Generated Image",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        560,
        192
      ],
      "parameters": {
        "url": "={{ $json.output }}",
        "options": {
          "response": {
            "response": {
              "responseFormat": "file"
            }
          }
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "01b0ed84-3584-4764-8663-7e5736ba7b19",
      "name": "7. Publish Post to LinkedIn",
      "type": "n8n-nodes-base.linkedIn",
      "position": [
        816,
        192
      ],
      "parameters": {
        "text": "={{ $('4. Generate Branded Image Prompt').item.json.title }} \\n\\n {{ $('4. Generate Branded Image Prompt').item.json.text }} \\n\\n {{ $('4. Generate Branded Image Prompt').item.json.hashtags.join(' ') }}",
        "additionalFields": {},
        "shareMediaCategory": "IMAGE"
      },
      "credentials": {
        "linkedInOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "1c61f258-fad8-4b50-a1f3-3b5fa76f9df3",
      "name": "8.Update Google Sheets",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        1312,
        192
      ],
      "parameters": {
        "columns": {
          "value": {
            "text": "={{ $json.text }}",
            "Topic": "={{ $json.topic }}",
            "Status": "done",
            "hashtags": "={{ $json. hashtags }}",
            "imageUrl": "={{ $json. imageUrl }}"
          },
          "schema": [
            {
              "id": "Topic",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Topic",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Status",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Status",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "text",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "text",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "hashtags",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "hashtags",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "imageUrl",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "imageUrl",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "Topic"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "appendOrUpdate",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=0",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1YbdujYtvaupBhQ0Aiwt8AKsswLAuge3n0cf6nqdiWcg/edit#gid=0",
          "cachedResultName": "Linkedin Post"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1YbdujYtvaupBhQ0Aiwt8AKsswLAuge3n0cf6nqdiWcg",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1YbdujYtvaupBhQ0Aiwt8AKsswLAuge3n0cf6nqdiWcg/edit?usp=drivesdk",
          "cachedResultName": "Linkedin"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.7
    },
    {
      "id": "f280ce23-a994-4181-a5eb-1c6ef6822d5f",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -3168,
        96
      ],
      "parameters": {
        "width": 448,
        "height": 640,
        "content": "# AI LinkedIn Content Factory\n\n**Purpose:** This workflow transforms a simple topic from a Google Sheet into a fully researched, written, and visually branded LinkedIn post, then publishes it automatically.\n\n### Quick Setup Guide\n\n1.  **Configure Credentials:**\n    *   `Google Sheets` (Nodes 1 & 8): Set up your Google account.\n    *   `AI Agents` (Nodes 2 & 3): Configure your OpenAI & SerpAPI credentials.\n    *   `Image Generation` (Node 5a): Configure your Replicate credentials.\n    *   `Publish Post` (Node 7): Configure your LinkedIn credentials.\n2.  **Prepare Your Sheet:** In the `1. Get Pending Topic` node, select your spreadsheet. Ensure it has columns named \"Topic\" and \"Status\". Add topics and set their status to \"Pending\".\n3.  **Customize Image Style (Optional):** In the `4. Generate Branded Image Prompt` node, you can change the `fixedImageStyleDetails` variable to match your own brand's color palette (using RAL codes) and style."
      },
      "typeVersion": 1
    },
    {
      "id": "53844269-a8b7-49a3-b422-8d19c9caf61a",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1936,
        -48
      ],
      "parameters": {
        "color": 4,
        "width": 704,
        "height": 208,
        "content": "### Phase 1: AI Research & Content Generation\n\n**Purpose:** This block acts as your AI content strategist.\n\n*   **2. Research Topic:** The first AI Agent takes your basic topic, searches for recent news and trends using SerpAPI, and finds a high-engagement, \"viral\" angle to focus on.\n*   **3. Generate Post:** The second AI Agent takes this research and writes a complete, professional LinkedIn post, including a title, main text, and relevant hashtags."
      },
      "typeVersion": 1
    },
    {
      "id": "a8a07fde-c0e8-4e0e-a1b6-b69971dfa74f",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -816,
        -32
      ],
      "parameters": {
        "color": 6,
        "width": 736,
        "height": 208,
        "content": "### Phase 2: AI Branded Image Generation\n\n**Purpose:** This block creates a unique, on-brand image for your post.\n\n*   **4. Generate Prompt:** A `Code` node combines the post's content with a pre-defined **Brand Style Guide** (colors, composition, lighting) to create a highly detailed prompt for the image generator.\n*   **5. Generate & Check Image:** It sends the prompt to Replicate and enters a loop, checking every few seconds until the image is successfully generated."
      },
      "typeVersion": 1
    }
  ],
  "connections": {
    "If": {
      "main": [
        [
          {
            "node": "6. Download Generated Image",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Wait",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Wait": {
      "main": [
        [
          {
            "node": "5b. Check Image Status",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "SerpAPI": {
      "ai_tool": [
        [
          {
            "node": "3. Generate LinkedIn Post Content with AI",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "SerpAPI1": {
      "ai_tool": [
        [
          {
            "node": "2. Research Topic & Find Viral Angle with AI",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Edit Fields": {
      "main": [
        [
          {
            "node": "8.Update Google Sheets",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "3. Generate LinkedIn Post Content with AI",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model1": {
      "ai_languageModel": [
        [
          {
            "node": "2. Research Topic & Find Viral Angle with AI",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "5b. Check Image Status": {
      "main": [
        [
          {
            "node": "If",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Structured Output Parser": {
      "ai_outputParser": [
        [
          {
            "node": "2. Research Topic & Find Viral Angle with AI",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "Structured Output Parser1": {
      "ai_outputParser": [
        [
          {
            "node": "3. Generate LinkedIn Post Content with AI",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "6. Download Generated Image": {
      "main": [
        [
          {
            "node": "7. Publish Post to LinkedIn",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "7. Publish Post to LinkedIn": {
      "main": [
        [
          {
            "node": "Edit Fields",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "4. Generate Branded Image Prompt": {
      "main": [
        [
          {
            "node": "4.1. Generate Branded Image Prompt",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "4.1. Generate Branded Image Prompt": {
      "main": [
        [
          {
            "node": "5a. Start Image Generation (Replicate)",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "When clicking \u2018Execute workflow\u2019": {
      "main": [
        [
          {
            "node": "1. Get Pending Topic from Google Sheets",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "5a. Start Image Generation (Replicate)": {
      "main": [
        [
          {
            "node": "5b. Check Image Status",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "1. Get Pending Topic from Google Sheets": {
      "main": [
        [
          {
            "node": "2. Research Topic & Find Viral Angle with AI",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "3. Generate LinkedIn Post Content with AI": {
      "main": [
        [
          {
            "node": "4. Generate Branded Image Prompt",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "2. Research Topic & Find Viral Angle with AI": {
      "main": [
        [
          {
            "node": "3. Generate LinkedIn Post Content with AI",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}

Credentials you'll need

Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.

Pro

For the full experience including quality scoring and batch install features for each workflow upgrade to Pro

About this workflow

Template Description: &gt; Never run out of high-quality LinkedIn content again. This workflow is a complete content factory that takes a simple topic from a Google Sheet, uses AI to research a trending angle, writes a full post, generates a unique and on-brand image, and…

Source: https://n8n.io/workflows/8686/ — original creator credit. Request a take-down →

More AI & RAG workflows → · Browse all categories →

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

AI & RAG

This automation is designed to help you generate AI-powered music tracks, cover art, and fully rendered music videos — all triggered from a simple Telegram chat and managed via Google Sheets.

OpenAI Chat, Memory Buffer Window, Output Parser Structured +11
AI & RAG

This workflow is designed for marketers, content creators, agencies, and solo founders who want to publish long‑form posts with visuals on autopilot using n8n and AI agents. ​

Tool Http Request, Agent, HTTP Request +27
AI & RAG

Whether you’re a product manager, developer, or simply curious about workflow automation, you’re in the right place. This n8n workflow is designed to help you streamline and automate your social media

Output Parser Structured, OpenAI Chat, LinkedIn +8
AI & RAG

This workflow automates SEO content creation by aggregating multi-source research and generating optimized articles. Designed for content marketers, SEO specialists, and digital agencies, it solves th

Agent, OpenAI Chat, Tool Serp Api +6
AI & RAG

🎯 Create viral TikToks, Shorts, Reels, podcasts, and ASMR videos in minutes — all on autopilot.

OpenAI, HTTP Request, Form Trigger +7