SpaceOrbitals Daily Newsletter Plan — 7-Day Cadence (2026-07-12)
SpaceOrbitals Daily Newsletter Plan
Effective: 2026-07-12 onward. Owner: Atlas Renner (editorial). Author: Claw on Mike's behalf.
Why a plan, why now
Three reasons.
- Mike's directive (2026-07-12 08:35 EDT): "Update to daily newsletters. Each day should be different, original, interesting, meaningful, insightful. Consider SEO and AdSense."
- The 2026-07-09 / 2026-07-10 / 2026-07-11 dailies worked. But they were undifferentiated — Atlas Renner voice, launch + news synthesis, ~1,200-1,500 words. Three issues in a row used the same shape. Readership would notice by issue four.
- The cron is Mon-Fri only. Mike is asking for daily. We need to cover Saturday + Sunday too. Options:
- (a) Extend cron expr to
0 7 *(every day) - (b) Add a new cron for weekends only
- (c) Keep Mon-Fri "Daily Tracker" + use Orbital Originals Saturday + new Sunday brief
*Decision: (a) extend expr, AND shift Daily Tracker to 0 7 , AND keep Saturday as a separate Orbital Originals slot at 9am (unchanged).** Sunday becomes a new "Weekly Read" cadence — lighter, more reflective. This gives 7 distinct shapes without overlapping the Saturday essay.
7-day content taxonomy (different, original, interesting)
| Day | Slot name | Voice | Format | Length | Angle |
|---|---|---|---|---|---|
| Mon | Daily Tracker | Atlas Renner | Week-ahead brief | 1,500w | What to watch in launches/sky this week. Atlas's editorial anchor voice. |
| Tue | Daily Tracker | Priya Raman | News synthesis | 1,500w | Top 3 space news stories of the last 24h, with sourced analysis. |
| Wed | Daily Tracker | Mira Okafor | Science focus | 1,500w | One deep research topic (paper, mission update, instrument). |
| Thu | Daily Tracker | Derek Chen | Observation focus | 1,500w | Skywatching tonight — what to see, when, where. Gear mentions OK. |
| Fri | Daily Tracker | Atlas Renner | Week recap + frame | 1,500w | What happened this week, what next week's shape looks like. |
| Sat | Orbital Originals (existing) | Atlas Renner | Long-form essay | 1,800-2,200w | Single thesis-driven essay. No launch table. Slower, more evergreen. |
| Sun | Weekly Read | Atlas Renner (1st-person reflective) | Reading roundup + commentary | 1,000-1,300w | The best space writing we read this week, with editor's note. Curation, not reporting. |
Why this is "different, original, interesting, meaningful, insightful":
- Different shapes: launch-table briefs (Mon/Fri) vs news synthesis (Tue) vs deep research (Wed) vs skywatching (Thu) vs essay (Sat) vs reading roundup (Sun). Same name on the site, different beats.
- Original: Sunday's curation format is genuinely novel for a space site — most space newsletters report; few curate.
- Interesting: Wed science-focus gives Mira a real beat, not just a voice swap.
- Meaningful: Thu skywatching gives the site a reason to exist that news aggregators don't.
- Insightful: Sat essay retains the high-leverage Atlas voice but isn't the only place it lives.
Anti-pattern guards:
- No two consecutive issues from the same voice. Current cron prompt already rotates Mon-Fri. Sunday uses Atlas (different register than Mon Atlas). Saturday Atlas is essay register; Monday Atlas is briefing register — different enough to read as distinct.
- No topic repeats across last 5 issues. Track topic tags in the MD frontmatter and grep before drafting. (cron-prompt rule, mirrors bithues directive.)
- No launch-time fabrication. (Already in skill.)
- No same lead/structure across consecutive issues. (cron-prompt rule to enforce.)
- No "bet/bets/betting" language. (Mirrors dependability forecast rule.)
- No fabricated stats / quotes. (Mirrors skill anti-fabrication rules.)
SEO + AdSense integration
SEO targets (per issue)
- Title keyword placement: lead with the most-searchable phrase. Examples:
- "Starlink launch schedule this week: 11 missions, 4 visible passes" (Mon)
- "NASA Artemis II update: new launch window, what changed" (Tue news)
- "JWST finds oldest galaxy yet — what it actually means" (Wed science)
- "Best space events to see this week: meteor shower + ISS + Venus" (Thu)
- "This week in spaceflight: 14 launches, one anomaly, one big reveal" (Fri)
- "[Editorial hook]" (Sat)
- "What to read about space this week: 7 longreads, 3 essays, 1 dispatch" (Sun)
- Description field: 1-sentence meta description with the specific number / fact / hook. 140-160 chars.
- URL slug: keyword-rich, kebab-case, no date prefix if SEO matters more than chronology. (Current convention includes date prefix — keep for traceability; slug still gets the keyword.)
- Tag taxonomy: 4-6 tags per issue. Use a stable tag set + ad-hoc tags. Stable:
launch-schedule,iss,moon,mars,jwst,artemis,spacex,rocket-lab,china-space,india-space. Ad-hoc per issue.
- Internal linking: every issue links to 2-4 site pages (articles, gear, other newsletters). Adds crawl depth + reduces orphan pages.
- External linking: every factual claim cites a source. Helps E-E-A-T signal.
AdSense integration
Current state: 3 newsletter ad slots configured (newsletter_top 9300000013, newsletter_mid 9300000014, newsletter_bottom 9300000015) — TODO placeholders, not live slots yet.
Plan:
- Wire up real AdSense slots with
pub-9312870448453345matching the existing site. - Slot positions in newsletter page template:
newsletter_top— after the lede, before the first H2newsletter_mid— after the third H2 / midway pointnewsletter_bottom— before the closing blockquote, after the last H2- Affiliate mentions: only when relevant (Amazon books about space, telescope/observation gear, mission patches). Honor bacottibot-20 affiliate tag. No forced product mentions — affiliate for relevance, not quota.
Where to land in the build pipeline
- All SEO directives go in the cron prompt (mirror bithues pattern from 2026-07-10).
- AdSense slot placement is template-level in
build.py→newsletter_top,newsletter_mid,newsletter_bottomslots at fixed positions. - Internal/external linking tracked in MD frontmatter (tags + custom
relatedarray optional).
Cron schedule changes (3 changes)
Change 1: Daily Tracker cron expr 0 7 1-5 → 0 7 1-5,7 (add Sunday)
Actually wait — Saturday is already Orbital Originals at 9am. Sunday should be at 7am too so morning email routines catch it. Let's keep Daily Tracker Mon-Fri + Sunday all at 7am, and Saturday stays Orbital Originals at 9am.
Cron expr: 0 7 1-5,7 (Mon-Fri + Sun) at 7am ET for Daily Tracker.
Change 2: Add new "Weekly Read" Sunday morning brief at 7am ET (same time, separate cron)
Actually simpler: extend Daily Tracker to include Sunday at 7am ET, and the cron prompt uses the new 7-day taxonomy. Saturday stays Orbital Originals at 9am.
*Decision: ONE cron (Daily Tracker), expr 0 7 1-5,7 (Mon-Fri + Sun), prompt switches tone by day-of-week. Saturday is separate (Orbital Originals).*
Change 3: Topic-bank file
Create projects/spaceorbitals/content/newsletters/_topic-bank.md with 4-week rotation of:
- (day-of-week) → suggested topic
- (day-of-week) → suggested voice angle
- (day-of-week) → suggested anchor source
Cron subagent reads this on each run to avoid topic repeats. Updated weekly by a new cron (separate, optional).
Cron prompt updates
Inline-enforce (mirroring bithues 2026-07-10):
- Read SKILL.md first.
- Read PLAN-2026-07-12-daily-cadence.md (this file).
- Read _topic-bank.md for today's suggested angle.
- Detect day-of-week via
python3 -c "import datetime; print(datetime.datetime.now(pytz.timezone('America/New_York')).strftime('%a'))"— DO NOT hardcode. - Apply taxonomy mapping (Mon Atlas week-ahead / Tue Priya news / Wed Mira science / Thu Derek observation / Fri Atlas week-recap / Sun Atlas weekly-read).
- Topic-repetition check:
greplast 5 newsletters for title keywords + lead-1st-sentence; skip if duplicate. - SEO: keyword-rich title, 140-160 char description, 4-6 tags, internal links to 2-4 site pages.
- AdSense: ensure 3 slots visible in page template (newsletter_top/mid/bottom at fixed positions).
- Anti-patterns #33, #34 (literal asterisks in
, raw pipe in). - 18-step proofread pass before build.py.
- Build → wrangler deploy → wait 30s → curl live → GSC re-submit.
- Output format block at end of run (mirrors dependability cron).
File layout changes
projects/spaceorbitals/content/newsletters/
├── _README.md # existing
├── _topic-bank.md # NEW: 4-week rotation
├── PLAN-2026-07-12-daily-cadence.md # NEW: this file
├── 2026-06-27-... # existing originals
├── 2026-07-09-... # existing dailies
├── 2026-07-10-...
├── 2026-07-11-...
├── proofread_2026-07-11.log # existing
├── proofread_daily_2026-07-09.log
├── proofread_daily_2026-07-10.log
└── [future daily MDs]
Implementation order (this session)
- ✅ Plan written (this file).
- ⏳ Update cron expr to
0 7 1-5,7(Mon-Fri + Sun). - ⏳ Rewrite cron prompt with new taxonomy + SEO/AdSense directives (with backup).
- ⏳ Write
_topic-bank.mdwith 4-week rotation. - ⏳ Update SKILL.md to reference the new cadence (so future subagent sees it).
- ⏳ Wire AdSense slots into
build.pynewsletter template at 3 positions. - ⏳ Test-fire today's Sun 2026-07-12 "Weekly Read" issue.
- ⏳ Verify live: curl, anti-pattern scan, AdSense slot check.
Open questions for Mike
- Should Sunday be 7am ET or 9am ET? Cron currently runs at 7am. 9am might suit "weekly read" cadence better — more reflective, less "morning briefing." My recommendation: 7am so it lands in the same email-routine slot as the weekday dailies.
- Should "Weekly Read" be light on ads or no ads? My recommendation: 1 ad slot max (top only) — it's a curation piece, not a money page. Mirrors bithues Sun "Short Story Sunday" pattern (no affiliate links).
- Should we add a daily Twitter/X thread for each issue? Out of scope for this plan. Existing X workflow handles Orbital Originals; Daily Tracker is currently silent on X. Recommend separate decision.
- Should the topic-bank be human-curated weekly, or auto-rotated by a cron? Recommend human-curated initially — the cron subagent can flag topic conflicts but the bank itself should be intentional. Mike's editorial judgement, not algorithm.
Sources / lessons applied
- Bithues newsletter "Bible" (2026-07-10): topic rotation, no-book-repeats, length floors, originality test → applied here as "no-issue-repeats" + length floors per day-of-week.
- Cron content quality gate (2026-07-10): inline-enforced gates in cron prompt → applied here.
- Atlas Renner persona doctrine: voice rotation Mon-Fri already in skill, extended to 7 days.
- Anti-patterns #33, #34 (literal asterisks, raw pipe text) → wired into gate.
- 18-step proofread pass → unchanged.
Update notes
- 2026-07-12: Initial plan written. Topic bank TBD.