Alchemy RecipeBeginnerautomation

Social media content calendar from blog posts and news feeds

Published

Managing a social media presence whilst maintaining a consistent blog is one of those tasks that sounds simple until you're doing it. You write a post, then manually copy sections into your social media scheduler, then watch news feeds for relevant stories, then create standalone posts around those stories. Before long, you've spent three hours on content distribution when you could have spent thirty minutes setting up automation.

The real issue is that valuable content already exists in two places: your blog posts and industry news feeds. Neither is connected to your social media calendar, so the work of extracting highlights, summarising content, and scheduling posts falls entirely on you. This is precisely where AI-powered automation shines. By combining content discovery, summarisation, and scheduling tools, you can build a workflow that takes a blog post or news article and automatically populates your social media calendar with ready-to-post content.

This guide shows you how to wire together Mirra (content discovery), Resoomer AI (summarisation), and Postwise (social media scheduling) using Zapier, n8n, Make, or Claude Code as your orchestration layer. The result is a system that runs on a schedule, pulls in fresh content, generates social media captions, and posts them without any manual intervention.ai: AI Social Media Conte.... For more on this, see Postwise vs Mirra vs VideoIdeas.ai: AI Social Media Conte....

The Automated Workflow

The workflow follows this path: trigger on a schedule or webhook; fetch blog posts or news articles; summarise key points; generate multiple social media variations; send them to Postwise for scheduling.

Choose Your Orchestration Tool

All four options work here, but they differ in ease of setup and cost:

  • Zapier: Fastest to build, easiest to maintain, most expensive at scale.

  • n8n: Self-hosted or cloud, good balance of control and cost, steeper learning curve.

  • Make (Integromat): Middle ground between Zapier and n8n, affordable, decent UI.

  • Claude Code: Programmatic approach using Claude's API, lowest cost, requires coding knowledge.

For this guide, I'll show examples in Zapier and Claude Code, as they represent the two ends of the spectrum.

Step 1: Trigger and Content Retrieval

The workflow starts with either a time-based trigger (e.g., daily at 9am) or a webhook. You then fetch content from Mirra's API or via RSS feeds.

If you're using Mirra's API (assuming you have API access):


GET https://api.mirra.ai/v1/articles
?query=your-industry-keywords
&limit=5
&sort=recent

Mirra returns a JSON array of articles with title, description, URL, and publication date. If Mirra doesn't have direct API access for your plan, you can use RSS feeds from your own blog or industry sources instead.

If you're using your own blog's RSS feed:


GET https://your-blog.com/feed.xml

Parse the XML using a tool like Zapier's Code step or n8n's XML node to extract the most recent 3-5 posts.

Step 2: Content Summarisation

Pass the article content to Resoomer AI's API. Resoomer specialises in generating concise summaries, perfect for extracting the key points you'll want to turn into social media posts.

The API endpoint looks like this:


POST https://api.resoomer.com/summarize
Content-Type: application/json

{
  "text": "Full article text or extracted content",
  "quality": "medium",
  "sentences": 3
}

Resoomer returns a summary in the summary field. You can adjust the sentences parameter to generate shorter summaries for Twitter-length posts or longer ones for LinkedIn captions.

Step 3: Generate Multiple Social Media Variations

This is where the workflow gets clever. You don't want five identical posts across your platforms. Use a simple templating or iteration step to generate platform-specific content.

If you're using Zapier, add a "Code" step:

const summary = inputData.resoomerSummary;
const articleUrl = inputData.articleUrl;
const articleTitle = inputData.articleTitle;

const variations = {
  twitter: `${summary.substring(0, 240)} ${articleUrl}`,
  linkedin: `Key insight: ${summary}\n\nRead the full piece: ${articleUrl}`,
  instagram: `✨ ${articleTitle}\n\n${summary.substring(0, 300)}\n\nLink in bio`,
  facebook: `${articleTitle}\n\n${summary}\n\n${articleUrl}`
};

return variations;

If you're using Claude Code (more flexible), you could call Claude's API to generate more natural, varied captions:

import anthropic

client = anthropic.Anthropic(api_key="your-api-key")

def generate_social_variations(summary, title, url):
    prompt = f"""
    Create 4 social media captions for different platforms based on this content:
    
    Title: {title}
    Summary: {summary}
    URL: {url}
    
    Generate captions for:
    1. Twitter (280 chars max, include hashtags)
    2. LinkedIn (professional tone, 1200 chars max)
    3. Instagram (engaging, casual, 2200 chars max)
    4. Facebook (conversational, include emoji, 2200 chars max)
    
    Return as JSON with keys: twitter, linkedin, instagram, facebook
    """
    
    message = client.messages.create(
        model="claude-3-5-sonnet-20241022",
        max_tokens=1024,
        messages=[
            {"role": "user", "content": prompt}
        ]
    )
    
    return message.content[0].text

Step 4: Send to Postwise for Scheduling

Postwise has an API for creating scheduled posts. You'll need your Postwise API key and workspace ID.


POST https://api.postwise.ai/v1/posts
Authorization: Bearer YOUR_POSTWISE_API_KEY
Content-Type: application/json

{
  "content": "Your generated caption here",
  "platforms": ["twitter", "linkedin"],
  "scheduled_time": "2024-01-15T09:00:00Z",
  "media_urls": []
}

Send one request per platform variation, or batch them if Postwise supports it.

Complete Zapier Zap Structure

Here's how to wire it together in Zapier:

  1. Trigger: Schedule (Daily at 8:00 AM UTC)
  2. Action 1: Fetch articles from RSS (using RSS by Zapier)
  3. Action 2: Code step to extract article URL and full text
  4. Action 3: Resoomer API call to summarise
  5. Action 4: Code step to generate platform variations
  6. Action 5: Postwise API call (repeat for each platform or use a looping step)

