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 →
{
"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.
linkedInOAuth2ApinotionApiopenAiApi
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 →
Related workflows
Workflows that share integrations, category, or trigger type with this one. All free to copy and import.
Code Schedule. Uses memoryBufferWindow, agent, stickyNote, outputParserStructured. Event-driven trigger; 45 nodes.
3790. Uses memoryBufferWindow, agent, outputParserStructured, lmChatOpenAi. Event-driven trigger; 45 nodes.
Stock Analysis Agent (Hebrew, RTL, GPT-4o)
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
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