Medium Article Generator
Produce a long-form article, tag and publication suggestions, and crosspost note
from the content atoms provided by the orchestrator.
Inputs
Received from the parent agent (repurpose-broadcast):
| Input |
Description |
atoms |
Full list of content atoms with types and impact ratings |
main_argument |
One-sentence thesis of the source content |
target_audience |
Who benefits from this content |
primary_topic |
Category or niche |
voice_profile |
Detected or overridden brand voice |
brief_mode |
If true, produce title + subtitle + opening only (500 words) |
References
Load before generating:
references/platform-specs.md -- Medium specs, article length targets, SEO weight
references/hook-formulas.md -- title formulas, opening hooks, narrative structures
references/voice-adaptation.md -- Medium tone rules (authoritative, conversational, storytelling)
references/engagement-benchmarks.md -- read time targets, clap benchmarks
Platform Rules
| Spec |
Value |
| Article length |
1,500-3,000 words optimal (7-12 min read time) |
| Title |
60 characters max (SEO-optimized, keyword-rich) |
| Subtitle (kicker) |
140 characters max (expands on title, adds context) |
| Tags |
Exactly 5 (first tag = primary topic) |
| Images |
Inline, any aspect ratio, alt text REQUIRED |
| SEO value |
HIGH -- Google indexes Medium articles, often ranks in top results |
| Paywall |
Optional (recommend based on content depth and value) |
| Publications |
Curated collections that boost distribution significantly |
| Reading time |
Displayed prominently, affects click-through rate |
| Best posting |
Tuesday-Thursday 8-10 AM |
| Formatting |
Full markdown, pull quotes, code blocks, headers, images |
Core Principle
Medium is a PUBLICATION platform, not social media. Articles should feel like magazine pieces -- structured, edited, with a narrative arc. Google ranks Medium articles highly, so SEO matters in titles, headers, and first paragraphs. Write for depth, personality, and lasting value. Information dumps get skimmed; narrative gets read.
Output 1: Article
File: medium/article.md
Length: 1,500-3,000 words (7-12 min read time).
Article Structure
Title (60 chars max)
- Keyword-rich for Google indexing
- Curiosity-driven or value-driven (never clickbait)
- Formulas:
- "How [Specific Action] [Achieved Specific Result]"
- "The [Adjective] Truth About [Topic] Nobody Talks About"
- "[Number] Lessons From [Experience] That Changed How I [Outcome]"
- "Why [Common Belief] Is Wrong (And What to Do Instead)"
- Test: would you click this in Google search results?
Subtitle / Kicker (140 chars max)
- Expands on the title -- adds context the title couldn't fit
- Should answer "Why should I read this?" in one line
- Include a secondary keyword if natural
- Example title: "Why Most Content Strategies Fail"
- Example subtitle: "And the simple framework that turned my 200-view posts into 20K-view articles"
Opening hook (2-3 sentences)
- Set the stakes immediately -- why does this matter RIGHT NOW?
- Options: start with a story, a surprising stat, or a bold claim
- The first 2 sentences determine whether readers continue
- Never open with a definition ("Content marketing is...")
Section 1: Context / Problem (300-500 words)
- Why this topic matters now
- Frame the gap: what most people get wrong or miss
- Use
insight and contrarian atoms to build tension
- Include at least one specific example or data point
- Header: descriptive H2, keyword-rich
Section 2: Core Insight (400-700 words)
- The main argument with supporting evidence
- This is the centerpiece -- spend the most words here
- Use the highest-impact atoms
- Include a pull quote (the single most quotable line, formatted as blockquote)
- Header: H2 that reveals the insight
Section 3: Supporting Evidence (300-500 words)
- Stats, case studies, examples drawn from atoms
- If
stat or casestudy atoms exist, expand them with context
- Use subheadings (H3) if covering multiple supporting points
- Specific numbers always beat vague claims
Section 4: Practical Application (300-500 words)
- Actionable steps the reader can take today
- Draw from
howto and actionable atoms
- Numbered steps or bulleted checklist format
- Each step should be specific and measurable
- Header: action-oriented H2 ("How to Apply This Today")
Closing (100-200 words)
- Forward-looking statement or call-to-action
- Do NOT summarize the whole article -- trust the reader
- End with a thought-provoking line or a question
- Optional: invite claps, follows, or responses
Pull quotes (2-3 throughout)
- Formatted as blockquotes (
> quote text)
- Place one every 500-800 words for visual rhythm
- Choose lines that work as standalone insights
- These also serve as highlight-worthy text for Medium's highlight feature
SEO Optimization
- Title: primary keyword in first 3 words when possible
- First paragraph: include primary keyword naturally within first 100 words
- Headers (H2/H3): include secondary keywords
- Alt text: describe every image for accessibility and SEO
- Internal links: reference other Medium articles if relevant
- Meta description: subtitle serves as meta description on Google
Formatting Rules
- Short paragraphs (2-4 sentences max)
- Generous whitespace between sections
- Bold key phrases for scanners (2-3 per section)
- Use H2 for main sections, H3 for subsections
- Code blocks for any technical content
- Bulleted/numbered lists for actionable content
- Pull quotes for visual breaks and emphasis
Output 2: Tags + Publication Suggestions
File: medium/tags-publications.md
Tags (exactly 5)
| Position |
Strategy |
| Tag 1 (primary) |
Broadest relevant topic (highest search volume) |
| Tag 2 |
Specific niche within the topic |
| Tag 3 |
Audience-related tag (e.g., "Startup", "Self Improvement") |
| Tag 4 |
Format or methodology tag (e.g., "How To", "Case Study") |
| Tag 5 |
Trending or timely tag if applicable |
The first tag carries the most weight for Medium's distribution algorithm. Choose the broadest relevant topic with the highest search volume.
Publication Suggestions (2-3)
For each publication, provide:
| Field |
Description |
| Publication name |
Official name as it appears on Medium |
| Follower tier |
Small (<10K), Medium (10K-100K), Large (100K+) |
| Submission note |
Key guidelines or requirements for submission |
| Relevance |
Why this content fits the publication's focus (1 sentence) |
Publication selection criteria:
- Topic alignment -- the publication actively covers this subject
- Size sweet spot -- medium publications (10K-100K) accept more submissions
- Acceptance rate -- larger publications are more selective; suggest a mix
- Audience overlap -- the publication's readership matches the target audience
Common publications by content type:
| Content Topic |
Likely Publications |
| Technology |
Better Programming, Towards Data Science, The Startup |
| Business |
Better Marketing, The Startup, Entrepreneur's Handbook |
| Productivity |
Better Humans, Personal Growth, Mind Cafe |
| Writing/Content |
The Writing Cooperative, Better Marketing |
| Design |
UX Collective, Bootcamp, UX Planet |
| AI/ML |
Towards Data Science, Towards AI, AI in Plain English |
Output 3: Crosspost Note
File: medium/crosspost-note.md
Handle canonical URL attribution to protect SEO.
If content was originally published elsewhere:
- Include canonical URL import note: "Use Medium's Import tool (medium.com/p/import) to set the canonical URL to [original source]"
- Footer text: "Originally published at [source name + URL]"
- Note: Medium's import tool automatically sets
rel=canonical to avoid duplicate content penalties
If this is original content:
- Note: "First published on Medium"
- Suggest the user set up a custom domain or publication for branding
- Optional: suggest crossposting TO their blog later with canonical pointing back to Medium
Crosspost Format
**Canonical source:** [Original URL or "Medium (original)"]
**Import method:** [Medium Import tool / Manual paste]
**Footer attribution:** [Text to include at bottom of article]
**SEO note:** [Canonical URL guidance]
Tone Rules
| Do |
Do NOT |
| Write in first person ("I discovered", "In my experience") |
Use third person or passive voice |
| Tell stories and share genuine insights |
Write dry, encyclopedia-style content |
| Use conversational language with personality |
Use academic jargon or corporate speak |
| Include specific numbers and evidence |
Make vague, unsubstantiated claims |
| Build a narrative arc (tension, insight, resolution) |
Dump information in list format only |
| Use pull quotes for visual rhythm |
Write unbroken walls of text |
| Acknowledge nuance and uncertainty |
Speak in absolutes without evidence |
| Write headlines that work in Google search |
Write clickbait or misleading titles |
Output Format
# [Article Title]
## [Subtitle / Kicker]
[Full article text with headers, pull quotes, and formatting]
---
**Reading time:** ~[X] min
**Tags:** [tag1], [tag2], [tag3], [tag4], [tag5]
**Suggested publications:** [publication1], [publication2]
**Paywall recommendation:** [Yes/No + reasoning]
**Best posting time:** Tuesday-Thursday 8-10 AM
**SEO notes:** [primary keyword, secondary keywords, title optimization]
Brief Mode
If --brief is active, produce only:
- Title + subtitle
- Opening 3 paragraphs (~500 words)
- 5 tags
- Skip full article, publication suggestions, and crosspost note
Error Handling
| Condition |
Action |
| Fewer than 5 atoms |
Write shorter article (800-1,200 words); reduce to 3 sections |
No stat or casestudy atoms |
Use narrative-driven structure; lean on insight and contrarian atoms |
brief_mode is true |
Generate title + subtitle + opening only (500 words) + tags |
| Content too short for full article |
Frame as a "thought piece" (800 words); note shorter read time |
| Promotional content detected |
Reframe as an insight story; strip product mentions, focus on lessons learned |
| Voice profile unclear |
Default to conversational-authoritative; note in output header |
1---2name: repurpose-medium3description: Generates Medium publication content from content atoms: long-form articles (1500-3000 words) with narrative arc, SEO-optimized titles and subtitles, tag and publication targeting, and canonical crosspost handling. Optimizes for Google indexing, read time, and publication submission. Sub-skill of the Content Repurposing Engine. Use when user says "medium", "medium article", "medium post", "medium story", or "repurpose for medium".4license: MIT5---67# Medium Article Generator89Produce a long-form article, tag and publication suggestions, and crosspost note10from the content atoms provided by the orchestrator.1112## Inputs1314Received from the parent agent (`repurpose-broadcast`):1516| Input | Description |17|-------|-------------|18| `atoms` | Full list of content atoms with types and impact ratings |19| `main_argument` | One-sentence thesis of the source content |20| `target_audience` | Who benefits from this content |21| `primary_topic` | Category or niche |22| `voice_profile` | Detected or overridden brand voice |23| `brief_mode` | If true, produce title + subtitle + opening only (500 words) |2425## References2627Load before generating:2829- `references/platform-specs.md` -- Medium specs, article length targets, SEO weight30- `references/hook-formulas.md` -- title formulas, opening hooks, narrative structures31- `references/voice-adaptation.md` -- Medium tone rules (authoritative, conversational, storytelling)32- `references/engagement-benchmarks.md` -- read time targets, clap benchmarks3334## Platform Rules3536| Spec | Value |37|------|-------|38| Article length | 1,500-3,000 words optimal (7-12 min read time) |39| Title | 60 characters max (SEO-optimized, keyword-rich) |40| Subtitle (kicker) | 140 characters max (expands on title, adds context) |41| Tags | Exactly 5 (first tag = primary topic) |42| Images | Inline, any aspect ratio, alt text REQUIRED |43| SEO value | HIGH -- Google indexes Medium articles, often ranks in top results |44| Paywall | Optional (recommend based on content depth and value) |45| Publications | Curated collections that boost distribution significantly |46| Reading time | Displayed prominently, affects click-through rate |47| Best posting | Tuesday-Thursday 8-10 AM |48| Formatting | Full markdown, pull quotes, code blocks, headers, images |4950## Core Principle5152Medium is a **PUBLICATION** platform, not social media. Articles should feel like magazine pieces -- structured, edited, with a narrative arc. Google ranks Medium articles highly, so SEO matters in titles, headers, and first paragraphs. Write for depth, personality, and lasting value. Information dumps get skimmed; narrative gets read.5354## Output 1: Article5556**File:** `medium/article.md`5758**Length:** 1,500-3,000 words (7-12 min read time).5960### Article Structure61621. **Title** (60 chars max)63 - Keyword-rich for Google indexing64 - Curiosity-driven or value-driven (never clickbait)65 - Formulas:66 - "How [Specific Action] [Achieved Specific Result]"67 - "The [Adjective] Truth About [Topic] Nobody Talks About"68 - "[Number] Lessons From [Experience] That Changed How I [Outcome]"69 - "Why [Common Belief] Is Wrong (And What to Do Instead)"70 - Test: would you click this in Google search results?71722. **Subtitle / Kicker** (140 chars max)73 - Expands on the title -- adds context the title couldn't fit74 - Should answer "Why should I read this?" in one line75 - Include a secondary keyword if natural76 - Example title: "Why Most Content Strategies Fail"77 - Example subtitle: "And the simple framework that turned my 200-view posts into 20K-view articles"78793. **Opening hook** (2-3 sentences)80 - Set the stakes immediately -- why does this matter RIGHT NOW?81 - Options: start with a story, a surprising stat, or a bold claim82 - The first 2 sentences determine whether readers continue83 - Never open with a definition ("Content marketing is...")84854. **Section 1: Context / Problem** (300-500 words)86 - Why this topic matters now87 - Frame the gap: what most people get wrong or miss88 - Use `insight` and `contrarian` atoms to build tension89 - Include at least one specific example or data point90 - Header: descriptive H2, keyword-rich91925. **Section 2: Core Insight** (400-700 words)93 - The main argument with supporting evidence94 - This is the centerpiece -- spend the most words here95 - Use the highest-impact atoms96 - Include a pull quote (the single most quotable line, formatted as blockquote)97 - Header: H2 that reveals the insight98996. **Section 3: Supporting Evidence** (300-500 words)100 - Stats, case studies, examples drawn from atoms101 - If `stat` or `casestudy` atoms exist, expand them with context102 - Use subheadings (H3) if covering multiple supporting points103 - Specific numbers always beat vague claims1041057. **Section 4: Practical Application** (300-500 words)106 - Actionable steps the reader can take today107 - Draw from `howto` and `actionable` atoms108 - Numbered steps or bulleted checklist format109 - Each step should be specific and measurable110 - Header: action-oriented H2 ("How to Apply This Today")1111128. **Closing** (100-200 words)113 - Forward-looking statement or call-to-action114 - Do NOT summarize the whole article -- trust the reader115 - End with a thought-provoking line or a question116 - Optional: invite claps, follows, or responses1171189. **Pull quotes** (2-3 throughout)119 - Formatted as blockquotes (`> quote text`)120 - Place one every 500-800 words for visual rhythm121 - Choose lines that work as standalone insights122 - These also serve as highlight-worthy text for Medium's highlight feature123124### SEO Optimization125126- **Title**: primary keyword in first 3 words when possible127- **First paragraph**: include primary keyword naturally within first 100 words128- **Headers (H2/H3)**: include secondary keywords129- **Alt text**: describe every image for accessibility and SEO130- **Internal links**: reference other Medium articles if relevant131- **Meta description**: subtitle serves as meta description on Google132133### Formatting Rules134- Short paragraphs (2-4 sentences max)135- Generous whitespace between sections136- Bold key phrases for scanners (2-3 per section)137- Use H2 for main sections, H3 for subsections138- Code blocks for any technical content139- Bulleted/numbered lists for actionable content140- Pull quotes for visual breaks and emphasis141142## Output 2: Tags + Publication Suggestions143144**File:** `medium/tags-publications.md`145146### Tags (exactly 5)147148| Position | Strategy |149|----------|----------|150| Tag 1 (primary) | Broadest relevant topic (highest search volume) |151| Tag 2 | Specific niche within the topic |152| Tag 3 | Audience-related tag (e.g., "Startup", "Self Improvement") |153| Tag 4 | Format or methodology tag (e.g., "How To", "Case Study") |154| Tag 5 | Trending or timely tag if applicable |155156The first tag carries the most weight for Medium's distribution algorithm. Choose the broadest relevant topic with the highest search volume.157158### Publication Suggestions (2-3)159160For each publication, provide:161162| Field | Description |163|-------|-------------|164| Publication name | Official name as it appears on Medium |165| Follower tier | Small (<10K), Medium (10K-100K), Large (100K+) |166| Submission note | Key guidelines or requirements for submission |167| Relevance | Why this content fits the publication's focus (1 sentence) |168169**Publication selection criteria:**1701. **Topic alignment** -- the publication actively covers this subject1712. **Size sweet spot** -- medium publications (10K-100K) accept more submissions1723. **Acceptance rate** -- larger publications are more selective; suggest a mix1734. **Audience overlap** -- the publication's readership matches the target audience174175**Common publications by content type:**176177| Content Topic | Likely Publications |178|---------------|---------------------|179| Technology | Better Programming, Towards Data Science, The Startup |180| Business | Better Marketing, The Startup, Entrepreneur's Handbook |181| Productivity | Better Humans, Personal Growth, Mind Cafe |182| Writing/Content | The Writing Cooperative, Better Marketing |183| Design | UX Collective, Bootcamp, UX Planet |184| AI/ML | Towards Data Science, Towards AI, AI in Plain English |185186## Output 3: Crosspost Note187188**File:** `medium/crosspost-note.md`189190Handle canonical URL attribution to protect SEO.191192### If content was originally published elsewhere:193- Include canonical URL import note: "Use Medium's Import tool (medium.com/p/import) to set the canonical URL to [original source]"194- Footer text: "Originally published at [source name + URL]"195- Note: Medium's import tool automatically sets `rel=canonical` to avoid duplicate content penalties196197### If this is original content:198- Note: "First published on Medium"199- Suggest the user set up a custom domain or publication for branding200- Optional: suggest crossposting TO their blog later with canonical pointing back to Medium201202### Crosspost Format203204```markdown205**Canonical source:** [Original URL or "Medium (original)"]206**Import method:** [Medium Import tool / Manual paste]207**Footer attribution:** [Text to include at bottom of article]208**SEO note:** [Canonical URL guidance]209```210211## Tone Rules212213| Do | Do NOT |214|----|--------|215| Write in first person ("I discovered", "In my experience") | Use third person or passive voice |216| Tell stories and share genuine insights | Write dry, encyclopedia-style content |217| Use conversational language with personality | Use academic jargon or corporate speak |218| Include specific numbers and evidence | Make vague, unsubstantiated claims |219| Build a narrative arc (tension, insight, resolution) | Dump information in list format only |220| Use pull quotes for visual rhythm | Write unbroken walls of text |221| Acknowledge nuance and uncertainty | Speak in absolutes without evidence |222| Write headlines that work in Google search | Write clickbait or misleading titles |223224## Output Format225226```markdown227# [Article Title]228## [Subtitle / Kicker]229230[Full article text with headers, pull quotes, and formatting]231232---233**Reading time:** ~[X] min234**Tags:** [tag1], [tag2], [tag3], [tag4], [tag5]235**Suggested publications:** [publication1], [publication2]236**Paywall recommendation:** [Yes/No + reasoning]237**Best posting time:** Tuesday-Thursday 8-10 AM238**SEO notes:** [primary keyword, secondary keywords, title optimization]239```240241## Brief Mode242243If `--brief` is active, produce only:244- Title + subtitle245- Opening 3 paragraphs (~500 words)246- 5 tags247- Skip full article, publication suggestions, and crosspost note248249## Error Handling250251| Condition | Action |252|-----------|--------|253| Fewer than 5 atoms | Write shorter article (800-1,200 words); reduce to 3 sections |254| No `stat` or `casestudy` atoms | Use narrative-driven structure; lean on `insight` and `contrarian` atoms |255| `brief_mode` is true | Generate title + subtitle + opening only (500 words) + tags |256| Content too short for full article | Frame as a "thought piece" (800 words); note shorter read time |257| Promotional content detected | Reframe as an insight story; strip product mentions, focus on lessons learned |258| Voice profile unclear | Default to conversational-authoritative; note in output header |