AutomationFlowsAI & RAG › Ai-powered Daily Linkedin Post Creator with Openai Feedback Loop and Notion

Ai-powered Daily Linkedin Post Creator with Openai Feedback Loop and Notion

ByNabin Bhandari @knabinbhandari on n8n.io

This n8n template automatically creates and publishes high-quality LinkedIn posts using your brand brief, AI-generated ideas, and structured feedback loops — all powered by OpenAI. Perfect for solo creators, marketers, and startup teams building a consistent presence on LinkedIn.

Event trigger★★★★☆ complexityAI-powered28 nodesOpenAI ChatMemory Buffer WindowTool WorkflowExecute Workflow TriggerNotionOpenAIAgentLinkedIn
AI & RAG Trigger: Event Nodes: 28 Complexity: ★★★★☆ AI nodes: yes Added:

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

This workflow follows the Agent → Execute Workflow Trigger 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
{
  "id": "RZDy1EVKnrfLB3fn",
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "name": "Content _Creator",
  "tags": [],
  "nodes": [
    {
      "id": "1b910ad2-7152-479c-9f08-0d5630fbd589",
      "name": "OpenAI Chat Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        704,
        64
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4.1-mini"
        },
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "8116d89b-6516-4a21-82b5-aa3470c60382",
      "name": "Simple Memory",
      "type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
      "position": [
        896,
        80
      ],
      "parameters": {},
      "typeVersion": 1.3
    },
    {
      "id": "ba7f83b0-55b2-4a10-84ee-e9c9c5537da8",
      "name": "Get_ Brand _Brief",
      "type": "@n8n/n8n-nodes-langchain.toolWorkflow",
      "position": [
        1072,
        96
      ],
      "parameters": {
        "workflowId": {
          "__rl": true,
          "mode": "list",
          "value": "UbKh62LfKoMDeyUo",
          "cachedResultName": "Get Brand Brief"
        },
        "description": "Call this tool to get Nabin Bhandari's brand brief and guidelines.",
        "workflowInputs": {
          "value": {},
          "schema": [],
          "mappingMode": "defineBelow",
          "matchingColumns": [],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "12872369-c17a-41e5-8ff0-a91db4999ab9",
      "name": "Get_Content_Feedback",
      "type": "@n8n/n8n-nodes-langchain.toolWorkflow",
      "position": [
        1264,
        96
      ],
      "parameters": {
        "workflowId": {
          "__rl": true,
          "mode": "list",
          "value": "3Bnlfdq60OZoXcba",
          "cachedResultName": "Get Content Feedback"
        },
        "description": "Call this to get a feedback and a grade for your content.",
        "workflowInputs": {
          "value": {},
          "schema": [],
          "mappingMode": "defineBelow",
          "matchingColumns": [],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "0e2982fb-bfaa-4d37-a731-1f2f179b34c4",
      "name": "Get Content Ideas",
      "type": "n8n-nodes-base.executeWorkflow",
      "position": [
        -96,
        -64
      ],
      "parameters": {
        "options": {},
        "workflowId": {
          "__rl": true,
          "mode": "list",
          "value": "N5PyYK0EClSQRWNK",
          "cachedResultName": "Get Content Ideas"
        },
        "workflowInputs": {
          "value": {},
          "schema": [],
          "mappingMode": "defineBelow",
          "matchingColumns": [],
          "attemptToConvertTypes": false,
          "convertFieldsToString": true
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "be8c25a1-0bd8-4f56-8b09-f0788cb5feb9",
      "name": "When Executed by Another Workflow",
      "type": "n8n-nodes-base.executeWorkflowTrigger",
      "position": [
        -384,
        -464
      ],
      "parameters": {
        "inputSource": "passthrough"
      },
      "typeVersion": 1.1
    },
    {
      "id": "0e4a2ba9-053f-4ecd-84cc-9585324b7111",
      "name": "Aggregate",
      "type": "n8n-nodes-base.aggregate",
      "position": [
        32,
        -464
      ],
      "parameters": {
        "options": {},
        "fieldsToAggregate": {
          "fieldToAggregate": [
            {
              "fieldToAggregate": "content"
            }
          ]
        }
      },
      "typeVersion": 1
    },
    {
      "id": "92c10cc6-ccc2-4b12-a586-1c4fb9df8d6a",
      "name": "Get Brand Brief",
      "type": "n8n-nodes-base.notion",
      "position": [
        -176,
        -464
      ],
      "parameters": {
        "blockId": {
          "__rl": true,
          "mode": "url",
          "value": "https://www.notion.so/Brand-Brief-245bda7c79be804dbe6bf6d78e041bf7"
        },
        "resource": "block",
        "operation": "getAll"
      },
      "credentials": {
        "notionApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "4d14408e-e7e5-4189-8f4e-92ee1b55f197",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -416,
        -512
      ],
      "parameters": {
        "width": 880,
        "height": 192,
        "content": "Get Brand Brief"
      },
      "typeVersion": 1
    },
    {
      "id": "91bec35e-3b71-43b9-b4d8-ba6ae3ceb471",
      "name": "Get Content Feedback",
      "type": "@n8n/n8n-nodes-langchain.openAi",
      "position": [
        816,
        -480
      ],
      "parameters": {
        "modelId": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4.1-mini",
          "cachedResultName": "GPT-4.1-MINI"
        },
        "options": {},
        "messages": {
          "values": [
            {
              "role": "system",
              "content": "=You are tasked with evaluating a piece of content written for Nabin Bhandari. Your role is to assess how well the post aligns with Nabin's personal brand, using the below brief as your guide.\n\nPlease analyze the post based on the following criteria:\n\nDoes the post have unwanted artifacts like \"Let's try again\" or \"Here's a new post\"?\n\nDoes the content reflect Nabin's core values, voice, and style as described in the brief?\n\nDoes it engage Nabin's target audience as described in the brief?\n\nDoes it emphasize Nabin's expertise and domain authority as described in the brief?\n\nIs the tone, messaging, and approach consistent with the brief's objectives and positioning?\n\nAfter evaluation, output a score between 0 and 1, representing the alignment between the post and the brand brief. The score should be output in the following JSON format:\n{\n  \"description\": \"[short description here]\",\n  \"score\": [insert score here]\n}\n\n#Brand Brief:{{ $json.content }}\n"
            },
            {
              "content": "={{ $('When Executed by Another Workflow').item.json.query }}"
            }
          ]
        },
        "jsonOutput": true
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.8
    },
    {
      "id": "127bc4c2-7627-428c-a1b8-9f3eefb86a8b",
      "name": "Get Brand Brief1",
      "type": "n8n-nodes-base.executeWorkflow",
      "position": [
        608,
        -480
      ],
      "parameters": {
        "options": {},
        "workflowId": {
          "__rl": true,
          "mode": "list",
          "value": "UbKh62LfKoMDeyUo",
          "cachedResultName": "Get Brand Brief"
        },
        "workflowInputs": {
          "value": {},
          "schema": [],
          "mappingMode": "defineBelow",
          "matchingColumns": [],
          "attemptToConvertTypes": false,
          "convertFieldsToString": true
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "8d1288cb-3aeb-44a6-ac02-2b4a43112e36",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        528,
        -528
      ],
      "parameters": {
        "color": 4,
        "width": 848,
        "height": 224,
        "content": "Get Content FeedBack"
      },
      "typeVersion": 1
    },
    {
      "id": "54cbe82b-57bb-48fd-9111-744f7a23a8ff",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        48,
        304
      ],
      "parameters": {
        "color": 6,
        "width": 960,
        "height": 256,
        "content": "Get Content Ideas"
      },
      "typeVersion": 1
    },
    {
      "id": "76a93c9b-4077-4112-9560-754a0740061e",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -400,
        -272
      ],
      "parameters": {
        "color": 5,
        "width": 1792,
        "height": 544,
        "content": "Create Content"
      },
      "typeVersion": 1
    },
    {
      "id": "6dd35331-93d1-40fa-ac43-f9e39bc4cbc2",
      "name": "Daily Scheduler",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        -320,
        -64
      ],
      "parameters": {
        "rule": {
          "interval": [
            {
              "triggerAtHour": 21
            }
          ]
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "cc7a3715-717e-42e2-9fd2-d64a1846a059",
      "name": "Generate LinkedIn Post with AI",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        896,
        -192
      ],
      "parameters": {
        "options": {
          "systemMessage": "=\nYou are a helpful content creator for Nabin Bhandari's personal brand. Use the below steps to create content.\n\nSteps:\n\nAlways start by getting the brand brief using the Get_Brand_Brief tool.\n\nCreate a post on the requested topic that aligns with the brand brief.\n\nGet feedback and a score on the post you created in step 2 by using the Get_Content_Feedback tool.\n\nIf the score is below 0.8, use the feedback from step 3 to refine the post, then repeat steps 3 and 4.\n\nThe final output should be the approved post.\n\n\n\n\n\n\n\n\n"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "dc57ae50-f3d1-475e-b1bf-18b6b91e863c",
      "name": "Publish to Linkedin",
      "type": "n8n-nodes-base.linkedIn",
      "position": [
        1520,
        -192
      ],
      "parameters": {
        "text": "={{ $json.output }}",
        "person": "=Nabin Bhandari",
        "additionalFields": {}
      },
      "credentials": {
        "linkedInOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "22928fb1-f034-4201-b717-60007a99cd63",
      "name": "Split Ideas",
      "type": "n8n-nodes-base.splitOut",
      "position": [
        96,
        -64
      ],
      "parameters": {
        "options": {},
        "fieldToSplitOut": "suggestions"
      },
      "typeVersion": 1
    },
    {
      "id": "a8a4e879-32b7-41aa-a4d7-5eb043940dc2",
      "name": "Loop through content Ideas",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        352,
        -64
      ],
      "parameters": {
        "options": {}
      },
      "typeVersion": 3
    },
    {
      "id": "ab9c146c-0488-4280-8c8f-5090b6a6b0fb",
      "name": "Format For AI Input",
      "type": "n8n-nodes-base.set",
      "position": [
        560,
        -192
      ],
      "parameters": {
        "mode": "raw",
        "options": {},
        "jsonOutput": "={\n  \"sessionId\": \"{{ $itemIndex }}\",\n  \"action\": \"sendMessage\",\n  \"chatInput\": \"{{ $('Split Ideas').item.json.suggestions }}\"\n}\n"
      },
      "typeVersion": 3.4
    },
    {
      "id": "68829e77-3485-4ca6-8c99-25de201ad3a8",
      "name": "Format Brand Brief",
      "type": "n8n-nodes-base.set",
      "position": [
        240,
        -464
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "04e2713e-171a-42e3-8ddf-15ae33c263ed",
              "name": "content",
              "type": "string",
              "value": "={{ $json.content.join() }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "9a115ef3-978b-4a80-8b5b-2e86a5d2b5ca",
      "name": "Format Feedback",
      "type": "n8n-nodes-base.set",
      "position": [
        1168,
        -480
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "db37e84a-978d-4bb7-8253-e1938a365c4f",
              "name": "feedback",
              "type": "string",
              "value": "={{ $json.message.content.description }}"
            },
            {
              "id": "da38e362-0115-4d0a-bba1-8f722b01f0e7",
              "name": "score",
              "type": "number",
              "value": "={{ $json.message.content.score }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "5686b0d7-86b2-4dfc-81b2-d6eb10bc07c0",
      "name": "Get _Content _Ideas",
      "type": "@n8n/n8n-nodes-langchain.openAi",
      "position": [
        400,
        368
      ],
      "parameters": {
        "modelId": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4o-mini",
          "cachedResultName": "GPT-4O-MINI"
        },
        "options": {},
        "messages": {
          "values": [
            {
              "content": "=You are a professional content writer. Create 10 topic suggestions that align with the provided brand brief.\n\nJSON output format:\n{\n\"suggestions\": [\n\"Create a post about [...]\",\n...\n]\n}\nBrand brief:{{ $json.content }}"
            }
          ]
        },
        "jsonOutput": true
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.8
    },
    {
      "id": "fb39058a-702d-4614-855e-0a6cea5aafae",
      "name": "Format Content Ideas",
      "type": "n8n-nodes-base.set",
      "position": [
        752,
        368
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "df53b79c-c484-42f8-9f11-0470395512ce",
              "name": "suggestions",
              "type": "array",
              "value": "={{ $json.message.content.suggestions }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "10885472-3a23-4d23-9d26-de044d90c027",
      "name": "Get Brand Brief3",
      "type": "n8n-nodes-base.executeWorkflow",
      "position": [
        192,
        368
      ],
      "parameters": {
        "options": {},
        "workflowId": {
          "__rl": true,
          "mode": "list",
          "value": "UbKh62LfKoMDeyUo",
          "cachedResultName": "Get_Brand_Brief"
        },
        "workflowInputs": {
          "value": {},
          "schema": [],
          "mappingMode": "defineBelow",
          "matchingColumns": [],
          "attemptToConvertTypes": false,
          "convertFieldsToString": true
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "c727e9f2-0f3b-4616-abba-a40e649e6f13",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        688,
        -272
      ],
      "parameters": {
        "color": 3,
        "width": 720,
        "height": 544,
        "content": "This uses OpenAI to craft the post using your brand brief, content idea, and past feedback.\nCustomize the prompt in the AI Agent for tone, length, or style.\n"
      },
      "typeVersion": 1
    },
    {
      "id": "4b72cf4d-399c-4c5e-ba9a-c6416fe54eea",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1456,
        -320
      ],
      "parameters": {
        "color": 2,
        "height": 416,
        "content": "This node publishes the final post to LinkedIn.\nMake sure your LinkedIn credentials are configured properly in the LinkedIn node.\n"
      },
      "typeVersion": 1
    },
    {
      "id": "91a121b2-e311-45b8-8273-dc8cdbe8335e",
      "name": "Sticky Note6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -400,
        -176
      ],
      "parameters": {
        "color": 4,
        "height": 352,
        "content": "Triggers this workflow every day at 9 PM. You can change this time in the Cron node settings.\n"
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "edecb44a-8355-4938-b1cc-cdcf6be5aa2d",
  "connections": {
    "Aggregate": {
      "main": [
        [
          {
            "node": "Format Brand Brief",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Split Ideas": {
      "main": [
        [
          {
            "node": "Loop through content Ideas",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Simple Memory": {
      "ai_memory": [
        [
          {
            "node": "Generate LinkedIn Post with AI",
            "type": "ai_memory",
            "index": 0
          }
        ]
      ]
    },
    "Daily Scheduler": {
      "main": [
        [
          {
            "node": "Get Content Ideas",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get Brand Brief": {
      "main": [
        [
          {
            "node": "Aggregate",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get Brand Brief1": {
      "main": [
        [
          {
            "node": "Get Content Feedback",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get Brand Brief3": {
      "main": [
        [
          {
            "node": "Get _Content _Ideas",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get Content Ideas": {
      "main": [
        [
          {
            "node": "Split Ideas",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get_ Brand _Brief": {
      "ai_tool": [
        [
          {
            "node": "Generate LinkedIn Post with AI",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "Generate LinkedIn Post with AI",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Format For AI Input": {
      "main": [
        [
          {
            "node": "Generate LinkedIn Post with AI",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get _Content _Ideas": {
      "main": [
        [
          {
            "node": "Format Content Ideas",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get Content Feedback": {
      "main": [
        [
          {
            "node": "Format Feedback",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get_Content_Feedback": {
      "ai_tool": [
        [
          {
            "node": "Generate LinkedIn Post with AI",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Loop through content Ideas": {
      "main": [
        [],
        [
          {
            "node": "Format For AI Input",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Generate LinkedIn Post with AI": {
      "main": [
        [
          {
            "node": "Publish to Linkedin",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "When Executed by Another Workflow": {
      "main": [
        [
          {
            "node": "Get Brand Brief",
            "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

This n8n template automatically creates and publishes high-quality LinkedIn posts using your brand brief, AI-generated ideas, and structured feedback loops — all powered by OpenAI. Perfect for solo creators, marketers, and startup teams building a consistent presence on LinkedIn.

Source: https://n8n.io/workflows/6979/ — 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

Code Schedule. Uses memoryBufferWindow, agent, stickyNote, outputParserStructured. Event-driven trigger; 45 nodes.

Memory Buffer Window, Agent, Output Parser Structured +8
AI & RAG

3790. Uses memoryBufferWindow, agent, outputParserStructured, lmChatOpenAi. Event-driven trigger; 45 nodes.

Memory Buffer Window, Agent, Output Parser Structured +8
AI & RAG

Stock Analysis Agent (Hebrew, RTL, GPT-4o)

Memory Buffer Window, Agent, Output Parser Structured +8
AI & RAG

This workflow is perfect for creators, solopreneurs, and personal brands who want to consistently publish bold, high-performing content on X (Twitter) — without writing a single line themselves. After

OpenAI Chat, Memory Buffer Window, Tool Workflow +10
AI & RAG

AI Blog Publisher – Automated Blog Content Workflow This workflow is designed for individuals and teams who regularly publish content on their blog and want to automate the entire process from start t

WordPress, HTTP Request, Memory Buffer Window +9