This workflow corresponds to n8n.io template #8895 — we link there as the canonical source.
This workflow follows the Airtable → Chainllm 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 →
{
"meta": {
"templateCredsSetupCompleted": true
},
"nodes": [
{
"id": "92102cf3-03fb-4b4f-9c28-5c147393ae3a",
"name": "Schedule Trigger",
"type": "n8n-nodes-base.scheduleTrigger",
"position": [
-2912,
496
],
"parameters": {
"rule": {
"interval": [
{}
]
}
},
"typeVersion": 1.2
},
{
"id": "49d460f3-90df-4b9b-9af8-f1c75029ea8f",
"name": "Get Daily LinkedIn Post",
"type": "n8n-nodes-base.httpRequest",
"position": [
-1568,
64
],
"parameters": {
"url": "=https://professional-network-data.p.rapidapi.com/get-profile-posts?start=0&username={{ $('Daily Check').item.json['LinkedIn profile URN'] }}",
"options": {},
"sendQuery": true,
"queryParameters": {
"parameters": [
{
"name": "postedAt",
"value": "={{ $('Set Date Variables').item.json.yesterday }}"
}
]
}
},
"typeVersion": 4.2
},
{
"id": "8e25fef7-f183-46f0-a7c7-880a1b89b560",
"name": "Extract Info",
"type": "n8n-nodes-base.code",
"position": [
-1120,
-32
],
"parameters": {
"jsCode": "// Extract data from LinkedIn API response\nconst inputData = $input.all();\n// Process each item in the input data\nconst results = [];\nfor (const item of inputData) {\n // Handle the actual structure - data is directly in item.json.data\n const posts = item.json?.data || [];\n \n for (const post of posts) {\n // Extract LinkedIn profile URL and URN\n const profileUrl = post.author?.url || '';\n const profileUrn = post.author?.urn || '';\n \n // Extract person's name information\n const firstName = post.author?.firstName || '';\n const lastName = post.author?.lastName || '';\n const fullName = firstName && lastName ? `${firstName} ${lastName}` : '';\n \n // Extract post URL and URN\n const postUrl = post.postUrl || '';\n const postUrn = post.urn || '';\n \n // Extract timestamp and published date\n const timestamp = post.postedDateTimestamp || 0;\n const publishedDate = post.postedDate || '';\n \n // Extract reactions and comments\n const reactions = post.totalReactionCount || 0;\n const comments = post.commentsCount || 0;\n \n // Extract post content/text\n const postContent = post.text || '';\n \n // Calculate 14 days from publish date\n let twoWeeksFromPublish = '';\n let dateCreated = '';\n \n if (timestamp) {\n const publishDate = new Date(timestamp);\n const twoWeeksLater = new Date(publishDate.getTime() + (14 * 24 * 60 * 60 * 1000));\n twoWeeksFromPublish = twoWeeksLater.toISOString().split('T')[0] + 'T' + twoWeeksLater.toISOString().split('T')[1];\n \n // Create clean date format MM/DD/YYYY\n const month = String(publishDate.getMonth() + 1).padStart(2, '0');\n const day = String(publishDate.getDate()).padStart(2, '0');\n const year = publishDate.getFullYear();\n dateCreated = `${month}/${day}/${year}`;\n }\n \n // Create result object\n results.push({\n linkedinProfileUrl: profileUrl,\n linkedinProfileUrn: profileUrn,\n firstName: firstName,\n lastName: lastName,\n fullName: fullName,\n postUrl: postUrl,\n postUrn: postUrn,\n timestamp: timestamp,\n publishedDate: publishedDate,\n dateCreated: dateCreated, // New clean date field in MM/DD/YYYY format\n postContent: postContent, // LinkedIn post text content\n reactions: reactions,\n comments: comments,\n twoWeeksFromPublishDate: twoWeeksFromPublish\n });\n }\n}\nreturn results;"
},
"typeVersion": 2
},
{
"id": "67a88aea-3991-45d5-abf0-e370efb911c2",
"name": "Random Delay",
"type": "n8n-nodes-base.code",
"position": [
-2016,
64
],
"parameters": {
"jsCode": "// Random Time Generator - Returns single random time object\n\n// Function to generate random seconds with decimal places\nfunction generateRandomSeconds(min = 0.1, max = 60, decimalPlaces = 1) {\n const randomValue = Math.random() * (max - min) + min;\n return Number(randomValue.toFixed(decimalPlaces));\n}\n\n// Generate single random time\nconst seconds = generateRandomSeconds(0.1, 60, 1);\n\n// Return array with single object (n8n requirement)\nreturn [{\n seconds: seconds,\n formatted: `${seconds} seconds`,\n milliseconds: seconds * 1000\n}];"
},
"typeVersion": 2
},
{
"id": "c8ab6ef7-594b-4892-8718-cdc1a7b7a112",
"name": "Wait",
"type": "n8n-nodes-base.wait",
"position": [
-1792,
64
],
"parameters": {
"amount": "={{ $('Random Delay').item.json.seconds }}"
},
"typeVersion": 1.1
},
{
"id": "4a122b91-a994-42e7-ac87-4068cce1f4b7",
"name": "Loop Over Items",
"type": "n8n-nodes-base.splitInBatches",
"position": [
-2240,
496
],
"parameters": {
"options": {}
},
"typeVersion": 3
},
{
"id": "fe9cad80-f403-4c6d-858d-c5cd6bddb78b",
"name": "If",
"type": "n8n-nodes-base.if",
"position": [
-1344,
64
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "cd679495-e5a2-4c4e-a1c9-2388aaa9c221",
"operator": {
"type": "boolean",
"operation": "true",
"singleValue": true
},
"leftValue": "={{ $json.data && $json.data.length > 0 }}",
"rightValue": ""
},
{
"id": "f5cfff76-e915-4596-a6db-e72fb7a20cb5",
"operator": {
"name": "filter.operator.equals",
"type": "string",
"operation": "equals"
},
"leftValue": "",
"rightValue": ""
}
]
}
},
"typeVersion": 2.2
},
{
"id": "79b97de1-6014-4b88-abaa-4c8892fe450a",
"name": "No Operation, do nothing",
"type": "n8n-nodes-base.noOp",
"position": [
-1120,
160
],
"parameters": {},
"typeVersion": 1
},
{
"id": "fb2d459f-f272-47e1-93a1-af9ce01b1a5b",
"name": "No Operation, do nothing2",
"type": "n8n-nodes-base.noOp",
"position": [
-2032,
256
],
"parameters": {},
"typeVersion": 1
},
{
"id": "e7e38169-a02f-4eff-a13c-fc1f0112991c",
"name": "Set Date Variables",
"type": "n8n-nodes-base.set",
"position": [
-2688,
496
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "end_of_day",
"name": "yesterday",
"type": "string",
"value": "={{ new Date(Date.now() - 24 * 60 * 60 * 1000).toISOString().split('T')[0] }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "4cb60e14-5e0c-42a9-9aaa-0cb81faaa0cb",
"name": "Daily Check",
"type": "n8n-nodes-base.airtable",
"position": [
-2464,
496
],
"parameters": {
"base": {
"__rl": true,
"mode": "url",
"value": ""
},
"sort": {
"property": [
{
"field": "Name"
}
]
},
"table": {
"__rl": true,
"mode": "list",
"value": "",
"cachedResultUrl": "",
"cachedResultName": ""
},
"options": {},
"operation": "search",
"filterByFormula": "="
},
"credentials": {
"airtableTokenApi": {
"name": "<your credential>"
}
},
"typeVersion": 2.1
},
{
"id": "e7f98dbd-a612-4c67-81c0-20cd2b2e3787",
"name": "Lookup CB Community",
"type": "n8n-nodes-base.airtable",
"position": [
-672,
-32
],
"parameters": {
"base": {
"__rl": true,
"mode": "url",
"value": ""
},
"table": {
"__rl": true,
"mode": "url",
"value": ""
},
"options": {},
"operation": "search",
"filterByFormula": "="
},
"credentials": {
"airtableTokenApi": {
"name": "<your credential>"
}
},
"typeVersion": 2.1,
"alwaysOutputData": true
},
{
"id": "9155dcef-8eef-484f-9224-d1baf09f1f73",
"name": "If2",
"type": "n8n-nodes-base.if",
"position": [
-448,
-32
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "cd679495-e5a2-4c4e-a1c9-2388aaa9c221",
"operator": {
"type": "object",
"operation": "notEmpty",
"singleValue": true
},
"leftValue": "={{ $json }}",
"rightValue": ""
}
]
}
},
"typeVersion": 2.2
},
{
"id": "655a9f68-41e8-4e22-a67f-e865edd4c886",
"name": "No Operation, do nothing3",
"type": "n8n-nodes-base.noOp",
"position": [
-224,
64
],
"parameters": {},
"typeVersion": 1
},
{
"id": "d7ed4b4a-868c-4e15-b25a-9f33534e7c02",
"name": "Clean Profile Data1",
"type": "n8n-nodes-base.set",
"position": [
-896,
-32
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "f26c38a1-9094-4408-9786-021250920768",
"name": "linkedin_profile_clean_urn",
"type": "string",
"value": "={{ $('Extract Info').item.json.linkedinProfileUrn.replace('urn:li:fsd_profile:', '') }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "9ad2e8e5-0ce0-4e1c-9070-136f17f1740d",
"name": "OpenAI Chat Model",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
16,
96
],
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "gpt-4o-mini"
},
"options": {}
},
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.2
},
{
"id": "dcf95f09-06aa-4b01-a17c-a3bfc15a25a6",
"name": "Structured Output Parser",
"type": "@n8n/n8n-nodes-langchain.outputParserStructured",
"position": [
144,
96
],
"parameters": {
"jsonSchemaExample": "{\n \"post_preview\": \"My top 5 fire tools to help im...\"\n}"
},
"typeVersion": 1.2
},
{
"id": "ff38831b-1b5f-4cf1-8598-298e28beee30",
"name": "Check if post exist?",
"type": "n8n-nodes-base.if",
"position": [
576,
-128
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "cd679495-e5a2-4c4e-a1c9-2388aaa9c221",
"operator": {
"type": "object",
"operation": "notEmpty",
"singleValue": true
},
"leftValue": "={{ $json}}",
"rightValue": ""
}
]
}
},
"typeVersion": 2.2
},
{
"id": "c8251669-b2a2-46db-9bcc-61d9093ef316",
"name": "Lookup Post",
"type": "n8n-nodes-base.airtable",
"position": [
352,
-128
],
"parameters": {
"base": {
"__rl": true,
"mode": "url",
"value": ""
},
"table": {
"__rl": true,
"mode": "url",
"value": "",
"__regex": "https://airtable.com/[a-zA-Z0-9]{2,}/([a-zA-Z0-9]{2,})"
},
"options": {},
"operation": "search",
"filterByFormula": "="
},
"credentials": {
"airtableTokenApi": {
"name": "<your credential>"
}
},
"typeVersion": 2.1,
"alwaysOutputData": true
},
{
"id": "9769e6b0-5b77-4bb4-be4c-ea87f9f329c2",
"name": "Formatting",
"type": "n8n-nodes-base.set",
"position": [
-224,
-128
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "2de2cad6-dd98-4d52-b990-02e33231d7b2",
"name": "postcontent",
"type": "string",
"value": "={{ $('Extract Info').item.json.postContent }}"
},
{
"id": "dc12b518-c5ad-48ee-94e8-776d08cc0df3",
"name": "authorfullname",
"type": "string",
"value": "={{ $json.Name }}"
},
{
"id": "207676d1-9d4f-42ba-aa34-376400720f39",
"name": "authorprofileurl",
"type": "string",
"value": "={{ $json['LinkedIn profile URL'] }}"
},
{
"id": "2e535b97-6cf9-4e62-98d0-648372782be5",
"name": "authorprofileurn",
"type": "string",
"value": "={{ $json['LinkedIn profile URN'] }}"
},
{
"id": "13a9739e-0c00-4a1b-9f80-a98ca45eedf4",
"name": "posturl",
"type": "string",
"value": "={{ $('Extract Info').item.json.postUrl }}"
},
{
"id": "175ea9d3-ed06-4f86-8f0d-f914c16b7336",
"name": "postdatecreated",
"type": "string",
"value": "={{ $('Extract Info').item.json.dateCreated }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "1e16a370-3cc3-41fd-9726-5a8a8bc9b10b",
"name": "LinkedIn Digestion",
"type": "@n8n/n8n-nodes-langchain.chainLlm",
"position": [
0,
-128
],
"parameters": {
"text": "=I will provide you a LinkedIn post as input. \n\nYou MUST format your response as JSON in the following format:\n{ \n \"post_preview\": \"<First 30 characters of the post followed by '...'>\"\n}\n\n\nFor the \"post_preview\" key, take only the first 30 characters of the original post and add \"...\" at the end.\n\nHere's the LinkedIn post I want you to analyze: {{ $json.postcontent }}\n\nYou MUST respond with ONLY valid JSON. Do not include any text before or after the JSON. Your entire response must be this exact format:\n\n{\n \"post_preview\": \"first 30 chars...\"\n}",
"promptType": "define",
"hasOutputParser": true
},
"typeVersion": 1.6
},
{
"id": "4c54e5ec-1f8f-4c20-baca-cfab03574a8b",
"name": "No Operation, do nothing1",
"type": "n8n-nodes-base.noOp",
"position": [
1008,
240
],
"parameters": {},
"typeVersion": 1
},
{
"id": "b78b7384-3e5d-48f6-9402-df914bcfe2eb",
"name": "Create Digestion",
"type": "n8n-nodes-base.airtable",
"position": [
800,
448
],
"parameters": {
"base": {
"__rl": true,
"mode": "url",
"value": ""
},
"table": {
"__rl": true,
"mode": "url",
"value": ""
},
"columns": {
"value": {},
"schema": [
{
"id": "Role Name",
"type": "string",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "Role Name",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Company Name",
"type": "string",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "Company Name",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Company Website",
"type": "string",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "Company Website",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Company Info",
"type": "string",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "Company Info",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "GTM-related Role?",
"type": "boolean",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "GTM-related Role?",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Required Skills",
"type": "string",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "Required Skills",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Required Tools",
"type": "string",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "Required Tools",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Job Post Timestamp",
"type": "dateTime",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "Job Post Timestamp",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Location",
"type": "string",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "Location",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Slack Thread",
"type": "string",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "Slack Thread",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Job Taken?",
"type": "boolean",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "Job Taken?",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "create"
},
"credentials": {
"airtableTokenApi": {
"name": "<your credential>"
}
},
"typeVersion": 2.1
},
{
"id": "390ed7e5-2d11-45a6-9fd2-8662bc7fe8d4",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-3728,
-80
],
"parameters": {
"width": 640,
"height": 900,
"content": "## \ud83d\udd0d LinkedIn Post Monitoring & Content Digestion\n\n### Automatically monitor LinkedIn posts from your community members and create digestible summaries for content curation\n\nPerfect for community managers, content creators, and social media teams who want to stay on top of their network's LinkedIn activity without manually checking profiles daily.\n\n### How it works\n* **Schedule daily checks** - Runs automatically every day to scan for new posts\n* **Fetch recent posts** - Uses LinkedIn API to get yesterday's posts from tracked profiles\n* **Smart data extraction** - Pulls key information like post content, engagement metrics, and author details\n* **Content processing** - Creates short previews of posts using AI for quick scanning\n* **Duplicate prevention** - Checks existing records to avoid storing the same post twice\n* **Database storage** - Saves processed posts to Airtable for easy management and review\n\n### How to use\n* **Add LinkedIn profiles** - Import your community members' LinkedIn profile URLs to Airtable\n* **Configure API credentials** - Set up LinkedIn API access and OpenAI for content processing\n* **Customize the schedule** - Adjust timing to match your workflow (daily, weekly, etc.)\n\n### Requirements\n* **Airtable account** - For storing profile lists and processed posts\n* **LinkedIn API access** - Professional Network Data API from RapidAPI\n* **OpenAI API** - For intelligent content summarization\n* **Basic Airtable setup** - Two tables: one for profiles, one for posts\n\n### Good to know\n* **API costs apply** - LinkedIn API calls and OpenAI processing incur usage fees\n* **Rate limiting included** - Built-in delays prevent API throttling\n* **Flexible triggers** - Can easily switch from schedule to webhook for real-time processing\n\n### Need Help?\nJoin the [Discord](https://discord.com/invite/XPKeKXeB7d) or ask in the [Forum](https://community.n8n.io/)!\n\nHappy monitoring! \ud83d\ude80"
},
"typeVersion": 1
},
{
"id": "338e329b-8f80-4c7a-846b-0fb6a5888ae4",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
-2624,
208
],
"parameters": {
"color": 7,
"width": 300,
"height": 240,
"content": "## 1. Load Community Profiles\n[Read more about the Airtable node](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.airtable/)\n\nFetches your list of LinkedIn profiles from Airtable to monitor. Each profile should include the LinkedIn profile URL and URN for API calls."
},
"typeVersion": 1
},
{
"id": "1565469f-b19d-4281-bd88-afc2275fc099",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1680,
-80
],
"parameters": {
"color": 7,
"width": 300,
"height": 240,
"content": "## 2. Fetch Recent Posts\n[Read more about the HTTP Request node](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.httprequest/)\n\nCalls the LinkedIn API to get posts from yesterday for each profile. Includes rate limiting to stay within API quotas."
},
"typeVersion": 1
},
{
"id": "f8bdcac8-cc4b-457a-8bf7-34fa6558421e",
"name": "Sticky Note3",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1216,
-272
],
"parameters": {
"color": 7,
"width": 300,
"height": 240,
"content": "## 3. Extract & Process Data\n[Read more about the Code node](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.code/)\n\nExtracts key information from LinkedIn posts including content, engagement metrics, timestamps, and author details into structured data."
},
"typeVersion": 1
},
{
"id": "a8e7ae83-5256-4371-843e-4cf2fb77d225",
"name": "Sticky Note4",
"type": "n8n-nodes-base.stickyNote",
"position": [
-32,
-304
],
"parameters": {
"color": 7,
"width": 300,
"height": 252,
"content": "## 4. AI Content Analysis\n[Read more about the LangChain nodes](https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.chainllm/)\n\nUses OpenAI to create concise previews of post content, making it easier to quickly scan and decide which posts deserve attention."
},
"typeVersion": 1
},
{
"id": "7450d75f-0338-4cda-a758-a8a2a77fe3f5",
"name": "Sticky Note5",
"type": "n8n-nodes-base.stickyNote",
"position": [
608,
656
],
"parameters": {
"color": 7,
"width": 440,
"height": 180,
"content": "## 5. Store Processed Posts\n[Read more about the Airtable node](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.airtable/)\n\nChecks for existing posts to prevent duplicates, then saves new processed posts to Airtable with all extracted data and AI summaries."
},
"typeVersion": 1
},
{
"id": "18dac769-c403-4504-ba4e-09b8da226d31",
"name": "Sticky Note6",
"type": "n8n-nodes-base.stickyNote",
"position": [
-2048,
880
],
"parameters": {
"color": 3,
"width": 460,
"height": 260,
"content": "### \u26a0\ufe0f Setup Requirements!\nThis workflow requires several API credentials and proper Airtable structure.\n\n1. **LinkedIn API Access** - Get Professional Network Data API from RapidAPI\n2. **OpenAI API Key** - Required for content summarization\n3. **Airtable Base Setup** - Create two tables with specific field structures\n4. **Test with small dataset** - Start with 2-3 profiles before scaling up"
},
"typeVersion": 1
}
],
"connections": {
"If": {
"main": [
[
{
"node": "Extract Info",
"type": "main",
"index": 0
}
],
[
{
"node": "No Operation, do nothing",
"type": "main",
"index": 0
}
]
]
},
"If2": {
"main": [
[
{
"node": "Formatting",
"type": "main",
"index": 0
}
],
[
{
"node": "No Operation, do nothing3",
"type": "main",
"index": 0
}
]
]
},
"Wait": {
"main": [
[
{
"node": "Get Daily LinkedIn Post",
"type": "main",
"index": 0
}
]
]
},
"Formatting": {
"main": [
[
{
"node": "LinkedIn Digestion",
"type": "main",
"index": 0
}
]
]
},
"Daily Check": {
"main": [
[
{
"node": "Loop Over Items",
"type": "main",
"index": 0
}
]
]
},
"Lookup Post": {
"main": [
[
{
"node": "Check if post exist?",
"type": "main",
"index": 0
}
]
]
},
"Extract Info": {
"main": [
[
{
"node": "Clean Profile Data1",
"type": "main",
"index": 0
}
]
]
},
"Random Delay": {
"main": [
[
{
"node": "Wait",
"type": "main",
"index": 0
}
]
]
},
"Loop Over Items": {
"main": [
[
{
"node": "No Operation, do nothing2",
"type": "main",
"index": 0
}
],
[
{
"node": "Random Delay",
"type": "main",
"index": 0
}
]
]
},
"Create Digestion": {
"main": [
[
{
"node": "Loop Over Items",
"type": "main",
"index": 0
}
]
]
},
"Schedule Trigger": {
"main": [
[
{
"node": "Set Date Variables",
"type": "main",
"index": 0
}
]
]
},
"OpenAI Chat Model": {
"ai_languageModel": [
[
{
"node": "LinkedIn Digestion",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"LinkedIn Digestion": {
"main": [
[
{
"node": "Lookup Post",
"type": "main",
"index": 0
}
]
]
},
"Set Date Variables": {
"main": [
[
{
"node": "Daily Check",
"type": "main",
"index": 0
}
]
]
},
"Clean Profile Data1": {
"main": [
[
{
"node": "Lookup CB Community",
"type": "main",
"index": 0
}
]
]
},
"Lookup CB Community": {
"main": [
[
{
"node": "If2",
"type": "main",
"index": 0
}
]
]
},
"Check if post exist?": {
"main": [
[
{
"node": "No Operation, do nothing1",
"type": "main",
"index": 0
}
],
[
{
"node": "Create Digestion",
"type": "main",
"index": 0
}
]
]
},
"Get Daily LinkedIn Post": {
"main": [
[
{
"node": "If",
"type": "main",
"index": 0
}
]
]
},
"No Operation, do nothing": {
"main": [
[
{
"node": "Loop Over Items",
"type": "main",
"index": 0
}
]
]
},
"Structured Output Parser": {
"ai_outputParser": [
[
{
"node": "LinkedIn Digestion",
"type": "ai_outputParser",
"index": 0
}
]
]
},
"No Operation, do nothing1": {
"main": [
[
{
"node": "Loop Over Items",
"type": "main",
"index": 0
}
]
]
},
"No Operation, do nothing3": {
"main": [
[
{
"node": "Loop Over Items",
"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.
airtableTokenApiopenAiApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
Automatically monitor LinkedIn posts from your community members and create AI-powered content digests for efficient social media curation.
Source: https://n8n.io/workflows/8895/ — 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 workflow is for community builders, marketers, consultants, coaches, and thought leaders who want to grow their presence in Skool communities through strategic, value-driven engagement. It's espe
Complete PostgreSQL-backed system: Keyword scoring → AI research → Multi-part content generation → fal.ai Nano Banana image generation → WordPress publishing
This n8n automation workflow automates the creation, scripting, production, and posting of YouTube videos. It leverages AI (OpenAI), image generation (PIAPI), video rendering (Shotstack), and platform
Typeform IA - YT. Uses typeformTrigger, agent, lmChatOpenAi, toolWorkflow. Event-driven trigger; 75 nodes.
This n8n-powered workflow automates the entire lifecycle of real estate lead intake, qualification, routing, assignment, and reporting across multiple channels. It brings WhatsApp inquiries and websit