This workflow corresponds to n8n.io template #12663 — we link there as the canonical source.
This workflow follows the Chainllm → 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 →
{
"nodes": [
{
"id": "e3006eac-8c04-4db6-bfd7-f2ed3119dbf9",
"name": "Upload Post - Upload Photo",
"type": "n8n-nodes-base.httpRequest",
"position": [
1200,
976
],
"parameters": {
"url": "https://api.upload-post.com/api/upload_photos",
"method": "POST",
"options": {},
"sendBody": true,
"contentType": "form-urlencoded",
"authentication": "predefinedCredentialType",
"bodyParameters": {
"parameters": [
{
"name": "user",
"value": "simon"
},
{
"name": "platform[]",
"value": "linkedin"
},
{
"name": "photos[]",
"value": "={{ $json.Image }}"
},
{
"name": "title",
"value": "={{ $json.Content }}"
},
{
"name": "async_upload",
"value": "true"
},
{
"name": "visibility",
"value": "PUBLIC"
}
]
},
"nodeCredentialType": "uploadPostApi"
},
"typeVersion": 4.3
},
{
"id": "f47f2bf1-d857-45a8-9ce5-1102f65ef70a",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-96,
288
],
"parameters": {
"color": 7,
"width": 320,
"height": 224,
"content": "## Topic input\nGSheet"
},
"typeVersion": 1
},
{
"id": "de7e8a7e-c7fe-4159-b0ca-d63b865ddec2",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [
2096,
288
],
"parameters": {
"color": 7,
"width": 320,
"height": 224,
"content": "## Topic output\nGSheet"
},
"typeVersion": 1
},
{
"id": "372efab2-dbb3-4437-936c-2b4c66415cfe",
"name": "Sticky Note3",
"type": "n8n-nodes-base.stickyNote",
"position": [
992,
288
],
"parameters": {
"color": 7,
"width": 320,
"height": 224,
"content": "## AI stage\nLLM chain that writes our content"
},
"typeVersion": 1
},
{
"id": "223a6d8b-84f6-42f7-82ed-677fb378b86c",
"name": "Sticky Note4",
"type": "n8n-nodes-base.stickyNote",
"position": [
1424,
288
],
"parameters": {
"color": 7,
"width": 320,
"height": 224,
"content": "## Image generation\nGenerate an image that matches the content"
},
"typeVersion": 1
},
{
"id": "154fb506-1adb-4e30-a85a-9532c2c7dda6",
"name": "Sticky Note5",
"type": "n8n-nodes-base.stickyNote",
"position": [
640,
304
],
"parameters": {
"color": 7,
"width": 320,
"height": 224,
"content": "## Brand input\nGSheet"
},
"typeVersion": 1
},
{
"id": "d022593b-00ad-4e93-94e9-4f0eb4d95b66",
"name": "Sticky Note6",
"type": "n8n-nodes-base.stickyNote",
"position": [
-96,
1184
],
"parameters": {
"color": 7,
"width": 320,
"height": 224,
"content": "## Time trigger\nGSheet"
},
"typeVersion": 1
},
{
"id": "16e408ac-4d75-4ead-8649-0d77b6b973ac",
"name": "Sticky Note7",
"type": "n8n-nodes-base.stickyNote",
"position": [
688,
1184
],
"parameters": {
"color": 7,
"width": 320,
"height": 224,
"content": "## Is it scheduled today and is it approved?\n"
},
"typeVersion": 1
},
{
"id": "c705c79a-f2ac-478a-baae-d81fce8dcf45",
"name": "Sticky Note8",
"type": "n8n-nodes-base.stickyNote",
"position": [
1088,
1424
],
"parameters": {
"color": 7,
"width": 320,
"height": 224,
"content": "## If no - no further action\n"
},
"typeVersion": 1
},
{
"id": "49df604f-e002-4808-b2a9-994461b3b484",
"name": "Sticky Note9",
"type": "n8n-nodes-base.stickyNote",
"position": [
1088,
1184
],
"parameters": {
"color": 7,
"width": 320,
"height": 224,
"content": "## If yes - post to Linkedin\n"
},
"typeVersion": 1
},
{
"id": "0d0b4239-ee43-4a56-884d-8ed2cc05875a",
"name": "Sticky Note10",
"type": "n8n-nodes-base.stickyNote",
"position": [
256,
1184
],
"parameters": {
"color": 7,
"width": 320,
"height": 224,
"content": "## Get post data\nGSheet"
},
"typeVersion": 1
},
{
"id": "89ad5433-2f83-4ab6-a11d-c14279a6910b",
"name": "Append or update row in sheet",
"type": "n8n-nodes-base.googleSheets",
"position": [
2208,
384
],
"parameters": {
"columns": {
"value": {
"id": "={{ $('GetTopic').item.json.id }}",
"Image": "={{ $json.data.url }}",
"Status": "Draft",
"Content": "={{ $('Basic LLM Chain').item.json.output.content }}",
"Date Created": "={{ $now.format('yyyy-MM-dd') }}"
},
"schema": [
{
"id": "id",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "id",
"defaultMatch": true,
"canBeUsedToMatch": true
},
{
"id": "Date Scheduled",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "Date Scheduled",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Date Created",
"type": "string",
"display": true,
"required": false,
"displayName": "Date Created",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Topic",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "Topic",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Content",
"type": "string",
"display": true,
"required": false,
"displayName": "Content",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Image",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Image",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Status",
"type": "string",
"display": true,
"required": false,
"displayName": "Status",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [
"id"
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "appendOrUpdate",
"sheetName": {
"__rl": true,
"mode": "url",
"value": "https://docs.google.com/spreadsheets/d/1hDo78jNqAcrIuwygDfdmqdw9HONGF1qcSrhU6fU24Zg/edit?gid=1652769038#gid=1652769038"
},
"documentId": {
"__rl": true,
"mode": "url",
"value": "https://docs.google.com/spreadsheets/d/1hDo78jNqAcrIuwygDfdmqdw9HONGF1qcSrhU6fU24Zg/edit?gid=1652769038#gid=1652769038"
}
},
"typeVersion": 4.6
},
{
"id": "443aaac8-7261-40fb-ae54-479bedd45991",
"name": "Basic LLM Chain",
"type": "@n8n/n8n-nodes-langchain.chainLlm",
"position": [
1008,
384
],
"parameters": {
"text": "=using the following brand guidelines: {{ $json.Guidelines }}\n\n<Role>\nYou are a LinkedIn Content Creator who writes authentic, engaging posts that feel genuinely human. You specialize in transforming complex topics into simple, relatable content that connects with professionals while maintaining a conversational, third-grade reading level.\n</Role>\n\n<Constraints>\nMaximum 3000 characters (LinkedIn's limit)\nUse simple, everyday words - avoid jargon and complex terminology\nWrite at a third-grade reading level\nStart with a compelling hook in the first 1-2 lines\nUse short sentences (10-15 words max)\nInclude line breaks every 1-2 sentences for easy scanning\nNo hashtags within the main content (only at the end if needed)\nAvoid overused LinkedIn phrases like \"I'm humbled to announce\"\nNo emojis in the first line (hook should stand alone)\nWrite in first person to maintain authenticity\nOne main idea per post\n</Constraints>\n\n\n<Inputs>\n\nTopic: {{ $('GetTopic').item.json.Topic }}\nTone preference: Professional but conversational\nTarget audience: LinkedIn professionals\nExpected format: Text-only LinkedIn post\n</Inputs>\n\n\n<Instructions>\n\nAnalyze the input topic and identify the core message\nCreate a compelling hook that:\n\nAsks a question, shares a surprising fact, or tells a mini-story\nMakes people want to read more\nUses simple, relatable language\n\n\nDevelop the main content:\n\nTell a brief story or share an insight\nUse concrete examples people can relate to\nKeep sentences short and punchy\nAdd line breaks for readability\n\n\nEnd with a thought-provoking question or simple call-to-action\nReview and simplify any complex words\nEnsure the entire post feels like a friend talking to a friend\n</Instructions>\n\n\n<Conclusions>\n\nOutput: A single LinkedIn post\nFormat: Plain text with line breaks\nLength: Under 3000 characters\nReading level: Third grade\nStructure: Hook \u2192 Story/Insight \u2192 Engagement prompt\nVoice: Authentic, conversational, human\n</Conclusions>\n\n\n<Solutions>\n\nIf the topic is too complex, break it into one simple analogy or story\nIf technical terms are unavoidable, immediately explain them in simple words\nIf the post exceeds character limit, cut supporting details, not the main story\nIf the hook isn't compelling enough, try starting with \"Yesterday I learned...\" or \"Most people don't know...\"\nIf the post sounds too formal, read it aloud and rewrite as you'd speak it\nIf struggling with simplicity, imagine explaining to a 9-year-old\n\n</Solutions>",
"batching": {},
"promptType": "define",
"needsFallback": true,
"hasOutputParser": true
},
"typeVersion": 1.7
},
{
"id": "d4fb2677-44ac-4a02-9b66-672bfa6331e3",
"name": "GetTopic",
"type": "n8n-nodes-base.googleSheetsTrigger",
"position": [
-32,
368
],
"parameters": {
"event": "rowAdded",
"options": {},
"pollTimes": {
"item": [
{
"hour": 8
}
]
},
"sheetName": {
"__rl": true,
"mode": "url",
"value": "https://docs.google.com/spreadsheets/d/1hDo78jNqAcrIuwygDfdmqdw9HONGF1qcSrhU6fU24Zg/edit?gid=1652769038#gid=1652769038"
},
"documentId": {
"__rl": true,
"mode": "url",
"value": "https://docs.google.com/spreadsheets/d/1hDo78jNqAcrIuwygDfdmqdw9HONGF1qcSrhU6fU24Zg/edit?gid=1652769038#gid=1652769038"
}
},
"typeVersion": 1
},
{
"id": "cb0eacea-92d1-4433-a800-9b731fd2900b",
"name": "GetBrandGuide",
"type": "n8n-nodes-base.googleSheets",
"position": [
736,
368
],
"parameters": {
"options": {},
"sheetName": {
"__rl": true,
"mode": "url",
"value": "https://docs.google.com/spreadsheets/d/1hDo78jNqAcrIuwygDfdmqdw9HONGF1qcSrhU6fU24Zg/edit?gid=0#gid=0"
},
"documentId": {
"__rl": true,
"mode": "url",
"value": "https://docs.google.com/spreadsheets/d/1hDo78jNqAcrIuwygDfdmqdw9HONGF1qcSrhU6fU24Zg/edit?gid=0#gid=0"
}
},
"typeVersion": 4.6
},
{
"id": "79a62db3-4109-47e8-b846-6fa4f506897a",
"name": "Structured Output Parser",
"type": "@n8n/n8n-nodes-langchain.outputParserStructured",
"position": [
1296,
560
],
"parameters": {
"jsonSchemaExample": "{\n\t\"content\": \"linkedin post\"\n}"
},
"typeVersion": 1.3
},
{
"id": "189b4e19-02e0-4ea0-8b43-1dfa5f77cff8",
"name": "OpenRouter Chat Model",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenRouter",
"position": [
992,
560
],
"parameters": {
"model": "google/gemini-flash-1.5",
"options": {}
},
"typeVersion": 1
},
{
"id": "52277b46-02ed-43da-9a33-310aa2ba227f",
"name": "Fallback model",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenRouter",
"position": [
1136,
560
],
"parameters": {
"options": {}
},
"typeVersion": 1
},
{
"id": "291ee04a-17a2-41d3-9c66-923f67861508",
"name": "Sticky Note11",
"type": "n8n-nodes-base.stickyNote",
"position": [
240,
288
],
"parameters": {
"color": 7,
"width": 384,
"height": 224,
"content": "## Filters and process one at a time"
},
"typeVersion": 1
},
{
"id": "74835a3d-e423-401c-88cb-18201eaaf29c",
"name": "Filter",
"type": "n8n-nodes-base.filter",
"position": [
256,
368
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "baa2c37b-a271-49c2-a754-79a19df1c85c",
"operator": {
"type": "string",
"operation": "notEmpty",
"singleValue": true
},
"leftValue": "={{ $('GetTopic').item.json.Topic }}",
"rightValue": ""
},
{
"id": "cdc06d9c-a7fc-41a9-9f73-e7c330c22079",
"operator": {
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.Status }}",
"rightValue": "Not started"
}
]
}
},
"typeVersion": 2.2
},
{
"id": "7662d822-86c1-4887-8784-acccb7abb9db",
"name": "Loop Over Items",
"type": "n8n-nodes-base.splitInBatches",
"position": [
480,
368
],
"parameters": {
"options": {}
},
"typeVersion": 3
},
{
"id": "24b95b59-aec4-4db8-91c8-610171a696eb",
"name": "Generate an image",
"type": "@n8n/n8n-nodes-langchain.openAi",
"position": [
1520,
384
],
"parameters": {
"prompt": "=Generate a linkedin post image in black and white, professional, for the following post: \n{{ $json.output.content }}",
"options": {},
"resource": "image"
},
"typeVersion": 1.8
},
{
"id": "de045d2a-04f4-410d-a081-5cabc8cf22f1",
"name": "UploadImg",
"type": "n8n-nodes-base.httpRequest",
"position": [
1872,
384
],
"parameters": {
"url": "https://api.imgbb.com/1/upload",
"method": "POST",
"options": {},
"sendBody": true,
"contentType": "multipart-form-data",
"sendHeaders": true,
"authentication": "genericCredentialType",
"bodyParameters": {
"parameters": [
{
"name": "image",
"parameterType": "formBinaryData",
"inputDataFieldName": "data"
}
]
},
"genericAuthType": "httpQueryAuth",
"headerParameters": {
"parameters": [
{
"name": "Content-type",
"value": "multipart/form-data"
}
]
}
},
"typeVersion": 4.2
},
{
"id": "3c895e66-505e-4d38-a516-2968916b045f",
"name": "Schedule Trigger",
"type": "n8n-nodes-base.scheduleTrigger",
"position": [
-16,
1264
],
"parameters": {
"rule": {
"interval": [
{
"triggerAtHour": 9
}
]
}
},
"typeVersion": 1.2
},
{
"id": "24d61a9f-bf44-47c9-a651-be4550e220da",
"name": "GetPosts",
"type": "n8n-nodes-base.googleSheets",
"position": [
352,
1264
],
"parameters": {
"options": {},
"sheetName": {
"__rl": true,
"mode": "url",
"value": "https://docs.google.com/spreadsheets/d/1hDo78jNqAcrIuwygDfdmqdw9HONGF1qcSrhU6fU24Zg/edit?gid=1652769038#gid=1652769038"
},
"documentId": {
"__rl": true,
"mode": "url",
"value": "https://docs.google.com/spreadsheets/d/1hDo78jNqAcrIuwygDfdmqdw9HONGF1qcSrhU6fU24Zg/edit?gid=1652769038#gid=1652769038"
}
},
"typeVersion": 4.6
},
{
"id": "1d5d7be5-bc7f-445f-8855-976c86d439ee",
"name": "IfApprovedandToday",
"type": "n8n-nodes-base.if",
"position": [
768,
1264
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "3260f5b0-1015-4278-8882-72119d5aa6ed",
"operator": {
"name": "filter.operator.equals",
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.Status }}",
"rightValue": "Approved"
},
{
"id": "0d92ee48-371a-4c57-8891-648e3e693e08",
"operator": {
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json['Date Scheduled'] }}",
"rightValue": "={{ $now.format('dd/MM/yyyy') }}"
}
]
}
},
"typeVersion": 2.2
},
{
"id": "71793b00-6659-4c38-8f27-7e0bfc8bbd56",
"name": "No Operation, do nothing",
"type": "n8n-nodes-base.noOp",
"position": [
1200,
1488
],
"parameters": {},
"typeVersion": 1
},
{
"id": "ece9608a-3f59-4c71-94e3-bd74322eb5a9",
"name": "Upload Post",
"type": "n8n-nodes-preview-upload-post.uploadPost",
"position": [
1200,
1248
],
"parameters": {
"resource": "uploads",
"operation": "uploadPhotos"
},
"credentials": {},
"typeVersion": 1
},
{
"id": "83df5c2e-410b-4fee-94fb-e35f25ede668",
"name": "Append or update row in sheet1",
"type": "n8n-nodes-base.googleSheets",
"position": [
1536,
1248
],
"parameters": {
"columns": {
"value": {
"id": "={{ $('GetPosts').item.json.id }}",
"Status": "Posted"
},
"schema": [
{
"id": "id",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "id",
"defaultMatch": true,
"canBeUsedToMatch": true
},
{
"id": "Date Scheduled",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "Date Scheduled",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Date Created",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "Date Created",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Topic",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "Topic",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Content",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "Content",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Image",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "Image",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Status",
"type": "string",
"display": true,
"required": false,
"displayName": "Status",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [
"id"
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "appendOrUpdate",
"sheetName": {
"__rl": true,
"mode": "url",
"value": "https://docs.google.com/spreadsheets/d/1hDo78jNqAcrIuwygDfdmqdw9HONGF1qcSrhU6fU24Zg/edit?gid=1652769038#gid=1652769038"
},
"documentId": {
"__rl": true,
"mode": "url",
"value": "https://docs.google.com/spreadsheets/d/1hDo78jNqAcrIuwygDfdmqdw9HONGF1qcSrhU6fU24Zg/edit?gid=1652769038#gid=1652769038"
}
},
"typeVersion": 4.6
},
{
"id": "c1e64482-5be5-4a0f-8fd5-37aa4379928b",
"name": "Sticky Note12",
"type": "n8n-nodes-base.stickyNote",
"position": [
1088,
816
],
"parameters": {
"color": 5,
"width": 320,
"height": 352,
"content": "## Having trouble posting the content?\nIf you have any trouble with the Upload Post community node, just replace it for this HTTP Request with your own API credentials"
},
"typeVersion": 1
},
{
"id": "11be7d37-719a-4dd2-888f-9d1585f68d4b",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
-96,
64
],
"parameters": {
"color": 6,
"width": 1216,
"height": 192,
"content": "\n**Workflow 1** - Generator (8am): Pull brand voice \u2192 Get today's topics \u2192 AI generates posts \u2192 Create images \u2192 Save for review\n- Google Sheets setup: Create content calendar with: topic, date, status, generated_post, edited_post, approved checkbox. Create brand voice guidelines.\n- Manual review step: Edit posts in sheet between workflows, check \"approved\" when ready\n\n\n**Workflow 2** - Publisher (9am): Get approved posts \u2192 Post to LinkedIn \u2192 Update status to \"posted\"\n- Key connections: Google Sheets for storage, AI for writing, Hugging Face for images, Upload-Post for LinkedIn\n- Testing: Run with one test post through entire flow - generate, review, edit, approve, publish"
},
"typeVersion": 1
},
{
"id": "b57b0222-0cd7-4d5d-9799-725ba9a78cb7",
"name": "Sticky Note13",
"type": "n8n-nodes-base.stickyNote",
"position": [
-96,
-640
],
"parameters": {
"color": 6,
"width": 576,
"height": 688,
"content": "## Welcome! This template is a production-ready system that generates a week's worth of content in minutes (in your brand voice)\n\nThe template gives you full editorial control, and posts automatically - turning 5 hours of work into 15 minutes of review.\n\nYou can follow the step-by-step build and setup here:\n\nStart at [1hr 11mins for step-by-step build](https://youtu.be/eiIRSUhPgOI?si=GUdIjMxA11o4jfm5&t=4275)\n@[youtube](eiIRSUhPgOI)\n\n### Check out my YouTube [@simonscrapes](https://www.youtube.com/@simonscrapes) for more tutorials\n### Master AI & Automation in our [main community](https://skool.com/scrapes/about)"
},
"typeVersion": 1
}
],
"connections": {
"Filter": {
"main": [
[
{
"node": "Loop Over Items",
"type": "main",
"index": 0
}
]
]
},
"GetPosts": {
"main": [
[
{
"node": "IfApprovedandToday",
"type": "main",
"index": 0
}
]
]
},
"GetTopic": {
"main": [
[
{
"node": "Filter",
"type": "main",
"index": 0
}
]
]
},
"UploadImg": {
"main": [
[
{
"node": "Append or update row in sheet",
"type": "main",
"index": 0
}
]
]
},
"Upload Post": {
"main": [
[
{
"node": "Append or update row in sheet1",
"type": "main",
"index": 0
}
]
]
},
"GetBrandGuide": {
"main": [
[
{
"node": "Basic LLM Chain",
"type": "main",
"index": 0
}
]
]
},
"Fallback model": {
"ai_languageModel": [
[
{
"node": "Basic LLM Chain",
"type": "ai_languageModel",
"index": 1
}
]
]
},
"Basic LLM Chain": {
"main": [
[
{
"node": "Generate an image",
"type": "main",
"index": 0
}
]
]
},
"Loop Over Items": {
"main": [
[],
[
{
"node": "GetBrandGuide",
"type": "main",
"index": 0
}
]
]
},
"Schedule Trigger": {
"main": [
[
{
"node": "GetPosts",
"type": "main",
"index": 0
}
]
]
},
"Generate an image": {
"main": [
[
{
"node": "UploadImg",
"type": "main",
"index": 0
}
]
]
},
"IfApprovedandToday": {
"main": [
[
{
"node": "Upload Post",
"type": "main",
"index": 0
}
],
[
{
"node": "No Operation, do nothing",
"type": "main",
"index": 0
}
]
]
},
"OpenRouter Chat Model": {
"ai_languageModel": [
[
{
"node": "Basic LLM Chain",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Structured Output Parser": {
"ai_outputParser": [
[
{
"node": "Basic LLM Chain",
"type": "ai_outputParser",
"index": 0
}
]
]
},
"Append or update row in sheet": {
"main": [
[
{
"node": "Loop Over Items",
"type": "main",
"index": 0
}
]
]
}
}
}
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
This n8n automation is a complete LinkedIn Content Engine that turns simple topic ideas into fully written, visual, and scheduled posts. It features a "Human-in-the-Loop" design, meaning AI handles the heavy lifting of writing and image creation, but nothing goes live until you…
Source: https://n8n.io/workflows/12663/ — 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.
Automatically capture, categorize, and log expenses from receipts, PDFs, voice notes, or text — powered by AI and integrated with Telegram and Google Sheets.
The best content automation template in the market is now even better—with “deep research” on time-sensitive topics\! Unlike most n8n content automation templates that are mainly for “demo purposes,”
This workflow automates the creation, rendering, approval, and posting of TikTok-style POV (Point of View) videos to Instagram, with cross-posting to Facebook and YouTube. It eliminates manual video p
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.
🧠 Automate end-to-end SEO blog creation and WordPress publishing using a GPT-5 multi-agent workflow with real-time research, metadata generation, and optional featured images.