Daily Substack Notes shouldn’t become daily homework.
Substack Notes are now a real growth surface. Writers who treat them seriously are building weekly publishing routines around them.
But the work breaks down fast.
You need good ideas. You need the Notes to sound like you. You need to post when people are awake. You need to reply afterward. And if you do that one Note at a time, the system becomes another unpaid job.
👋 Julley , I'm Dheeraj, an AI systems builder.
I build production-grade AI systems at work by day and ship my own products by night, 9 and counting, including SubflowAI and the Content OS Agents Toolkit. This newsletter is the bridge between those two worlds. Every system, every build, documented step by step.
Join 1,800+ builders getting the exact AI setups, prompts, and workflows that actually work in your business.
How do you use Claude Cowork to batch and schedule Substack Notes?
You build this in two stages, and you start with whichever one fits where you are right now.
Stage 1 is the manual path.
It is very simple and effective.
You set up a Claude Cowork Project with your brand voice, source material, and a reusable Substack Notes Claude Skill.
Claude Cowork generates the full weekly batch on a schedule. You review and approve.
You copy the approved Notes into Substack and schedule them using Substack’s native scheduler.
No MCP required. Anyone on a paid Claude plan (Pro or Max) can run this today.
We will learn this step by step in a while.
Stage 2 removes the copy-paste step entirely.
You connect the GenAI Unplugged Substack MCP, a free connector that lets Claude schedule Notes directly on your Substack without you touching the Substack tab.
Then the Stage 1 Claude Cowork workflow can run automatically on a schedule you define once.
The goal is a weekly operating rhythm where you spend your time reviewing and approving, not writing from scratch and copy-pasting.
Start with Stage 1. Run it for two weeks. When the Skill is generating Notes you would actually publish, move to Stage 2.
This article builds Stage 1 and Stage 2 from scratch so you understand exactly what the system does and why it works. If you want the outcome without the build, jump to the SubflowAI section.
There is also a third or alternate path but it is paid. SubflowAI is a product that I built and use which gives you this entire Substack Growth system without building or maintaining it yourself. No Skill to upload. No context files to manage each week. No MCP config. No manual copy paste.
Why is batching Substack Notes worth taking seriously?
Substack added native Substack Notes scheduling, and that single change rewired the cost structure of showing up consistently.
Before scheduling existed, consistency meant publishing every day. You had to be present, inspired, and uninterrupted every single morning. Miss a day and you broke the streak. The only way to stay consistent was to never have a bad day.
With Substack Notes scheduling, consistency becomes a Sunday decision. You bulk schedule the week in one session, queue it, and spend the rest of the week replying instead of writing. The creative work happens once. The publishing happens automatically.
The problem is the session itself.
Without a system, generating 21 Notes for the week in one sitting is brutal. You run out of angles by Note 10, start repeating yourself, and either force the last twenty or abandon the batch. Most writers give up here and go back to posting one Note whenever they remember.
Batching with Claude solves the generation problem. Give Claude one source idea and a voice file and it produces more angles than you will publish. You pick the strongest ones, cut the rest, and queue what’s left.
The monthly feedback loop solves the quality problem. What drove replies last week? What drove new subscribers? Which angle flopped?
Feed that signal into the next batch before generating, and the output improves each cycle. Not dramatically at first, but measurably. That is why the system compounds over weeks, not just once.
The missing piece is not the prompt. It is the feedback loop.
Most writers generate one batch, publish it, and start from scratch the following week. The prompts stay roughly the same. The output stays roughly the same. The results stay roughly the same.
The problem is not the prompt. The missing piece is what happens before the prompt: pull last week’s signal, identify what to repeat and what to retire, choose this week’s topic mix, then generate.
A prompt can write 21 Notes once. A loop improves the next 21.
That is the architecture this article builds.
You keep five files current between sessions: your brand voice, the current source idea, your posting schedule, last week’s performance notes, and your topic mix decisions. Before Claude generates the next batch, it reads all five. The output reflects what you have learned, not just what you typed.
What are we building, and what do you need?
What do you need (requirements):
Claude Pro, Max, Team, or Enterprise running on Mac or Windows.
Claude Desktop App installed on Mac or Windows because Claude Cowork is part of Claude Desktop. Alternatively you can install Claude Code too if you like working in a terminal like me.
Node.js installed on your computer (
node -vin your terminal to check).Your Substack account open and logged in Chrome
What you build (up to Stage 1 - manual):
A Claude Cowork Project with five context files
One Claude Skill uploaded to your Claude app
A repeatable weekly session that produces a reviewed batch ready to paste into Substack’s native notes scheduler
What you add to fully automate the process (Stage 2):
The GenAI Unplugged Substack MCP connected to Claude Desktop or Claude Code
Notes scheduled directly by Claude, no copy-paste
Optional: a recurring Claude Cowork task that runs the workflow automatically every Sunday
Start with Stage 1. The Claude Skill and Cowork Project is the foundation. Stage 2 only runs well when the Skill is already generating Notes you trust.
Stage 1: Claude Cowork Project and native Substack notes scheduler (FREE)
Here is the detailed step-by-step process of writing and scheduling Substack Notes for free as the part of stage one of your Claude Cowork workflow.
Step 1. Set up the Project
Open Claude descktop app → Cowork and create a new Project. Name it something recognizable: “Substack Notes System” works.
Inside the Project, write a short custom instruction block: two to three sentences about your audience, your niche, and what your Notes should and should not do. This stays loaded in every session inside this Project.
Step 2. Create the five context files
Create these five files locally and upload them to the Project as files, or paste their contents directly into the Project instructions. Update them each week before running the batch.
2.1 brand-voice.md
Tell Claude how you write. Sentence length, vocabulary level, what you never say, your signature phrases if you have any, and what off-brand sounds like. Two paragraphs is enough to start. Refine it as Claude gets it wrong.
Your starter template -- fill in your version:
# brand-voice.md -- starter template
Who I write for: [Your specific reader -- be precise about their situation, not just their job title]
How I write:
- Sentence length: [Short and punchy / Conversational / Longer and paragraph-driven]
- Vocabulary: [Plain English / Industry terms OK but explained / Technical audience, jargon is fine]
- Perspective: [Mostly “I” -- personal and direct / Mostly “you” -- reader-focused / Mix of both]
- Tone: [Direct and opinionated / Warm and encouraging / Analytical / Conversational]
What I never say: [3-5 specific words or phrases that feel off-brand]
What sounds like me:
[Paste 1-2 of your best Notes or sentences here -- Claude uses these for calibration]
What sounds off-brand:
[Paste one example of generic AI output that feels wrong for your voice]
My signature patterns:
- [e.g., “I open with a specific number or time reference”]
- [e.g., “I close with a quiet question, not a CTA”]
- [e.g., “I name the reader type directly in the first line”]
Here is how mine looks in practice:
Who I write for:
Solopreneurs and one-person businesses who use AI daily but run it on intuition.
They open a new chat, get good output sometimes, but have no repeatable system.
My subscribers: ~1,500 builders, coaches, consultants, and solo content creators.
How I write:
- Sentence length: Short. One idea per line. Two lines max per paragraph on Notes.
- Vocabulary: Plain English. I explain technical terms once in parentheses, then use them freely.
- Perspective: First person "I" for personal experience and honest struggles. "You" for direct reader advice.
- Tone: Peer helping peer. Not expert lecturing student. I tried it, it worked (or broke), here is what I did.
What I never say:
- "revolutionary" or "game-changing" (hype that does not match reality)
- "unlock" or "unleash" (sounds like a sales page, not a real person)
- "leverage" as a verb (corporate jargon)
- "delve" (AI cliche, readers notice it instantly)
- "In today's fast-paced world" (filler opener -- skip it, get to the point)
- "You'll be left behind if..." (fear-based, not how I write)
- "This is mind-blowing" (let the idea speak for itself)
- "streamline" or "robust" (generic buzzwords)
What sounds like me (real Notes that performed well):
Note 1 -- Caught-Myself, 39 reactions, 12 replies:
"I keep stuffing every task into one AI conversation.
Research. Writing. Editing.
I know it's wrong. I still do it."
Note 2 -- Caught-Myself, 9 reactions, 1 reply:
"Caught myself typing the same project summary
for the fourth time this week.
Not in a doc. Not in the project config.
Just in the chat window, hoping Claude would remember."
Note 3 -- Hidden Truth, 10 reactions, 2 replies:
"The real reason AI workflows fail:
Not because the prompts are bad.
Because nobody defined what 'done' looks like."
What sounds off-brand:
"Leverage the power of AI to unlock exponential growth for your content business.
Here are 7 game-changing strategies that will revolutionize the way you show up online."
My signature patterns:
- I name the problem before the solution, always
- I use specific numbers instead of vague ones ("4th time", "27 minutes", "3 steps")
- I write the struggle first, then what I actually did about it
- Short paragraphs. One idea each. White space between them.
- I close with the real lesson, not an inspirational one-liner
If you are confused, you can use my brand voice generator tool to create your brand voice for AI writings.
2.2 source-brief.md
The idea you want to turn into Notes this week. This can be an article draft, a reader question you received, a strong opinion you have been sitting on, a product update, or three disconnected thoughts from your phone. One source idea per week. Claude will extract more angles than you expect.
Your starter template -- fill in your version:
# source-brief.md -- starter template
Core idea: [One clear sentence -- the sharper this is, the better the Notes]
Source material:
---
[Paste your article draft, a reader question you received, a strong opinion,
a product update, or 3 disconnected thoughts from your notes app]
---
The reader angle: [Who is this most useful for? Be specific about their situation]
Key insight to land: [The one thing you want readers to walk away thinking or feeling]
CTA rule this week: [e.g., “2 Notes can link to my article. All others stand alone.”]
Here is how mine looks in practice:
Core idea:
Most people rebuild their AI context from scratch every single conversation.
They paste the same background, re-explain the project, re-state the rules.
The fix is not a better prompt. It is a smarter project setup.
Source material:
---
Article: Claude Projects and CLAUDE.md (Post 45 and Post 105)
Main argument:
Every conversation without a Project setup costs 5-10 minutes of context rebuilding.
Over a 5-day work week that is 25-50 minutes of pure overhead, every single week.
The fix has three parts:
1. Claude Projects (claude.ai) with a filled-in instructions block
2. One paragraph describing what the project is and what it is NOT
3. Standing rules Claude should never break + a short glossary of your project-specific terms
Key insight: People think context resets are a Claude problem. They are a setup problem.
Side angle: This scales from Claude Projects on the web to CLAUDE.md for Claude Code users.
Real example from my own work: I have 9 Claude Projects set up. Each one saves me 20+ minutes a week.
---
The reader angle:
Someone who uses Claude daily but starts fresh every conversation.
They feel like Claude "forgets" them. They blame the model, not the setup.
They have not used Projects yet, or they created one but left the instructions block empty.
Key insight to land:
You are not losing time to bad AI. You are losing time to missing structure.
A 20-minute setup pays back inside the first week.
CTA rule this week:
1 Note can link to my Claude Projects article (Post 45). All 20 others stand alone.
No subscribe CTAs mid-batch. The content should pull people in without a push.
2.3 weekly-schedule.md
Your posting rhythm. One Note per day, three per day, weekdays only, your choice. Define it once and Claude uses it to build the schedule table automatically.
Your starter template -- fill in your version:
# weekly-schedule.md -- starter template
Notes per day: [1 / 2 / 3]
Active days: [e.g., Monday through Friday / all 7 days / weekdays only]
Rest days: [e.g., Saturday and Sunday / none]
Posting times (local):
- Morning slot: [e.g., 7:00 AM]
- Afternoon slot: [e.g., 12:30 PM] -- only if 2+ per day
- Evening slot: [e.g., 6:00 PM] -- only if 3 per day
My timezone: [e.g., US Eastern UTC-4 summer / India IST UTC+5:30 / UK BST UTC+1]
Weekly total: [e.g., 21 Notes if 3 per day, 7 days]
Here is how mine looks in practice:
Notes per day: 1
Active days: Monday through Sunday (all 7 days)
Rest days: None -- I post every day but use the Sunday batch to ease in for the week
Posting times:
- Morning slot: 8:00 AM IST
- Afternoon slot: 5:00 PM IST
- Evening slot: 9:30 PM IST
My timezone: India Standard Time (IST), UTC+5:30
IST does not observe daylight saving -- the offset stays the same year-round.
Weekly total: 3 Notes
Article publish day: Thursday
Notes around my article publish:
- Wednesday 9:30 PM: warm-up Note on the topic (plants the idea before the article drops)
- Thursday 8:00 AM: Note on publish day pointing to the article for discussion
- Friday 8:00 AM: reframe the main argument from a different angle (not a repeat)
- All other Notes: stand alone with no article reference2.4 performance-notes.md
What worked last week. List the Note that drove the most replies, the one that drove the most new subscribers, the one that flopped, and one angle you want to repeat.
Pull these numbers from Substack’s built-in analytics. Five bullet points is enough. The purpose is not a full report. It is to give Claude the signal before it generates the next batch.
Your starter template -- fill in your version:
# performance-notes.md -- starter template
Top reply driver: [Paste the Note text and reply count]
Top subscriber driver: [Paste the Note text and new subs attributed]
Biggest flop: [Paste it and one sentence on why you think it flopped]
Angle to repeat this week: [What theme or approach to double down on]
Topic to rest this week: [What to avoid because it flopped or was covered heavily]
Framework that worked best: [Which of the 7 drove the most replies]
--- FIRST WEEK? Write this instead ---
Top content topic from my last 3 articles: [topic]
Reader question I get asked most often: [question]
Angle I am most confident writing about: [angle]
Content I suspect flops for my audience: [topic or format]
Here is how mine looks in practice:
Top reply driver (39 reactions, 12 replies):
---
"I keep stuffing every task into one AI conversation.
Research. Writing. Editing.
I know it's wrong. I still do it."
---
Framework used: Caught-Myself Note
Why it worked: Named a behavior readers also do but feel slightly bad about.
No judgment. Immediate recognition. The short line breaks made it easy to read fast.
Top engagement overall (28 reactions, 5 replies):
---
"Adding three words to your prompt can cut AI errors significantly.
Not 'please'. Not 'step by step'.
Three words that change how the model reasons before it answers."
---
Framework used: Hidden Truth (teased the answer without giving it)
Why it worked: Specific claim + curiosity gap + low word count. Strong enough to follow for the payoff.
Biggest flop (2 reactions, 2 replies):
---
"Multi-agent systems outperform single agents by 90.2% on complex research tasks."
---
Framework used: Specific Result (went wrong)
Why it flopped: Led with a statistic instead of a story or personal angle.
Felt like a research summary, not a real person talking. No one could see themselves in it.
Signal for next week:
- Angle to repeat: Caught-Myself format -- self-aware observations that name a shared behavior
- Topic to rest: Statistics-led openers without a personal story behind them
- Framework that drove the most replies: Caught-Myself Note (12 replies on the top performer)
- Framework to use more of: Honest Struggle (under-represented last week, reply-friendly format)
2.5 topic-mix.md
What to do with last week’s signal. Which angles deserve two Notes this week? Which topics should rest? What ideas from the source brief are strong enough to repeat from a different angle? Write this after reviewing performance-notes.md. It takes three minutes and meaningfully changes what Claude generates.
Your starter template -- fill in your version:
# topic-mix.md -- starter template
This week’s focus: [One sentence on the main theme across the batch]
Framework distribution (adjust counts to match your cadence):
- Pure Take: [count]
- Caught-Myself Note: [count]
- Hidden Truth: [count]
- Honest Struggle: [count]
- Framework / Process: [count]
- Screenshot-Worthy Truth Bomb: [count]
- Specific Result Note: [count]
Angles getting 2+ Notes this week: [what to double]
Topics resting this week: [what to avoid]
New angles to test from source brief: [list 2-3]
Max CTA Notes this week: [2 recommended]
Here is how mine looks in practice:
This week's focus:
Claude Projects and context management.
The core angle: most people run AI on intuition, not structure.
A proper project setup changes day-to-day output quality immediately.
Framework distribution (21 Notes, 3 per day, 7 days):
- Pure Take: 3 (capping it -- used too many last week, readers notice the pattern)
- Caught-Myself Note: 5 (top reply driver last week -- double down)
- Hidden Truth: 3 (builds authority on the systems angle)
- Honest Struggle: 4 (testing this week -- under-represented last week, reply-friendly)
- Framework / Process: 3 (one per 7 days -- good for saves and screenshots)
- Screenshot-Worthy Truth Bomb: 2 (short punchy, good for mid-week slots)
- Specific Result Note: 1 (keep it personal and story-led, no raw statistics)
Angles getting 2+ Notes this week:
- "You are building on intuition, not a system" -- 2 Caught-Myself Notes from different angles
- "Setup problem vs prompt problem" -- 1 Hidden Truth + 1 Honest Struggle pairing
Topics resting this week:
- Multi-agent systems (covered last week, needs two weeks of space)
- Statistics-led openers (flopped -- no stat-first Notes until a personal story is attached)
New angles to test from source brief:
- "What a bad Claude Project setup looks like vs a good one" (Honest Struggle)
- "The 3 things every Claude Project instructions block must have" (Framework/Process)
- "Why I set up 9 separate Claude Projects instead of one big one" (Caught-Myself)
CTA plan for this week:
- Thursday 8:00 AM Note links to Claude Projects article (Post 45)
- All other 20 Notes stand alone -- no links, no subscribe CTAs
- Max CTAs this week: 1 (strict -- the topic is strong enough to pull without pushing)
Learn with me: the Claude Code cohort
I run the Claude Code cohort on Maven for founders, creators and tech teams: six live sessions across six weeks, building a real AI system with me. If you would rather build it alongside me than read about it, this is the room.
Each cohort is a small, hands-on group, and a new one starts every month.
Use code GENAI20 for 20% off. Check the Syllabus →
Build it with me, live. See the syllabus →
Step 3. Create and upload the Claude Skill to create Substack Notes batch
A Claude Skill is a reusable workflow you upload once to Claude customize settings. Claude loads it automatically when a matching task appears. You do not paste it every session or need to invoke it manually or using slash command (unless configured to run only manually).
You do not store it in the Project files or Claude Cowork or Claude Code sessions. You just upload a Claude Skill once to Claude at user level and it is available in every conversation on your account, including inside Claude Projects, Cowork or Claude Code.
How to upload a Claude Skill:
Save the content of our skill from the next section as a file named
SKILL.md.Go to
Claude Desktop → Coworkand click onCustomizein the left tabs.
Click Skills at the top. Then click
Plus → Create Skill → Upload a skillin the middle panel to create a new Claude Skill.


