This workflow corresponds to n8n.io template #15964 — we link there as the canonical source.
This workflow follows the Agent → Airtable 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": "22ssIxVrBii0TjIL",
"name": "Daily LinkedIn Posts - The Verge News",
"tags": [],
"nodes": [
{
"id": "7faf8677-738d-4b5c-8dc9-932923dfd24b",
"name": "Aggregate Fields",
"type": "n8n-nodes-base.aggregate",
"position": [
-496,
-192
],
"parameters": {
"options": {},
"fieldsToAggregate": {
"fieldToAggregate": [
{
"fieldToAggregate": "title"
},
{
"renameField": true,
"outputFieldName": "URL",
"fieldToAggregate": "link"
},
{
"renameField": true,
"outputFieldName": "Date & Time",
"fieldToAggregate": "pubDate"
},
{
"fieldToAggregate": "author"
},
{
"fieldToAggregate": "content"
},
{
"fieldToAggregate": "summary"
},
{
"fieldToAggregate": "id"
},
{
"fieldToAggregate": "isoDate"
}
]
}
},
"typeVersion": 1
},
{
"id": "e62ab887-5505-4ef4-ae6a-dd3575801178",
"name": "Daily @ 6:35PM",
"type": "n8n-nodes-base.scheduleTrigger",
"position": [
-976,
-192
],
"parameters": {
"rule": {
"interval": [
{
"triggerAtHour": 18,
"triggerAtMinute": 35
}
]
}
},
"typeVersion": 1.2
},
{
"id": "90ea7459-7022-4d91-a082-ad8a5a986398",
"name": "AI Agent",
"type": "@n8n/n8n-nodes-langchain.agent",
"onError": "continueErrorOutput",
"position": [
-80,
-192
],
"parameters": {
"text": "=Role: \nYou are helping me turn RSS items into clean records for Airtable and one ready-to-post LinkedIn update.\n\nInput format (from the previous step)\n- You receive a single JSON array with one object whose array fields are aligned by index, like this:\n\ntitle[{{ $json.title }}]\nURL[{{ $json.URL }}]\nDate & Time[{{ $json[\"Date & Time\"] }}] (ISO strings)\nauthor[{{ $json.author }}]\ncontent[{{ $json.content }}] (HTML, may include images)\nsummary[{{ $json.summary }}] (short text)\nid[{{ $json.id }}]\nisoDate[{{ $json.isoDate }}] (ISO strings)\nExample: title[0] belongs with URL[0], content[0], etc.\n\nThink:\nUse this tool to thing about the best topic to pick.\n\nWhat to produce\n- A list of article records for Airtable with these columns:\n- News Title \u2013 plain text\n- News URL \u2013 canonical, without tracking params\n- News Article Body \u2013 clean text (strip HTML), tight 3\u20135 sentence brief; avoid fluff\n- Date Published \u2013 ISO 8601 (UTC) from isoDate or Date & Time (prefer isoDate if present)\n- Technology category \u2013 one of: AI, Policy/Regulation, Hardware, Gadgets, Apps/Platforms, or Deals\n- Create a text to image prompt using only 3 hex colors codes (#f39f1c, #364250, #fefbf6) to generate minimal creative, with characters in the image for linkedin post.\n\nAlso include (for my ops use only\u2014NOT for Airtable if you need to keep it minimal):\n- Author \u2013 if available\n- Short Summary \u2013 1\u20132 sentences\n\nWrite a LinkedIn Post in my style:\n- Hook (one line, direct, no buzzwords)\n- Second Hook (one line that lands the point)\n- Title (clear, human)\n- Description (4\u20136 short lines; simple English; no jargon; practical impact for CS/CX)\n- Article URL (the chosen article\u2019s clean link)\n- Full Post with (Hook, Second Hook, Title, Description, Hashtags, Article URL) in between each there should be a line or 2 lines. to make it as much as formatted for linkedin post. \n\nRules\n- Strip HTML and unescape entities from content.\n- If summary is stronger than the cleaned content, use summary to help the News Article - Body (keep it concise).\n- Normalize dates to ISO 8601 (UTC).\n- Shorten long URLs if they have obvious tracking params (?utm_ etc.)\u2014remove those params only; do not use link shorteners.\n- Be concise and practical. Plain language. No hype.",
"options": {},
"promptType": "define",
"hasOutputParser": true
},
"typeVersion": 3.1
},
{
"id": "9229b15c-3d85-4793-8f0d-837ea21cebfd",
"name": "Think",
"type": "@n8n/n8n-nodes-langchain.toolThink",
"position": [
-128,
32
],
"parameters": {
"description": "=Think silently, to help pick the best topic, as below rules: \n\nChoose ONE best article to continue with:\n- Preference order: (a) AI topics that touch customer service, support, CX, or content operations; (b) broader technology with a plausible CX angle (automation, agent tooling, content, channels, policy that affects hiring/CS).\n- Give a one-line reason for the choice.\n\nCategories:\n- AI \u2192 model updates, AI features, GenAI content, automation\n- Policy/Regulation \u2192 visas, legal, platform rules\n- Hardware \u2192 chips, displays, devices for builders\n- Gadgets \u2192 consumer gadgets, wearables\n- Apps/Platforms \u2192 social, productivity, messaging, enterprise platforms\n- Deals \u2192 sales/discounts\n\nIf nothing fits CX, pick the closest tech/AI item and state the angle (e.g., content workflows, agent enablement, brand engagement)."
},
"typeVersion": 1.1
},
{
"id": "83e71608-780d-4bbd-9fea-a3200f6f15b0",
"name": "Calculator",
"type": "@n8n/n8n-nodes-langchain.toolCalculator",
"position": [
0,
32
],
"parameters": {},
"typeVersion": 1
},
{
"id": "a18b1629-78ea-4f01-a43f-608bb28effa6",
"name": "Wikipedia",
"type": "@n8n/n8n-nodes-langchain.toolWikipedia",
"position": [
128,
32
],
"parameters": {},
"typeVersion": 1
},
{
"id": "47dd9011-8030-4cd8-8caf-4c0e4bd91ba4",
"name": "Structured Output Parser",
"type": "@n8n/n8n-nodes-langchain.outputParserStructured",
"position": [
256,
32
],
"parameters": {
"schemaType": "manual",
"inputSchema": "{\n \"type\": \"object\",\n \"properties\": {\n \"airtable_records\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"news_title\": { \"type\": \"string\" },\n \"news_url\": { \"type\": \"string\" },\n \"news_article_body\": { \"type\": \"string\" },\n \"date_published\": { \"type\": \"string\" },\n \"technology_category\": {\n \"type\": \"string\",\n \"enum\": [\n \"AI\",\n \"Policy/Regulation\",\n \"Hardware\",\n \"Gadgets\",\n \"Apps/Platforms\",\n \"Deals\"\n ]\n },\n \"image_prompt\": { \"type\": \"string\" },\n \"ops\": {\n \"type\": \"object\",\n \"properties\": {\n \"author\": { \"type\": \"string\" },\n \"short_summary\": { \"type\": \"string\" }\n },\n \"required\": [\"short_summary\"]\n }\n },\n \"required\": [\n \"news_title\",\n \"news_url\",\n \"news_article_body\",\n \"date_published\",\n \"technology_category\",\n \"image_prompt\",\n \"ops\"\n ]\n }\n },\n \"linkedin_post\": {\n \"type\": \"object\",\n \"properties\": {\n \"chosen_article_url\": { \"type\": \"string\" },\n \"hook\": { \"type\": \"string\" },\n \"second_hook\": { \"type\": \"string\" },\n \"title\": { \"type\": \"string\" },\n \"description\": {\n \"type\": \"array\",\n \"items\": { \"type\": \"string\" }\n },\n \"hashtags\": {\n \"type\": \"array\",\n \"items\": { \"type\": \"string\" }\n },\n \"full_post\": { \"type\": \"string\" }\n },\n \"required\": [\n \"chosen_article_url\",\n \"hook\",\n \"second_hook\",\n \"title\",\n \"description\",\n \"hashtags\",\n \"full_post\"\n ]\n }\n },\n \"required\": [\"airtable_records\", \"linkedin_post\"]\n}\n"
},
"typeVersion": 1.3
},
{
"id": "1e0b93df-38a4-4e6c-a8b6-d9f8d9930eab",
"name": "Google Gemini Chat Model",
"type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
"position": [
-256,
32
],
"parameters": {
"options": {}
},
"credentials": {
"googlePalmApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "7faf7a30-3a73-4af9-b041-36f5d1bd5d31",
"name": "RSS",
"type": "n8n-nodes-base.rssFeedRead",
"position": [
-800,
-192
],
"parameters": {
"url": "https://www.theverge.com/rss/index.xml",
"options": {}
},
"typeVersion": 1.2
},
{
"id": "6b0224b4-7013-46ba-9c06-168ee359d42a",
"name": "Limit",
"type": "n8n-nodes-base.limit",
"position": [
-656,
-192
],
"parameters": {
"maxItems": 10
},
"typeVersion": 1
},
{
"id": "926d7591-f015-4be1-b7b4-4ac126679e0d",
"name": "Image",
"type": "@n8n/n8n-nodes-langchain.googleGemini",
"position": [
560,
-208
],
"parameters": {
"prompt": "={{ $json.output.airtable_records[0].image_prompt }}",
"modelId": {
"__rl": true,
"mode": "list",
"value": "models/gemini-2.5-flash-image",
"cachedResultName": "models/gemini-2.5-flash-image (Nano Banana)"
},
"options": {},
"resource": "image"
},
"credentials": {
"googlePalmApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.1
},
{
"id": "210b59e6-4692-4759-9ccc-f3b4890f27a5",
"name": "Post",
"type": "n8n-nodes-base.linkedIn",
"position": [
752,
-208
],
"parameters": {
"text": "={{ $('AI Agent').item.json.output.linkedin_post.hook }}\n\n\u2192 {{ $('AI Agent').item.json.output.linkedin_post.second_hook }}\n\n\n\u21b3 {{ $('AI Agent').item.json.output.linkedin_post.title }}\n\n\u21b3 {{ $('AI Agent').item.json.output.linkedin_post.description }}\n\nRead More: [{{ $('AI Agent').item.json.output.airtable_records[0].news_url }}]",
"person": "xw5tO_GXQK",
"additionalFields": {},
"binaryPropertyName": "=data",
"shareMediaCategory": "IMAGE"
},
"credentials": {
"linkedInOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "a2f8e589-f088-48fa-a10f-7d46c804171e",
"name": "Record",
"type": "n8n-nodes-base.airtable",
"position": [
928,
-208
],
"parameters": {
"base": {
"__rl": true,
"mode": "list",
"value": "app4B0fK0rPfNJqOz",
"cachedResultUrl": "https://airtable.com/app4B0fK0rPfNJqOz",
"cachedResultName": "LinkedIn Posts "
},
"table": {
"__rl": true,
"mode": "list",
"value": "tblz8Tpk9msX3OWzA",
"cachedResultUrl": "https://airtable.com/app4B0fK0rPfNJqOz/tblz8Tpk9msX3OWzA",
"cachedResultName": "Daily News - The Verge"
},
"columns": {
"value": {
"#": 0,
"Source": "n8n Integration",
"Status": "Done",
"Approved": true,
"Hashtags": "=",
"Post Body": "={{ $('AI Agent').item.json.output.linkedin_post.hook }}\n{{ $('AI Agent').item.json.output.linkedin_post.second_hook }}\n{{ $('AI Agent').item.json.output.linkedin_post.title }}\n{{ $('AI Agent').item.json.output.linkedin_post.description }}",
"Article URL": "={{ $('AI Agent').item.json.output.airtable_records[0].news_url }}",
"Date & Time": "={{ $('Daily @ 6:35PM').item.json.timestamp }}",
"LinkedIn Post URL": "={{ $json.urn }}"
},
"schema": [
{
"id": "#",
"type": "number",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "#",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Post Body",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Post Body",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Hashtags",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Hashtags",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Date & Time",
"type": "dateTime",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Date & Time",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Source",
"type": "options",
"display": true,
"options": [
{
"name": "n8n Integration",
"value": "n8n Integration"
},
{
"name": "Zapier",
"value": "Zapier"
},
{
"name": "Email",
"value": "Email"
},
{
"name": "Manual",
"value": "Manual"
}
],
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Source",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Status",
"type": "options",
"display": true,
"options": [
{
"name": "To-do",
"value": "To-do"
},
{
"name": "In-Progress",
"value": "In-Progress"
},
{
"name": "Done",
"value": "Done"
}
],
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Status",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Approved",
"type": "boolean",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Approved",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Article URL",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Article URL",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "LinkedIn Post URL",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "LinkedIn Post URL",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "create"
},
"credentials": {
"airtableTokenApi": {
"name": "<your credential>"
}
},
"typeVersion": 2.1
},
{
"id": "cd510da9-0af1-4361-9885-c87e0b9e1997",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1536,
-272
],
"parameters": {
"width": 496,
"height": 720,
"content": "## Automate daily LinkedIn content from tech RSS feeds with AI\n\nThis workflow helps content creators, social media managers, and marketing operations teams automatically turn technology RSS feeds into clean data records and optimized, ready-to-publish LinkedIn posts. It uses AI to select the most relevant topic, clean raw HTML, generate minimal image prompts using a dedicated color palette, and queue everything seamlessly without manual curation.\n\n**How it works** \n\n\n** How it Works **\n\n**Fetch latest news:** The workflow triggers daily at 6:35 PM to fetch the most recent articles from specified technology RSS feeds (e.g., The Verge) and caps the list to a maximum of 10 items.\n\n**Aggregate data:** Raw fields (titles, URLs, publication dates, and body content) are compiled into a unified index-aligned array so the AI can process them together.\n\n**Select & draft with AI:** An Advanced AI Agent evaluates the aggregated data. It intelligently selects the single best article based on a predefined strategic preference (e.g., customer experience, automation, or tech operations) and strips out tracking parameters and HTML fluff.\n\n**Generate structured post & image assets:** The agent crafts a highly structured LinkedIn post matching your human-like copywriting style, defines hashtags, and simultaneously outputs a creative, minimal text-to-image prompt using specific hex code colors (#f39f1c, #364250, #fefbf6).\n\n**Publish & Record:** The generated prompt is converted into a visual asset via Gemini Image, published directly to LinkedIn alongside the tailored text, and permanently recorded in Airtable with its production metrics for operations tracking."
},
"typeVersion": 1
},
{
"id": "840ff5b6-fe17-4e2d-8eae-e257863d3667",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1008,
16
],
"parameters": {
"width": 384,
"height": 432,
"content": "## Setup steps ##\n**Configure Feed & Trigger:** Set your preferred execution time in the Daily @ 6:35PM schedule node and change the RSS URL if you wish to track a different publisher.\n\n**Connect Language & Image Models:** Add your Google Gemini API credentials to both the Gemini Chat Model and the Gemini Image generation nodes.\n\n**Verify OpenAI or Alternative Model (Optional):** Ensure your AI Agent is linked to your preferred LLM if switching from the default Gemini model.\n\n**Authenticate Social Channels:** Log into your LinkedIn account via OAuth2 inside the Post node to allow the workflow to share updates on your behalf.\n\n**Map Airtable Database:** Connect your Airtable Personal Access Token, then select your specific Workspace Base and Daily News table to log incoming posts."
},
"typeVersion": 1
},
{
"id": "100cf148-e02d-4c83-bd31-4fd77ba1cc12",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1008,
-272
],
"parameters": {
"color": 2,
"width": 656,
"height": 224,
"content": "## Input & Data Aggregation ##"
},
"typeVersion": 1
},
{
"id": "8b5e2157-ef18-4901-b238-c86c97f0ca3d",
"name": "Sticky Note3",
"type": "n8n-nodes-base.stickyNote",
"position": [
-304,
-272
],
"parameters": {
"color": 4,
"width": 688,
"height": 496,
"content": "## Intelligent AI Evaluation ##"
},
"typeVersion": 1
},
{
"id": "2042d10d-b921-4f3a-8022-a4b529480b63",
"name": "Sticky Note4",
"type": "n8n-nodes-base.stickyNote",
"position": [
464,
-272
],
"parameters": {
"color": 5,
"width": 640,
"height": 224,
"content": "## Asset Creation & Distribution ##"
},
"typeVersion": 1
}
],
"active": true,
"settings": {
"binaryMode": "separate",
"executionOrder": "v1"
},
"versionId": "c79eb6bc-60ca-42ec-9579-6098a3f7a026",
"connections": {
"RSS": {
"main": [
[
{
"node": "Limit",
"type": "main",
"index": 0
}
]
]
},
"Post": {
"main": [
[
{
"node": "Record",
"type": "main",
"index": 0
}
]
]
},
"Image": {
"main": [
[
{
"node": "Post",
"type": "main",
"index": 0
}
]
]
},
"Limit": {
"main": [
[
{
"node": "Aggregate Fields",
"type": "main",
"index": 0
}
]
]
},
"Think": {
"ai_tool": [
[
{
"node": "AI Agent",
"type": "ai_tool",
"index": 0
}
]
]
},
"AI Agent": {
"main": [
[
{
"node": "Image",
"type": "main",
"index": 0
}
]
]
},
"Wikipedia": {
"ai_tool": [
[
{
"node": "AI Agent",
"type": "ai_tool",
"index": 0
}
]
]
},
"Calculator": {
"ai_tool": [
[
{
"node": "AI Agent",
"type": "ai_tool",
"index": 0
}
]
]
},
"Daily @ 6:35PM": {
"main": [
[
{
"node": "RSS",
"type": "main",
"index": 0
}
]
]
},
"Aggregate Fields": {
"main": [
[
{
"node": "AI Agent",
"type": "main",
"index": 0
}
]
]
},
"Google Gemini Chat Model": {
"ai_languageModel": [
[
{
"node": "AI Agent",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Structured Output Parser": {
"ai_outputParser": [
[
{
"node": "AI Agent",
"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.
airtableTokenApigooglePalmApilinkedInOAuth2Api
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
This workflow runs daily, reads the latest articles from The Verge RSS feed, uses Google Gemini to select and rewrite one story into an Airtable-ready record plus a formatted LinkedIn post, generates an image with Gemini, then publishes the post to LinkedIn and logs the result…
Source: https://n8n.io/workflows/15964/ — 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.
This workflow automatically creates short-form AI videos using Sora 2 Cameos, powered by n8n and AI agents.
Automatically generate viral short-form health videos using AI and publish them to social platforms with n8n and Veo 3. This workflow collects viral ideas, analyzes engagement patterns, generates AI v
This workflow is ideal for: Content creators who want to replicate successful LinkedIn strategies Social media managers monitoring competitor content performance Marketing teams analyzing trending top
Overview