This workflow corresponds to n8n.io template #7733 — we link there as the canonical source.
This workflow follows the Chainllm → Form 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": "OjCzQZHTVMPt0jhc",
"meta": {
"templateCredsSetupCompleted": true
},
"name": "Linkedin Carousal",
"tags": [],
"nodes": [
{
"id": "5f5e3dce-7b82-4654-8cc4-088cfd799a36",
"name": "6:00 AM Trigger",
"type": "n8n-nodes-base.scheduleTrigger",
"position": [
-736,
224
],
"parameters": {
"rule": {
"interval": [
{
"triggerAtHour": 6
}
]
}
},
"typeVersion": 1.2
},
{
"id": "8fa6d50b-6c31-423a-b233-38f8585e6905",
"name": "On form submission",
"type": "n8n-nodes-base.formTrigger",
"position": [
-736,
416
],
"parameters": {
"options": {
"path": "create-carousal",
"ignoreBots": true,
"buttonLabel": "Create Carousal"
},
"formTitle": "Linkedin Carousal",
"formFields": {
"values": [
{
"fieldLabel": "Title",
"placeholder": "Nvidia released a new GPU rtx 4090 that supports state of the art gaming and crypto. The really pushed the limits with it.",
"requiredField": true
},
{
"fieldType": "textarea",
"fieldLabel": "Description",
"placeholder": "Nvidia released a new GPU rtx 4090 that supports state of the art gaming and crypto. The really pushe ....",
"requiredField": true
}
]
},
"responseMode": "lastNode",
"formDescription": "Please fill out the form below"
},
"typeVersion": 2.2
},
{
"id": "2224d22d-62ac-4bfa-94e1-260500addc52",
"name": "TechRadar News",
"type": "n8n-nodes-base.httpRequest",
"position": [
16,
-96
],
"parameters": {
"url": "https://www.techradar.com/feeds.xml",
"options": {}
},
"typeVersion": 4.2
},
{
"id": "11057068-72af-4a85-bdd0-1094be3109ce",
"name": "Parse HTML",
"type": "n8n-nodes-base.code",
"position": [
288,
-96
],
"parameters": {
"jsCode": "function parseRssFeed(jsonData) {\n try {\n // Parse JSON input\n const dataObj = JSON.parse(jsonData);\n const xmlString = dataObj[0].json.data;\n\n // Simple regex-based XML parser for RSS items\n const itemRegex = /<item>([\\s\\S]*?)<\\/item>/g;\n const items = [];\n let match;\n\n // Extract all <item> tags\n while ((match = itemRegex.exec(xmlString)) !== null) {\n const itemContent = match[1];\n const item = {};\n\n // Define fields to extract\n const fields = [\n { tag: 'title', key: 'title' },\n { tag: 'description', key: 'description' },\n { tag: 'link', key: 'link' },\n { tag: 'guid', key: 'guid' },\n { tag: 'pubDate', key: 'pubDate' },\n { tag: 'category', key: 'category' },\n { tag: 'dc:creator', key: 'dc_creator' },\n { tag: 'media:content', key: 'media_content', subtag: 'media:credit' },\n { tag: 'media:content', key: 'media_text', subtag: 'media:text' },\n { tag: 'media:content', key: 'media_title', subtag: 'media:title' },\n { tag: 'dc:content', key: 'content' }\n ];\n\n // Extract each field\n fields.forEach(field => {\n let regex;\n if (field.subtag) {\n regex = new RegExp(`<${field.tag}[^>]*>[\\\\s\\\\S]*?<${field.subtag}[^>]*><!\\\\[CDATA\\\\[(.*?)\\\\]\\\\]></${field.subtag}>`, 'i');\n } else {\n regex = new RegExp(`<${field.tag}(?:[^>]*)><!\\\\[CDATA\\\\[(.*?)\\\\]\\\\]></${field.tag}>|<${field.tag}(?:[^>]*)>(.*?)</${field.tag}>`, 'i');\n }\n \n const fieldMatch = itemContent.match(regex);\n if (fieldMatch) {\n let value = fieldMatch[1] || fieldMatch[2] || '';\n // Remove HTML tags\n value = value.replace(/<[^>]+>/g, '').replace(/ /g, ' ').replace(/&/g, '&').trim();\n if (value) {\n item[field.key] = value;\n }\n }\n });\n\n // Handle multiple categories\n const categoryMatches = itemContent.match(/<category><!\\[CDATA\\[(.*?)\\]\\]><\\/category>/g);\n if (categoryMatches) {\n item.category = categoryMatches\n .map(cat => cat.match(/<category><!\\[CDATA\\[(.*?)\\]\\]><\\/category>/)[1])\n .join(', ');\n }\n\n if (Object.keys(item).length > 0) {\n items.push(item);\n }\n }\n\n return items;\n } catch (error) {\n throw new Error(`Error processing RSS feed: ${error?.message}`);\n }\n}\n\n// n8n Function node implementation\ntry {\n const jsonData = JSON.stringify($input.all());\n const result = parseRssFeed(jsonData);\n return {result, error: false, message: null}\n} catch (error) {\n console.log(\"Error : \",error)\n return {result: [], error: true, message: error?.message}\n}"
},
"typeVersion": 2
},
{
"id": "6581b0bb-373e-4986-9951-79957bfb482f",
"name": "Gemini Flash 2.5",
"type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
"position": [
688,
96
],
"parameters": {
"options": {}
},
"credentials": {
"googlePalmApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "d77b44a6-68d3-4533-b909-d0794cd61c29",
"name": "Parse LLM Response",
"type": "n8n-nodes-base.code",
"position": [
1040,
-96
],
"parameters": {
"jsCode": "const number = parseInt($input.first().json.text)\nconst item = $('Parse HTML').first().json.result[number]\n\nreturn item"
},
"typeVersion": 2
},
{
"id": "b0399c03-d5f7-44f6-92b7-4e0a43d9de75",
"name": "ImportSlides embedPost",
"type": "@postnitro/n8n-nodes-postnitro-ai.postNitro",
"position": [
2960,
-96
],
"parameters": {
"brandId": "cmegxs6v0001vl704wunklyfg",
"operation": "importSlides",
"slidesJson": "={{ JSON.stringify( $json.slides ) }}",
"templateId": "o7dcr2u3xn9ydx2ipc8vw1js"
},
"credentials": {
"postNitroApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "d30affe8-ec6e-4b82-859a-9b306222059b",
"name": "Decide which News to Choose",
"type": "@n8n/n8n-nodes-langchain.chainLlm",
"position": [
688,
-96
],
"parameters": {
"text": "=You are an AI assistant. Your only task is to select the single most relevant news item from the provided news title list.\n\nRelevance criteria (in order of importance):\n1. n8n Automation\n2. AI and Technology News\n3. Personal brand development and motivation\n\nExclusion rules:\n- Ignore any news about love, relationships, entertainment gossip, or censored/inappropriate topics.\n\nNews list (each item has a number and a title):\n```\n[\n{{ JSON.stringify($json.result.map((item, index) => ({ number: index+1, title: item.title })), null, 2) }}\n]\n```\n\nReturn format:\n- Return only the number of the most relevant news item.\n- Do not return text, explanations, or anything else. Just a number\n\nExample valid responses:\n```\n6\n```",
"batching": {},
"promptType": "define"
},
"typeVersion": 1.7
},
{
"id": "3aceebb8-82f6-44b9-a574-bab608861a17",
"name": "Linkedin User URN",
"type": "n8n-nodes-base.httpRequest",
"position": [
3440,
-96
],
"parameters": {
"url": "https://api.linkedin.com/v2/userinfo",
"options": {},
"authentication": "predefinedCredentialType",
"nodeCredentialType": "linkedInOAuth2Api"
},
"credentials": {
"linkedInOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 4.2
},
{
"id": "a150d9bd-864c-449e-a2e9-11189d4b84f8",
"name": "Get Upload URL",
"type": "n8n-nodes-base.httpRequest",
"position": [
3696,
-96
],
"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": "202307"
}
]
},
"nodeCredentialType": "linkedInOAuth2Api"
},
"credentials": {
"linkedInOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 4.2
},
{
"id": "01bf5969-6e00-47f4-9ae6-42c004f6fd0f",
"name": "Upload PDF",
"type": "n8n-nodes-base.httpRequest",
"position": [
4176,
-96
],
"parameters": {
"url": "={{ $json.value.uploadUrl }}",
"method": "PUT",
"options": {},
"sendBody": true,
"contentType": "binaryData",
"sendHeaders": true,
"authentication": "predefinedCredentialType",
"headerParameters": {
"parameters": [
{
"name": "Content-Type",
"value": "application/pdf"
}
]
},
"inputDataFieldName": "=my.pdf",
"nodeCredentialType": "linkedInOAuth2Api"
},
"credentials": {
"linkedInOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 4.2
},
{
"id": "f2bcc3a1-e5bc-445e-b3b6-b8d594ccd4e3",
"name": "Download PDF",
"type": "n8n-nodes-base.httpRequest",
"position": [
3952,
-96
],
"parameters": {
"url": "={{ $('ImportSlides embedPost').item.json.data.result.data }}",
"options": {
"response": {
"response": {
"responseFormat": "file",
"outputPropertyName": "=my.pdf"
}
}
}
},
"typeVersion": 4.2
},
{
"id": "ddbe76f1-856d-4242-b55a-bfae1b4025c7",
"name": "Post to LinkedIn",
"type": "n8n-nodes-base.httpRequest",
"position": [
5344,
-96
],
"parameters": {
"url": "https://api.linkedin.com/rest/posts",
"method": "POST",
"options": {},
"jsonBody": "={\n \"author\": \"urn:li:person:{{ $('Linkedin User URN').item.json.sub }}\",\n \"commentary\": {{ JSON.stringify($json.content.parts[0].text) }},\n \"visibility\": \"PUBLIC\",\n \"distribution\": {\n \"feedDistribution\": \"MAIN_FEED\",\n \"targetEntities\": [],\n \"thirdPartyDistributionChannels\": []\n },\n \"content\": {\n \"media\": {\n \"title\":\"{{ $('Parse LLM Response1').item.json.slides[0].heading }}\",\n \"id\": \"{{ $('Get Upload URL').item.json.value.document }}\"\n }\n },\n \"lifecycleState\": \"PUBLISHED\",\n \"isReshareDisabledByAuthor\": false\n}",
"sendBody": true,
"sendHeaders": true,
"specifyBody": "json",
"authentication": "predefinedCredentialType",
"headerParameters": {
"parameters": [
{
"name": "LinkedIn-Version",
"value": "202408"
},
{
"name": "Content-Type",
"value": "application/json"
}
]
},
"nodeCredentialType": "linkedInOAuth2Api"
},
"credentials": {
"linkedInOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 4.2
},
{
"id": "10af8746-8f9a-4f18-8e70-c681e35c0ee5",
"name": "Gemini Generate",
"type": "@n8n/n8n-nodes-langchain.googleGemini",
"position": [
2064,
-96
],
"parameters": {
"modelId": {
"__rl": true,
"mode": "list",
"value": "models/gemini-2.5-flash",
"cachedResultName": "models/gemini-2.5-flash"
},
"options": {},
"messages": {
"values": [
{
"content": "=You are an AI Agent that generates LinkedIn carousel post content.\n\nIMPORTANT: Return only raw JSON as plain text. Do not call functions, do not use tool calls, do not add extra text.\n\nYour task: Write engaging, professional slide text for a LinkedIn carousel based on the provided title and description.\n\nNews Input:\n```\nTitle: {{ $json.combinedTitle }}\nDescription: {{ $json.combinedDescription }}\n```\n\nCarousel Requirements:\n- Exactly 1 `starting_slide` \u2192 strong hook, with heading, sub_heading, description, and CTA button.\n- At least 1 `body_slide` \u2192 explain key insights or takeaways from the news (you may create 2\u20133 if relevant).\n- Exactly 1 `ending_slide` \u2192 motivational close with sub_heading, heading, description, and CTA button.\n- Keep tone professional, concise, and LinkedIn-appropriate.\n- Do not include irrelevant topics (love, politics, entertainment gossip).\n- Ensure headings are short and catchy; descriptions can be 1\u20133 sentences.\n- Output must be valid JSON only, matching the schema below.\n\nResponse Format:\n```\n{\n\"slides\": [\n {\n \"type\": \"starting_slide\",\n \"sub_heading\": \"string\",\n \"heading\": \"string\",\n \"description\": \"string\",\n \"cta_button\": \"string\"\n },\n {\n \"type\": \"body_slide\",\n \"heading\": \"string\",\n \"description\": \"string\"\n },\n {\n \"type\": \"ending_slide\",\n \"sub_heading\": \"string\",\n \"heading\": \"string\",\n \"description\": \"string\",\n \"cta_button\": \"string\"\n }\n]\n}\n```\n"
}
]
}
},
"credentials": {
"googlePalmApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "55937c1f-4fd0-43e2-a03d-8a78fb7410af",
"name": "Gemini Generate1",
"type": "@n8n/n8n-nodes-langchain.googleGemini",
"position": [
4624,
-96
],
"parameters": {
"modelId": {
"__rl": true,
"mode": "list",
"value": "models/gemini-2.5-flash",
"cachedResultName": "models/gemini-2.5-flash"
},
"options": {},
"messages": {
"values": [
{
"content": "=You are an AI Agent that generates LinkedIn post description.\n\nIMPORTANT: Return only raw text.\n\nYour task: Write engaging, professional text for a LinkedIn post based on the provided title and description.\n\nNews Input:\n```\nTitle: {{ $('Get Title and Description').item.json.combinedTitle }}\nDescription: {{ $('Get Title and Description').item.json.combinedDescription }}\n```\n\nExample Response Format:\n```\n\ud83d\ude80 Just launched my first fully automated LinkedIn carousel \u2014 created end-to-end by my AI Employee (built in n8n).\n\nNo manual editing, no wasted time. The system handles content creation \u2192 carousel design \u2192 posting all on its own.\n\n\u2728 I\u2019m offering to set this up for 5 people free of cost. If you want to automate your content creation and save hours every week, drop a comment below.\n```\n"
}
]
}
},
"credentials": {
"googlePalmApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "f22f5932-e400-4f52-9c5d-d9d82f22813e",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
-112,
-304
],
"parameters": {
"color": 5,
"width": 576,
"height": 576,
"content": "## Get News from TechRadar RSS Feed and make it into a readable Object"
},
"typeVersion": 1
},
{
"id": "db564f1a-8382-4125-9453-ce6bcc0b2af1",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
560,
-304
],
"parameters": {
"color": 5,
"width": 640,
"height": 576,
"content": "## Let AI decide which news resonates with your LinkedIn Profile then formate the response"
},
"typeVersion": 1
},
{
"id": "d54269e2-3464-469c-93ed-b2ec80736076",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [
1952,
-304
],
"parameters": {
"color": 5,
"width": 688,
"height": 576,
"content": "## Generate Content for Carousal ( and then formate the response )\n### ( in Postnitro friendly formate )"
},
"typeVersion": 1
},
{
"id": "33b95b5b-b9f6-45e4-91ac-293320432d8a",
"name": "Sticky Note3",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1056,
112
],
"parameters": {
"color": 5,
"width": 720,
"height": 544,
"content": "## Triggers\n1. Automated 6:00 AM Trigger\n2. Manual Form Trigger"
},
"typeVersion": 1
},
{
"id": "a8715e77-2a98-4856-b38f-fe79b38e2199",
"name": "Parse LLM Response1",
"type": "n8n-nodes-base.code",
"position": [
2416,
-96
],
"parameters": {
"jsCode": "let raw = $input.first().json.content.parts[0].text\n\n// Remove code fences if present (```json ... ```)\nraw = raw.replace(/```json\\n?/g, \"\").replace(/```/g, \"\");\n\n// Parse into JSON\nlet parsed;\ntry {\n parsed = JSON.parse(raw);\n} catch (e) {\n throw new Error(\"Failed to parse AI response as JSON: \" + e.message);\n}\n\n// Return slides array as n8n items\nreturn parsed"
},
"typeVersion": 2
},
{
"id": "4bd766d9-8e42-4eab-9a3a-d754bdbb3b79",
"name": "Sticky Note4",
"type": "n8n-nodes-base.stickyNote",
"position": [
2784,
-304
],
"parameters": {
"color": 5,
"width": 448,
"height": 576,
"content": "## Create Carousal PDF with Post Nitro"
},
"typeVersion": 1
},
{
"id": "f3ae1212-699c-4454-b890-aaa5b955ba83",
"name": "Sticky Note5",
"type": "n8n-nodes-base.stickyNote",
"position": [
3328,
-304
],
"parameters": {
"color": 5,
"width": 1040,
"height": 576,
"content": "## Upload PDF to LinkedIn"
},
"typeVersion": 1
},
{
"id": "bf386161-d14a-4267-adb6-b615e8c0f0a3",
"name": "Sticky Note6",
"type": "n8n-nodes-base.stickyNote",
"position": [
4464,
-304
],
"parameters": {
"color": 5,
"width": 576,
"height": 576,
"content": "## Generate Final Linkedin Post Description"
},
"typeVersion": 1
},
{
"id": "88f08f5f-7199-4d31-a642-c0d44b52cfef",
"name": "Sticky Note7",
"type": "n8n-nodes-base.stickyNote",
"position": [
5136,
-304
],
"parameters": {
"color": 5,
"width": 576,
"height": 576,
"content": "## Post to LinkedIn"
},
"typeVersion": 1
},
{
"id": "61e1f12a-3bf7-4e1b-892f-55b2383fc721",
"name": "Sticky Note8",
"type": "n8n-nodes-base.stickyNote",
"position": [
1328,
-304
],
"parameters": {
"color": 5,
"width": 512,
"height": 576,
"content": "## Combine Form and Automated Inputs"
},
"typeVersion": 1
},
{
"id": "acb524f6-629a-4d8d-a9d9-aee282f5a44e",
"name": "Get Title and Description",
"type": "n8n-nodes-base.code",
"position": [
1520,
-96
],
"parameters": {
"mode": "runOnceForEachItem",
"jsCode": "const combinedTitle = $json.title || $json.Title\nconst combinedDescription = $json.content || $json.Description\n\nreturn {\n combinedTitle,\n combinedDescription\n}"
},
"typeVersion": 2
},
{
"id": "902924a0-d6ec-4e59-9662-a47211511b1a",
"name": "Sticky Note10",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1056,
-960
],
"parameters": {
"width": 572,
"height": 944,
"content": "## Try It Out!\n### Automatically generate Linkedin Carousal and Upload to Linkedin\n\nUse case : Linkedin Content Creation, specifically carousal. But could be adjusted for many other creations as well.\n\n### How it works\n* It will run automatically every 6:00 AM\n* Get latest News from TechRadar\n* Parse it into readable JSON\n* AI will decide, which news resonates with your profile\n* Then give the title and description of that news to generate the final linkedin carousal content.\n* This step is also trigerred by Form trigger\n* After carousal generation, it will give it to Post Nitro to create images on that content. \n* Post Nitro provides the PDF file.\n* We Upload the PDf file to Linkedin and get the file ID, in next step, it will be used.\n* Finally create the Post description and Post it to Linkedin\n\n### How to use\n* It will run every 6:00 AM automatically. Just make it Live\n* Submit the form, with correct title and description ( i did not added tests for that so must give that correct \ud83d\ude05 )\n\n### Requirements\n* Install Post Nitro community Node\n@postnitro/n8n-nodes-postnitro-ai\n\n* We need the following API keys to make it work\n1. Google Gemini ( for Gemini 2.5-Flash Usage )\nDocs [Google Gemini Key](https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.lmchatgooglegemini/)\n2. Post Nitro credentials ( API key + Template id + Brand id )\nDocs [Post Nitro](https://postnitro.ai/docs/embed/obtaining-an-api-key)\n3. Linkedin API key\nDocs [Linkedin API](https://docs.n8n.io/integrations/builtin/credentials/linkedin)\n\n\n### Need Help?\nMessage on Linkedin the [Linkedin](https://www.linkedin.com/in/shayan-khan20/)\n\nHappy Automation!"
},
"typeVersion": 1
},
{
"id": "1ce81516-9c5d-4b6e-8c98-8eeda72a3eac",
"name": "Sticky Note9",
"type": "n8n-nodes-base.stickyNote",
"position": [
560,
-432
],
"parameters": {
"color": 3,
"width": 640,
"height": 96,
"content": "## Replace Gemini API Key, as well as tell AI about what you post on linkedin"
},
"typeVersion": 1
},
{
"id": "297765b7-bd45-4058-ad6d-f20afc7e6028",
"name": "Sticky Note11",
"type": "n8n-nodes-base.stickyNote",
"position": [
1952,
-416
],
"parameters": {
"color": 3,
"width": 688,
"height": 80,
"content": "## Replace Gemini API Key"
},
"typeVersion": 1
},
{
"id": "7ad7c56a-7f55-4421-b53f-d671be4383d7",
"name": "Sticky Note12",
"type": "n8n-nodes-base.stickyNote",
"position": [
2784,
-432
],
"parameters": {
"color": 3,
"width": 448,
"height": 96,
"content": "## Give your Post Nitro Credentials ( API key + Template ID + Brand ID )"
},
"typeVersion": 1
},
{
"id": "1c31db06-7a55-44f1-a906-03808f638394",
"name": "Sticky Note13",
"type": "n8n-nodes-base.stickyNote",
"position": [
3328,
-448
],
"parameters": {
"color": 3,
"width": 1040,
"height": 96,
"content": "## Replace Linkedin API Keys"
},
"typeVersion": 1
},
{
"id": "3acf132a-bf51-4479-8076-4e4bd5004889",
"name": "Sticky Note14",
"type": "n8n-nodes-base.stickyNote",
"position": [
4464,
-464
],
"parameters": {
"color": 3,
"width": 576,
"height": 96,
"content": "## Replace Gemini API Key"
},
"typeVersion": 1
},
{
"id": "a7b7aa84-7968-43fc-818d-8b2b791ff9e5",
"name": "Sticky Note15",
"type": "n8n-nodes-base.stickyNote",
"position": [
5136,
-464
],
"parameters": {
"color": 3,
"width": 576,
"height": 96,
"content": "## Replace Linkedin API Key"
},
"typeVersion": 1
}
],
"active": false,
"settings": {
"callerPolicy": "workflowsFromSameOwner",
"errorWorkflow": "OjCzQZHTVMPt0jhc",
"executionOrder": "v1"
},
"versionId": "5df9edde-f91a-498a-a9f3-301bbc1ca414",
"connections": {
"Parse HTML": {
"main": [
[
{
"node": "Decide which News to Choose",
"type": "main",
"index": 0
}
]
]
},
"Upload PDF": {
"main": [
[
{
"node": "Gemini Generate1",
"type": "main",
"index": 0
}
]
]
},
"Download PDF": {
"main": [
[
{
"node": "Upload PDF",
"type": "main",
"index": 0
}
]
]
},
"Get Upload URL": {
"main": [
[
{
"node": "Download PDF",
"type": "main",
"index": 0
}
]
]
},
"TechRadar News": {
"main": [
[
{
"node": "Parse HTML",
"type": "main",
"index": 0
}
]
]
},
"6:00 AM Trigger": {
"main": [
[
{
"node": "TechRadar News",
"type": "main",
"index": 0
}
]
]
},
"Gemini Generate": {
"main": [
[
{
"node": "Parse LLM Response1",
"type": "main",
"index": 0
}
]
]
},
"Gemini Flash 2.5": {
"ai_languageModel": [
[
{
"node": "Decide which News to Choose",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Gemini Generate1": {
"main": [
[
{
"node": "Post to LinkedIn",
"type": "main",
"index": 0
}
]
]
},
"Linkedin User URN": {
"main": [
[
{
"node": "Get Upload URL",
"type": "main",
"index": 0
}
]
]
},
"On form submission": {
"main": [
[
{
"node": "Get Title and Description",
"type": "main",
"index": 0
}
]
]
},
"Parse LLM Response": {
"main": [
[
{
"node": "Get Title and Description",
"type": "main",
"index": 0
}
]
]
},
"Parse LLM Response1": {
"main": [
[
{
"node": "ImportSlides embedPost",
"type": "main",
"index": 0
}
]
]
},
"ImportSlides embedPost": {
"main": [
[
{
"node": "Linkedin User URN",
"type": "main",
"index": 0
}
]
]
},
"Get Title and Description": {
"main": [
[
{
"node": "Gemini Generate",
"type": "main",
"index": 0
}
]
]
},
"Decide which News to Choose": {
"main": [
[
{
"node": "Parse LLM Response",
"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.
googlePalmApilinkedInOAuth2ApipostNitroApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
This workflow contains community nodes that are only compatible with the self-hosted version of n8n.
Source: https://n8n.io/workflows/7733/ — 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.
kisisel asistan. Uses toolWorkflow, toolHttpRequest, toolCalculator, toolThink. Scheduled trigger; 43 nodes.
Effortlessly generate, review, and publish SEO-optimized blog posts to WordPress using AI and automation.
This workflow is a content multiplier. Provide a single video topic via a form, and it automatically researches, outlines, and writes two separate scripts: one for a YouTube Shorts and another for a L
Fetch user-specific research papers from arXiv on a daily schedule, process and structure the data, and create or update entries in a Notion database, with support for data delivery Paper Topic: singl
Content - Newsletter Agent. Uses formTrigger, chainLlm, outputParserStructured, httpRequest. Event-driven trigger; 87 nodes.