
Substack Ghostwriting
- 2k installs
- 178 repo stars
- Updated August 1, 2026
- samber/cc-skills
substack-ghostwriting is an agent skill that Write, optimize, and grow Substack content — both newsletter issues (email-first) and web posts (web-first articles/essa.
About
Substack Ghostwriting Content Optimization A skill for writing Substack content both newsletter issues email first and web posts web first articles essays that grows subscribers and converts readers Handles two voice modes own voice ghostwriting and two format modes newsletter issue web post Substack is not a blog with an email list It s a social media newsletter hybrid with an algorithm that optimizes for subscriptions not engagement This changes everything about how you write format and distribute content on the platform The algorithm s incentives genuinely align with quality Substack s revenue comes from subscription cuts not ads so gaming engagement metrics doesn t help What helps writing content good enough that readers convert to paid subscribers and recommend you to others For ghostwriting specifically the job is capturing someone s existing insights in their voice not generating insights from scratch As Nicolas Cole frames it clients are insights rich and time poor writers are time rich but insights poor The art is extraction and voice matching
- description: "Write, optimize, and grow Substack content — both newsletter issues (email-first) and web posts (web-first
- compatibility: Designed for Claude or similar AI agents.
- homepage: https://github.com/samber/cc-skills
- Follow substack-ghostwriting SKILL.md steps and documented constraints.
- Follow substack-ghostwriting SKILL.md steps and documented constraints.
Substack Ghostwriting by the numbers
- 1,998 all-time installs (skills.sh)
- +23 installs in the week ending Aug 4, 2026 (Skillselion tracking)
- Ranked #290 of 1,879 Marketing & SEO skills by installs in the Skillselion catalog
- Security screen: MEDIUM risk (skills.sh audit)
- Data as of Aug 4, 2026 (Skillselion catalog sync)
substack-ghostwriting capabilities & compatibility
- Capabilities
- description: "write, optimize, and grow substack · compatibility: designed for claude or similar ai · homepage: https://github.com/samber/cc skills · follow substack ghostwriting skill.md steps and
- Use cases
- orchestration
What substack-ghostwriting says it does
description: "Write, optimize, and grow Substack content — both newsletter issues (email-first) and web posts (web-first articles/essays). Covers ghostwriting with voice matching, Substack algorithm o
compatibility: Designed for Claude or similar AI agents.
homepage: https://github.com/samber/cc-skills
npx skills add https://github.com/samber/cc-skills --skill substack-ghostwritingAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 2k |
|---|---|
| repo stars | ★ 178 |
| Security audit | 2 / 3 scanners passed |
| Last updated | August 1, 2026 |
| Repository | samber/cc-skills ↗ |
When should an agent use substack-ghostwriting and what problem does it solve?
Write, optimize, and grow Substack content — both newsletter issues (email-first) and web posts (web-first articles/essays). Covers ghostwriting with voice matching, Substack algorithm optimization, N
Who is it for?
Developers invoking substack-ghostwriting as documented in the skill source.
Skip if: Skip when requirements fall outside substack-ghostwriting documented scope.
When should I use this skill?
Write, optimize, and grow Substack content — both newsletter issues (email-first) and web posts (web-first articles/essays). Covers ghostwriting with voice matching, Substack algorithm optimization, N
What you get
Outputs aligned with the substack-ghostwriting SKILL.md workflow and stated deliverables.
- Substack newsletter issue
- web essay draft
- Notes strategy outline
Files
Substack Ghostwriting & Content Optimization
A skill for writing Substack content — both newsletter issues (email-first) and web posts (web-first articles/essays) — that grows subscribers and converts readers. Handles two voice modes (own voice, ghostwriting) and two format modes (newsletter issue, web post).
Core philosophy
Substack is not a blog with an email list. It's a social-media-newsletter hybrid with an algorithm that optimizes for subscriptions, not engagement. This changes everything about how you write, format, and distribute content on the platform.
The algorithm's incentives genuinely align with quality. Substack's revenue comes from subscription cuts (not ads), so gaming engagement metrics doesn't help. What helps: writing content good enough that readers convert to paid subscribers and recommend you to others.
For ghostwriting specifically: the job is capturing someone's existing insights in their voice, not generating insights from scratch. As Nicolas Cole frames it: clients are "insights-rich and time-poor", writers are "time-rich but insights-poor." The art is extraction and voice matching.
---
Platform formatting constraints
Substack is a social-media-newsletter hybrid with an algorithm that optimizes for subscriptions, not engagement. Revenue comes from subscription cuts (not ads), so quality genuinely wins. For ghostwriting: the job is capturing someone's existing insights in their voice — clients are "insights-rich and time-poor."
Read references/platform-constraints.md for post fields, Notes limits, special content blocks, and media embeds.
---
Mode detection
Determine two dimensions:
Voice dimension:
- Own voice — the user writes/publishes under their own name. Go directly to the Writing Workflow.
- Ghostwriting — writing in someone else's voice, or preparing content for a client. Complete the Ghostwriting Workflow first, then the Writing Workflow.
Format dimension:
- Newsletter issue (email-first) — sent to subscribers' inboxes. Subject line and email formatting matter most. Read
references/email-formatting.mdduring Phase 3. - Web post (web-first) — published as a Substack article/essay, discoverable via search and Substack's feed. SEO and web formatting matter most. Read
references/web-post-formatting.mdduring Phase 3.
If unclear, ask the user. Default to newsletter issue when they say "newsletter" or "issue"; default to web post when they say "article", "essay", "post", or "evergreen content".
---
Ghostwriting Workflow
When writing for someone else, voice matching comes before content. Read references/voice-matching.md for the full extraction process — it covers sample collection (transcripts > writing > media), voice marker extraction, building a voice guide (10-15 markers with examples), and iteration with the user.
Complete the voice guide and get user validation before proceeding to the Writing Workflow.
---
Writing Workflow
Phase 1 is mandatory — always ask the user the intake questions and wait for answers before writing anything. If the user already provided some context, extract what you can and ask only about missing pieces.
Phase 0: Voice calibration (own voice mode)
Skip this phase if ghostwriting (the Ghostwriting Workflow handles voice separately).
Ask the user for their existing Substack URL. If they have one, recent posts are a valuable source of tone markers — formality level, sentence rhythm, humor style, paragraph length, how they open and close, recurring phrases. Summarize the voice in 5-7 bullet points and confirm with the user before writing.
If they don't have an existing Substack, ask: "How do you want to sound? Casual and conversational, professional and authoritative, or something else?" Use their answer plus any other writing samples they can share.
Phase 1: Content planning (interview)
Stop and ask. Present the intake questions below to the user and wait for their answers. Do not skip this phase, do not infer silently, and do not start drafting until you have explicit answers or confirmation on every item.
1. Topic: What's this about? If vague, ask what specific angle or story the reader should walk away with. 2. Format: Newsletter issue (email-first) or web post (web-first)? See mode detection above. 3. Audience: Who reads this? (developers, founders, marketers, general tech, niche community...) A newsletter for junior devs reads very differently than one for CTOs. 4. Objective: What's the concrete goal?
- Grow subscribers (free or paid)?
- Drive signups/traffic to an external product (SaaS, course, tool)?
- Establish authority / thought leadership?
- Nurture existing subscribers toward a paid tier?
- Something else? The objective shapes the CTA, the hook angle, and where depth goes vs where the paywall or link sits.
5. Context: Part of a series? What have recent posts covered? 6. Length: Short (500-800 words), Standard (1000-1500), Deep dive (2000+)
If critical pieces are missing (especially topic, audience, objective, or format), ask and wait — don't guess. A wrong assumption wastes an entire draft.
If the user has Notes data (which Notes got engagement), use that to validate topic selection. Notes function as a cheap testing pipeline for long-form content.
Phase 2: Title and hook selection
Generate 5 title/subject line variants and 3 hook options (opening 2-3 sentences each). Present them together and ask the user to pick or remix before proceeding. Do not write the body until the user has validated a title and hook direction.
Title principles:
- Specificity beats vagueness
- Promise a clear benefit or reveal
- 6-10 words (readable on mobile and in search results)
- For dev audiences: technical keywords filter for the right audience; "How to" and numbers perform well; avoid urgency/scarcity tactics
Hook types — write 3 distinct hooks using different strategies (e.g. credibility, counter-narrative, curiosity, surprise, data). Each hook should be 2-3 sentences that could open the piece. Present them labeled (Hook A, Hook B, Hook C) with a brief note on the strategy used.
Newsletter issue — subject line + preview text:
- The subject line is the headline. The preview text (first ~90 chars of the email) is the subhead. Together they determine open rate.
- Preview text should complement, not repeat, the subject line.
Web post — SEO + discoverability:
- Keep the main title punchy for the feed. Use the separate SEO title field for a keyword-rich version (under 60 chars).
- Write a dedicated SEO description (150-160 chars) — don't rely on the subtitle fallback, it's usually too short.
- Suggest a URL slug: short (3-6 words), keyword-rich, no dates.
- Assign to a publication section if applicable.
- Read
references/web-post-formatting.mdfor detailed SEO guidance.
Wait for the user to choose a title and hook before moving to Phase 3.
Phase 3: Write the content
Using the chosen title and hook, write the full piece. The hook opens the article, then continue with:
1. Hook (chosen from Phase 2) 2. Context (1-2 paragraphs): Why this matters now. What prompted this. 3. Body (bulk): The actual content. Structure depends on content type. 4. Takeaway (1-2 sentences): The one thing the reader should remember. 5. CTA (1-2 sentences): Ask for a specific action. Questions that invite replies are strongest (replies are an algorithm signal).
Newsletter issue formatting — read references/email-formatting.md for full rules:
- Paragraphs: 2-3 sentences max (email clients make long paragraphs feel like walls)
- Code blocks: < 10 lines (link to Gist for longer code)
- Images: sparingly (many email clients block them by default)
- TL;DR at top for issues > 1500 words
Web post formatting — read references/web-post-formatting.md for full rules:
- Paragraphs: 3-4 sentences acceptable (full-width web rendering is more forgiving)
- Longer code blocks OK (up to 30-40 lines with full syntax highlighting)
- Images and embeds render reliably — use more liberally
- Table of contents for posts > 2000 words
Shared formatting rules:
- Subheadings every 200-400 words. Bold key phrases so skimmers catch the argument.
- Descriptive anchor text on links, not "click here."
Phase 4: Growth-optimized elements
Add elements that leverage the Substack algorithm. Read references/substack-algorithm.md for the full mechanics.
1. Reply prompt: End with a genuine question. Replies signal engagement to the algorithm. 2. Share prompt: "If you found this useful, forward it to a colleague who [specific situation]." Specificity increases share rate. 3. Recommendation hook: If the user has recommendation partnerships, weave in natural cross-references. 4. Notes teaser: Write a 2-3 sentence version for Substack Notes. Notes should stand alone as valuable, not just be a link to the issue.
Phase 5: Paid vs. free strategy
If the user has a paid tier, advise on the free/paid split:
- Free issues should be your best work (they drive growth and recommendations)
- Paid issues should offer depth, exclusivity, or access (not just a paywall on normal content)
- The most effective model: free issues that demonstrate value so clearly that readers want more
Common mistake: paywalling too early. At < 1000 subscribers, everything should be free. Growth compounds faster than paid conversion at small scale.
Phase 5b: Humanize
Invoke a humanizer skill (e.g. "humanize", "humanizer", "de-slop", "natural writing check", "AI detection cleanup", "rewrite like a human") to strip AI-generated patterns — filler words, predictable cadence, over-hedging, hollow transitions, inflated language. Substack readers pay for authentic voice; AI-sounding prose kills trust and cancels subscriptions.
Preserve hooks and subject lines. The hook and title/subject line (Phase 2) were deliberately engineered for open rate and curiosity. Instruct the humanizer to leave them intact — rewriting them for "naturalness" destroys the copywriting structure that drives opens and first-scroll retention.
Phase 6: Image suggestions
After the content is drafted, suggest 1-3 images with specific placement. For each image, provide:
- Placement: Where in the issue (e.g. "as the cover image", "after the hook", "between section X and Y")
- Purpose: What the image adds (set the tone, break up a long section, illustrate a concept, reinforce the emotional beat)
- Description: What the image should depict
For newsletter issues: use images sparingly — many email clients block them by default. Prioritize a strong cover image and at most 1-2 inline images. For web posts: images render reliably — use more freely (diagrams, charts, screenshots).
Offer to generate a Midjourney prompt for each suggested image. If the user accepts, use the latest Midjourney model conventions to write the prompt. Use --ar 16:9 or --ar 3:1 for cover images and wide illustrations (optimal for Substack headers and social sharing), --ar 3:2 for smaller inline images. Refer to up-to-date Midjourney documentation for current prompt syntax and parameters.
Phase 7: Social distribution posts (optional — offer, don't auto-generate)
After the content is written, ask the user if they want social distribution posts. Do not generate them automatically. If accepted, write a LinkedIn post and/or a Twitter/X post to promote it. These are not summaries — they are standalone pieces of content that create enough curiosity or value to drive clicks.
Read references/social-distribution.md for LinkedIn and Twitter/X post templates.
---
Output format
Newsletter issue:
- Subject line (chosen) + 2 alternatives
- Preview text
- Full issue in markdown, formatted for email readability
- Image suggestions with placement notes (and Midjourney prompts if accepted)
- A Notes teaser (2-3 sentences)
- LinkedIn + Twitter/X distribution posts (only if the user accepted)
- If ghostwriting: the voice guide used
Web post:
- Title (chosen) + 2 alternatives
- Subtitle / meta description
- Suggested URL slug
- Full post in markdown, formatted for web readability
- Image suggestions with placement notes (and Midjourney prompts if accepted)
- A Notes teaser (2-3 sentences)
- LinkedIn + Twitter/X distribution posts (only if the user accepted)
- If ghostwriting: the voice guide used
---
Adapting existing content
When the user wants to convert a blog post, talk, or thread into Substack content:
1. Choose the right format. Evergreen source material (reference, tutorial, deep dive) → web post. Timely source (commentary, announcement, reaction) → newsletter issue. 2. Don't just copy-paste. Substack readers expect a different voice and format than blog readers. 3. Add the personal layer. Substack is more personal than a blog. Add context: why you're sharing this, what prompted it, your take. 4. Front-load the value. Blog posts can have a slow build. Substack content must hook in the first 2 sentences (the email preview or search snippet). 5. Shorten for newsletters. Cut 30-50% of blog post length for newsletter issues — email tolerance for length is lower. Web posts can preserve more depth. 6. Add the CTA. Blog posts can end quietly. Substack content should ask for something.
---
Reference files
Read these for deeper platform knowledge:
references/voice-matching.md-- Detailed ghostwriting voice extraction process, interview techniques, voice guide templates, and iteration workflow. Read when ghostwriting.references/email-formatting.md-- Email client rendering constraints, formatting rules, mobile optimization, and code block handling. Read during Phase 3 for newsletter issues.references/web-post-formatting.md-- SEO optimization, web-first formatting rules, evergreen vs timely content strategy, sections/categories, and rich media usage. Read during Phase 3 for web posts.references/substack-algorithm.md-- How the algorithm works (from Substack's ML lead), Notes ranking signals, Recommendations system, growth levers ranked by impact, and monetization math. Read during Phase 4 or for strategic planning.
[
{
"id": 1,
"name": "Evergreen content → web post, not newsletter",
"prompt": "I want to write an evergreen guide about Go error handling for my Substack.",
"assertions": [
"Identifies this as a web post (not newsletter issue) based on 'evergreen' keyword",
"Mentions SEO title field or SEO optimization specific to web posts",
"Suggests a URL slug (short, keyword-rich)",
"Does NOT treat this as a newsletter issue (no subject line / preview text focus)",
"Mentions table of contents for long content or web-specific formatting"
]
},
{
"id": 2,
"name": "Ghostwriting — interview before writing",
"prompt": "I need to ghostwrite a Substack newsletter for my CEO about our Series B fundraising journey. Write it.",
"assertions": [
"Does NOT write a full post immediately",
"Asks for voice samples (transcripts, past writing, or media appearances)",
"Prioritizes transcripts over published writing as voice source",
"Mentions building a voice guide before drafting",
"Asks about the CEO's natural speaking/writing patterns"
]
},
{
"id": 3,
"name": "Gmail truncation warning for long newsletter",
"prompt": "Write a 4000-word deep dive newsletter issue about microservices for my Substack audience. Make it comprehensive.",
"assertions": [
"Warns about Gmail truncation at ~102KB / ~3000 words",
"Suggests keeping content under ~3000 words or acknowledges truncation risk",
"Uses short paragraphs (2-3 sentences) for email readability",
"Suggests code blocks under 10 lines with links to Gist for longer code",
"Recommends a TL;DR at top for issues over 1500 words"
]
},
{
"id": 4,
"name": "Web post SEO — separate fields awareness",
"prompt": "I'm publishing a web post on Substack about Kubernetes cost optimization. Help me optimize it for search engines.",
"assertions": [
"Mentions the separate SEO title field (distinct from main title)",
"Writes or recommends an SEO description of 150-160 characters",
"Suggests a URL slug (short, keyword-rich, no dates)",
"Mentions Substack has high domain authority for SEO",
"Recommends internal linking to other Substack posts"
]
},
{
"id": 5,
"name": "Algorithm — subscriptions not engagement",
"prompt": "What's the best strategy to grow on Substack? I've been doing engagement bait and hot takes on Notes but it's not working.",
"assertions": [
"Explains algorithm optimizes for subscriptions/paid conversions, NOT engagement metrics",
"Explicitly discourages engagement bait, outrage, or hot takes as strategy",
"Mentions Recommendations from other publications as a top growth lever",
"Mentions Notes as a testing pipeline for long-form content",
"References quality/consistency as primary growth driver"
]
},
{
"id": 6,
"name": "Notes — not threads, concise standalone",
"prompt": "I want to start a series of 10-part thread-style Notes on Substack, like I do on Twitter. Each thread will be a detailed multi-part analysis.",
"assertions": [
"Advises against thread-style content on Notes",
"Recommends concise Notes (2-5 sentences or short standalone pieces)",
"Suggests using Notes as testing pipeline for long-form posts",
"Mentions likes as the primary Notes ranking signal",
"Explains that Notes should have standalone value, not be a thread"
]
},
{
"id": 7,
"name": "Monetization — don't paywall under 1000 subs",
"prompt": "I have 300 Substack subscribers and great engagement. Should I launch my paid tier at $10/month? I think I'm ready.",
"assertions": [
"Advises against launching paid tier at 300 subscribers",
"Explains growth compounds faster than paid conversion at small scale",
"References the ~3% free-to-paid conversion baseline (or similar data)",
"Recommends keeping everything free and focusing on growth first",
"Suggests alternative monetization paths (coaching, consulting, products)"
]
},
{
"id": 8,
"name": "Social distribution — don't announce, lead with insight",
"prompt": "Write a LinkedIn post to promote my new Substack newsletter issue about how we cut database query times by 90%.",
"assertions": [
"Does NOT start with 'I just published' or 'Check out my latest' or similar announcement framing",
"Leads with an insight, hook, or the 90% result — not the meta-action of publishing",
"Gives 30-40% of value upfront so the post works standalone",
"Uses line breaks between sentences for LinkedIn feed readability",
"Post works even if the reader never clicks the link"
]
},
{
"id": 9,
"name": "Voice matching — single source warning",
"prompt": "Here's one blog post from my client: [hypothetical blog post about leadership]. Capture their voice perfectly from this and write a Substack newsletter about building remote teams in their style.",
"assertions": [
"Warns against anchoring voice analysis on a single source",
"Asks for additional sources (transcripts, social media, Slack messages, talks)",
"Explains that blog posts are edited and may differ from the person's natural voice",
"Prioritizes transcripts or spoken content over published writing",
"Does NOT immediately write in a 'captured' voice from one blog post"
]
},
{
"id": 10,
"name": "Paywall placement — value above the fold",
"prompt": "I want to paywall the very beginning of my Substack post so only paid subscribers can read anything at all. Where should I put the paywall divider?",
"assertions": [
"Advises against paywalling the intro/hook/beginning",
"Recommends giving enough free value above the fold to hook readers",
"Explains that free content drives growth and recommendations",
"Suggests placing the paywall after delivering strong value or a key insight"
]
},
{
"id": 11,
"name": "Subject line + preview text complementarity",
"prompt": "My newsletter subject line is 'How We Cut AWS Costs by 60%'. Write the email preview text for me.",
"assertions": [
"Preview text does NOT simply repeat or paraphrase 'cutting AWS costs by 60%'",
"Preview text complements/extends the subject line with new information",
"Preview text is approximately 90 characters or under",
"Explains or demonstrates that subject line + preview text should work as a pair"
]
},
{
"id": 12,
"name": "Substack special blocks — contextual suggestions",
"prompt": "I'm writing a free Substack newsletter issue. There's a really strong counterintuitive insight about 5 paragraphs in. Any formatting or structural suggestions to maximize impact?",
"assertions": [
"Suggests a subscribe button for free readers (at a strategic placement)",
"Suggests a share button after the strong insight",
"Mentions pull quote for the most quotable/shareable line",
"Recommends a reply prompt or question at the end (replies are an algorithm signal)",
"References Substack-specific content blocks (not generic markdown formatting)"
]
},
{
"id": 13,
"name": "Email paragraph walls — 4-5 sentence paragraphs in newsletter",
"prompt": "Here's a draft paragraph for my Substack newsletter issue: 'We spent three months migrating our monolith to microservices. The process involved splitting our user service first, then the payment processing module. We chose gRPC for inter-service communication because it offered strong typing and better performance than REST. The team had to learn Protocol Buffers from scratch, which added two weeks to our timeline. Despite the challenges, we shipped on time and reduced our deploy frequency from weekly to daily.' Is the formatting good for a newsletter?",
"assertions": [
"Flags the paragraph as too long for email newsletter format",
"Recommends breaking into 2-3 sentence paragraphs",
"Explains email clients render narrow columns making long paragraphs feel like walls",
"Does NOT say the paragraph is fine as-is"
]
},
{
"id": 14,
"name": "Notes don't support video — user wants to upload video to Notes",
"prompt": "I recorded a quick 2-minute screencast demo of my new tool. I want to upload it directly as a Substack Note to get engagement before writing the full newsletter issue.",
"assertions": [
"Warns that Substack Notes does not support video uploads",
"Suggests alternatives (GIF, screenshots, link to video hosted elsewhere)",
"Still recommends using Notes as a testing pipeline for the idea",
"Does NOT help upload video to Notes as if it's supported"
]
},
{
"id": 15,
"name": "Long code in newsletter — 30+ lines inline",
"prompt": "I'm writing a Substack newsletter issue about our custom Kubernetes operator. I want to include the full 35-line Go reconciliation function inline so readers can see the whole thing.",
"assertions": [
"Advises against including 35 lines of code in a newsletter email",
"Recommends linking to a GitHub Gist or repo for the full code",
"Suggests including a short 2-5 line excerpt inline for context",
"Explains code rendering varies by email client (Outlook may strip formatting)",
"Mentions the ~10 line threshold for email code blocks"
]
},
{
"id": 16,
"name": "Embeds in newsletter issue — YouTube + tweets",
"prompt": "My Substack newsletter issue about our open-source launch includes an embedded YouTube demo video and 3 embedded tweets from users praising the project. The embeds look great in the Substack editor.",
"assertions": [
"Warns that embeds (YouTube, tweets) degrade to links/previews in email",
"Recommends not relying on embeds for critical content in newsletter issues",
"Suggests alternatives (screenshots of tweets, link to video with description)",
"Distinguishes between web rendering (embeds work) and email rendering (they don't)",
"Does NOT just say 'looks great, go ahead'"
]
},
{
"id": 17,
"name": "URL slug with dates for evergreen web post",
"prompt": "I'm publishing an evergreen web post on Substack about 'How to Design REST APIs in 2026'. For the URL slug, I'm thinking: `how-to-design-rest-apis-2026`. Good?",
"assertions": [
"Advises removing the date from the URL slug",
"Explains dates in URLs make evergreen content look stale over time",
"Suggests a dateless alternative (e.g., 'design-rest-apis' or 'rest-api-design')",
"Keeps slug to 3-6 words, keyword-rich",
"May also flag the date in the title as problematic for evergreen content"
]
},
{
"id": 18,
"name": "Gaming the Recommendations system algorithmically",
"prompt": "I want to hack the Substack Recommendations algorithm. What engagement signals do I need to optimize for so other publications automatically recommend me?",
"assertions": [
"Explains the Recommendations system is fully human-curated, not algorithmic",
"Clarifies you cannot game Recommendations through engagement signals",
"Describes the actual path: write quality content, engage with other writers, build genuine relationships",
"Mentions Recommendations appear during subscribe flow (highest conversion moment)",
"Does NOT describe algorithmic tricks to optimize for recommendations"
]
},
{
"id": 19,
"name": "Prioritizing Substack Boost at 200 subscribers",
"prompt": "I have 200 Substack subscribers. Should I invest in Substack Boost (paid promotion) to accelerate growth? It seems like the fastest path.",
"assertions": [
"Advises against prioritizing Boost at 200 subscribers",
"Explains Boost is low impact at small scale (Tier 4 or equivalent)",
"Recommends higher-impact levers: consistent publishing, Notes as testing pipeline, engaging with other writers for Recommendations",
"Mentions Recommendations from larger publications as the highest-impact growth lever",
"Does NOT endorse Boost as the primary growth strategy at this stage"
]
},
{
"id": 20,
"name": "Subject line too long for mobile — 80+ chars",
"prompt": "My newsletter subject line is: 'The Complete Step-by-Step Guide to Migrating Your Production Database from MongoDB to PostgreSQL Without Downtime'. Does it work?",
"assertions": [
"Flags the subject line as too long (especially for mobile at ~35-40 chars visible)",
"Recommends front-loading the interesting part in the first 35-40 characters",
"Suggests a shorter alternative under 60 characters",
"Mentions specific character limits for different clients (mobile, Gmail, Yahoo)",
"Does NOT just evaluate the subject line on content quality alone"
]
},
{
"id": 21,
"name": "Sections overload at 5 posts",
"prompt": "I just started my Substack and have 5 published posts. I want to organize them into 7 sections: Tutorials, Deep Dives, News, Opinion, Tools, Career, and Community. How do I set these up?",
"assertions": [
"Advises against creating 7 sections with only 5 posts",
"Recommends starting with 2-4 sections maximum",
"Explains sections should wait until 20+ posts to be meaningful",
"Notes each section gets its own RSS feed and subscribe option",
"Suggests consolidating into fewer, broader sections"
]
}
]
Email Formatting Reference
This reference covers email-first formatting for newsletter issues. For web post formatting, see references/web-post-formatting.md.
Table of Contents
1. Email Client Constraints 2. Formatting Rules 3. Mobile Optimization 4. Code in Newsletters 5. Visual Elements
---
1. Email Client Constraints
Substack content is consumed primarily in email clients (Gmail, Apple Mail, Outlook). Email rendering is far more limited and inconsistent than web rendering. Format defensively.
What works everywhere: Plain text, bold, italic, links, headings (H2/H3), horizontal rules, blockquotes, simple images, ordered/unordered lists.
What breaks in some clients: Complex table layouts, custom fonts, background colors, embedded videos, JavaScript, CSS animations, multi-column layouts.
What many clients block by default: Images (Gmail shows them, Outlook often doesn't for first-time senders). Never put critical information only in an image.
---
2. Formatting Rules
Paragraph length
2-3 sentences maximum. This is the single most important formatting rule for email newsletters. Email clients render text in narrow columns (especially on mobile). A paragraph that looks normal on a blog becomes a wall of text in an email.
Subheadings
One every 300-400 words. Readers skim email more aggressively than web pages. Subheadings let skimmers navigate to the section they care about. Use H2 for major sections, H3 for subsections. Don't go deeper than H3.
Bold for key phrases
Bold the main point of each section or paragraph. A reader scanning only the bold text should still catch your argument. This is not about emphasis for drama; it's a scanability tool.
Don't over-bold. If everything is bold, nothing is. Aim for 1-2 bold phrases per section.
Links
Use descriptive anchor text. "Read the full benchmark results" is better than "click here." Email clients often show link destinations on hover, so the URL matters too. Avoid URL shorteners (they look spammy).
Place important links early in the issue. Click-through rate drops as readers scroll.
Lists
Use sparingly. Lists work for:
- Enumerated steps (numbered)
- Quick comparisons (bulleted)
- Resource roundups
Don't use lists for:
- Every section of the article (turns the newsletter into a bullet-point dump)
- Things that should be flowing prose
Horizontal rules
Use to separate major topic shifts. Don't overuse (max 2-3 per issue). They create clear visual breaks in email clients.
Blockquotes
Work well for:
- Quoting someone else
- Highlighting a key insight you want to stand out
- Setting apart a TL;DR or key takeaway
---
3. Mobile Optimization
~60% of email opens happen on mobile. Key constraints:
- Subject line: Only ~35-40 characters visible on mobile. Front-load the interesting part.
- Preview text: First ~90 characters of the email body. This is your subheadline.
- Line length: Don't worry about it; email clients reflow text. But short paragraphs help.
- Images: Scale to full width on mobile. Use images that are readable at small sizes.
- CTA buttons: If using Substack's button feature, keep text short (3-5 words).
---
4. Code in Newsletters
Code rendering in email is the worst part of technical newsletters. Handle it carefully.
Short code (< 5 lines): Inline code blocks (like this) work in most clients.
Medium code (5-10 lines): Fenced code blocks render acceptably in Gmail and Apple Mail. Outlook may strip formatting. Keep it under 10 lines.
Long code (> 10 lines): Don't put it in the email. Link to a GitHub Gist, a repo, or a playground (Go Playground, Rust Playground, etc.) instead. Add a 2-3 line excerpt inline to give context.
Language hints: Substack supports syntax highlighting in code fences. Use it:
// This renders with Go syntax highlighting on web
// Email rendering varies but it's still better than nothingInline code formatting: Use backtick formatting for function names, variable names, commands, and short code references in prose. Most email clients handle this well.
---
5. Visual Elements
Images
- Use to break up long text sections (every 500-800 words)
- Diagrams and charts add value for technical content
- Always include alt text (for clients that block images)
- Optimize file size (email clients may not load large images)
- Screenshots of code/terminal output sometimes work better than code blocks in email
Substack-specific elements
See the "Substack special content blocks" section in SKILL.md for the full list of available blocks (buttons, paywall, pull quote, LaTeX, poll, etc.) and when to use each.
Email rendering notes for special blocks:
- Buttons (subscribe, share, custom): Render as styled links in email. Keep text to 3-5 words. Max 1-2 per issue.
- Subscription widget: Substack auto-inserts these. Don't fight it.
- Pull quotes: Render as styled blockquotes in email. Work well across clients.
- Footnotes: Render well on web, less reliably in email (some clients break the back-link). Use sparingly.
- Paywall divider: Shows a "subscribe to read more" CTA in email for free readers.
- Code blocks: Syntax highlighting works on web. Email rendering varies — Gmail and Apple Mail handle it acceptably, Outlook may strip formatting.
- LaTeX: Renders as an image on web. May not render in all email clients — include a text fallback for critical formulas.
- Polls: Render as clickable options on web. Email shows a link to vote on the web version.
- Embeds (tweets, YouTube, Spotify, etc.): Email shows a link or preview image, not the embed. Don't rely on embeds for critical content.
Platform Formatting Constraints
Post fields
- Title: No hard character limit, but keep under 60 characters for SEO (search engines truncate beyond that). Gmail shows ~70 chars in subject line, Yahoo ~46, mobile even less. Front-load the interesting part.
- Subtitle: No hard limit, but aim for under 10 words. Serves as email preview text (~90 chars visible) and as fallback SEO meta description if no custom one is set. Substack allows setting a separate SEO description (150-160 chars) — use it to optimize for search independently of the subtitle.
- Post body: No word/character limit, but Gmail truncates emails exceeding 102KB (~3000 words with formatting). Readers can click "View entire message" but most won't.
Notes
- No character limit — unlike Twitter/X, Notes can be long-form.
- Supports text formatting (bold, italic, links), mentions, up to 6 photos or GIFs, links to posts, quotes, and comments.
- Does not support video uploads.
- Best-performing Notes are concise (2-5 sentences) despite having no limit. Use them as a testing pipeline for long-form ideas.
Special content blocks
The post editor offers special blocks via the "More" dropdown and the "Buttons..." dropdown.
Buttons (via "Buttons..." dropdown):
- Subscribe button — inline CTA for free readers. Place after delivering strong value to maximize conversion.
- Share button — one-click share prompt. Place after a key insight or at the end.
- Custom button — link to anything (repo, product, event). Keep text to 3-5 words.
Content blocks (via "More" dropdown):
- Paywall divider — marks where paid content begins. Give enough free value above the fold to hook, then paywall the depth.
- Pull quote — styled blockquote for emphasis. Use for the single most quotable line in the post.
- Footnotes — render well on web, less reliably in email. Use for tangential details.
- Code block — syntax-highlighted fenced code. Keep under 10 lines for email (link to Gist for longer code).
- LaTeX — math rendering via
\commandsyntax. Limited subset supported. - Financial chart — embed stock/crypto charts for market data.
- Poll — inline reader poll. Drives engagement and replies (algorithm signals). One per post max.
- Poetry block — preserves custom spacing. Also useful for ASCII art or structured text.
- Recipe — structured recipe format. Niche but useful for food-adjacent newsletters.
- Divider — horizontal rule between sections. Max 2-3 per issue.
Media embeds (paste link on a new line):
- Tweets, YouTube/Vimeo, Spotify/SoundCloud/Bandcamp, GitHub Gists, Instagram
- Drag-and-drop: images, audio, video, PDFs, Excel (XLSX), comics (CBZ/CBR)
- Embeds render on web but degrade to link/preview in email. Don't rely on embeds for critical content.
When writing a post, suggest relevant special blocks where they add value — subscribe button after the hook, share button after the strongest insight, a poll to drive engagement, or a paywall divider for paid posts.
Social Distribution Posts
After the content is written, propose a LinkedIn post and a Twitter/X post to promote it. These are standalone pieces of content that create enough curiosity or value to drive clicks — not summaries.
LinkedIn post (1200-1500 characters)
- Open with the strongest hook from the article (rewritten for LinkedIn's feed format)
- Give 30-40% of the value upfront (enough to be useful on its own)
- End with a reason to read the full issue (the part LinkedIn doesn't give them)
- Add a CTA: link to the Substack issue
- Line breaks after every 1-2 sentences (LinkedIn feed rewards visual whitespace)
- No hashtags unless the user specifically wants them (developer audiences find them performative)
Twitter/X post (single tweet or 2-3 tweet thread)
Single tweet version: the most surprising or counterintuitive claim from the article + link.
Thread version (if the article has multiple strong hooks):
- Tweet 1: Hook with the boldest claim. No link yet.
- Tweet 2-3: One key insight per tweet, standalone value.
- Final tweet: CTA + link to the full issue.
- Keep threads short (3-4 tweets max). Long threads have steep drop-off.
- Use the article's data points, numbers, or counter-narrative angles as tweet fuel.
Adaptation rules (both platforms)
- Don't announce ("I just published..."). Lead with the insight, not the meta-action.
- If ghostwriting, match the client's social voice (which may differ from their newsletter voice).
- Each post should work even if the reader never clicks the link. The link is a bonus, not the point.
Substack Algorithm & Growth Reference
Table of Contents
1. How the Algorithm Works 2. Notes Ranking Signals 3. The Recommendations System 4. Growth Levers (ranked by impact) 5. Monetization Math 6. The Level-by-Level Growth Plan
---
1. How the Algorithm Works
Source: PubStack Success interview with Mike Cohen, Substack's head of ML and architect of the Notes algorithm.
Optimization target: Subscriptions and paid conversions. Not engagement, not time spent, not clicks. Substack takes a cut of paid subscriptions, so their incentive is to surface content that converts readers into paying subscribers.
User representation: The algorithm builds a numerical representation of each user based on:
- Location and language
- Current subscriptions
- Followed creators
- Stated interests during onboarding
- Interaction history
Content matching: It matches content to users using these representations. The core mechanism is audience overlap. If your audience overlaps with larger publications, the algorithm shows your content to those publications' non-subscribed readers.
The "natural next step" model: The rebuilt algorithm (2025) asks "What would be the natural next step for this reader in this moment?" rather than "What does this person usually like?" This means it rewards publishing momentum (pieces that build on each other, consistent themes) rather than one-off viral hits.
Why this matters for writers: Because the algorithm optimizes for subscription conversion (not engagement), the strategies that work on ad-supported platforms (outrage, engagement bait, hot takes) don't work here. What works: content so good that readers want to subscribe for more.
---
2. Notes Ranking Signals
From the Mike Cohen interview:
Primary signal: Likes. This is the strongest ranking factor for Notes.
Secondary signals:
- Restacks (amplify reach to the restacker's audience)
- Replies (signal depth of engagement)
- Time between Note publication and first engagement
Content neighborhood: The algorithm learns your "content neighborhood" from Notes interactions. If your Notes attract engagement from readers of Publication X, the algorithm starts showing your content to more of Publication X's audience.
Subscriber weighting: Notes from writers you subscribe to are weighted higher in your feed.
What doesn't work on Notes:
- Thread-style content (Notes aren't threads; save that for Twitter)
- Promotional posts ("check out my latest article") without standalone value
- Vague motivational content
- Content that reads like a tweet transplanted without adaptation
What works on Notes:
- Genuine questions that invite discussion
- Surprising data points or observations
- Short, specific takes (1-3 sentences) on industry developments
- Behind-the-scenes of your writing process (meta-content works on a writing platform)
---
3. The Recommendations System
Fully human-curated, not algorithmic. Writers manually select who they recommend. This is a crucial distinction: you can't "game" recommendations through algorithmic signals.
When recommendations appear: During the subscribe flow, at the moment of highest engagement (the reader just decided to subscribe). This makes recommendations extremely high-converting.
How to get recommended:
1. Write quality content in a related niche (prerequisite) 2. Engage genuinely with the recommender's content over time 3. Build a relationship (comment, restack, respond to Notes) 4. If appropriate, reach out and suggest a mutual recommendation 5. Or: write content good enough that they find and recommend you organically
Recommendation swaps: Two writers of similar size recommending each other. Effective for growth, but only if audiences genuinely overlap. Irrelevant recommendations annoy new subscribers and increase churn.
---
4. Growth Levers (ranked by impact)
Based on data from top performers: Gergely Orosz (Pragmatic Engineer, 400k+ subs), Lenny Rachitsky (Lenny's Newsletter, 1M+ subs), and aggregated practitioner reports.
Tier 1: Highest impact
Recommendations from larger publications
- 70% of Gergely Orosz's free subscriber growth came from Recommendations + Discover
- High-converting because they appear at the subscribe moment
- Substack reported 32M new subscribers from within the platform in 3 months (2025)
Consistent, high-quality publishing
- The algorithm rewards topic and cadence consistency
- Quality compounds: each good piece improves the algorithm's audience model
- Word of mouth remains the single biggest lever at scale (Lenny Rachitsky's primary driver)
Tier 2: High impact
Notes as testing pipeline
- Post 3-5 Notes/week as idea validation
- Write long-form versions of Notes that get engagement
- Active Notes usage increases visibility in the recommendation engine
Cross-promotion partnerships
- Guest posts on complementary newsletters
- Mutual recommendation swaps at similar scale
- Natural cross-references within content
Tier 3: Moderate impact
External traffic: Twitter/X, LinkedIn, podcast appearances, SEO (slow but durable — particularly effective for web posts, which accumulate long-tail search traffic over months; newsletter issues are ephemeral in search)
Homepage + welcome email optimization:
- Welcome email has the highest open rate you'll ever send
- Pinned "Start Here" post
- Clear, specific homepage description
Tier 4: Low impact at small scale
Substack's Boost (paid promotion within platform) Cross-posting to Medium or dev.to (reach vs. cannibalization tradeoff)
---
5. Monetization Math
Average free-to-paid conversion: ~3% (industry baseline) Excellent conversion: 4-5% Top performers: Pragmatic Engineer and Lenny's Newsletter both charge $150/year, convert at ~4-5%
Revenue projections at 3% conversion, $10/month pricing:
- 500 free subs -> ~15 paid -> $150/month
- 1,000 free subs -> ~30 paid -> $300/month
- 5,000 free subs -> ~150 paid -> $1,500/month
- 10,000 free subs -> ~300 paid -> $3,000/month
- 50,000 free subs -> ~1,500 paid -> $15,000/month
At $15/month: multiply by 1.5x At $150/year ($12.50/month): similar to $12.50/month but annual billing reduces churn
Substack's cut: 10% of paid subscriptions + Stripe fees (~3%)
Practitioner consensus on revenue sources (highest return per subscriber):
1. Coaching/consulting (one client at $500/month > 50 subs at $10/month) 2. Courses/products sold via the newsletter 3. Sponsorships (viable at >5K subscribers) 4. Paid subscriptions (best at scale, poor at small scale)
Double-monetization model: Some newsletters combine a Products section with Founding Member upsells. Newsletter as growth engine, products as revenue engine.
Strategic implication: At < 1,000 subscribers, don't paywall anything. Focus all energy on growth. The paid tier math only works at scale.
---
6. The Level-by-Level Growth Plan
From Landon Poburan (107.6% growth in 6 months following this system):
Level 1: Foundation (0-100 subscribers)
- Commit to one weekly newsletter
- Focus on building the habit, not optimization
- Tell everyone you know
Level 2: Notes (100-500 subscribers)
- Add 3-5 weekly Notes
- Use Notes to test topics before committing to long-form
- Track which Notes get engagement
Level 3: Community (500-2,000 subscribers)
- Engage with other writers in your niche
- Comment, restack, respond to Notes
- Build relationships that lead to recommendations
Level 4: Optimization (2,000-10,000 subscribers)
- Optimize homepage copy
- Craft the welcome email
- Create a pinned "Start Here" post
- Analyze which issue types drive the most subscriptions (not just opens)
Level 5: Monetization (10,000+ subscribers)
- Introduce paid tier
- Add products or services
- Consider sponsorships
- Multiple revenue streams reduce risk
Critical caveat: writers writing about writing on Substack have a built-in massive audience on the platform. Their growth numbers may not transfer to technical niches. Filter all advice through your actual niche's dynamics.
Voice Matching Reference
Table of Contents
1. The Extraction Pipeline 2. Interview Techniques 3. Voice Marker Categories 4. Voice Guide Template 5. Common Pitfalls 6. Iteration Protocol
---
1. The Extraction Pipeline
Voice matching is an engineering process, not artistic intuition. Follow this pipeline:
Input sources (ranked by signal quality):
1. Recorded conversations / calls with the client (transcribed) 2. Podcast appearances or conference talks (transcribed) 3. Tweet threads and social media posts (raw, unedited voice) 4. Slack messages or internal comms (casual register) 5. Published blog posts (edited, may differ from natural voice) 6. Formal writing (lowest signal, most edited)
The critical insight: start from transcripts, not notes. Written notes filter out voice markers. Transcripts preserve how someone actually strings words together, their default rhythms, their verbal tics, their sentence lengths.
Process:
1. Collect 3-5 sources, prioritizing transcripts 2. Read each source line-by-line, highlighting voice markers 3. Cross-reference: markers that appear across multiple sources are reliable 4. Markers that appear in only one source may be context-dependent (note the context) 5. Build the voice guide from cross-referenced markers 6. Draft a test paragraph and validate with the client
---
2. Interview Techniques
If you're the one interviewing the client (to extract insights for the newsletter):
Recorded interview workflow (best for planned newsletter issues):
- Schedule 30-45 minute calls
- Prepare 5-7 open-ended questions tied to the newsletter topic
- Let the client talk. Your job is to prompt and redirect, not discuss.
- Record everything. Transcribe after.
- The transcript gives you both content (their insights) and voice (their patterns).
Instant messaging workflow (best for reactive/timely content):
- Use Slack, WhatsApp, or voice notes
- Send a specific prompt: "What's your take on [event/trend]? Voice note is fine."
- Voice notes are gold: fast for the client, preserve natural speech patterns
- Compile responses into a draft, then polish
Written brief workflow (best for white papers, deep-dive pieces):
- Client provides: target audience, objectives, key points, tone preferences
- You provide: draft outline for approval, then full draft
- Best when the client wants control over direction but not execution
---
3. Voice Marker Categories
When analyzing sources, look for these categories:
Vocabulary
- Default synonyms: "big" vs "massive" vs "significant" vs "huge"
- Technical depth: Do they say "latency" or "delay"? "Throughput" or "speed"?
- Fillers in speech: "honestly", "basically", "literally", "look"
- Forbidden words: Terms they never use (often corporate jargon they actively avoid)
Sentence structure
- Average length: Count words in 10-15 representative sentences
- Complexity: Simple declarative? Compound with qualifications? Nested clauses?
- Fragments: Do they use sentence fragments for emphasis?
- Questions: Do they use rhetorical questions? How often?
Rhythm and pacing
- Paragraph length: Short (1-2 sentences) or long (4-5)?
- Variation: Consistent length or alternating short/long for emphasis?
- Lists: Do they enumerate points or write prose?
- Emphasis markers: Bold, italics, ALL CAPS, underscores?
Tone and register
- Formality level: Casual conversational vs. professional vs. academic
- Humor style: Dry, self-deprecating, dark, punny, none
- Confidence level: Hedged ("I think", "maybe") vs. declarative ("This is", "Full stop")
- Emotional range: Reserved, enthusiastic, contrarian, measured
Metaphor domain
- Where do they pull analogies from? Sports, engineering, cooking, military, music, nature?
- Do they use the same metaphors repeatedly?
- Are metaphors simple or extended?
Structural habits
- How do they open pieces? (Anecdote, bold claim, question, statistic)
- How do they close? (Summary, call to action, open question, callback)
- Do they use section headers? What style?
- How do they handle transitions?
---
4. Voice Guide Template
VOICE GUIDE: [Person's name]
Created: [date]
Sources used: [list]
## Core voice characteristics
- Register: [casual / professional / mixed]
- Avg sentence length: [N] words
- Humor: [style or none]
- Confidence: [hedged / declarative / mixed]
## Vocabulary
- Uses: [word1], [word2], [phrase1]
- Avoids: [word1], [word2]
- Technical level: [first principles / assumes expertise / adapts to audience]
## Structural patterns
- Opens with: [pattern]
- Closes with: [pattern]
- Paragraphs: [length tendency]
- Uses [lists / prose / mixed]
## Signature moves
- [Specific pattern with example from source material]
- [Specific pattern with example]
- [Specific pattern with example]
## Things that would sound wrong
- [Anti-pattern]: would sound like [wrong voice] instead of [right voice]
- [Anti-pattern]: [why it breaks the voice]---
5. Common Pitfalls
Writing your voice, not theirs. The most common failure. After a few paragraphs, writers drift back to their own defaults. Use the voice guide as a per-paragraph checklist.
Over-polishing. Some clients have a rough, direct voice. Editing for "better writing" can destroy the voice. If they speak in fragments, let the fragments stand.
Confusing formality with voice. Making someone sound "more professional" is not voice matching. Some clients are deliberately informal. Respect that.
Anchoring on one source. A client's conference talk voice may differ from their newsletter voice. Cross-reference multiple sources.
Ignoring what they don't say. Voice is defined as much by absence as presence. If someone never uses exclamation marks, adding one breaks the voice.
---
6. Iteration Protocol
After the first draft:
1. Send to client with specific questions:
- "Does paragraph 3 sound like you?"
- "Would you use this word: [word]?"
- "Is this the metaphor you'd reach for?"
2. Don't ask "does this sound right?" (too vague, gets vague answers) 3. Track corrections in the voice guide (add/modify markers based on feedback) 4. By draft 3, the voice guide should be stable 5. Save the final voice guide for future issues (voice doesn't change often)
Web Post Formatting Reference
This reference covers web-first formatting for Substack articles and essays. For email newsletter formatting, see references/email-formatting.md.
Table of Contents
1. SEO Optimization 2. Web-First Formatting Rules 3. Content Strategy: Evergreen vs Timely 4. Sections and Categories 5. Rich Media Usage
---
1. SEO Optimization
Title optimization
- Front-load the primary keyword in the first 3-4 words
- 50-60 characters for search engine display (Google truncates beyond ~60)
- Substack's title field has no hard limit, but search and social sharing truncate — write for the truncated view
- Avoid clickbait phrasing — Substack's audience converts on substance, not curiosity gaps
SEO fields
Substack provides separate SEO fields (SEO title, SEO description, URL slug, social preview image) that don't affect how the post appears in email or the app. This means you can optimize for email and search independently.
- SEO title: use for a keyword-rich version of the headline (under 60 chars). The main title can stay punchy for email; the SEO title targets search.
- SEO description (meta description): 150-160 characters. If left blank, Substack falls back to the subtitle — but the subtitle is often too short to be an adequate meta description. Write a dedicated one with a hook and the primary keyword.
- Subtitle: under 10 words. Serves as email preview text (~90 chars visible) and page subhead. Optimize for humans, not search engines — the SEO description field handles that.
URL slug
- Substack auto-generates the slug from the title, but you can edit it before publishing
- Keep it short: 3-6 words, hyphen-separated
- Include the primary keyword, drop stop words ("the", "a", "how", "to")
- Never include dates in slugs — dates make evergreen content look stale in search results
- Example: title "How to Profile Java Applications in Production" → slug
profile-java-applications-production
Internal linking
- Link to previous posts on the same publication — keeps readers on-site and helps Substack's algorithm understand your content graph
- Use descriptive anchor text with keywords (not "click here")
- 2-4 internal links per post is a good baseline
- Link from new posts to old evergreen posts to keep them ranking
Substack's SEO position
- Substack has high domain authority — posts rank well in Google
- Web posts get long-tail search traffic that newsletter issues don't: emails are read once, web posts accumulate organic traffic over months
- The algorithm also surfaces web posts in Substack's own discovery feed and search
- Substack generates a sitemap automatically — no action needed
---
2. Web-First Formatting Rules
Paragraph length
- Slightly longer than email: 3-4 sentences acceptable (vs 2-3 for email)
- Web readers still skim — break up walls of text
- Full-width rendering means paragraphs feel less dense than in narrow email columns
Subheadings
- Every 200-400 words
- Use H2 for major sections, H3 for subsections
- H4 is usable on web (unlike email where H4 renders inconsistently)
- Write subheadings as scannable summaries, not clever labels — skimmers should get the argument from headings alone
Table of contents
- For posts > 2000 words, add a manual TOC at the top
- Substack doesn't auto-generate a TOC — write it as a bulleted list
- Anchor links work on Substack's web view (use
#section-nameformat) - TOC helps both readers and SEO (Google sometimes shows jump links in search results)
Code blocks
- Full syntax highlighting works reliably on web (unlike email where it varies)
- Longer code blocks acceptable: up to 30-40 lines
- For anything longer, link to a GitHub Gist or repo with a 5-10 line inline excerpt for context
- Use language hints in fenced blocks for proper highlighting
Footnotes
- Render properly on web with working back-links (unlike email where back-links often break)
- Use freely for citations, digressions, and tangential details
- Keep footnote text concise — long footnotes distract from flow
Bold and emphasis
- Same principle as email: bold the key phrase in each section so skimmers catch the argument
- Italics for titles, terms, and light emphasis
- Don't over-bold — 1-2 bold phrases per section
---
3. Content Strategy: Evergreen vs Timely
Evergreen content (web post strengths)
- Tutorials, how-to guides, reference material, deep dives, frameworks
- Accumulates search traffic over months and years
- Update periodically to keep ranking (Substack lets you edit published posts — update the date to resurface)
- Best format for web posts — the long-tail search traffic is the value proposition
- Example: "The Complete Guide to Go Error Handling" will get traffic for years
Timely content (newsletter strengths)
- Commentary, reactions to news, announcements, industry analysis, opinion
- Email delivery ensures immediate reads within 24-48 hours
- Short shelf life — search traffic drops quickly after the news cycle ends
- Better sent as newsletter issues where the email push drives engagement
- Example: "What Python 3.14's New Features Mean for Your Codebase" has a window
Hybrid approach
- Publish timely content as newsletter issues, evergreen content as web posts
- Cross-link between them: "For background, see my deep dive on [topic]" in newsletters, linking to the evergreen web post
- Some posts are both: publish as a newsletter issue for immediate reach, but write the content to be evergreen so it accumulates search traffic long after the email is forgotten
---
4. Sections and Categories
- Substack lets you organize posts into Sections (visible tabs on the publication homepage)
- Use sections to group web posts by topic (e.g., "Tutorials", "Deep Dives", "Case Studies", "Industry Analysis")
- Each section gets its own RSS feed and can have its own subscribe option
- Readers can subscribe to specific sections — useful if your publication covers multiple topics
- Don't create too many sections early: 2-4 is sufficient until you have 20+ posts
- Sections help both reader navigation and the algorithm's content categorization
- Consider one section for evergreen web posts and another for newsletter-style commentary
---
5. Rich Media Usage
Embeds
- YouTube, Twitter/X, Spotify, GitHub Gists, and other embeds render fully on web (unlike email where they degrade to links/previews)
- Use embeds freely in web posts — they add dwell time, which is an algorithm signal
- Embedded tweets and videos make the post feel more dynamic and connected to the broader conversation
Images
- No client-side blocking concerns (unlike email where many clients block images by default)
- Use more liberally: diagrams, architecture charts, screenshots, annotated code, photos
- Still optimize file size for page load speed — Substack compresses images but large originals slow initial render
- Alt text matters for both accessibility and SEO — describe what the image shows, include relevant keywords naturally
Interactive elements
- Polls: render inline on web (in email they show as a link to vote on the web version). Use to drive engagement and discussion.
- Comments section: prominent on web posts. End with a question to encourage comments — comments are an engagement signal.
- Buttons (subscribe, share, custom): render as proper styled buttons on web, styled links in email. Use subscribe buttons after delivering strong value.
Comparison with email
| Element | Web | |
|---|---|---|
| Embeds (YouTube, tweets) | Full render | Link/preview only |
| Images | Always visible | Often blocked |
| Polls | Inline voting | Link to web |
| Code blocks | Full highlighting | Varies by client |
| Footnotes | Working back-links | Often broken |
| Long content | Scrollable | Gmail truncates at ~102KB |
Related skills
How it compares
Pick substack-ghostwriting over copywriting-cta when you need full Substack issues, voice matching, and platform growth—not just a bottom-of-article CTA block.
FAQ
What is substack-ghostwriting?
Write, optimize, and grow Substack content — both newsletter issues (email-first) and web posts (web-first articles/essays). Covers ghostwriting with voice matching, Substack algor
When should I use substack-ghostwriting?
Write, optimize, and grow Substack content — both newsletter issues (email-first) and web posts (web-first articles/essays). Covers ghostwriting with voice matching, Substack algor
Is substack-ghostwriting safe to install?
Review the Security Audits panel on this page before production use.