This workflow corresponds to n8n.io template #5068 — we link there as the canonical source.
This workflow follows the Gmail → OpenAI 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": "A1BpZBaWcvkOWcwa",
"meta": {
"templateCredsSetupCompleted": true
},
"name": "Linkedin Daily Post",
"tags": [
{
"id": "RvSTTevqmRPvoZLN",
"name": "AI Automation",
"createdAt": "2025-06-12T09:29:23.843Z",
"updatedAt": "2025-06-12T09:29:23.843Z"
}
],
"nodes": [
{
"id": "f9cd99e7-e2be-4a7b-8531-f5456baa874b",
"name": "Daily AI News Check1",
"type": "n8n-nodes-base.scheduleTrigger",
"position": [
640,
540
],
"parameters": {
"rule": {
"interval": [
{
"field": "hours",
"hoursInterval": 24
}
]
}
},
"typeVersion": 1.1
},
{
"id": "ec5c4fce-1b9a-493c-83cf-03bfbdc53900",
"name": "VentureBeat AI RSS1",
"type": "n8n-nodes-base.rssFeedRead",
"position": [
860,
340
],
"parameters": {
"url": "https://feeds.feedburner.com/venturebeat/SZYF",
"options": {}
},
"typeVersion": 1
},
{
"id": "685ec481-1944-4641-ba1b-4ce614300ab0",
"name": "TechCrunch AI RSS1",
"type": "n8n-nodes-base.rssFeedRead",
"position": [
860,
540
],
"parameters": {
"url": "https://techcrunch.com/category/artificial-intelligence/feed/",
"options": {}
},
"typeVersion": 1
},
{
"id": "16c0389b-a162-43ca-8ca6-3d8177343743",
"name": "OpenAI Blog RSS1",
"type": "n8n-nodes-base.rssFeedRead",
"position": [
860,
740
],
"parameters": {
"url": "https://openai.com/blog/rss.xml",
"options": {}
},
"typeVersion": 1
},
{
"id": "ccceb4bb-8a58-4b99-8aef-4f2cf3413ed4",
"name": "Filter Recent AI Articles1",
"type": "n8n-nodes-base.code",
"position": [
1300,
540
],
"parameters": {
"jsCode": "// Filter articles from last 48 hours and relevant to AI\nconst now = new Date();\nconst twoDaysAgo = new Date(now.getTime() - (48 * 60 * 60 * 1000));\n\n// Create a Set to track unique articles (by title or link)\nconst uniqueArticles = new Map();\n\nitems.forEach(item => {\n const articleDate = new Date(item.json.pubDate || item.json.date);\n const isRecent = articleDate >= twoDaysAgo;\n \n const title = (item.json.title || '').toLowerCase();\n const description = (item.json.description || '').toLowerCase();\n \n const aiKeywords = ['ai', 'artificial intelligence', 'machine learning', 'ml', 'neural', 'gpt', 'llm', 'chatbot', 'automation', 'deep learning', 'agentic ai'];\n const isAIRelated = aiKeywords.some(keyword => \n title.includes(keyword) || description.includes(keyword)\n );\n \n // Only add if recent, AI-related, and not already added\n if (isRecent && isAIRelated) {\n const uniqueKey = item.json.link || item.json.title;\n if (!uniqueArticles.has(uniqueKey)) {\n uniqueArticles.set(uniqueKey, {\n title: item.json.title,\n description: item.json.description,\n link: item.json.link,\n pubDate: item.json.pubDate || item.json.date,\n source: item.json.source || 'RSS Feed',\n dateObj: articleDate // Keep for sorting\n });\n }\n }\n});\n\n// Convert Map to array, sort by date (newest first) and limit to top 10\nconst sortedItems = Array.from(uniqueArticles.values())\n .sort((a, b) => b.dateObj - a.dateObj)\n .slice(0, 10);\n\n// Return formatted items without dateObj\nreturn sortedItems.map(item => ({\n json: {\n title: item.title,\n description: item.description,\n link: item.link,\n pubDate: item.pubDate,\n source: item.source\n }\n}));"
},
"typeVersion": 2
},
{
"id": "ec596d9a-e00b-4692-8b4e-2516587fdd06",
"name": "Merge All Sources1",
"type": "n8n-nodes-base.merge",
"position": [
1080,
540
],
"parameters": {
"mode": "combine",
"options": {},
"combinationMode": "multiplex"
},
"typeVersion": 2.1
},
{
"id": "80882e61-b50d-49cc-bfc0-a9f4a5c74d0f",
"name": "AI News Summarizer1",
"type": "@n8n/n8n-nodes-langchain.openAi",
"position": [
1960,
640
],
"parameters": {
"modelId": {
"__rl": true,
"mode": "list",
"value": "gpt-4.1-mini",
"cachedResultName": "GPT-4.1-MINI"
},
"options": {},
"messages": {
"values": [
{
"content": "=You are an expert AI industry analyst with deep knowledge of artificial intelligence trends, breakthroughs, and market developments. Your task is to analyze multiple AI news articles and create a compelling, insightful summary for LinkedIn professionals.\n\n**Your Analysis Should:**\n- Identify the most significant and impactful AI developments from the provided articles\n- Focus on stories that will matter to business leaders, developers, and AI enthusiasts\n- Highlight breakthrough technologies, major company announcements, funding news, or industry shifts\n- Connect developments to broader AI trends and implications\n- Prioritize recency and relevance over minor updates\n\n**Content Requirements:**\n- Write 3-4 concise, punchy sentences (80-120 words total)\n- Lead with the most newsworthy development\n- Include specific company names, product names, or key figures when relevant\n- Mention concrete details (funding amounts, performance metrics, release dates) if significant\n- End with a forward-looking statement about industry impact\n- Use professional but engaging language suitable for LinkedIn\n\n**Style Guidelines:**\n- Write in active voice with strong, decisive language\n- Avoid technical jargon that would confuse general business audience\n- Use numbers and specific details to add credibility\n- Create a sense of momentum and importance\n- Don't oversell - be factual but compelling\n\n**If Multiple Major Stories Exist:**\n- Mention 2-3 key developments maximum\n- Connect them thematically if possible (e.g., \"funding surge,\" \"enterprise adoption,\" \"new capabilities\")\n- Prioritize stories with broader business implications\n\nNow analyze these AI news articles and create a summary covering the most important developments:\n\n{{ $json.articles }}\n\nFocus particularly on major funding rounds, significant product launches, and industry-changing developments from the list above."
}
]
}
},
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.3
},
{
"id": "2bc85161-3605-4314-8b6a-d2c69446f7f9",
"name": "Prepare Articles for Summary1",
"type": "n8n-nodes-base.code",
"position": [
1520,
540
],
"parameters": {
"jsCode": "// Combine all articles into a single string for summarization\nconst articles = items.map(item => {\n return `Title: ${item.json.title}\\nDescription: ${item.json.description}\\nSource: ${item.json.source}\\nDate: ${item.json.pubDate}\\nLink: ${item.json.link}\\n---`;\n}).join('\\n\\n');\n\nreturn [{\n json: {\n articles: articles,\n articleCount: items.length,\n processedAt: new Date().toISOString()\n }\n}];"
},
"typeVersion": 2
},
{
"id": "cdaedb20-4077-4a99-90fd-1dcb9b571f2d",
"name": "Generate LinkedIn Post1",
"type": "@n8n/n8n-nodes-langchain.openAi",
"position": [
2336,
640
],
"parameters": {
"modelId": {
"__rl": true,
"mode": "list",
"value": "gpt-4.1-mini",
"cachedResultName": "GPT-4.1-MINI"
},
"options": {},
"messages": {
"values": [
{
"content": "=You are a professional LinkedIn content creator specializing in AI and technology. Your expertise lies in transforming complex AI news into engaging, shareable posts that drive meaningful professional discussions.\n\n**Your Mission:**\nCreate a compelling LinkedIn post that will stop professionals from scrolling and encourage them to engage through likes, comments, and shares.\n\n**Content Foundation:**\n{{ $json.message.content }}\n\n**Post Requirements:**\n\n**Structure:**\n- Hook: Start with an attention-grabbing opening line or question\n- Body: 2-3 short paragraphs (2-3 sentences each)\n- Call-to-Action: End with an engaging question that invites discussion\n\n**Tone & Style:**\n- Professional yet conversational and approachable\n- Confident but not overly promotional\n- Use \"I\" or \"We\" occasionally to add personal touch\n- Mix of industry insights with accessible language\n\n**Content Elements:**\n- Lead with the most impactful development from the summary\n- Include specific numbers, company names, and concrete details\n- Connect AI developments to broader business implications\n- Add 2-3 relevant emojis (\ud83d\ude80 \ud83e\udd16 \ud83d\udca1 \ud83e\udde0 \u26a1 \ud83d\udd25 \ud83c\udfaf) - use sparingly and strategically\n- Keep total length 250-300 words maximum\n\n**Engagement Optimization:**\n- Use short paragraphs for mobile readability\n- Include 5-7 relevant hashtags at the end: #AI #ArtificialIntelligence #TechNews #Innovation #MachineLearning #StartupFunding #TechTrends\n- End with a thought-provoking question that encourages comments\n- Use line breaks for visual appeal\n\n**Question Examples for Ending:**\n- \"What's your take on this development?\"\n- \"How do you see this impacting your industry?\"\n- \"Which of these developments excites you most?\"\n- \"Are we moving too fast or not fast enough?\"\n- \"What challenges do you foresee with this technology?\"\n\n**Visual Format:**\nUse line breaks between paragraphs and before hashtags for better readability.\n\n**Sample Structure:**\n[Hook/Opening statement] \ud83d\ude80\n\n[Key development with specifics]\n\n[Industry impact/implications]\n\n[Engaging question]\n\n#AI #TechNews #Innovation #MachineLearning #StartupFunding\n\n**Important:**\n- Make it shareable - professionals should want to repost this\n- Focus on business relevance, not just technical details\n- Create urgency around staying informed in AI\n- Avoid buzzwords and hype - be authentic and informative"
}
]
}
},
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.3
},
{
"id": "0fc05ed0-2436-4ca8-a7e2-c64a3cd09430",
"name": "Send for Review1",
"type": "n8n-nodes-base.gmail",
"position": [
2712,
640
],
"parameters": {
"message": "={{ $json.message.content }}",
"options": {
"appendAttribution": false
},
"subject": "LinkedIn AI Post Ready for Review",
"emailType": "text"
},
"credentials": {
"gmailOAuth2": {
"name": "<your credential>"
}
},
"typeVersion": 2.1
},
{
"id": "ed56b632-c173-4e53-9a71-5c1acc974746",
"name": "Check Articles Exist1",
"type": "n8n-nodes-base.if",
"position": [
1740,
540
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 1,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "has-articles-condition",
"operator": {
"type": "number",
"operation": "gt"
},
"leftValue": "={{ $json.articleCount }}",
"rightValue": 0
}
]
}
},
"typeVersion": 2
},
{
"id": "e407c536-a7c9-472d-b996-e621c2fd3ca6",
"name": "No Articles Notification1",
"type": "n8n-nodes-base.gmail",
"position": [
2038,
440
],
"parameters": {
"message": "No AI News Found Today",
"options": {},
"subject": "No AI News Found Today",
"emailType": "text"
},
"credentials": {
"gmailOAuth2": {
"name": "<your credential>"
}
},
"typeVersion": 2.1
},
{
"id": "2627909f-3c21-48a4-9591-b97609d9f7a5",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
600,
140
],
"parameters": {
"color": 4,
"width": 620,
"height": 820,
"content": "## 1) Research for AI articles\n"
},
"typeVersion": 1
},
{
"id": "b0cdaa66-7053-42e8-a1d1-614381a52d8a",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
1240,
140
],
"parameters": {
"color": 5,
"width": 1000,
"height": 820,
"content": "## 2) Summarise AI related articles"
},
"typeVersion": 1
},
{
"id": "88a3211c-4536-44f4-8ba4-c800da1031db",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [
2260,
140
],
"parameters": {
"color": 6,
"width": 760,
"height": 820,
"content": "## 3) Generate Linkedin Post and send to email"
},
"typeVersion": 1
}
],
"active": true,
"settings": {
"executionOrder": "v1"
},
"versionId": "a04da0bf-2fa1-41be-9216-bae771d23a14",
"connections": {
"OpenAI Blog RSS1": {
"main": [
[
{
"node": "Merge All Sources1",
"type": "main",
"index": 1
}
]
]
},
"Merge All Sources1": {
"main": [
[
{
"node": "Filter Recent AI Articles1",
"type": "main",
"index": 0
}
]
]
},
"TechCrunch AI RSS1": {
"main": [
[
{
"node": "Merge All Sources1",
"type": "main",
"index": 1
}
]
]
},
"AI News Summarizer1": {
"main": [
[
{
"node": "Generate LinkedIn Post1",
"type": "main",
"index": 0
}
]
]
},
"VentureBeat AI RSS1": {
"main": [
[
{
"node": "Merge All Sources1",
"type": "main",
"index": 0
}
]
]
},
"Daily AI News Check1": {
"main": [
[
{
"node": "VentureBeat AI RSS1",
"type": "main",
"index": 0
},
{
"node": "TechCrunch AI RSS1",
"type": "main",
"index": 0
},
{
"node": "OpenAI Blog RSS1",
"type": "main",
"index": 0
}
]
]
},
"Check Articles Exist1": {
"main": [
[
{
"node": "AI News Summarizer1",
"type": "main",
"index": 0
}
],
[
{
"node": "No Articles Notification1",
"type": "main",
"index": 0
}
]
]
},
"Generate LinkedIn Post1": {
"main": [
[
{
"node": "Send for Review1",
"type": "main",
"index": 0
}
]
]
},
"Filter Recent AI Articles1": {
"main": [
[
{
"node": "Prepare Articles for Summary1",
"type": "main",
"index": 0
}
]
]
},
"Prepare Articles for Summary1": {
"main": [
[
{
"node": "Check Articles Exist1",
"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.
gmailOAuth2openAiApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
This automation fetches daily AI-related articles from trusted RSS feeds, summarizes them using OpenAI (GPT), and generates a ready-to-post LinkedIn update in your writing style. It then emails the post to you every morning for review and publishing. Triggers every morning via…
Source: https://n8n.io/workflows/5068/ — 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.
Workflow runs at 08:00 (UK), AI stories from TechCrunch, The Verge, and the OpenAI Blog via RSS, AI to select and editorially shape one signal into a post and image prompt, generates and QA-checks a p
This workflow runs on a daily schedule, pulls articles from one or more RSS feeds, filters out items already stored in Microsoft Excel, uses OpenAI to generate an HTML newsletter from the newest links
What this workflow does Pulls free security/tech headlines from multiple RSS feeds (e.g., CISA, BleepingComputer, Krebs, SecurityWeek, Ars Technica, TechCrunch, Hacker News). De-duplicates stories, ke
Pulls free business and economic headlines from multiple publicly available RSS feeds (e.g., Reuters, Wall Street Journal, Federal Reserve, St. Louis Fed, BNP Paribas, WTO). De-duplicates stories, kee
AI News and weekly digest. Uses rssFeedRead, httpRequest, openAi, gmail. Scheduled trigger; 15 nodes.