Upload the Skill.md file saved in Step 1 by browsing to its location on your system and selecting it.
Once uploaded, the Skill is available inside your Claude Project without any extra steps.
If building and uploading a Skill feels like more setup than you want to own, SubflowAI has the simplified everything for you. Skill, process, frameworks, quick batch creation, all pre-built and included in the form a Substack GrowthOS app. You skip all this setup entirely and start scheduling full month of Substack notes in 5 minutes.
What should the Substack Notes Claude Skill include? (Seven viral Substack Notes frameworks)
This Claude Skill includes seven proven viral Substack notes frameworks that drive the most engagement and reply potential on Notes, the review criteria, and the scheduling output format.
Copy the content and save it as SKILL.md on your system.
---
name: substack-notes-batch-scheduler
description: Generate a reviewed, copy-paste-ready batch of Substack Notes from one source idea (article, draft, reader question, or topic) along with a schedule table the user can paste into Substack’s native scheduler. Use this Skill whenever the user wants to create multiple Substack Notes, plan a week of Notes, batch Notes from an article, schedule Notes for the week, turn a post or essay into Notes, write Notes in their voice, or build a Notes calendar. Triggers on phrases like “turn this into Notes”, “make me Notes from this”, “weekly Notes batch”, “Notes plan for the week”, “schedule my Notes”, “21 Notes for the week”, “Notes from this article”, “help me write Substack Notes”, “Notes calendar”. Use even when the user does not explicitly say “batch” or “schedule” — if they mention creating multiple Notes from one source, this Skill applies.
---
# Substack Notes Batch Scheduler
Use this Skill when the user wants to turn one source idea, article, draft, or reader question into a batch of Substack Notes and a scheduling plan.
This version produces a finished batch and a schedule table the user pastes into Substack manually. It does not call any API.
## Goal
Create a reviewed batch of Substack Notes that are specific, human, and ready for the user to copy-paste into Substack’s native scheduler.
The Skill helps the user:
- generate Notes from one source idea across seven frameworks
- enforce the user’s voice from brand-voice.md
- select the strongest Notes using concrete criteria
- distribute frameworks intentionally, not randomly
- assign each Note to a publishing slot with accurate timestamps
- produce a clean copy-paste workflow into Substack
Never write copy the user did not approve into the final batch. Always pause after each numbered step and wait for input before continuing.
## Why the pauses matter
Notes are personal. The user’s voice is the product. Collapsing steps to “save time” almost always produces a generic batch the user has to rewrite anyway. Each pause is a calibration checkpoint — distribution before generation, batch before scheduling, schedule before final output. Treat the pauses as part of the deliverable.
---
## Step 0: Gather inputs before generating
Read the Project context. The following files may already be uploaded:
- `brand-voice.md` (required)
- `source-brief.md` (required)
- `weekly-schedule.md` (required)
- `performance-notes.md` (use if available; fall back to first-week mode if not)
- `topic-mix.md` (use if available; propose a distribution if not provided)
If any required file is missing, ask for it before generating. Do not guess at voice or schedule — the cost of generating off-voice Notes is higher than the cost of one extra question.
**First-week check:** If `performance-notes.md` is empty or marked “first week,” skip Step 1 (signal analysis).
Ask the user for:
1. The top content topic they want to lead with this week
2. A reader question they get often (or a comment they keep getting)
3. One angle or opinion they feel most confident defending in public
Use these as calibration instead of last-week signal.
---
## Step 1: Analyze the signal (skip on first week)
Read `performance-notes.md` and extract:
1. Which framework drove the most replies last week?
2. Which angle drove new subscribers?
3. What flopped, and what’s the most likely reason?
4. What topic should rest this week (saturation or weak response)?
5. What should repeat (worked once, deserves another swing)?
Show a 3-4 bullet summary to the user before generating. They may correct a wrong reading — performance-notes.md is often written quickly and your interpretation may miss context.
---
## Step 2: Confirm the distribution plan
Read `topic-mix.md` if available. If not, propose a framework distribution before generating.
For 21 Notes, the default split:
- Pure Take: 4
- Caught-Myself Note: 3
- Hidden Truth: 3
- Honest Struggle: 3
- Framework / Process: 3
- Screenshot-Worthy Truth Bomb: 3
- Specific Result Note: 2
Adjust the split based on last week’s signal. If a framework drove the most replies, increase its count by 1-2. If a framework flopped without a clear reason, reduce by 1. Avoid swinging the mix by more than 3-4 total slots week-over-week — Notes performance is noisy and stable distribution helps you read signal.
Show the proposed split and the reasoning behind any deviation from default. Wait for confirmation before generating.
---
## Step 3: Generate the batch
Generate the full batch based on the confirmed distribution and source material.
### Voice rules (read from brand-voice.md)
- Match sentence length and vocabulary level exactly. If the user writes in short, punchy sentences, do not output long ones.
- Apply the “what I never say” list as a hard filter. Any banned phrase fails the Note immediately.
- Calibrate against the “what sounds like me” examples. If a Note could be written by anyone in the niche, rewrite it.
### Seven frameworks
**1. Pure Take**
A direct single opinion with no hedging. Opens with the opinion. No “I think” or softeners.
*Opening example:* “Most automation advice fails because it optimizes for the wrong reader.”
Target length: 80-150 words.
**2. Caught-Myself Note**
A first-person moment of realization. Specific behavior the writer noticed in themselves. Reader recognizes themselves.
*Opening example:* “I caught myself opening Claude for a task I could’ve done in 30 seconds.”
Target length: 100-200 words.
**3. Hidden Truth**
An overlooked truth in the niche. Reframes something readers assume is correct. Builds authority.
*Opening example:* “Everyone says ‘pick a niche.’ The actual lever is picking a reader.”
Target length: 100-200 words.
**4. Honest Struggle**
A specific problem, a failed attempt, and the useful lesson. Written as a story with a turning point. Does not end on pure optimism.
*Opening example:* “Spent three hours building a workflow I could’ve replaced with one prompt.”
Target length: 150-250 words.
**5. Framework / Process**
A reusable sequence readers can screenshot. Numbered steps or a clear labeled structure. Useful without clicking anything.
*Opening example:* “The 4-step audit I run on every workflow before I publish it:”
Target length: 120-220 words.
**6. Screenshot-Worthy Truth Bomb**
A short standalone reframe. One insight that could be shared on its own.
*Opening example:* “You don’t have a content problem. You have a ‘which reader’ problem.”
3-6 lines max. No preamble. Punchy and reshare-worthy.
**7. Specific Result Note**
A concrete action tied to a real outcome. What the writer did, what happened, what readers can take.
*Opening example:* “Switched the CTA from ‘subscribe’ to ‘reply with your stuck point.’ Replies went from 3 to 27.”
Target length: 100-180 words.
### Generation rules
- Each Note must stand alone without requiring a link click to get value.
- One idea per Note. If a Note has two ideas, split it or cut the weaker one.
- No fake numbers, invented statistics, or fabricated quotes. If the source material doesn’t have a number, don’t invent one.
- No generic AI phrasing: “In today’s fast-paced world,” “Let’s dive in,” “Game-changer,” “Unlock the power of,” etc.
- Use line breaks between each idea or paragraph. Substack renders blank lines as paragraph spacing.
- Apply the CTA cap from `source-brief.md` or `topic-mix.md`. **Default: 2 Notes maximum can include a link or explicit CTA.**
---
## Step 4: Internal review pass
For each Note, check before showing the user:
- Clear opinion or specific observation (not vague or applicable to everyone)
- Written for a specific reader, not “everyone”
- One idea, not two crammed together
- Matches the brand-voice.md calibration examples
- Reader gets value without clicking anything
- Has reply potential (ends with a question, contrast, or position someone may disagree with)
- Length is appropriate for the framework
Label each Note:
- **Publish-ready**: passes all checks
- **Needs light edit**: flag what specifically needs fixing
- **Hold**: weak angle, repetitive of another Note in the batch, or off-voice
Replace any Note labeled **Hold** with an alternative drawn from the source material. Do not ship a smaller batch silently — if you can’t generate a replacement, say so.
---
## Step 5: Show the batch and wait for approval
Return the batch summary first:
```
Batch summary:
- Total generated: [N]
- Publish-ready: [N]
- Needs light edit: [N]
- Held and replaced: [N]
- Framework breakdown: Pure Take x4, Caught-Myself x3, ...
```
Then show each Note with its number, label, framework, and the full text.
**Stop here.** Wait for the user to review and request revisions. Collect all revision requests in one round and fix together — don’t go back and forth Note-by-Note.
---
## Step 6: Build the schedule table (after user approves)
Only proceed after the user explicitly approves the batch.
Read `weekly-schedule.md` for: active days, time slots, user timezone, UTC offset.
Build the schedule table:
| # | Day | Date | Local time | Framework | Note preview (first line) |
|---|-----|------|-----------|-----------|---------------------------|
Rules:
- Use the user’s local time from `weekly-schedule.md`. Substack’s native scheduler is local-time, so do not convert to UTC.
- Assign one Note per slot in order.
- Place the **strongest** Note (highest reply-potential, per Step 4 review) in the Tuesday or Wednesday morning slot — these are typically the highest-engagement windows for newsletter audiences.
- Put any Notes carrying an article CTA in mid-week slots.
- The “Note preview” column should be the first 60-80 characters of the Note so the user can scan the table without opening each Note.
Show the table and confirm it matches the user’s intent before producing the final copy-paste pack.
---
## Step 7: Produce the copy-paste pack
After the user confirms the schedule table, produce one consolidated copy-paste pack the user can work through linearly in Substack.
For each Note in schedule order, output a block in this exact shape:
```
─────────────────────────────
Note [#] · [Day] [Date] at [Local time] · [Framework]
─────────────────────────────
[Full Note text, ready to paste]
```
Below the full pack, include the manual scheduling steps once at the top so the user doesn’t have to re-read them per Note:
```
HOW TO SCHEDULE EACH NOTE IN SUBSTACK
1. Open Substack → Notes → “Write a note”
2. Paste the Note text from the block below
3. Click the schedule icon (clock), set the date and time shown
4. Click “Schedule”
5. Repeat for the next Note in the pack
```
Why this format works: the user is going to be context-switching between Claude and Substack 21 times. The separator bars, the explicit date/time header, and the framework label all reduce the chance they paste the wrong Note into the wrong slot. Do not split the pack across multiple turns — output it as one continuous block so the user can copy it to a doc or scroll once.
---
## Response order (do not collapse)
1. Signal analysis summary or first-week calibration
2. Distribution plan (wait for confirmation)
3. Full batch with labels (wait for approval)
4. Revision round if requested
5. Schedule table (confirm intent)
6. Copy-paste pack with scheduling instructions
Each numbered output above is a separate turn. If you find yourself wanting to combine two steps “for efficiency,” resist — the gates exist because Notes performance depends on the user’s judgment at each one.Step 4. Run the batch to generate notes
Open your Claude Cowork Project. Paste this prompt to start the new chat session under it:
Use the Substack Notes Batch Scheduler Skill to create this weeks Substack Notes batch.
This week’s goal: grow replies and profile visits, not link clicks.Claude reads your brand voice from the Project context files, generates the batch across the seven public frameworks, runs the internal review pass, and returns a schedule table.
Review each Note. Mark the ones that need edits. Send revision requests in a single message: “Fix Notes 4, 11, and 18. Note 4 is too generic, Note 11 sounds like an ad, Note 18 repeats Note 7.“
5. Schedule Substack Notes using Substack native Notes Scheduler feature
Once the table is approved, copy each Note into Substack and schedule it using Substack’s native scheduler. Here is the step by step process:
Click “What’s on your mind?” section that opens up the Notes Editor from your Profile timeline OR you can use Create button in your Dashboard.
Click on the Claendar Icon in the Notes publisher popup
Select the Date and Time for the schedule and save
Paste any of the Note we created using our Skill batch and click on Schedule
Repeat this manual process for all 21 generated notes from Claude Cowork Skill and all your Substack notes batch will be scheduled for the whole week.
That is Stage 1 complete.
The copy-paste step for scheduling 21 Notes takes about 45 minutes. Stage 2 eliminates this entirely.
Why use a Claude Skill instead of a chain of prompts?
A Claude Skill packages the entire workflow once. The generation rules, review criteria, scheduling output format, the viral Substack notes frameworks and the safety gate that prevents Claude from calling any connector without your approval.
All of it lives in the Skill file. You stop rebuilding the system every Sunday and start saying “use the Notes Batch Scheduler Skill.“
The difference matters because Notes batching has more than generation:
voice rules,
framework selection,
review criteria,
scheduling logic,
and a hard boundary around what Claude cannot do without explicit approval.
The Claude Skill enforces all of that consistently. When the workflow needs an update, you edit the Skill once and every future session inherits the change.
You can still steer. You can still reject Notes and ask for rewrites. But the operating system lives in the Claude Skill, not in a prompt you reconstruct from memory each week.
Stage 2: Connect the Substack MCP and remove the copy-paste step
Stage 2 is where Substack Notes automation actually starts. Once the MCP is connected, Claude calls it directly after you approve the schedule table.
Notes appear in Substack already scheduled. No Substack tab. No copy-pasting. No timestamp formatting by hand.
The Substack MCP is free for all GenAI Unplugged subscribers.
It gives you twelve tools: create, publish, edit, delete, and retrieve notes, list scheduled notes, pull dashboard stats, check subscriber counts, and list posts by status.
Step 1: Update Claude Skill to enable the Substack MCP Server in it
Open Claude Skill we created in Stage 1. Go to Claude Desktop app → Cowork → Customize → Skills → substack-notes-batch-scheduler. Click on context menu (three dots) and select “Edit skill instructions”
Then update its instructions content with below version so that our Substack MCP is wired in it automatically in it. The version from Stage 1 assumes that you want to work manually and not graduate to Stage 2 of automation.
---
name: substack-notes-batch-scheduler
description: Generate a reviewed, schedule-ready batch of Substack Notes from one source idea (article, draft, reader question, or topic). Use this Skill whenever the user wants to create multiple Substack Notes, plan a week of Notes, batch Notes from an article, schedule Notes for the week, turn a post or essay into Notes, write Notes in their voice, or build a Notes calendar. Triggers on phrases like “turn this into Notes”, “make me Notes from this”, “weekly Notes batch”, “Notes plan for the week”, “schedule my Notes”, “21 Notes for the week”, “Notes from this article”, “help me write Substack Notes”, “Notes calendar”. Use even when the user does not explicitly say “batch” or “schedule” — if they mention creating multiple Notes from one source, this Skill applies.
allowed-tools: Read ToolSearch mcp__substack__note_bulk_schedule mcp__substack__notes_list
---
# Substack Notes Batch Scheduler
Use this Skill when the user wants to turn one source idea, article, draft, or reader question into a batch of Substack Notes and a scheduling plan.
## Goal
Create a reviewed batch of Substack Notes that are specific, human, and schedule-ready.
The Skill helps the user:
- generate Notes from one source idea across seven frameworks
- enforce the user’s voice from brand-voice.md
- select the strongest Notes using concrete criteria
- distribute frameworks intentionally, not randomly
- assign each Note to a publishing slot with accurate timestamps
- schedule via the Substack MCP when available
Never publish or schedule anything without explicit user approval.
Always pause after each numbered step and wait for input before continuing.
## Why the pauses matter
Notes are personal. The user’s voice is the product. Collapsing steps to “save time” almost always produces a generic batch the user has to rewrite anyway. Each pause is a calibration checkpoint — distribution before generation, batch before scheduling, schedule before sending. Treat the pauses as part of the deliverable.
---
## Step 0: Gather inputs before generating
Read the Project context. The following files may already be uploaded:
- `brand-voice.md` (required)
- `source-brief.md` (required)
- `weekly-schedule.md` (required)
- `performance-notes.md` (use if available; fall back to first-week mode if not)
- `topic-mix.md` (use if available; propose a distribution if not provided)
If any required file is missing, ask for it before generating. Do not guess at voice or schedule — the cost of generating off-voice Notes is higher than the cost of one extra question.
**First-week check:** If `performance-notes.md` is empty or marked “first week,” skip Step 1 (signal analysis).
Ask the user for:
1. The top content topic they want to lead with this week
2. A reader question they get often (or a comment they keep getting)
3. One angle or opinion they feel most confident defending in public
Use these as calibration instead of last-week signal.
---
## Step 1: Analyze the signal (skip on first week)
Read `performance-notes.md` and extract:
1. Which framework drove the most replies last week?
2. Which angle drove new subscribers?
3. What flopped, and what’s the most likely reason?
4. What topic should rest this week (saturation or weak response)?
5. What should repeat (worked once, deserves another swing)?
Show a 3-4 bullet summary to the user before generating. They may correct a wrong reading — performance-notes.md is often written quickly and your interpretation may miss context.
---
## Step 2: Confirm the distribution plan
Read `topic-mix.md` if available. If not, propose a framework distribution before generating.
For 21 Notes, the default split:
- Pure Take: 4
- Caught-Myself Note: 3
- Hidden Truth: 3
- Honest Struggle: 3
- Framework / Process: 3
- Screenshot-Worthy Truth Bomb: 3
- Specific Result Note: 2
Adjust the split based on last week’s signal. If a framework drove the most replies, increase its count by 1-2. If a framework flopped without a clear reason, reduce by 1. Avoid swinging the mix by more than 3-4 total slots week-over-week — Notes performance is noisy and stable distribution helps you read signal.
Show the proposed split and the reasoning behind any deviation from default. Wait for confirmation before generating.
---
## Step 3: Generate the batch
Generate the full batch based on the confirmed distribution and source material.
### Voice rules (read from brand-voice.md)
- Match sentence length and vocabulary level exactly. If the user writes in short, punchy sentences, do not output long ones.
- Apply the “what I never say” list as a hard filter. Any banned phrase fails the Note immediately.
- Calibrate against the “what sounds like me” examples. If a Note could be written by anyone in the niche, rewrite it.
### Seven frameworks
**1. Pure Take**
A direct single opinion with no hedging. Opens with the opinion. No “I think” or softeners.
*Opening example:* “Most automation advice fails because it optimizes for the wrong reader.”
Target length: 80-150 words.
**2. Caught-Myself Note**
A first-person moment of realization. Specific behavior the writer noticed in themselves. Reader recognizes themselves.
*Opening example:* “I caught myself opening Claude for a task I could’ve done in 30 seconds.”
Target length: 100-200 words.
**3. Hidden Truth**
An overlooked truth in the niche. Reframes something readers assume is correct. Builds authority.
*Opening example:* “Everyone says ‘pick a niche.’ The actual lever is picking a reader.”
Target length: 100-200 words.
**4. Honest Struggle**
A specific problem, a failed attempt, and the useful lesson. Written as a story with a turning point. Does not end on pure optimism.
*Opening example:* “Spent three hours building a workflow I could’ve replaced with one prompt.”
Target length: 150-250 words.
**5. Framework / Process**
A reusable sequence readers can screenshot. Numbered steps or a clear labeled structure. Useful without clicking anything.
*Opening example:* “The 4-step audit I run on every workflow before I publish it:”
Target length: 120-220 words.
**6. Screenshot-Worthy Truth Bomb**
A short standalone reframe. One insight that could be shared on its own.
*Opening example:* “You don’t have a content problem. You have a ‘which reader’ problem.”
3-6 lines max. No preamble. Punchy and reshare-worthy.
**7. Specific Result Note**
A concrete action tied to a real outcome. What the writer did, what happened, what readers can take.
*Opening example:* “Switched the CTA from ‘subscribe’ to ‘reply with your stuck point.’ Replies went from 3 to 27.”
Target length: 100-180 words.
### Generation rules
- Each Note must stand alone without requiring a link click to get value.
- One idea per Note. If a Note has two ideas, split it or cut the weaker one.
- No fake numbers, invented statistics, or fabricated quotes. If the source material doesn’t have a number, don’t invent one.
- No generic AI phrasing: “In today’s fast-paced world,” “Let’s dive in,” “Game-changer,” “Unlock the power of,” etc.
- Use line breaks between each idea or paragraph. Substack renders blank lines as paragraph spacing.
- Apply the CTA cap from `source-brief.md` or `topic-mix.md`. **Default: 2 Notes maximum can include a link or explicit CTA.**
---
## Step 4: Internal review pass
For each Note, check before showing the user:
- Clear opinion or specific observation (not vague or applicable to everyone)
- Written for a specific reader, not “everyone”
- One idea, not two crammed together
- Matches the brand-voice.md calibration examples
- Reader gets value without clicking anything
- Has reply potential (ends with a question, contrast, or position someone may disagree with)
- Length is appropriate for the framework
Label each Note:
- **Publish-ready**: passes all checks
- **Needs light edit**: flag what specifically needs fixing
- **Hold**: weak angle, repetitive of another Note in the batch, or off-voice
Replace any Note labeled **Hold** with an alternative drawn from the source material. Do not ship a smaller batch silently — if you can’t generate a replacement, say so.
---
## Step 5: Show the batch and wait for approval
Return the batch summary first:
```
Batch summary:
- Total generated: [N]
- Publish-ready: [N]
- Needs light edit: [N]
- Held and replaced: [N]
- Framework breakdown: Pure Take x4, Caught-Myself x3, ...
```
Then show each Note with its number, label, framework, and the full text.
**Stop here.** Wait for the user to review and request revisions. Collect all revision requests in one round and fix together — don’t go back and forth Note-by-Note.
---
## Step 6: Build the schedule table (after user approves)
Only proceed after the user explicitly approves the batch.
Read `weekly-schedule.md` for: active days, time slots, user timezone, UTC offset.
Build the schedule table:
| # | Day | Date | Local time | UTC offset | ISO 8601 timestamp | Framework | Status |
|---|-----|------|-----------|------------|-------------------|-----------|--------|
Rules:
- Use the user’s UTC offset from `weekly-schedule.md`. Do not assume UTC.
- Convert local times to ISO 8601 with offset (e.g., `2026-05-26T09:00:00-04:00`).
- Assign one Note per slot in order.
- Place the **strongest** Note (highest reply-potential, per Step 4 review) in the Tuesday or Wednesday morning slot — these are typically the highest-engagement windows for newsletter audiences.
- Put any Notes carrying an article CTA in mid-week slots.
Show the table and wait for the user to say “Schedule these” before any MCP calls.
---
## Step 7: MCP scheduling (only when connector is available)
Only call the scheduling tool after the user says **”Schedule these”** or equivalent explicit approval.
### Using the Substack MCP
This Skill uses `mcp__substack__note_bulk_schedule`. Before calling it, make sure the tool is loaded — if you only see the tool name in the deferred-tools list, fetch the schema first via `ToolSearch` with query `select:mcp__substack__note_bulk_schedule`.
**Subdomain resolution:** The user’s Substack subdomain is set once in their MCP config as the `X-BYOK-Substack-Subdomain` header and does not need to be collected here. Do not ask for it. If a tool call returns an error indicating the subdomain is missing, ask the user to add `”X-BYOK-Substack-Subdomain:their-subdomain”` to their MCP server config and reconnect.
Build a single call from the approved schedule table:
```
note_bulk_schedule({
notes: [
{ text: “<Note 1 body>”, schedule_at: “<ISO 8601 timestamp>” },
{ text: “<Note 2 body>”, schedule_at: “<ISO 8601 timestamp>” },
...
]
})
```
**Batch size limit:** `note_bulk_schedule` accepts a maximum of 30 notes per call. If the approved batch exceeds 30, split into two calls. Wait for the first call to return before sending the second.
**Rate limit:** The tool is limited to 3 calls per hour and 10 per day per account. A typical weekly batch (21 notes) is one call and well within limits.
After the call returns, report:
- Total scheduled / total failed
- For any failures: the Note number, its scheduled timestamp, and the error message
- Do not retry failed notes silently — the user may need to refresh their session cookie or fix the note text
### Manual fallback (if MCP unavailable)
If `mcp__substack__note_bulk_schedule` is not loaded and cannot be loaded, output step-by-step copy-paste instructions for Substack’s native scheduler:
1. Open Substack → Notes → “Write a note”
2. Paste the Note text
3. Click the schedule icon, set the date and time (in local timezone)
4. Click “Schedule”
5. Repeat for each Note in the table
Number each step per Note so the user can work through the table linearly.
---
## Response order (do not collapse)
1. Signal analysis summary or first-week calibration
2. Distribution plan (wait for confirmation)
3. Full batch with labels (wait for approval)
4. Revision round if requested
5. Schedule table (only after approval)
6. MCP scheduling result or manual fallback (only after “Schedule these”)
Each numbered output above is a separate turn. If you find yourself wanting to combine two steps “for efficiency,” resist — the gates exist because Notes performance depends on the user’s judgment at each one.Step 2: Get your Substack session cookie
The MCP acts on your Substack account using your session cookie. The cookie never leaves your machine. It is passed directly from your local config to the MCP server as a credential, and GenAI Unplugged never stores it.
Open Chrome and go to any Substack page while logged in to your account
Press F12 to open developer tools
Click the Application tab
In the left sidebar, open Cookies and click .substack.com
Find the row named
substack.sidand copy the full Value (it starts withs%3A)Paste it into a text file. You will use it in the next step.
Step 3: Add the MCP config to Claude Desktop
Click on Claude Desktop App → Settings → Developer → Edit Config to create or open the file location. Then open this file in any text editor:
~/Library/Application Support/Claude/claude_desktop_config.jsonIf the file does not exist yet, create it.
Add the following, replacing PASTE_YOUR_SID_HERE with the cookie value you copied in Step 2 and PASTE_YOUR_SUBSTACK_SUBDOMAIN with your substack subdomain (for example: It will be genaiunplugged for me because my full Substack url is genaiunplugged.substack.com)
{
“mcpServers”: {
“substackMCP”: {
“command”: “npx”,
“args”: [
“-y”,
“mcp-remote”,
“https://substackmcp.genaiunplugged.com”,
“--header”,
“X-BYOK-Substack-Cookie:PASTE_YOUR_SID_HERE”,
“--header”,
“X-BYOK-Substack-Subdomain:PASTE_YOUR_SUBSTACK_SUBDOMAIN”
]
}
}
}If you already have another MCP Server setup, then you need to only paste the substackMCP part and your file may look like below
{
“mcpServers”: {
“notionApi”: {
“command”: “npx”,
“args”: [
“-y”,
“@notionhq/notion-mcp-server”
],
“env”: {
“NOTION_TOKEN”: “PASTE_YOUR_NOTION_API_TOKEN_HERE”
}
},
“substackMCP”: {
“command”: “npx”,
“args”: [
“-y”,
“mcp-remote”,
“https://substackmcp.genaiunplugged.com”,
“--header”,
“X-BYOK-Substack-Cookie:PASTE_YOUR_SID_HERE”,
“--header”,
“X-BYOK-Substack-Subdomain:PASTE_YOUR_SUBSTACK_SUBDOMAIN”
]
}
},
“preferences”: {
“chromeExtensionEnabled”: false,
“allowAllBrowserActions”: true,
“coworkScheduledTasksEnabled”: true
}
}Save the file. Make sure it is valid JSON before continuing.
Step 4: Restart Claude Desktop and authenticate
Fully quit Claude Desktop. On Mac, use Cmd+Q or right-click the dock icon and select Quit. On Windows, right-click the tray icon and select Quit. Do not just close the window.
Reopen Claude Desktop.
A browser tab will open automatically asking you to authenticate.
Enter the email address you use for your GenAI Unplugged subscription.
A magic link arrives in your email within minutes.
Click it and authentication is complete.
Step 5: Confirm the tools are loaded
In any Claude Desktop or Claude Cowork conversation, type:
What Substack tools do you have access to?Claude should list twelve tools including note_create, notes_list, and dashboard_stats. If it does not, check that the config file is valid JSON and that Claude Desktop was fully quit and reopened, not just closed.
If the JSON config, Node.js install, and session cookie steps felt more like infrastructure work than publishing work, that is exactly what SubflowAI removes. The connection is built into the product. There is no config file.
What changes in your Stage 1 workflow
In Stage 1, every session ends with Step 5 where you end up manually copying approved Notes into Substack’s scheduler. That is about 45 minutes of your time clicking same buttons and copy pasting content from one tab to another.
In Stage 2, it ends with one command:
Schedule only the Notes marked publish-ready. Use the approved schedule table exactly.
Show me any connector errors before retrying.Claude calls note_bulk_schedule for each approved Note with the schedule_at timestamp from the table and reports back the result. You confirm the week is scheduled without opening Substack once.
What does the full Stage 2 flow look like?
Open your Claude Cowork Project in Claude Desktop. Paste the weekly batch prompt.
Claude reads your brand voice, source brief, performance notes, and topic mix, generates the batch across the seven frameworks, runs the review pass, and returns the schedule table.
Before generating the batch, you can also ask Claude to pull your current dashboard stats:
Before we start the batch, pull my Substack dashboard stats.Claude calls dashboard_stats and returns your subscriber count, 30-day views, and open rate. That context feeds into your performance-notes update before the new batch is generated.
You review the schedule table. You send one revision message for everything that needs fixing. You approve the final set.
You say: “Schedule these.“
Claude calls note_create 21 times with the correct timestamps. The week is queued in Substack. You close the tab and spend the rest of Sunday replying to last week’s Notes instead of scheduling this week’s.
The Claude Cowork upgrade: let the workflow run itself
Claude Cowork enables the agentic mode inside Claude Desktop. It handles complex multi-step tasks without timing out, reads and writes files on your local machine, and can run on a recurring schedule. It requires a paid plan and Claude Desktop to be open when the task fires.
With Cowork enabled, you can go one step further than running the batch manually each Sunday. Create a recurring Cowork task that fires every Sunday morning:
Claude reads your
performance-notes.mdandsource-brief.mdfrom a folder on your computerClaude generates the draft batch and writes a schedule table to that folder
You open the file, review the table, mark your approvals, and return to Claude
Claude calls the MCP and schedules the approved Notes
The generation step happens before you sit down. You show up to review and approve, not to prompt from scratch.
This is what Claude Cowork enables that regular Claude chat does not: full Substack Notes automation with extended agentic execution that reads your local files, coordinates the full workflow without timing out, and holds before calling any external connector until you approve.
What should the weekly flow look like?
The session has three phases: update, generate, schedule.
Update phase (5 minutes)
Before generating anything, update performance-notes.md and topic-mix.md. Open Substack analytics, find last week’s top performers, write five bullets. Then update the topic mix: what to repeat, what to rest, what deserves two Notes this week instead of one.
This is the feedback loop. Skip it and the output is the same every week. Do it and the output improves.
Generate phase (15 minutes)
Paste the batch prompt with this week’s signal. Let Claude run. When the schedule table comes back, read every Note. Send revision requests in a single message, not one Note at a time.
Schedule phase
With my Substack MCP: one command, 2 minutes.
Without the MCP: copy and paste each approved Note into Substack’s native scheduler using the time from the table. 40 to 45 minutes for 21 Notes.
Timing your Notes intentionally
Scheduling Substack Notes at random kills the growth signal. Time them around your publishing rhythm:
One Note before an article publishes to warm up the idea with your readers
One Note on publish day to drive discussion on the article directly
One Note the following day to reframe the argument from a different angle
Evergreen Notes across the week that build trust without pointing to anything
One or two Notes that exist only to start a conversation, no link, no CTA
This rhythm keeps Notes from becoming a promotion feed, which is the fastest way to lose the audience you are trying to grow.
BTW, my SubflowAI also tells you Best Time to Post, Best Day to Post and Optimal Note Length as just one of the many power Substack analytics data points.
Where does SubflowAI fit?
SubflowAI is built around one job: turn your Notes batching from a weekly system you maintain into a monthly routine you simply use.
Stage 1 and Stage 2 both work. But they require ongoing maintenance.
Five context files that go stale if you stop updating them.
A Skill that needs re-uploading every time you change the rules.
An MCP config that breaks when your session cookie expires in 90 days.
A weekly prompt you reconstruct from memory if the Project context resets.
SubflowAI removes the maintenance layer entirely.
The Skill is pre-built and updated with the product.
The five context files are replaced by a product interface that guides you through the monthly batching inputs.
The scheduling connector is built in, no config file required.
Month’s of advanced Substack analytics signals feed into the next batch automatically.
You show up, add your source idea, approve the Notes, and the week is scheduled.
Here is the honest comparison
Stage 1: Build the Skill, maintain five files, run the weekly session, copy 21 Notes into Substack’s scheduler. Setup time: 2 to 3 hours the first week. Weekly time: 30 to 45 minutes of session work plus 15 to 20 minutes of copy-pasting.
Stage 2: Same as Stage 1 plus MCP config, Claude Desktop setup, and session cookie maintenance. The copy-paste step disappears. Weekly time drops to around 25 minutes. Ongoing: keep the cookie fresh, keep the five files current.
SubflowAI: No build time. No files to maintain. No MCP config. Monthly time: 20 to 30 minutes, all of it on content and approval decisions, none of it on plumbing.
The reason this article builds Stage 1 and Stage 2 first is not to make you use them. It is to show you what the system actually does at each layer.
When you understand what is happening under the hood, you know exactly what SubflowAI is replacing and why the price is not the cost, the time you spend maintaining Stage 1 and Stage 2 is.
If you want the outcome without the build in under 5 minutes, SubflowAI is the path.
What are the common failure points?
Most failures come from weak source material, a skipped review pass, or treating every Note like a link drop. The Claude Skill guards against all three if you use it correctly.
If the Notes sound generic, improve the source brief. Add a specific reader, a real example, a number, or a sharper opinion. Vague input produces vague output regardless of how good the Skill is.
If the batch feels repetitive, ask Claude to rebalance the frameworks. A batch of 21 Pure Takes reads as exhausting. You want useful Notes, reflective Notes, direct takes, and quiet truth bombs. Mix matters.
If every Note links back to your article, pull back. Notes should stand alone. Two out of 21 can point to the article. The rest should build trust on their own.
If the MCP connector fails, check authentication first. Fully restart Claude Desktop. Confirm the config file is valid JSON with no trailing commas. If
note_createreturns an error, yoursubstack.sidcookie may have expired.Session cookies expire when you log out of Substack on another device. Re-copy the value from the Application tab in Chrome and update the config file.
If a Cowork scheduled task does not fire, check that Claude Desktop was open and your computer was not asleep at the scheduled time. Cowork requires the desktop app to be running.
Here is the cost of skipping this Substack automation system entirely
Three Notes a day is 21 decisions a week. Even if each takes 10 minutes to write, edit, and post manually, that is 3.5 hours of attention before you reply to anyone.
Stage 1 cuts the decision load to one focused session. Stage 2 removes the paste-and-schedule step. SubflowAI removes the monthly maintenance load not just weekly.
Key Takeaways
The system has two stages and you should run both in order.
Stage 1 is the foundation: Claude Project, five context files, one uploaded Skill, Substack’s native scheduler.
Stage 2 removes the copy-paste step: connect the free Substack MCP, let Claude schedule directly after your approval.
The feedback loop is what makes the system compound: update performance notes and topic mix before every batch.
Timing Notes intentionally around your articles keeps the feed from becoming link spam.
The Skill enforces your voice and rules every session so you do not rebuild them from memory.
Claude Cowork enables the next level: recurring automation that runs the workflow before you sit down.
SubflowAI is the path when you want the outcome without maintaining the plumbing.
Mini Exercise
Run Stage 1 this week
Create a Claude Cowork Project.
Write a one-page
brand-voice.mdand paste your most recent article draft as the source brief.Upload the Skill.MD to Claude Cowork Customize settings. Run the batch prompt. Aim for seven Notes as a first pass.
Do not connect the MCP yet.
First prove that the Skill generates Notes you would actually publish. That is the only thing that matters before moving to Stage 2.
The Stage 2 upgrade: run the following week
Once your Skill is stable, follow the MCP setup steps in this article.
Install the connector, restart Claude Desktop, authenticate, and confirm the tools are loaded.
Run a full 21-Note week prompt.
After Claude produces the approved schedule table, say “Schedule these“ and confirm the Notes appear in your Substack scheduler without a single copy-paste.
When that works, you have the full system. Every Sunday session ends with a scheduled week, not a half-finished batch sitting in your notes app.
Get PluggedIn
Go from daily Substack Notes friction to a reusable weekly batching system you can run in one focused session. Drop the files form PluggedIn package.
Without a reusable system, 21 weekly Notes can quietly become 3.5 hours of repeated decisions before the real engagement work even starts.
Get PluggedIn to go from “I should post today” to “the week is drafted, reviewed, and ready to schedule.”


























Wow this is an amazing, generous, free resource! Essential read for any Substacker who wants their own workflow (and not another paid tool!).
Dheeraj, thank you for effort and for sharing.
I can’t believe this is free. I feel guilty just reading it 😂
You’ve clearly put a lot of work into this and taken the time to make it easy to follow. Thank you!