OpenEd Weekly Newsletter Writer
Creates Friday digest newsletters synthesizing the week's content into six distinct newsletter sections, plus a bonus Phase 4 for creating Ed's Roundup Twitter thread strategy.
Content Engine Philosophy
This skill is part of a living system. Every time we run this workflow, we should be:
Tightening - Finding friction points and removing them. If something takes too long or requires too many steps, note it for skill improvement.
Connecting - Looking for ways to involve other skills without adding friction:
-
After drafting → newsletter-to-social for social spokes
-
After identifying quotes → nearbound check for tagging
-
After completion → outreach-email-draft for featured creators
-
Quality concerns → quality-loop for review
Evolving - When we discover better patterns mid-workflow, ask permission to update this skill in real-time. The skill should encode what we learn.
Proactive - After completing the newsletter, automatically offer:
-
Social post generation (6-9 posts)
-
Ed's Roundup Twitter thread
-
Outreach emails to featured creators
-
HubSpot draft export
The goal: Each run makes the next run better. Skills are energetic pathways - the more we use them, the sharper they get.
Not for: Monday-Thursday daily newsletters (use opened-daily-newsletter-writer ).
Requirements: Flexible length (typically 1,500-2,500 words) • NO EMOJIS in body • Pirate Wires-influenced voice • All external links include source attribution in parentheses
Formatting Rules (Critical)
Images Above Titles
Thumbnail/header images ALWAYS go ABOVE the H1 section title, not below it:
Section Title Here
H1 for All Sections
Section titles use # (H1), not ## (H2). This applies to: Featured Podcast, Deep Dive, Trends, Tools, From the Community, Ed's Stable.
Opening Letter Has No Header
The opening letter starts immediately after the frontmatter - no ## OPENING LETTER header, no dividing line before it. Just launch into the content.
Include Links Early in Opening Letter
Include links to the podcast episode and deep dive article inline in the opening letter. Many readers won't scroll past the opening - give them the links up front.
Source Attribution Format
Put the source in italics right after the link, before the description:
Compelling Headline (Source Name) - Short teasing description.
NOT at the end of the paragraph: ...description. (Source Name)
Link Text = Compelling Headlines
Never just copy the article's actual title for link text. Write a compelling, curiosity-driven headline. Think: what would make someone stop scrolling? MFM energy - tease the value, open a loop.
Good: Why your kid struggles with algebra (it started in 3rd grade)
Bad: Test Results Reveal a Deeper Issue in Math
Good: This school finishes all academics by 10am
Bad: Alpha School Students Finish Academics in 2 Hours
Best Links Format (McGarry Style)
The links section uses a single H1 (# Best Links ) with H3 subheaders (### Trends , ### Tools ). One uniform format for all items:
Curiosity-provoking sentence that earns the click. (Source Name)
Where Source Name is the only hyperlink. The description text is plain - no bold, no italics. The source name is hyperlinked in parentheses at the end.
In markdown:
The richest school in DC just told 8th graders: no more novels. (Education Next)
Your kid knows the material. Here's why they freeze on tests. (Raising Lifelong Learners)
Key principles (from Matt McGarry):
-
The sentence should provoke curiosity, not summarize the article. Leave something out. Tease the value.
-
Don't give away the plot - earn the click.
-
One sentence is ideal. Two max if the second adds essential context.
-
Source name is always the hyperlink, never the description text.
-
No bold, no italics, no formatting on the description. Clean and scannable.
McGarry reference examples (for flavor - our headers/content differ, but the link format is the model):
BEST LINKS My favorite finds
📈 Growth Simple AI prompt to turn your newsletter into viral LinkedIn posts (LinkedIn) Colin and Samir: How TBPN built the luxury brand of the creator economy (podcast and article)
💰 Revenue How Caleb Hammer makes $780k per month (Substack) How to best utilize beehiiv's new dynamic content feature (YouTube) How to go from getting paid as an affiliate to a flat fee sponsorship model (YouTube)
👀 ICYMI The fastest way to make an extra $10k+ from your email list this week (GrowLetter)
🗞️ Industry News Google says it's fixed Gmail issues with spam and misclassification (TechCrunch)
Note the pattern: every item is a single curiosity-driven sentence, and the source name in parens is the only link. No bold. No italics. No description paragraphs. Just the sentence and the source. Our version uses the same format but with ### Trends and ### Tools as H3 subheaders (no emojis).
Community subsection is optional - include only when there are standout community voices worth featuring. Use the same format.
Workflow
Phase 1: Gather & Organize Source Material
IMPORTANT EFFICIENCY NOTE: When the user provides source material directly (copy-pasted content, transcripts, links), DO NOT regenerate it token-by-token. Instead:
-
Ask the user to create the Source_Material.md file themselves by copy-paste
-
OR use Read tool if they've already created it
-
OR acknowledge what they've provided and move directly to Phase 2
Only create/write source material files when:
-
User asks you to organize scattered notes
-
User needs help structuring raw data
-
Content requires significant reorganization
Collect from the week:
-
Opening letter context (timely announcements, promotions, deadlines)
-
Deep Dive article with full text and author info
-
Deep Dive Podcast episode transcript or description
-
Additional curated links, tools, and other resources
If creating Source_Material.md , include:
-
All URLs, descriptions, and key quotes
-
Author names and titles
-
Statistics and data points
-
Engagement context (why this content matters)
-
Names and Twitter handles of people/organizations mentioned (for Phase 4 Twitter thread)
Phase 2: Draft Opening Letter
No header. The opening letter starts right after frontmatter - no ## OPENING LETTER , no divider.
Create opening section that:
-
Opens with greeting ("Happy Friday!" or similar)
-
Names the 1-2 conversations/stories that define this week
-
Includes inline links to the podcast and deep dive early (many readers won't scroll)
-
Connects the week's content with a through-line (what ties it all together?)
-
Keeps it conversational and specific - name people, reference moments
-
Signs off: "- Charlie (the OpenEd newsletter guy)"
Opening Letter Example Structure:
-
Greeting
-
Name the week's lead story with link (podcast, deep dive, or both)
-
Name the second story with link
-
One sentence connecting them (the through-line)
-
"That's the thread this week."
-
Charlie signature
Phase 3: Draft All Remaining Newsletter Sections
Create Weekly_Newsletter_Draft.md with six sections:
Featured Podcast (image above title)
Compelling Title for the Episode
-
By [Author Name] byline below title
-
Brief setup, then the story
-
One compelling moment or key insight
-
2-3 direct quotes from transcript
-
Honest criticisms or nuance (shows we're not cheerleading)
-
Link to listen + link to read: Listen | Read the write-up
Deep Dive (image above title)
Compelling Title for the Article
-
3-4 paragraphs, narrative style
-
Hook with compelling angle
-
Include key data point(s) or memorable quote
-
End with link: Read the full deep dive
Best Links (consolidated section with H3 subheaders, McGarry format)
Best Links
Our favorite finds from this week.
Trends
The richest school in DC just told 8th graders: no more novels. (Education Next)
This school finishes all academics by 10am. (Michael B. Horn)
Tools
Your kid knows the material. Here's why they freeze on tests. (Raising Lifelong Learners)
A homeschool mom just did a frog dissection with her 6th grader in rural Hawaii. The comments are full of curriculum tips. (r/homeschool)
-
Trends
: 4-6 items. Curiosity-provoking sentence + hyperlinked source in parens.
-
Tools
: 6-10 items. Same format. Sentence + source. One extra sentence OK if it adds real context.
-
Community
(optional): Only include if there are standout community voices. Same format.
Ed's Stable
-
Closing synthesis that ties the week's through-line together
-
Can reference social media posts, carousels, or Facebook content from the week
-
Close with the question or idea that connects everything
-
Include links to blog + podcast at the bottom
Closing:
That's all for this week!
- Charlie (the OpenEd newsletter guy)
P.S. Link to manage email preferences
Phase 4: Create Ed's Roundup Twitter Thread Strategy
NEW PHASE: Create Twitter_Thread_Roundup.md (or Twitter_Thread_Roundup_V2.md if iterating)
This phase creates a multi-tweet thread that recaps the week's key stories and creators featured in the newsletter.
Step 1: Identify All Twitter Handles
-
Create a comprehensive list of every person/organization mentioned in the newsletter
-
Search Twitter/X for each to find active accounts and verify handles
-
Prioritize people who are:
-
Featured guests (podcasters, experts)
-
Content creators referenced (Austin Scholar, Adam Savage, Henrik Wes, etc.)
-
Organizations mentioned (LearningRx, Simply Charlotte Mason, etc.)
-
Format as: @handle (Name/Organization) - [brief context]
Step 2: Research Active Accounts
-
For each identified person/org, verify:
-
Do they have a Twitter account?
-
Is it active (posted in last 30 days)?
-
Should they be tagged in the thread?
-
Document in the Twitter thread file which handles are taggable
Step 3: Draft Twitter Thread
Opening Tweet (Hook):
-
Opens with brand identity: "Ed's Roundup: The most clicked education links from this week"
-
Or: "Here's what 10K+ readers of OpenEd Weekly are paying attention to"
-
States number of creators: "13 creators. 1 thread."
-
Includes emoji (horse/roundup theme): 🪶 or 🐴
-
Clear call to action: "(thread)"
Creator Tweets (One per major theme/person):
-
Feature person's name: @handle
-
Their contribution/insight (1 sentence max)
-
Direct quote if available
-
Link to their content or OpenEd's content about them
-
Use proven tweet structures: Direct Quote, Problem Recognition, Data Point, Contrarian Take, Observation Post
Closing Tweets:
-
Wrap-up tweet with CTA to OpenEd Daily/Weekly
-
Engagement tweet asking readers to reply with their favorite creators
Format Examples:
Tweet with direct quote:
"When we teach science as memorization, we're missing the point."
— @AdamSavage (MythBusters)
That quote started a conversation about why wonder matters more than worksheets.
Full deep dive: https://opened.co/blog/best-homeschool-science-curriculum
Tweet with problem/insight:
The reason your kid won't listen when you yell?
It's not defiance. It's neurology.
Dr. Amy Moore explains auditory exclusion: https://opened.co/blog/why-your-adhd-kid-wont-listen-its-not-what-you-think
Tweet with data:
1.5M students are now in microschools.
That's the same as Catholic schools.
Same enrollment. Different satisfaction rates.
@rebeleducator mapped it: [URL]
Reference Guide: See references/eds-roundup-example.md for complete real-world example from Nov 14, 2025 newsletter
Phase 5: Integrate Source Attributions
As sections are drafted, embed source attributions directly in the newsletter text. No separate URL_Mappings.md file needed.
Attribution Style: Mention the source by name EARLY in the blurb with a hyperlink woven naturally into the text. Avoid parenthetical citations at the end.
-
Good: "A Reddit mom of five shares her hard-won advice..."
-
Good: "New EdChoice polling found overwhelming support..."
-
Good: "A Penn Foster survey reported by USA Today found..."
-
Avoid: "...bouncing around opens you to gaps. (Reddit)"
-
Avoid: "...found overwhelming support for teaching debate. (EdChoice)"
The goal is conversational flow, not academic citation style.
Hyperlinking Rules: When provided a link, always hyperlink it in the body of the text (never at the end). Link the main action or subject using only 2-3 key words max.
Good: "Ken Danford has been running North Star since 1996..." Bad: "Ken Danford has been running North Star, a physical community center where teens can legally homeschool"
When multiple sources are provided with body text to reference, hyperlink ALL links where the referenced content is used. Don't let any provided link go unhyperlinked.
Phase 6: QA & Finalization
Quality Checklist:
-
NO EMOJIS in newsletter body text (OK in Twitter thread)
-
All external links include source attribution
-
Deep Dive article is compelling (not just a summary)
-
Podcast highlight is one moment, not overview
-
Trends section is data-driven with sources
-
Tools section leads with benefit, not features
-
Ed's Stable reflects actual brand moments
-
All links are verified and working
-
No duplicate content between sections
-
Pirate Wires tone consistent throughout
-
Opening letter includes all key announcements
-
Twitter thread handles are verified and active
Archive:
cp [working-folder]/Weekly_Newsletter_DRAFT.md [archive-folder]/[YYYY-MM-DD]-newsletter-final.md cp [working-folder]/Social_Media.md [archive-folder]/[YYYY-MM-DD]-social-media.md cp [working-folder]/X_Article_Format.md [archive-folder]/[YYYY-MM-DD]-x-article.md
Reference Files
Each section of the newsletter has an example reference file with the actual format, real examples from a published newsletter, and specific instructions for writing that section:
-
Opening Letter Example - How to write warm, inclusive openings with clear CTAs
-
Deep Dive Example - Third-person teaser format that makes readers curious
-
Podcast Highlight Example - One compelling moment with quotes
-
Trends We're Following Example - Data-driven stories with source attribution
-
Tools We're Bookmarking Example - Benefit-first descriptions with sequential ordering
-
Ed's Stable Example - Social media highlights and brand moments
-
Ed's Roundup Twitter Thread Example - Complete Twitter thread with all creators tagged
Key Distinctions
Weekly vs Daily:
-
Daily: 500-800 words, 1 each Trend/Tool, shorter sections
-
Weekly: 1,500-2,500 words, 4-6 Trends, 10-15 Tools, deeper analysis
Newsletter Structure:
-
Opening Letter
-
Deep Dive Article (Wed article)
-
Podcast Highlight (Thu episode - one moment) — OPTIONAL: skip if no episode that week
-
Trends We're Following (data-driven stories, 4-5 items)
-
Tools We're Bookmarking (resources, curricula, 6-10 items, max 1 Reddit)
-
Ed's Stable (brand moments, social highlights, engagement ask)
Social Media Outputs (Phase 4):
-
Social_Media.md (handles table, X thread, single posts)
-
X_Article_Format.md (long-form article for X)
What's Removed:
-
"Listen for the Listeners" (too redundant with Trends)
-
"Reddit Corner" (content integrated into other sections as relevant)
-
"Parting Thought" (function now served by Ed's Stable closing)
Critical Reminders
❌ NO EMOJIS in newsletter body ❌ Don't skip Phase 1 (source material gathering) ❌ Deep Dive = Wed article ONLY (not podcast) ❌ Trends must have data ❌ No duplicate content between sections ❌ Twitter handles must be verified before tagging (never guess) ❌ No parenthetical attributions — weave source names early with hyperlinks ❌ Max ONE Reddit post in Tools section
✅ 1,500-2,500 words for newsletter ✅ Humanize stats with context ✅ Benefit-first approach for tools ✅ Create Social_Media.md with handles table, thread, single posts ✅ Create X_Article_Format.md for long-form posting ✅ Archive newsletter, social media, AND X article files
Phase 4: Social Media Protocol (UPDATED)
Create Social_Media.md with the following sections:
4.1 Verified Handles Table
Search and verify X/Twitter handles for all people and organizations mentioned in the newsletter. Document in a table:
Person/Org Handle Context Tag in thread?
[Name] @handle [Role/quote] ✅ or ❌
Note which are Instagram-only or Substack-only (no Twitter).
4.2 X Thread (8-12 tweets)
Structure:
-
Hook tweet — List the main topics, end with "Thread 👇"
-
Feature tweets — One per key person/insight, tag them directly
-
CTA tweet — Links to newsletter, deep dive, subscribe
Tweet formats that work:
-
Direct quote + attribution + link
-
Contrarian observation + source
-
Data point + implication
-
"Meanwhile, @handle shared this..."
4.3 Single-Post Options (2-3 standalone posts)
Create 2-3 self-contained posts that can go out independently:
-
Best for viral potential (contrarian takes, surprising data)
-
Don't require the full thread context
-
Can be scheduled throughout the weekend
4.4 X Article Format
Create X_Article_Format.md — the full newsletter reformatted for X's long-form Articles feature:
-
Remove markdown formatting that doesn't render
-
Add @ mentions inline where people are quoted
-
Keep section headers
-
Ensure all links are full URLs
Expected Output Files:
[working-folder]/ ├── Weekly_Newsletter_DRAFT.md ├── Social_Media.md # Handles + thread + single posts └── X_Article_Format.md # Long-form X Article version
Success Metrics:
-
All mentioned creators identified with verified handles
-
Thread tags real, active accounts (not guessed)
-
Single posts have standalone viral potential
-
X Article is copy-paste ready
Related Skills
-
hook-and-headline-writing
-
For generating newsletter subject lines
-
social-content-creation
-
For repurposing newsletter sections into individual posts
-
video-caption-creation
-
For creating captions for clips featured in newsletter
HubSpot Publishing
The Golden Rule
Never manually edit content in HubSpot's WYSIWYG editor after pushing. The editor destroys inline styles that email clients require.
What HubSpot's Editor Breaks
What You Do What Breaks
Drag/resize an image Sets arbitrary width, strips !important , loses centering
Move image near a heading Wraps image inside <h1> or <strong> tags
Add a link to an image Strips image style attribute
Type or paste text Injects , may strip !important from nearby elements
Bold/italic via toolbar Creates orphan <span style="font-weight: bold;"> instead of <strong>
Delete and retype Loses the paragraph's inline style entirely
Correct Workflow
- Write/edit in markdown (opened-weekly-YYYY-MM-DD-draft.md)
- Run push_to_hubspot.py → creates new HubSpot clone each time
- Preview in HubSpot (Send Test Email)
- If changes needed: edit the MARKDOWN, re-push, delete old draft
- NEVER touch the WYSIWYG editor
Push Script Location
Each week's folder: Studio/OpenEd Weekly/YYYY-MM-DD/push_to_hubspot.py
Copy from previous week and update the draft filename. The script:
-
Loads HUBSPOT_API_KEY from OpenEd Vault/.env via python-dotenv
-
Reads subject/preview from YAML frontmatter
-
Clones template email ID 206886611767 (Gatto Version C)
-
Converts markdown to inline-styled HTML
-
Handles: paragraphs, H1-H3, links, images, linked images (
), bullet lists, bold, italic, HRs
Markdown Conventions for Email
-
→ centered image at 600px
-
Upload images to HubSpot Files first, use the fs1.hubspotusercontent URL
-
Reuse images from dailies: When the weekly covers stories already featured in Mon-Thu dailies, pull the same thumbnail/header images from those emails (check the daily's push_to_hubspot.py or patch-*.py scripts for the URLs). Don't regenerate.
-
- Charlie → renders as - Charlie (escaped dash for signatures)
-
Frontmatter subject: and preview: fields get extracted automatically
Version History
v2.1 (2026-01-09): Social & Attribution Update
-
Attribution style changed: Source name early with hyperlink woven into text (not parenthetical at end)
-
Phase 4 expanded: Now includes X Article format, single-post options, handles verification table
-
Output files: Now creates Social_Media.md AND X_Article_Format.md
-
Tools section: Max ONE Reddit post per newsletter; 6-10 tools (down from 10-15)
-
Podcast section: Now optional (skip if no episode that week)
v2.0 (2025-11-14): MAJOR UPDATE
-
Simplified from 8 sections to 6 newsletter sections
-
Headers updated: "Trends We're Following" (not "What's Moving")
-
Headers updated: "Ed's Stable" (not "Parting Thought")
-
Removed: "Listen for the Listeners" and "Reddit Corner" (redundant)
-
ADDED: Phase 4 Twitter Thread Strategy ("Ed's Roundup")
-
Added comprehensive Twitter handle verification process
-
Added tweet structure examples and reference guide
v1.0 (Previous): Original 8-section structure with separate Podcast Corner and Reddit Corner
For detailed examples of the current structure, see the reference files folder and the Nov 14, 2025 newsletter implementation.