This workflow follows the Airtable → 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": "yF1HNe2ucaE81fNl",
"meta": {
"templateCredsSetupCompleted": true
},
"name": "Linkedin Automation",
"tags": [],
"nodes": [
{
"id": "fa012332-1c95-4460-b1d1-9d54441c9179",
"name": "Get List of records used",
"type": "n8n-nodes-base.airtable",
"position": [
-40,
-80
],
"parameters": {
"base": {
"__rl": true,
"mode": "list",
"value": "appt6kHkRkLlUh033",
"cachedResultUrl": "https://airtable.com/appt6kHkRkLlUh033",
"cachedResultName": "Linkdin"
},
"table": {
"__rl": true,
"mode": "list",
"value": "tbliloartO26TD5TG",
"cachedResultUrl": "https://airtable.com/appt6kHkRkLlUh033/tbliloartO26TD5TG",
"cachedResultName": "Used Articles"
},
"options": {},
"operation": "search"
},
"credentials": {
"airtableTokenApi": {
"name": "<your credential>"
}
},
"typeVersion": 2.1,
"alwaysOutputData": true
},
{
"id": "2d99b3b7-2fcd-46bf-8859-f41e94cb5ae1",
"name": "Update the used node",
"type": "n8n-nodes-base.airtable",
"position": [
200,
600
],
"parameters": {
"base": {
"__rl": true,
"mode": "list",
"value": "appt6kHkRkLlUh033",
"cachedResultUrl": "https://airtable.com/appt6kHkRkLlUh033",
"cachedResultName": "Linkdin"
},
"table": {
"__rl": true,
"mode": "list",
"value": "tbliloartO26TD5TG",
"cachedResultUrl": "https://airtable.com/appt6kHkRkLlUh033/tbliloartO26TD5TG",
"cachedResultName": "Used Articles"
},
"columns": {
"value": {
"id": "={{ $('download image for post').item.json.id }}",
"value": "={{ $('download image for post').item.json.id }}"
},
"schema": [
{
"id": "id",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "id",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "value",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "value",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "create"
},
"credentials": {
"airtableTokenApi": {
"name": "<your credential>"
}
},
"typeVersion": 2.1
},
{
"id": "72abb016-8f58-4c4c-b492-9ba7a576441a",
"name": "map used articls ids",
"type": "n8n-nodes-base.code",
"position": [
200,
-80
],
"parameters": {
"jsCode": "let values = $input.all().map(item => item.json.value);\n\nreturn [\n {\n json: {\n values: values\n }\n }\n ];"
},
"typeVersion": 2
},
{
"id": "c49d5db2-d1c9-4444-8fa8-f39197e2a472",
"name": "filter only unused Ids",
"type": "n8n-nodes-base.filter",
"position": [
640,
-80
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "934a4ab8-bc6b-4d1b-b050-c1f19a03cc9f",
"operator": {
"type": "array",
"operation": "notContains",
"rightType": "any"
},
"leftValue": "={{ $('map used articls ids').item.json.values }}",
"rightValue": "={{ $json.articles }}"
}
]
}
},
"typeVersion": 2.2
},
{
"id": "0b390b7d-8729-48e5-aadc-5aa9da8c7139",
"name": "get random tags",
"type": "n8n-nodes-base.code",
"position": [
-280,
-80
],
"parameters": {
"jsCode": "const devToTags = [\n \"android\",\n \"androiddev\",\n \"kotlin\",\n \"jetpack-compose\",\n \"android-appdevelopment\",\n \"app-development\"\n];\n\n\nfunction getRandomValuesAsObjects(list, count) {\n const randomValues = [];\n for (let i = 0; i < count; i++) {\n const randomIndex = Math.floor(Math.random() * list.length);\n randomValues.push({ json: { value: list[randomIndex] } });\n }\n return randomValues;\n}\n\nreturn getRandomValuesAsObjects(devToTags, 1);\n"
},
"typeVersion": 2
},
{
"id": "6b16bc15-8d82-4aa0-9ee2-5a10f070d106",
"name": "sent the status",
"type": "n8n-nodes-base.telegram",
"position": [
520,
600
],
"parameters": {
"text": "=Linkdin Post Sent Successfully \n\n{{ $('If').item.json.title }}\n\nDb Status Id {{ $json.id }}",
"chatId": "1199262493",
"replyMarkup": "inlineKeyboard",
"additionalFields": {
"appendAttribution": false
}
},
"credentials": {
"telegramApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.2
},
{
"id": "99c5ed96-4220-46b0-9a2a-628963393894",
"name": "Morning 9 Clock",
"type": "n8n-nodes-base.scheduleTrigger",
"position": [
-560,
-80
],
"parameters": {
"rule": {
"interval": [
{
"field": "cronExpression",
"expression": "0 9,19 * * *"
}
]
}
},
"typeVersion": 1.2
},
{
"id": "c81c749a-e21b-4ba6-beae-2b8a21523c06",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
-560,
-600
],
"parameters": {
"width": 920,
"height": 400,
"content": "# \ud83d\udce2 Auto-Post Medium Articles to LinkedIn with Telegram Alerts\n\nThis n8n workflow automates your LinkedIn posting by fetching articles from [medium.com](medium.com) twice a day (9:00 AM and 7:00 PM), ensuring consistent content sharing without manual effort.\n\nTo prevent duplicates, it stores posted article IDs in Airtable. It also sends a Telegram message after every successful post, so you stay updated.\n\n---\n"
},
"typeVersion": 1
},
{
"id": "61171a34-53a3-448a-886c-b0cc83b75b33",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
400,
-520
],
"parameters": {
"width": 580,
"height": 240,
"content": "\n## \u2705 Features\n\n- \ud83d\udd52 Runs twice daily at 9:00 AM and 7:00 PM (customizable)\n- \ud83d\udcf0 Fetches latest medium.com articles by tag\n- \ud83d\udcc2 Uses Airtable to avoid reposting the same article\n- \ud83d\udce2 Posts to your LinkedIn profile or company page\n- \ud83d\udcec Sends a Telegram notification after successful posting\n- \u2699\ufe0f Fully customizable schedule, tags, and post format"
},
"typeVersion": 1
},
{
"id": "c6712f11-2852-49af-8fb9-235da0e4685c",
"name": "fetch article ids from tag",
"type": "n8n-nodes-base.httpRequest",
"position": [
420,
-80
],
"parameters": {
"url": "=https://medium2.p.rapidapi.com/search/articles?query={{ $('get random tags').first().json.value }}",
"options": {},
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "x-rapidapi-host",
"value": "medium2.p.rapidapi.com"
},
{
"name": "x-rapidapi-key",
"value": ""
}
]
}
},
"typeVersion": 4.2
},
{
"id": "6382e23e-e214-48b4-8d93-06fc2c74e7cc",
"name": "Fetch Medium post using Article Id",
"type": "n8n-nodes-base.httpRequest",
"position": [
880,
-80
],
"parameters": {
"url": "=https://medium2.p.rapidapi.com/article/{{ $json.articles.randomItem() }}",
"options": {},
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "x-rapidapi-host",
"value": "medium2.p.rapidapi.com"
},
{
"name": "x-rapidapi-key",
"value": ""
}
]
}
},
"typeVersion": 4.2
},
{
"id": "eb92a4b3-d468-4d0f-8488-e6edb122b1db",
"name": "If",
"type": "n8n-nodes-base.if",
"position": [
-200,
260
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "69a60b53-f719-44e8-9ca4-97b99205a253",
"operator": {
"type": "string",
"operation": "notEmpty",
"singleValue": true
},
"leftValue": "={{ $json.image_url }}",
"rightValue": ""
}
]
}
},
"typeVersion": 2.2
},
{
"id": "792507fc-f956-4bc7-9c56-80f1078643a1",
"name": "make Linkedin post",
"type": "n8n-nodes-base.linkedIn",
"position": [
740,
240
],
"parameters": {
"text": "={{ $('Fetch Medium post content').item.json.content.substring(0, 600) }} ...\n\nArticle link : https://freedium.cfd/{{ $('If').item.json.url }}\n\n#AndroidDevelopment #MobileAppDevelopment #AppDevelopment #Programming #SoftwareEngineering #TechCommunity #DeveloperLife #Kotlin #LinkedInDevelopers \n#Mr4rogrammer #isharewhatilearn",
"person": "BQYGc4bH9N",
"additionalFields": {
"title": "=\ud83d\udcab {{ $('If').item.json.title }} \u2b50",
"visibility": "PUBLIC"
},
"shareMediaCategory": "IMAGE"
},
"credentials": {
"linkedInOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "b5026d10-0bcf-4ef4-a42e-0d8162a7eccc",
"name": "Fetch Medium post content",
"type": "n8n-nodes-base.httpRequest",
"position": [
100,
240
],
"parameters": {
"url": "=https://medium2.p.rapidapi.com/article/{{$json.id}}/content",
"options": {},
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "x-rapidapi-host",
"value": "medium2.p.rapidapi.com"
},
{
"name": "x-rapidapi-key",
"value": ""
}
]
}
},
"typeVersion": 4.2
},
{
"id": "d25bf5d7-0258-4f07-b0b7-54ace75ef697",
"name": "download image for post",
"type": "n8n-nodes-base.httpRequest",
"position": [
420,
240
],
"parameters": {
"url": "={{ $('If').item.json.image_url }}",
"options": {
"allowUnauthorizedCerts": false
},
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "User-Agent",
"value": "Mozilla/5.0"
}
]
}
},
"typeVersion": 4.2,
"alwaysOutputData": false
}
],
"active": false,
"settings": {
"timezone": "Asia/Kolkata",
"callerPolicy": "workflowsFromSameOwner",
"executionOrder": "v1"
},
"versionId": "cc2275e5-a8d2-468c-be91-5e14ad568e3a",
"connections": {
"If": {
"main": [
[
{
"node": "Fetch Medium post content",
"type": "main",
"index": 0
}
],
[
{
"node": "get random tags",
"type": "main",
"index": 0
}
]
]
},
"get random tags": {
"main": [
[
{
"node": "Get List of records used",
"type": "main",
"index": 0
}
]
]
},
"Morning 9 Clock": {
"main": [
[
{
"node": "get random tags",
"type": "main",
"index": 0
}
]
]
},
"make Linkedin post": {
"main": [
[
{
"node": "Update the used node",
"type": "main",
"index": 0
}
]
]
},
"Update the used node": {
"main": [
[
{
"node": "sent the status",
"type": "main",
"index": 0
}
]
]
},
"map used articls ids": {
"main": [
[
{
"node": "fetch article ids from tag",
"type": "main",
"index": 0
}
]
]
},
"filter only unused Ids": {
"main": [
[
{
"node": "Fetch Medium post using Article Id",
"type": "main",
"index": 0
}
]
]
},
"download image for post": {
"main": [
[
{
"node": "make Linkedin post",
"type": "main",
"index": 0
}
]
]
},
"Get List of records used": {
"main": [
[
{
"node": "map used articls ids",
"type": "main",
"index": 0
}
]
]
},
"Fetch Medium post content": {
"main": [
[
{
"node": "download image for post",
"type": "main",
"index": 0
}
]
]
},
"fetch article ids from tag": {
"main": [
[
{
"node": "filter only unused Ids",
"type": "main",
"index": 0
}
]
]
},
"Fetch Medium post using Article Id": {
"main": [
[
{
"node": "If",
"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.
airtableTokenApilinkedInOAuth2ApitelegramApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
How this works
This workflow automates personalised outreach on LinkedIn by pulling unused article IDs from an Airtable base, selecting random tags, and sending targeted connection requests or messages to enhance your professional networking without manual effort. It's ideal for sales professionals, recruiters, or marketers aiming to grow their LinkedIn presence efficiently while tracking interactions in a centralised database. The key step involves filtering and mapping unused content IDs before dispatching via the LinkedIn integration, ensuring each outreach feels tailored and compliant with platform limits.
Use this workflow for daily scheduled automation of low-volume LinkedIn engagements, such as 10-20 connections per run, integrated with Telegram for real-time status updates. Avoid it for high-frequency posting that risks account restrictions, or if you lack Airtable to manage content queues. Common variations include swapping Telegram for email notifications or adding HTTP requests to fetch fresh articles dynamically.
About this workflow
Linkedin Automation. Uses airtable, telegram, scheduleTrigger, stickyNote. Scheduled trigger; 15 nodes.
Source: https://github.com/Zie619/n8n-workflows — 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.
🧠 Problem This Solves Manually sharing Medium articles to LinkedIn daily can be repetitive and time-consuming. This automation:
🧠 Problem This Solves: For developers and creators, consistently posting quality content on LinkedIn can be time-consuming. This workflow automates the process by:
Social Media AI Agent - Telegram. Uses httpRequest, markdown, noOp, airtable. Scheduled trigger; 26 nodes.
This n8n workflow is designed for content curators, digital marketers, and social media managers who want to automate the process of discovering, translating, and publishing news content from multiple
Save time - Eliminate manual LinkedIn posting and content scheduling tasks Stay consistent - Automated daily posting keeps your LinkedIn profile active and engaging Keep control - Preview every post b