Setup time: 45 minutes | Weekly value: 5+ hours of content curation automated, always-fresh issues
Turn Substack's leaderboard into your daily newsletter—without lifting a finger.
The Architecture:
Trigger: Schedule (Daily 8:00 AM)
↓
Action 1: Apify — Scrape Substack Leaderboard (Top 5 newsletters)
↓
Action 2: Code Node — Append /feed to URLs
↓
Action 3: RSS Feed Read — Pull latest posts from top newsletters
↓
Action 4: Claude 3.5 Sonnet — Curate & summarize with hot takes
↓
Action 5: Notion — Create database entries (your public archive)
↓
Action 6: Google Sheets — Read subscriber list
↓
Action 7: Gmail — Batch send (40 per batch)
↓
Outcome: Daily newsletter sent, archive updated, zero manual work
Step 1: Schedule Trigger (The Clock)
Configure n8n to run every day at 8:00 AM.
{
"node": "Schedule Trigger",
"settings": {
"rule": "0 8 * * *",
"timezone": "Australia/Sydney"
}
}
Signal: Your workflow runs before your audience wakes up.
Step 2: Apify (The Radar)
Configure a Substack scraper actor to grab the top performers.
{
"actorId": "pepe~substack-leaderboard-scraper",
"input": {
"category": "technology",
"maxItems": 5
}
}
Signal: You're not guessing which newsletters are winning—you're scraping the actual leaderboard.
Step 3: Code Node (The URL Builder)
Append /feed to each newsletter URL for RSS access.
const newsletterUrls = $input.all().map(item => ({
feedUrl: item.json.url + '/feed'
}));
return newsletterUrls;
Step 4: Claude 3.5 Sonnet (The Curator)
Pass the trending posts to Claude with editorial instructions.
{
"system": "You are the editor of a cult newsletter. I will give you the text of 5 trending articles. 1. Select the top 3 most interesting ones. 2. For each, write a 'Hot Take' (1 sentence, punchy, contrarian) and a 'Summary' (2 sentences). 3. Assign a 'Must Read' score (1-10). 4. Output strictly in JSON format: [{title, url, hot_take, summary, score}]."
}
Signal: Claude filters noise into signal—you send only the best, with editorial voice baked in.
Step 5: Notion (The Self-Building Archive)
Map Claude's JSON output to your Notion database: Title → Name, URL → URL, Hot Take → column, Score → column.
Make the page public. This is your landing page—new subscribers see your archive instantly.
Step 6: Gmail Batching (The Sender)
{
"batchSize": 40,
"bcc": "{{ $json.subscriberEmails }}",
"subject": "Daily Insight: {{ $json.topStory.title }}",
"body": "<h3>Today's Top 3 Reads</h3>..."
}
Signal: Batching at 40 keeps Gmail happy and your sender reputation clean.
Expansion Ideas:
Add Slack/Discord notifications for your team
Pipe top stories into a Twitter/X thread draft
Score patterns over time to identify trending topics
A/B test subject lines with two Gmail sends
Cost breakdown: n8n (free self-hosted or ~$20/mo cloud), Apify (free tier covers 30+ runs), Gmail/Notion/Sheets (free). Total: $0–$20/month for a fully automated content operation.
From the Daily Briefing: Civitai's Style Stock Market, The 110% Analog Surge, and Why Your Next Sale Comes From a $0.99 PDF