In Zapier, you'd configure Step 1 like this:


App: RSS by Zapier
Action: New Item in Feed
Feed URL: https://your-blog.com/feed.xml

For Step 2, use a Code step:

const feedData = inputData.feedData; // From RSS step
const articles = feedData.map(item => ({
  title: item.title,
  url: item.link,
  pubDate: item.pubDate
}));

// Return the first article
return articles[0];

Then pass the article title and URL to Resoomer in Step 3. You'll need to fetch the full article text first; if RSS only gives you excerpts, add a "Webhooks by Zapier" step to fetch the HTML:

const fetch = require('node-fetch');
const response = await fetch(inputData.articleUrl);
const html = await response.text();

// Basic HTML stripping (real implementation would use a library like cheerio)
const text = html.replace(/<[^>]*>/g, ' ').trim();

return { fullText: text };

Complete n8n Workflow Example

If you prefer n8n, the structure is similar but more visual. Here's the workflow:

  1. Trigger node: Cron (runs daily)
  2. HTTP Request node: Fetch RSS feed
  3. XML node: Parse RSS into items
  4. Function node: Extract article data
  5. HTTP Request node: Call Resoomer API
  6. Function node: Generate social variations
  7. Loop node: Iterate over platforms
  8. HTTP Request node: Send to Postwise API

The n8n HTTP Request node for Resoomer looks like:


Method: POST
URL: https://api.resoomer.com/summarize
Body (JSON):
{
  "text": "{{ $node['Extract Article'].json.content }}",
  "quality": "medium",
  "sentences": 3
}
Headers:
Authorization: Bearer YOUR_RESOOMER_API_KEY

Error Handling and Rate Limits

Resoomer and Postwise both have rate limits. Resoomer typically allows 100 requests per hour on paid plans; Postwise varies. Add retry logic:

// In Zapier, use the built-in Retry feature
// In n8n, add an Error Trigger node and set retries to 3 with exponential backoff
// In Claude Code:

import time

def call_with_retry(url, payload, max_retries=3):
    for attempt in range(max_retries):
        try:
            response = requests.post(url, json=payload, timeout=10)
            response.raise_for_status()
            return response.json()
        except requests.exceptions.RateLimitError:
            if attempt < max_retries - 1:
                wait_time = 2 ** attempt  # Exponential backoff
                time.sleep(wait_time)
            else:
                raise

The Manual Alternative

Not every workflow needs to be fully automated. You might prefer to use these tools individually for more control:

  1. Manual discovery: Use Mirra or a news aggregator to find articles, then copy the URL manually.
  2. Generate summary: Paste the article into Resoomer AI's web interface and download the summary.
  3. Write captions: Use the summary as reference material and write your own social media captions in your preferred tone.
  4. Schedule in Postwise: Log into Postwise and manually schedule your posts with custom images or timing.

This approach takes about 10-15 minutes per article but gives you full editorial control. It's worth doing for evergreen content or highly important announcements where brand voice matters most.

Pro Tips

1. Use Conditional Logic for Content Quality

Not every article deserves a post. Add a filter in your orchestration tool to only process articles above a certain quality threshold. In n8n, use an "If" node:


IF article.sentiment = "positive"
AND article.word_count > 500
THEN proceed to summarisation
ELSE skip

2. Spread Posts Throughout the Day

Instead of scheduling all posts for the same time, distribute them across peak engagement hours. Modify the Claude Code snippet to add time offsets:

import datetime

peak_hours = {
    "twitter": "09:00",
    "linkedin": "10:30",
    "instagram": "18:00",
    "facebook": "19:30"
}

scheduled_times = {}
for platform, hour in peak_hours.items():
    time_obj = datetime.datetime.strptime(hour, "%H:%M").time()
    scheduled_times[platform] = time_obj.isoformat()

return scheduled_times

3. Monitor Resoomer Summary Quality

Resoomer is generally reliable, but occasionally it misses context or key points. Add a manual approval step for high-stakes content. In Zapier, use the "Delay" action to pause the workflow and send you an email for review before the post is scheduled.

4. Track Your Costs by Platform

Postwise charges per post; Resoomer charges per summary; Zapier charges per task. If you're posting to four platforms daily, that's 120 posts per month. Use this workflow primarily for evergreen or secondary content, not your most important announcements.

5. Set Up Fallback Content

If Resoomer fails or the article text is too short, fall back to using the RSS description directly. In n8n, add an "If" node after the Resoomer call:


IF resoomer_summary == null OR resoomer_summary.length < 50
THEN use rss_description
ELSE use resoomer_summary

Cost Breakdown

ToolPlan NeededMonthly CostNotes
MirraStarter or higher£29–£99Optional if using RSS feeds; content discovery and analytics
Resoomer AIPremium£9.99–£29.991,000–100,000 credits per month depending on tier
PostwisePro or Team£79–£299Pro includes 150 posts/month; Team tier for collaboration
ZapierFree–Professional£0–£480Free tier allows 100 tasks/month; Professional tier (£168/month) needed for multiple steps
n8nCloud Free–Pro£0–£60/month (cloud)Self-hosted is free but requires server costs; cloud pricing scales with workflows
MakePay-As-You-Go£0–£100+1 operation = 1 credit; 10,000 operations typically £16–£50 depending on plan
Claude APIPay-as-you-goTypically £5–£20/monthBased on tokens; highly cost-effective for summarisation and caption generation

Total Estimated Monthly Cost: £150–£450 depending on volume and tool choices. The Claude Code + n8n combination is the cheapest at around £50–£100/month if self-hosted.

More Recipes