This workflow corresponds to n8n.io template #9455 — we link there as the canonical source.
This workflow follows the Agent → HTTP Request 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": "gVvrCkyWTz8zCZ4D",
"meta": {
"templateCredsSetupCompleted": true
},
"name": "Comet Poster",
"tags": [
{
"id": "lkCRhVKLR4QW0wPs",
"name": "LinkedIn",
"createdAt": "2025-10-17T07:20:39.877Z",
"updatedAt": "2025-10-17T07:20:39.877Z"
},
{
"id": "qQBSiJmhO1xLvSq0",
"name": "Content Creation",
"createdAt": "2025-10-17T07:21:40.440Z",
"updatedAt": "2025-10-17T07:21:40.440Z"
},
{
"id": "QwDvwYwjRw2QlGIu",
"name": "Multimodal AI",
"createdAt": "2025-10-17T07:21:45.369Z",
"updatedAt": "2025-10-17T07:21:45.369Z"
},
{
"id": "LS1duiCI4hEY0Pt9",
"name": "Marketing",
"createdAt": "2025-09-01T10:40:25.298Z",
"updatedAt": "2025-09-01T10:40:25.298Z"
}
],
"nodes": [
{
"id": "19a99859-3376-4263-9408-7990f7b2ee5d",
"name": "Extract from File1",
"type": "n8n-nodes-base.extractFromFile",
"position": [
2480,
-992
],
"parameters": {
"options": {},
"operation": "binaryToPropery"
},
"typeVersion": 1
},
{
"id": "65d7e2a9-b39d-4f4d-afa4-e82c1a37569b",
"name": "Wait1",
"type": "n8n-nodes-base.wait",
"position": [
2992,
-512
],
"parameters": {
"amount": 3
},
"typeVersion": 1.1
},
{
"id": "3af5d409-cc88-45cc-ab6a-799398767bf8",
"name": "Switch1",
"type": "n8n-nodes-base.switch",
"position": [
2672,
-608
],
"parameters": {
"rules": {
"values": [
{
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "e1dafacb-bb51-4290-9269-dcee86bfcfbd",
"operator": {
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.status }}",
"rightValue": "AVAILABLE"
}
]
}
},
{
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "ff502528-5c63-437b-a5ff-ea1d580d8eeb",
"operator": {
"name": "filter.operator.equals",
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.status }}",
"rightValue": "PROCESSING_FAILED"
}
]
}
},
{
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "254e85df-1e78-4d92-b98d-c752bee9efa2",
"operator": {
"name": "filter.operator.equals",
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.status }}",
"rightValue": "PROCESSING"
}
]
}
}
]
},
"options": {}
},
"typeVersion": 3.2
},
{
"id": "d95d06b3-cfc8-4497-8129-78030b168b09",
"name": "Edit Fields1",
"type": "n8n-nodes-base.set",
"position": [
3056,
-992
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "a9ebb148-2272-422d-b8ef-0688c9e62c5f",
"name": "attachment",
"type": "string",
"value": "={{ $('Extract from File1').item.json.data }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "09eb8155-5a23-4238-aad9-b03b937e51d8",
"name": "Simple Memory2",
"type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
"position": [
1024,
-784
],
"parameters": {
"sessionKey": "={{ $now.format('dd-LL-yyyy') }}",
"sessionIdType": "customKey"
},
"typeVersion": 1.3
},
{
"id": "00f3c880-2670-4a64-b64e-9662cae1d9e0",
"name": "Search latest news1",
"type": "n8n-nodes-base.perplexityTool",
"position": [
1376,
-784
],
"parameters": {
"options": {},
"messages": {
"message": [
{
"content": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('message0_Text', ``, 'string') }}"
}
]
},
"requestOptions": {}
},
"credentials": {
"perplexityApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "aa8bc3e0-9cdc-4a63-8bda-926131a4fef3",
"name": "Think1",
"type": "@n8n/n8n-nodes-langchain.toolThink",
"position": [
1136,
-784
],
"parameters": {},
"typeVersion": 1.1
},
{
"id": "4179906d-e6d9-4379-95a8-d97275c70647",
"name": "Date & Time1",
"type": "n8n-nodes-base.dateTimeTool",
"position": [
1248,
-784
],
"parameters": {
"options": {}
},
"typeVersion": 2
},
{
"id": "b3d36b89-9e09-49f5-a1c3-8a327f7d695f",
"name": "OpenAI Chat Model1",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
1472,
-624
],
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "gpt-4o-mini",
"cachedResultName": "gpt-4o-mini"
},
"options": {}
},
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.2
},
{
"id": "72feeb9e-3a8d-48c0-a70e-9d924027689d",
"name": "Structured Output Parser1",
"type": "@n8n/n8n-nodes-langchain.outputParserStructured",
"position": [
1808,
-784
],
"parameters": {
"jsonSchemaExample": "{\n \"items\": [\n {\n \"template_id\": 123,\n \"fields\": [{\"name\": \"title\", \"content\": \"Post 1\"}]\n },\n {\n \"template_id\": 123,\n \"fields\": [{\"name\": \"title\", \"content\": \"Post 2\"}]\n },\n {\n \"template_id\": 456,\n \"fields\": [{\"name\": \"title\", \"content\": \"Post 3\"}]\n }\n ]\n}"
},
"typeVersion": 1.3
},
{
"id": "1c45bab0-663d-42ce-bb92-900ee03ab9b9",
"name": "Sticky Note7",
"type": "n8n-nodes-base.stickyNote",
"position": [
2400,
-1136
],
"parameters": {
"color": 4,
"width": 1216,
"height": 304,
"content": "## Prepare LinkedIn post resource\nTakes the user information, prepares files and uploads them to LinkedIn as a carousel."
},
"typeVersion": 1
},
{
"id": "f44ec9a8-bd58-4236-950d-e3c1dce0cd98",
"name": "Simple Memory3",
"type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
"position": [
1680,
-784
],
"parameters": {
"sessionKey": "={{ $now.format('dd-LL-yyyy') }}",
"sessionIdType": "customKey"
},
"typeVersion": 1.3
},
{
"id": "c698bb12-bb1f-4f45-a21f-e847fef85761",
"name": "Schedule Trigger1",
"type": "n8n-nodes-base.scheduleTrigger",
"position": [
800,
-992
],
"parameters": {
"rule": {
"interval": [
{}
]
}
},
"typeVersion": 1.2
},
{
"id": "4defb468-2b09-421e-952d-22df53c08745",
"name": "MCP Client1",
"type": "@n8n/n8n-nodes-langchain.mcpClientTool",
"position": [
1568,
-784
],
"parameters": {
"options": {},
"endpointUrl": "https://templated.cometai.eu/mcp",
"authentication": "bearerAuth"
},
"credentials": {
"httpBearerAuth": {
"name": "<your credential>"
}
},
"typeVersion": 1.2
},
{
"id": "af73b427-f093-40ce-b5bf-b8003fbb5230",
"name": "Generate posts1",
"type": "n8n-nodes-base.httpRequest",
"position": [
2096,
-992
],
"parameters": {
"url": "https://templated.cometai.eu/api/batches/4/generate",
"method": "POST",
"options": {},
"jsonBody": "={{ $json.output }}",
"sendBody": true,
"specifyBody": "json",
"authentication": "genericCredentialType",
"genericAuthType": "httpBearerAuth"
},
"credentials": {
"httpBearerAuth": {
"name": "<your credential>"
}
},
"typeVersion": 4.2
},
{
"id": "febcedad-172a-4bb7-ae69-6007f5106e1c",
"name": "Get Linkedin user info1",
"type": "n8n-nodes-base.httpRequest",
"position": [
2672,
-992
],
"parameters": {
"url": "https://api.linkedin.com/v2/userinfo",
"options": {},
"sendHeaders": true,
"authentication": "predefinedCredentialType",
"headerParameters": {
"parameters": [
{
"name": "LinkedIn-Version",
"value": "202509"
},
{
"name": "X-Restli-Protocol-Version",
"value": "2.0.0"
}
]
},
"nodeCredentialType": "linkedInOAuth2Api"
},
"credentials": {
"httpBearerAuth": {
"name": "<your credential>"
},
"linkedInOAuth2Api": {
"name": "<your credential>"
},
"linkedInCommunityManagementOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 4.2
},
{
"id": "5ba5c899-645e-4cbf-bcd2-e052b567d361",
"name": "Initialize upload URN1",
"type": "n8n-nodes-base.httpRequest",
"position": [
2864,
-992
],
"parameters": {
"url": "https://api.linkedin.com/rest/documents?action=initializeUpload",
"method": "POST",
"options": {},
"jsonBody": "={\n \"initializeUploadRequest\": {\n \"owner\": \"urn:li:person:{{ $json.sub }}\"\n }\n}",
"sendBody": true,
"sendHeaders": true,
"specifyBody": "json",
"authentication": "predefinedCredentialType",
"headerParameters": {
"parameters": [
{
"name": "LinkedIn-Version",
"value": "202509"
}
]
},
"nodeCredentialType": "linkedInOAuth2Api"
},
"credentials": {
"linkedInOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 4.2
},
{
"id": "91906605-21c6-4df3-8d37-454b07d2cf67",
"name": "Upload Posts as binary1",
"type": "n8n-nodes-base.httpRequest",
"position": [
3440,
-992
],
"parameters": {
"url": "={{ $('Initialize upload URN1').item.json.value.uploadUrl }}",
"method": "POST",
"options": {},
"sendBody": true,
"contentType": "binaryData",
"sendHeaders": true,
"authentication": "predefinedCredentialType",
"headerParameters": {
"parameters": [
{
"name": "LinkedIn-Version",
"value": "202509"
}
]
},
"inputDataFieldName": "data",
"nodeCredentialType": "linkedInOAuth2Api"
},
"credentials": {
"linkedInOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 4.2
},
{
"id": "5d6aa73f-9cc5-49cb-883c-0171186bcbe9",
"name": "Convert to binary1",
"type": "n8n-nodes-base.convertToFile",
"position": [
3248,
-992
],
"parameters": {
"options": {},
"operation": "toBinary",
"sourceProperty": "attachment"
},
"typeVersion": 1.1
},
{
"id": "b50a836c-f170-40fe-a42e-6801ae6aa436",
"name": "Create Linkedin post1",
"type": "n8n-nodes-base.httpRequest",
"position": [
2992,
-704
],
"parameters": {
"url": "=https://api.linkedin.com/rest/posts",
"method": "POST",
"options": {},
"jsonBody": "={\n \"author\": \"{{ $json.owner }}\",\n \"commentary\": {{ JSON.stringify($('Linkedin Writer1').item.json.output) }},\n \"visibility\": \"PUBLIC\",\n \"distribution\": {\n \"feedDistribution\": \"MAIN_FEED\",\n \"targetEntities\": [],\n \"thirdPartyDistributionChannels\": []\n },\n \"content\": {\n \"media\": {\n \"title\": \"Media\",\n \"id\": \"{{ $json.id }}\"\n }\n },\n \"lifecycleState\": \"PUBLISHED\",\n \"isReshareDisabledByAuthor\": false\n}",
"sendBody": true,
"sendHeaders": true,
"specifyBody": "json",
"authentication": "predefinedCredentialType",
"headerParameters": {
"parameters": [
{
"name": "LinkedIn-Version",
"value": "202509"
}
]
},
"nodeCredentialType": "linkedInOAuth2Api"
},
"credentials": {
"httpBearerAuth": {
"name": "<your credential>"
},
"linkedInOAuth2Api": {
"name": "<your credential>"
},
"linkedInCommunityManagementOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 4.2
},
{
"id": "18c64506-bec2-49b1-95b6-ce64202a2c78",
"name": "Get uploaded file URN1",
"type": "n8n-nodes-base.httpRequest",
"position": [
2480,
-592
],
"parameters": {
"url": "=https://api.linkedin.com/rest/documents/{{ $('Initialize upload URN1').item.json.value.document }}",
"options": {},
"sendHeaders": true,
"authentication": "predefinedCredentialType",
"headerParameters": {
"parameters": [
{
"name": "LinkedIn-Version",
"value": "202509"
}
]
},
"nodeCredentialType": "linkedInOAuth2Api"
},
"credentials": {
"httpBearerAuth": {
"name": "<your credential>"
},
"linkedInOAuth2Api": {
"name": "<your credential>"
},
"linkedInCommunityManagementOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 4.2
},
{
"id": "18389946-bdc0-4388-9297-2f5b19a1a655",
"name": "Sticky Note8",
"type": "n8n-nodes-base.stickyNote",
"position": [
1056,
-1136
],
"parameters": {
"width": 384,
"height": 304,
"content": "### LinkedIn post writer\nUses the **OpenAI** model to write the post, optionally triggers **Perplexity** tool to research the topic it wants to make the post about"
},
"typeVersion": 1
},
{
"id": "59d1d280-0522-460a-88f1-5155e71f7882",
"name": "Sticky Note9",
"type": "n8n-nodes-base.stickyNote",
"position": [
1520,
-1136
],
"parameters": {
"width": 384,
"height": 304,
"content": "### Carousel ideator (using [Templated](https://templated.cometai.eu))\nConnects to the Templated MCP server to list all available post templates and builds a logical carousel flow using available templates."
},
"typeVersion": 1
},
{
"id": "e370daea-9cfd-4d05-92a4-c33ffd4ac251",
"name": "Sticky Note10",
"type": "n8n-nodes-base.stickyNote",
"position": [
1984,
-1136
],
"parameters": {
"width": 336,
"height": 304,
"content": "### Generate the Carousel (https://templated.cometai.eu)\nUses the request generated by Carousel Ideator"
},
"typeVersion": 1
},
{
"id": "2c060b3c-5b5c-40a7-a578-cd699262041c",
"name": "Linkedin Writer1",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
1136,
-992
],
"parameters": {
"text": "=Create a Linkedin post.",
"options": {
"systemMessage": "You are a content marketing expert specializing in AI automation for businesses. Your task is to create engaging LinkedIn content that helps business owners achieve freedom by offloading tasks to AI.\n\nYou will optionally receive a topic, otherwise you should come up with a topic of your own.\n\n## Workflow\n1. Get today's date\n2. Use the Perplexity research tool to research latest news about AI automation\n3. Identify a specific, relatable pain point with real numbers\n4. Structure the post using the format below\n5. Write the post following ALL formatting and style rules\n6. VERIFY your output contains NO markdown syntax before submitting\n\n## Post Structure (Follow This Exactly)\n1. **Hook** - Start with a warning, surprising stat, or bold claim that creates urgency\n2. **Pain Point** - Describe the specific problem with vivid, relatable language\n3. **Story/Proof** - Share a real example with before/after numbers (can be from research or anonymized)\n4. **The Solution** - Briefly explain what fixed it (AI tool, system, or process)\n5. **The Results** - Concrete outcomes with specific numbers\n6. **The Insight** - One-sentence takeaway that reframes their thinking\n7. **Soft CTA** - Position your free audit as diagnostic value, not a sales pitch\n\n## CRITICAL FORMATTING RULES\n\n### \u274c NEVER USE THESE:\n- **bold text** or __bold text__ (markdown syntax)\n- *italic text* or _italic text_ (markdown syntax)\n- ### Headers or ## Any headers\n- Long em dashes (\u2014) anywhere in the post\n- Numbered lists (1. 2. 3.)\n- Bullet points with \u2022 or -\n- Generic phrases like \"Here's how\" or \"Real-World Examples:\"\n- Words like \"leverage,\" \"utilize,\" \"optimize\" without context\n\n### \u2705 ALWAYS USE THESE:\n- Unicode bold: \ud835\udde7\ud835\uddf5\ud835\uddf6\ud835\ude00 \ud835\uddf6\ud835\ude00 \ud835\uddef\ud835\uddfc\ud835\uddf9\ud835\uddf1 \ud835\ude01\ud835\uddf2\ud835\ude05\ud835\ude01\n- Unicode italic: \ud835\ude1b\ud835\ude29\ud835\ude2a\ud835\ude34 \ud835\ude2a\ud835\ude34 \ud835\ude2a\ud835\ude35\ud835\ude22\ud835\ude2d\ud835\ude2a\ud835\ude24 \ud835\ude35\ud835\ude26\ud835\ude39\ud835\ude35\n- Short dashes or colons for separation\n- Natural paragraph breaks\n- Conversational language like \"you're\" instead of \"you are\"\n\n## Writing Style Rules\n\n### Voice & Tone:\n- Write like you're talking to a founder at a coffee shop\n- Be direct but not pushy - you're helping them see something they missed\n- Use \"you\" and \"your\" - make it personal\n- Sound confident but not arrogant\n\n### Story-Driven, Not Listy:\n- Lead with narrative and specific examples\n- Embed actionable insights within the story, don't list them separately\n- Use real numbers: \"40 hours down to 7.5\" not \"up to 40% more efficient\"\n- Name the emotion: \"soul-crushing admin\" or \"stuck in the weeds\"\n\n### Creating Resonance:\n- Identify the hidden cost (time, money, sanity, opportunity)\n- Use mirror language - phrases your audience actually says\n- Create a small FOMO moment (others are doing this, are you behind?)\n- Make them feel the pain before presenting the solution\n\n### Call to Action:\n- Frame your audit as a diagnostic tool, not a sales meeting\n- Use language like \"This isn't a sales pitch; it's a diagnostic\"\n- Be specific about what they'll get: \"custom Blueprint,\" \"exact process problems\"\n- Keep it one sentence, two max\n\n## Example of Correct Formatting:\n\n\ud835\uddea\ud835\uddd4\ud835\udde5\ud835\udde1\ud835\udddc\ud835\udde1\ud835\uddda: Your Agency is Wasting ~\ud835\udfef\ud835\udfee \ud835\udddb\ud835\uddfc\ud835\ude02\ud835\uddff\ud835\ude00 \ud835\udde0\ud835\uddfc\ud835\uddfb\ud835\ude01\ud835\uddf5\ud835\uddf9\ud835\ude06 on Sales Admin. \ud83d\udea8\n\nIf you or your team spend hours enriching leads, writing soft offers, or stitching together \"custom\" proposals after a great sales call, you're paying a \ud835\udde0\ud835\uddee\ud835\uddfb\ud835\ude02\ud835\uddee\ud835\uddf9 \ud835\udde3\ud835\uddff\ud835\uddfc\ud835\uddf0\ud835\uddf2\ud835\ude00\ud835\ude00 \ud835\udde7\ud835\uddee\ud835\ude05.\n\nIt's the hidden, soul-crushing admin that keeps high-value founders \ud835\ude00\ud835\ude01\ud835\ude02\ud835\uddf0\ud835\uddf8 \ud835\uddf6\ud835\uddfb \ud835\ude01\ud835\uddf5\ud835\uddf2 \ud835\ude04\ud835\uddf2\ud835\uddf2\ud835\uddf1\ud835\ude00.\n\nWe just proved this with a client: They spent 40 hours a month on post-call documentation, personalization, and proposal generation. Their actual selling time? \ud835\udde0\ud835\uddf6\ud835\uddfb\ud835\uddf6\ud835\uddfa\ud835\uddee\ud835\uddf9.\n\n[Continue with solution, results, insight, and CTA...]\n\n## Before You Submit:\nCheck your post for these common mistakes:\n1. Did you use ** or __ anywhere? (DELETE AND REWRITE)\n2. Did you use long em dashes \u2014? (REPLACE with short dash -)\n3. Did you create a numbered or bulleted list? (REWRITE as narrative)\n4. Does it sound like a blog post or listicle? (REWRITE as story)\n5. Is your CTA pushy or salesy? (REFRAME as value-first)\n\nIf any answer is YES, rewrite that section before finalizing.\n\n## Content Focus\nBased on today's AI news and trends:\n- Identify what's new and why it matters to business owners specifically\n- Create subtle FOMO without being dramatic\n- Give specific, actionable steps embedded in the story\n- Name actual tools and explain their use cases in context\n\nRemember: Your goal is to make them \ud835\ude27\ud835\ude26\ud835\ude26\ud835\ude2d the problem so deeply that your free audit feels like the obvious next step."
},
"promptType": "define",
"hasOutputParser": true
},
"typeVersion": 2.2
},
{
"id": "b8eb2a47-7b0c-4ba8-b175-f989f36d7926",
"name": "Carousel Ideator1",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
1600,
-992
],
"parameters": {
"text": "={{ $json.output }}",
"options": {
"systemMessage": "You are a visual content generator specializing in creating compelling slidepost requests for AI automation and business content. Your task is to analyze LinkedIn posts and transform them into structured visual content that amplifies the post's message.\n\n## Your Mission\nTake a LinkedIn post about AI/automation and create a slidepost that:\n- Captures attention in the first slide\n- Reinforces the key message visually\n- Uses statistics and quotes strategically\n- Creates a cohesive visual story\n\nYou are responsible for only providing the request to generate posts, NOT generate them.\n\n## Workflow\n1. **Analyze the Post Structure**\n - Identify the hook/headline (usually the opening line)\n - Extract the main pain point or problem\n - Find the key statistics (look for numbers, percentages, time savings)\n - Locate the solution or insight\n - Note any direct quotes or powerful phrases\n\n2. **Review Available Templates**\n - Understand each template's purpose from its description\n - Match template style to content tone (warning, success, insight, etc.)\n - Note which fields each template requires\n\n3. **Plan Your Slide Flow**\n - Slide 1: Hook - grab attention with the strongest stat or claim\n - Slide 2-3: Problem/Solution - explain the context\n - Slide 4: CTA or key takeaway (if creating multi-slide)\n - Keep it concise: 2-4 slides maximum for optimal engagement\n\n4. **Generate the Request**\n - Use exact template IDs from provided data\n - Fill fields with extracted content (keep it punchy)\n - Verify JSON structure is valid\n\n## Content Extraction Rules\n\n### \u2705 DO:\n- Pull the MOST COMPELLING number or stat for the first slide\n- Use direct quotes from the post when they're powerful\n- Keep slide text short and scannable (5-10 words for headlines)\n- Preserve the post's tone (urgent, insightful, cautionary, etc.)\n- Create visual hierarchy: big number \u2192 context \u2192 insight\n- Use emojis from the post if they add impact\n\n### \u274c DON'T:\n- Rewrite the post's message - extract and amplify it\n- Use generic phrases like \"Learn More\" or \"Key Insights\"\n- Put too much text on one slide (max 15-20 words)\n- Lose the specific numbers (40 hours is better than \"lots of time\")\n- Create slides that repeat the same information\n- Use templates that don't match the content's purpose\n\n## Template Selection Guide\n\n**For posts with warnings or urgent problems:**\n- Use templates with bold, attention-grabbing layouts\n- Lead with the problem stat or time waste\n\n**For posts with success stories or results:**\n- Use before/after templates if available\n- Highlight the transformation with numbers\n\n**For posts with insights or tips:**\n- Use clean, educational layouts\n- Break down steps or principles clearly\n\n**For posts with quotes or testimonials:**\n- Use quote-focused templates\n- Include attribution if applicable\n\n## Output Format\n\nYour response must be valid JSON with this exact structure:\n```json{\n\"items\": [\n{\n\"template_id\": 123,\n\"fields\": [\n{\"name\": \"title\", \"content\": \"Your extracted content here\"}\n]\n}\n]\n}\n\n**Critical Rules:**\n- `template_id` must match an exact ID from the provided available templates\n- `fields` array must include all required fields for that template\n- `content` should be concise and impactful\n- JSON must be valid (no trailing commas, proper quotes)\n\n## Example Analysis Process\n\n**Given Post:**\n\"\ud835\uddea\ud835\uddd4\ud835\udde5\ud835\udde1\ud835\udddc\ud835\udde1\ud835\uddda: Your Agency is Wasting ~\ud835\udfef\ud835\udfee \ud835\udddb\ud835\uddfc\ud835\ude02\ud835\uddff\ud835\ude00 \ud835\udde0\ud835\uddfc\ud835\uddfb\ud835\ude01\ud835\uddf5\ud835\uddf9\ud835\ude06 on Sales Admin. \ud83d\udea8\n\nIf you or your team spend hours enriching leads... you're paying a \ud835\udde0\ud835\uddee\ud835\uddfb\ud835\ude02\ud835\uddee\ud835\uddf9 \ud835\udde3\ud835\uddff\ud835\uddfc\ud835\uddf0\ud835\uddf2\ud835\ude00\ud835\ude00 \ud835\udde7\ud835\uddee\ud835\ude05.\n\nWe just proved this with a client: They spent 40 hours a month... Time spent on admin: Down from 40 hours \u2192 \ud835\udff3.\ud835\udff1 \ud835\uddf5\ud835\uddfc\ud835\ude02\ud835\uddff\ud835\ude00.\"\n\n**Your Analysis:**\n- Hook: \"32 Hours Monthly Wasted\" (big number with emotional word)\n- Problem: Manual Process Tax, soul-crushing admin\n- Key stat: 40 hours \u2192 7.5 hours (dramatic transformation)\n- Tone: Warning/urgent\n- Emojis: \ud83d\udea8 (use if template supports)\n\n**Template Selection:**\n- Slide 1: Use \"stat warning\" template (if available) \u2192 \"32 Hours Wasted Monthly\"\n- Slide 2: Use \"before/after\" template (if available) \u2192 \"40hrs \u2192 7.5hrs\"\n- Slide 3: Use \"CTA\" template \u2192 \"Free Workflow Audit\"\n\n## Quality Checklist\n\nBefore finalizing your output, verify:\n\n1. \u2713 Template IDs are exact matches from provided data\n2. \u2713 All required fields for each template are populated\n3. \u2713 Content is concise (not copying entire paragraphs)\n4. \u2713 Numbers and stats are accurate (not rounded or changed)\n5. \u2713 JSON is valid (use a validator if unsure)\n6. \u2713 Slide flow tells a coherent story\n7. \u2713 First slide has the strongest hook from the post\n8. \u2713 Content amplifies the post, doesn't compete with it\n\n## Common Mistakes to Avoid\n\n\u274c **Using placeholder IDs**: `template_id: 123` when 123 doesn't exist in available templates \n\u2705 **Use actual IDs**: `template_id: 4782` (from provided data)\n\n\u274c **Too much text**: \"Your Agency is Wasting Approximately 32 Hours Monthly on Sales Administration Tasks\" \n\u2705 **Punchy and scannable**: \"32 Hours Wasted on Sales Admin\"\n\n\u274c **Generic content**: \"Key Insights You Need to Know\" \n\u2705 **Specific content**: \"40 Hours \u2192 7.5 Hours Saved\"\n\n\u274c **Missing required fields**: Template needs both \"title\" and \"stat\" but you only provided \"title\" \n\u2705 **Complete fields**: Provide all required fields as specified in template data\n\n\u274c **Invalid JSON**: Trailing commas, missing quotes, wrong brackets \n\u2705 **Valid JSON**: Properly formatted, parseable structure\n\n## Output Only JSON\n\nYour response should contain ONLY the JSON object, no explanations, no markdown code blocks, no additional text. Just the raw JSON structure that can be directly parsed and sent to the API.\n\nStart your response with `{` and end with `}`."
},
"promptType": "define",
"hasOutputParser": true
},
"typeVersion": 2.2
},
{
"id": "592f99ac-b5a5-4344-8c28-0e0831aed065",
"name": "Success1",
"type": "n8n-nodes-base.telegram",
"position": [
3408,
-640
],
"parameters": {
"text": "Created new post",
"additionalFields": {}
},
"credentials": {
"telegramApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.2
},
{
"id": "b6fc77e4-58f0-4aab-8205-1d463400d828",
"name": "Error1",
"type": "n8n-nodes-base.telegram",
"position": [
3408,
-480
],
"parameters": {
"text": "Failed to create new post",
"additionalFields": {}
},
"credentials": {
"telegramApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.2
},
{
"id": "ecd59fd8-d55d-4ce4-9d81-70de4a03fd6f",
"name": "Sticky Note11",
"type": "n8n-nodes-base.stickyNote",
"position": [
720,
-1136
],
"parameters": {
"width": 256,
"height": 304,
"content": "### Daily trigger\nTriggers this workflow daily for a daily LinkedIn post"
},
"typeVersion": 1
},
{
"id": "dc50144f-59a3-45e7-b346-24cd22dba5b9",
"name": "Sticky Note12",
"type": "n8n-nodes-base.stickyNote",
"position": [
2400,
-752
],
"parameters": {
"color": 4,
"width": 832,
"height": 400,
"content": "## Create LinkedIn post\nTakes the carousel resource from the next steps and creates a \nLinkedIn post with the generated content."
},
"typeVersion": 1
},
{
"id": "1ae3aa86-a13a-4947-9d9e-7433ff27f277",
"name": "Sticky Note13",
"type": "n8n-nodes-base.stickyNote",
"position": [
3312,
-752
],
"parameters": {
"color": 7,
"width": 304,
"height": 400,
"content": "## Telegram notification\nSends a message whether the post was successful or not."
},
"typeVersion": 1
}
],
"active": false,
"settings": {
"executionOrder": "v1"
},
"versionId": "0cd69f91-21fe-401f-ac63-22f2d474e2ae",
"connections": {
"Wait1": {
"main": [
[
{
"node": "Get uploaded file URN1",
"type": "main",
"index": 0
}
]
]
},
"Think1": {
"ai_tool": [
[
{
"node": "Linkedin Writer1",
"type": "ai_tool",
"index": 0
}
]
]
},
"Switch1": {
"main": [
[
{
"node": "Create Linkedin post1",
"type": "main",
"index": 0
}
],
[
{
"node": "Error1",
"type": "main",
"index": 0
}
],
[
{
"node": "Wait1",
"type": "main",
"index": 0
}
]
]
},
"MCP Client1": {
"ai_tool": [
[
{
"node": "Carousel Ideator1",
"type": "ai_tool",
"index": 0
}
]
]
},
"Date & Time1": {
"ai_tool": [
[
{
"node": "Linkedin Writer1",
"type": "ai_tool",
"index": 0
}
]
]
},
"Edit Fields1": {
"main": [
[
{
"node": "Convert to binary1",
"type": "main",
"index": 0
}
]
]
},
"Simple Memory2": {
"ai_memory": [
[
{
"node": "Linkedin Writer1",
"type": "ai_memory",
"index": 0
}
]
]
},
"Simple Memory3": {
"ai_memory": [
[
{
"node": "Carousel Ideator1",
"type": "ai_memory",
"index": 0
}
]
]
},
"Generate posts1": {
"main": [
[
{
"node": "Extract from File1",
"type": "main",
"index": 0
}
]
]
},
"Linkedin Writer1": {
"main": [
[
{
"node": "Carousel Ideator1",
"type": "main",
"index": 0
}
]
]
},
"Carousel Ideator1": {
"main": [
[
{
"node": "Generate posts1",
"type": "main",
"index": 0
}
]
]
},
"Schedule Trigger1": {
"main": [
[
{
"node": "Linkedin Writer1",
"type": "main",
"index": 0
}
]
]
},
"Convert to binary1": {
"main": [
[
{
"node": "Upload Posts as binary1",
"type": "main",
"index": 0
}
]
]
},
"Extract from File1": {
"main": [
[
{
"node": "Get Linkedin user info1",
"type": "main",
"index": 0
}
]
]
},
"OpenAI Chat Model1": {
"ai_languageModel": [
[
{
"node": "Linkedin Writer1",
"type": "ai_languageModel",
"index": 0
},
{
"node": "Carousel Ideator1",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Search latest news1": {
"ai_tool": [
[
{
"node": "Linkedin Writer1",
"type": "ai_tool",
"index": 0
}
]
]
},
"Create Linkedin post1": {
"main": [
[
{
"node": "Success1",
"type": "main",
"index": 0
}
]
]
},
"Get uploaded file URN1": {
"main": [
[
{
"node": "Switch1",
"type": "main",
"index": 0
}
]
]
},
"Initialize upload URN1": {
"main": [
[
{
"node": "Edit Fields1",
"type": "main",
"index": 0
}
]
]
},
"Get Linkedin user info1": {
"main": [
[
{
"node": "Initialize upload URN1",
"type": "main",
"index": 0
}
]
]
},
"Upload Posts as binary1": {
"main": [
[
{
"node": "Get uploaded file URN1",
"type": "main",
"index": 0
}
]
]
},
"Structured Output Parser1": {
"ai_outputParser": [
[
{
"node": "Carousel Ideator1",
"type": "ai_outputParser",
"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.
httpBearerAuthlinkedInCommunityManagementOAuth2ApilinkedInOAuth2ApiopenAiApiperplexityApitelegramApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
This workflow automatically generates professional, branded LinkedIn posts using your custom Figma designs. Perfect for marketers, agencies, content creators, and businesses who want to maintain consistent branding while automating social media content creation.
Source: https://n8n.io/workflows/9455/ — 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.
This n8n workflow automates the daily monitoring of trends across X (Twitter), newsletters, and websites. It runs on a schedule, fetches data from configured sources in Google Sheets, processes it usi
darkweb-get-forum-posts. Uses outputParserStructured, toolThink, httpRequest, discord. Scheduled trigger; 32 nodes.
//ASMR AI Workflow
This workflow is designed for social media managers, content creators, digital marketers, and entrepreneurs who want to automate the entire lifecycle of creating and publishing short-form video conten
Act as your personal executive assistant with this high-level automation designed to handle the most tedious post-meeting tasks. This workflow ensures that no action item is forgotten and that partici