Automated LinkedIn content calendar from industry news feeds
A daily workflow that scours industry news, generates on-brand LinkedIn posts, and queues them for scheduled publishing.
- Time saved
- Saves 10-20 hrs/week
- Monthly cost
- ~~£60/mo/mo
- Published
Your LinkedIn posting schedule is built on manual work. Every Monday morning, someone on the team spends an hour scrolling through industry news sites, copying links, writing posts in the voice of your brand, and queueing them up for the week. By Friday, if engagement dips, you're scrambling to publish something timely. By next Monday, you're doing it all again. This workflow automates that entire process. A daily trigger scans your industry news feeds, extracts the most relevant stories, generates on-brand LinkedIn posts using ChatGPT, and queues them for publishing. Your team reviews and publishes with a single click. The result: consistent, timely content without the repetitive manual labour. The setup takes about 45 minutes. After that, your content calendar runs itself.
What You'll Build - A daily trigger that wakes up at a time you specify and fetches the latest articles from your industry news feeds via Perplexity.
-
An AI step that analyses each article and generates three different LinkedIn post angles using ChatGPT, all in your brand voice.
-
A filtering step that removes low-relevance stories (things your audience won't care about).
-
A queue system that stores generated posts in a simple database or spreadsheet for your team to review.
-
A daily summary email delivered to your marketing lead showing what's queued for the week ahead.
-
Time savings: approximately 5-7 hours per week compared to manual research and writing, with consistent posting frequency even when the team is stretched thin.
Prerequisites - A ChatGPT account (free tier works, but Pro recommended for faster generation of multiple posts per day).
API access requires a paid OpenAI account with credits loaded.
-
A Perplexity account (free tier works for up to 5 queries per day; paid plan recommended if you're running this multiple times daily).
-
Access to an orchestration tool: Zapier, n8n, Make, or direct API access via a tool like Claude Code or Postman. We'll assume Zapier in this guide, but the logic transfers.
-
A LinkedIn account with publishing permissions.
-
A basic spreadsheet (Google Sheets or Airtable) to act as your queue, or a simple database table if you're using n8n.
-
API keys: OpenAI API key, Perplexity API key if they offer one, and your LinkedIn access token (obtained via LinkedIn's Developer Portal).
-
Basic JSON familiarity. You'll be reading API responses and configuring payloads, but nothing complex.
-
Estimated setup time: 45 minutes for a working prototype, including account setup and first test run.
The Automated Workflow
Step 1:
Daily Trigger and News Fetch This is where everything starts. Your orchestration tool wakes up at a time you choose (e.g. 8 AM GMT) and calls Perplexity to fetch the latest news from your industry. Zapier handles scheduling natively. In Make or n8n, you'll use a cron trigger or scheduled module. In Zapier, create a new Zap and select "Schedule by Zapier" as your trigger. Configure the schedule:
Trigger type: Schedule by Zapier
Frequency: Daily
Time: 08:00 GMT
The first action in your workflow calls Perplexity's search API. Perplexity doesn't publish a formal API, but you can use their web interface or integrate via a third-party API wrapper. For this example, assume you have API access (either through a partnership or via a wrapper service).
POST https://api.perplexity.ai/search
Headers: Authorization: Bearer YOUR_PERPLEXITY_API_KEY Content-Type: application/json Body:
{ "query": "latest news in fintech regulations 2026", "num_results": 10, "search_depth": "standard"
}
Perplexity responds with a JSON array of articles, each containing title, URL, summary, and publication date.
json
{ "results": [ { "title": "FCA announces new AI oversight framework", "url": "https://example.com/article1", "summary": "The Financial Conduct Authority has introduced stricter rules for AI use in lending decisions.", "source": "Financial Times", "published_date": "2026-03-15" }, { "title": "Crypto compliance bill passes Commons", "url": "https://example.com/article2", "summary": "New legislation tightens Know Your Customer requirements for digital asset platforms.", "source": "The Times", "published_date": "2026-03-15" } ]
}
What flows to the next step: The entire results array. Your orchestration tool will loop through each article and process it individually. Error handling: If Perplexity is unreachable or returns no results, your workflow should skip that day and send you an alert email. Configure this in Zapier by adding a conditional path:
If API returns status 200 and results.length > 0: Continue to Step 2
Else: Send alert email to marketing_lead@company.com Stop workflow
Step 2:
Filter Articles by Relevance Not every story matters to your audience. A major story about crypto regulation might be perfect for a fintech audience but irrelevant for a B2B SaaS company. This step uses ChatGPT to score each article's relevance to your industry. For each article returned from Step 1, make an API call to ChatGPT:
POST https://api.openai.com/v1/chat/completions
Headers: Authorization: Bearer YOUR_OPENAI_API_KEY Content-Type: application/json Body:
{ "model": "GPT-4.1 mini", "messages": [ { "role": "system", "content": "You are a content relevance analyst for a B2B SaaS company in the HR tech space. Your job is to score articles on relevance to our audience (HR professionals, talent acquisition leaders, and people operations teams). Score on a scale of 1-10. Reply with only JSON." }, { "role": "user", "content": "Article title: {article.title}\nSummary: {article.summary}\n\nScore this article's relevance. Reply with: {\"relevance_score\": number, \"reason\": \"brief explanation\"}" } ], "temperature": 0.3, "max_tokens": 100
}
ChatGPT responds:
json
{ "relevance_score": 8, "reason": "New AI oversight rules directly impact HR tech vendors and talent acquisition workflows."
}
What flows to the next step: Only articles with a relevance_score of 6 or higher. Articles below 6 are logged but discarded. Error handling: If ChatGPT times out or returns an error, retry the request once after a 5-second delay. If it fails again, log the article and continue with the next one. Do not halt the entire workflow for a single article.
Step 3:
Generate LinkedIn Post Variations Now the creative work happens. For each relevant article, ChatGPT generates three different LinkedIn post angles in your brand voice. One might be informative, one might be provocative, and one might invite discussion. For each filtered article, call ChatGPT again:
POST https://api.openai.com/v1/chat/completions
Headers: Authorization: Bearer YOUR_OPENAI_API_KEY Content-Type: application/json Body:
{ "model": "GPT-4.1 mini", "messages": [ { "role": "system", "content": "You are a LinkedIn content specialist for TalentHub, an HR tech platform. Our brand voice is: direct, data-driven, slightly irreverent, and focused on practical outcomes for HR teams. We avoid corporate jargon. Write LinkedIn posts that drive engagement: questions, contrarian takes, and practical advice. Each post should be 100-250 words and include a call-to-action. Do not use hashtags. Reply with only valid JSON." }, { "role": "user", "content": "Write three different LinkedIn post angles about this news:\n\nTitle: {article.title}\nSummary: {article.summary}\nURL: {article.url}\n\nReply with:\n{\n \"angle_1\": {\"title\": \"Informative\", \"post_text\": \"...\"},\n \"angle_2\": {\"title\": \"Provocative\", \"post_text\": \"...\"},\n \"angle_3\": {\"title\": \"Discussion Starter\", \"post_text\": \"...\"}\n}" } ], "temperature": 0.7, "max_tokens": 800
}
ChatGPT responds with three post variations:
json
{ "angle_1": { "title": "Informative", "post_text": "The FCA's new AI framework just landed. Here's what it means for your talent stack: all AI-driven screening and assessments now need documented fairness audits. If your ATS vendor hasn't mentioned bias testing, ask them directly. Your compliance team will thank you. Read the full guidance here: [article URL]" }, "angle_2": { "title": "Provocative", "post_text": "AI hiring regulation is finally catching up. Question: if your AI is fairer than your existing hiring process, does regulation actually help? Most HR teams can't even audit their human biases. Are we solving the right problem? Interested in your take below." }, "angle_3": { "title": "Discussion Starter", "post_text": "We just audited 50 ATS platforms against the new FCA rules. Turns out 70% don't have documented fairness assessments. Are you ready? Comment with your biggest compliance challenge, and we'll help you think through it." }
}
What flows to the next step: All three post variations, tagged with their source article, relevance score, and date. Error handling: If ChatGPT's response is malformed JSON, retry once. If it fails again, skip that article and log the error. Do not post broken content.
Step 4:
Store Posts in Your Queue This is where generated posts land before human review. Use Google Sheets, Airtable, or a database table in n8n. For this guide, assume Google Sheets. Configure your orchestration tool to append a row to your Google Sheet for each post variation:
POST https://sheets.googleapis.com/v4/spreadsheets/{SPREADSHEET_ID}/values/Posts!A:G:append
Headers: Authorization: Bearer YOUR_GOOGLE_SHEETS_API_KEY Content-Type: application/json Body:
{ "values": [ [ "2026-03-15", "{article.title}", "{article.url}", "{angle_1.post_text}", "Informative", "{relevance_score}", "Draft" ] ]
}
Each row contains:
- Date generated
- Source article title
- Source URL
- Post text
- Post angle type
- Relevance score
- Status (Draft, Approved, Scheduled, Published) What flows to the next step: A confirmation that the row was added, and a count of total rows added today. Error handling: If Google Sheets is unreachable, store the posts temporarily in memory and retry the request every 2 minutes for up to 10 minutes. If it still fails, send an alert to your team and hold the workflow.
Step 5:
Send Daily Summary Email Your marketing lead gets a daily email summarising what was generated, what's ready to review, and what's scheduled for publication. Use Emailit to send a formatted email:
POST https://api.emailit.io/send
Headers: Authorization: Bearer YOUR_EMAILIT_API_KEY Content-Type: application/json Body:
{ "to": "marketing_lead@company.com", "subject": "LinkedIn Queue Summary for 2026-03-15", "html": "<h2>Today's LinkedIn Posts Ready for Review</h2><p>Generated {post_count} posts from {article_count} relevant articles.</p><table><tr><th>Article</th><th>Post Angle</th><th>Relevance</th><th>Status</th></tr>{table_rows}</table><p>Review and approve in your Google Sheet: [link]. Posts approved by 5 PM will be scheduled for tomorrow.</p>", "from": "automation@company.com"
}
Error handling: If Emailit fails, log the error and retry in 5 minutes. After three failed attempts, fall back to sending via SMTP directly if you have credentials configured. What flows to the next step: Nothing; this is a terminal step that sends information outward.
The Manual Alternative
If you're not ready to automate everything, or you want a hybrid approach where humans stay more involved, here's a lighter version: Step 1 remains the same: your orchestration tool fetches news daily and stores it in a spreadsheet. At Step 2, instead of ChatGPT filtering, someone on the team spends 10 minutes each morning reviewing the 8-12 articles and deleting the irrelevant ones. This is still much faster than hunting for stories from scratch. At Step 3, your team writes posts manually for the filtered articles. This takes longer (roughly 30 minutes for three variations), but you maintain complete creative control and can adjust tone on the fly. Store posts in the same Google Sheet. Publish manually via LinkedIn's native scheduling tool or a third-party scheduler like Buffer or Later. This approach cuts the manual time from 60 minutes to roughly 40 minutes per day, mostly because you're not searching for stories anymore. It's a good stepping stone if your team is nervous about letting AI write unreviewed content.
Pro Tips 1.
Batch relevance scoring to save API costs.
Instead of calling ChatGPT once per article, batch them.
Send five articles in a single API call and ask ChatGPT to score all of them in one JSON response. This reduces API calls by 80% and costs per day drop from roughly £0.15 to £0.03. The trade-off: slightly slower processing if you're running the workflow multiple times a day.
Set strict rate limits to avoid hitting API quotas.
In your orchestration tool, add a 2-second delay between each ChatGPT call. If you're processing 10 articles, that's 20 seconds total. It's slow, but it prevents rate-limit errors that cause the entire workflow to fail. For Zapier, use the "Delay" action between steps.
Monitor cost per post generated.
Track how many posts you generate, how much you spend on APIs, and calculate cost per post. After the first week, you should see a pattern. If cost per post is above £0.10, revisit your ChatGPT model choice; switching from GPT-4.1 to GPT-4.1 mini can halve costs with minimal quality loss for post generation.
Use a simple error log.
Create a second tab in your Google Sheet called "Errors" where every failed API call, timeout, or malformed response gets logged automatically. Review this weekly. You'll spot patterns, like "Perplexity always times out at 8:30 AM", and adjust your schedule accordingly.
A/B test your system prompts.
Every two weeks, tweak the system prompt you send to ChatGPT. Try different brand voice descriptions, different post lengths, different calls-to-action. Log which prompts generate posts with the highest engagement (likes, comments, shares) and keep iterating. Over time, you'll have a system prompt that generates content your audience loves without any extra work.
Back up your Google Sheet or database daily.
If your orchestration tool crashes mid-workflow and partially deletes rows, you'll have a backup. Use a second workflow that copies your main sheet to an archive sheet every night at midnight.
Cost Breakdown
| Tool | Plan Needed | Monthly Cost | What You Get |
|---|---|---|---|
| ChatGPT | Pay-as-you-go (OpenAI API) | £4–8 | Roughly 150,000–300,000 tokens per month at typical usage; token costs roughly £0.00003 per token for GPT-4.1 mini |
| Perplexity | Free or Pay-as-you-go | £0–5 | Free tier: 5 searches per day; paid tier: unlimited |
| Zapier | Professional plan | £20 | 2,000 tasks per month; enough for daily workflow plus margin |
| Emailit | Starter plan | £10 | 10,000 emails per month; more than enough for one summary email per day |
| Google Sheets | Free | £0 | Unlimited rows; free with a Google account |
| Total | £34–43 | Complete automation for daily LinkedIn content generation |
Tool Pipeline Overview
How each tool connects in this workflow
ChatGPT
AI-powered conversational assistant by OpenAI
Emailit
Send transactional and marketing emails easily with built-in campaigns, SMTP, and REST API
Perplexity
AI-powered search engine with cited answers
More Recipes
Automated Podcast Production Workflow
Automated Podcast Production Workflow: From Raw Audio to Published Episode
Build an Automated YouTube Channel with AI
Build an Automated YouTube Channel with AI
Medical device regulatory documentation from technical specifications
Medtech companies spend significant resources translating technical specs into regulatory-compliant documentation.