Adds step 8 ("Publish to Ghost") so the skill no longer stops at "file
saved to disk" — generating and publishing are one workflow, not two.
Replaces the speculative "Future: Publishing via Ghost Admin API"
section with the operational contract for the now-existing
publish_to_ghost.py script. Updates the slug reference in prose to
match the script (default-newsletter), adds Robotics to the trigger
list, and fixes a stray quote on the robotics/ table row.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
8.6 KiB
| name | description | version |
|---|---|---|
| weekly-review | Use this skill when the user asks to generate a "weekly review", create a "review article", run the "weekly review" process, or mentions generating content for AI, Intelligence Augmentation, Longevity, Resource Abundance, Energy, Space, or Robotics on their scheduled days. The skill generates the article AND publishes it to Ghost — publishing is part of the skill, not a separate step the user must request. | 1.4.4 |
Weekly Review Article Generator
Generate weekly review articles covering the best 10 items from the past week in each subject area.
Schedule
| Day | Subject | Directory |
|---|---|---|
| Monday | AI | ai/ |
| Tuesday | Intelligence Augmentation | intelligence-augmentation/ |
| Wednesday | Longevity | longevity/ |
| Thursday | Resource Abundance | resource-abundance/ |
| Friday | Energy | energy/ |
| Saturday | Space | space/ |
| Sunday | Robotics | robotics/ |
Process
-
Determine the subject
- Use the current day of week to select from the schedule
- If Sunday, ask the user which subject to generate
- User may override by specifying a subject
-
Read subject-specific guidance
- Read
<subject-directory>/SUBJECT.mdfor search terms, priority sources, and emphasis areas
- Read
-
Research the past week (be efficient)
- Run 3-4 WebSearches in parallel using search terms from SUBJECT.md
- Cover the 7 days ending yesterday
- WebSearch summaries contain substantial detail—use them directly
- Do NOT run additional broad search rounds; 3-4 searches is sufficient
- EXCEPTION: targeted source-upgrade searches in step 4 are allowed and expected
-
Select the best 10 items
Selection criteria:
- Future and technology positive framing
- College graduate sophistication (substantive, not dumbed down)
- Lay interest appropriate (accessible to educated non-specialists)
- Importance OR novelty to the field
Source quality rubric — apply to each candidate before writing:
Tier Examples Use? A Peer-reviewed journals, university press releases, government/IGO bodies, primary company announcements Use freely B Established trade press (Nature News, Reuters, IEEE Spectrum, Ars Technica, sector-specific tier-1) Use freely C Investment newsletters, aggregators, Wikipedia-style summaries, WordPress/Medium blogs, SEO content farms Upgrade or drop — never the sole source D Press-release reprint sites, unattributed "news" domains, content matching the pattern /blogs/<slug>Do not use For any candidate item whose best available source is Tier C or D:
- Run ONE targeted search for a primary or trade-press version of the same story (e.g., the university's press office, the company's newsroom, the government portal, the journal's DOI page)
- If a Tier A or B source is found, use it
- If not, drop the item and select the next-best candidate from the search pool
URL sanity check — reject any URL that is:
- A journal or publisher homepage rather than a specific article — e.g.
pubs.acs.org/journal/<slug>with no article ID - A tag, category, or archive page rather than the specific item
- A domain that does not match the "Publication Name" in the citation
-
Write from search summaries
- Search result summaries contain enough detail for 3-5 paragraph synopses
- Only use WebFetch for 2-3 items max where critical detail is missing
- Skip any WebFetch that fails (403, paywall, etc.)—do not retry
- Omit images rather than searching for them; include only if URL is in search results
- Every specific statistic, dollar figure, or named claim must be traceable to the item's cited source — do not import figures from search snippets that aren't among the 10 selected items
-
Write the article
Subject display names — use these exact capitalizations in filenames, H1, and the published title:
Directory Display Name ai/AI intelligence-augmentation/Intelligence Augmentation longevity/Longevity resource-abundance/Resource Abundance energy/Energy space/Space robotics/Robotics Filename:
<subject-directory>/<Display Name> Weekly Review <End Date>.md<End Date>is ISO formatYYYY-MM-DD- Spaces in filenames are intentional — do not substitute hyphens or underscores
- Example:
ai/AI Weekly Review 2026-03-09.md - Example:
resource-abundance/Resource Abundance Weekly Review 2026-04-23.md
The H1 at the top of the article must match the filename (minus the
.mdextension). When publishing via the Ghost Admin API, pass this same string as thetitlefield in the POST body — Ghost requirestitleexplicitly and does not derive it from the filename or first H1, so keeping all three identical means one source of truth.Week In Review discipline: the synthesis paragraphs may ONLY reference the 10 selected items. If a theme needs an 11th example to hold together, reconsider item selection rather than citing an unselected source in the synthesis.
Format:
# <Display Name> Weekly Review <End Date>
## Week In Review
[2-4 paragraphs synthesizing the week's themes and interconnections]
References to articles use format: [Article Title](url), linking ONLY to items in the "Items" section below.
Explain how the items relate to each other and their collective significance to the field.
## Items
### [Item Title]

[3-5 paragraphs - accessible but substantive synopsis]
Source: [Publication Name](url)
---
[Repeat for all 10 items]
-
Save the article
- Write to the appropriate subject directory
-
Publish to Ghost — run the script described in "Publish via Ghost Admin API" below. This step is not optional. Do not ask the user for confirmation; do not stop after step 7. The skill is not complete until the script has exited successfully. If the script exits non-zero, report the error to the user; otherwise report the published URL.
Writing Style
- Substantive and informative
- Accessible to educated generalists
- No hype or clickbait framing
- Optimistic but grounded tone
- Connect items to broader trends and implications
- When a claim depends on a specific number or date, attribute it to a source rather than presenting it as established fact
Publish via Ghost Admin API
Publishing is handled by publish_to_ghost.py in this skill directory. It mints a short-lived JWT from the Ghost Admin API key (returned by pass show fulfillment/api-key in id:secret form), strips the leading H1 from the article, converts the rest to HTML with pandoc, and runs Ghost's required two-step draft-then-publish flow so the newsletter email is sent.
Invoke it with the article path:
python3 <skill-dir>/publish_to_ghost.py <subject-directory>/<article.md>
The newsletter slug (default-newsletter) is a constant at the top of the script. There is one newsletter for the whole publication. If you ever split into per-subject or per-section-frame newsletters, change NEWSLETTER_SLUG in the script — or promote it back to a CLI argument and add a per-subject mapping here.
Pipeline invariants the script enforces:
- The filename stem becomes the Ghost
titlefield. The first H1 of the markdown is the same string, duplicated for local readability, and is stripped before HTML conversion so Ghost doesn't render the title twice. - Draft-then-publish is required to trigger newsletter send. A single POST with
status: "published"silently publishes without emailing. email_only: trueis deliberately NOT set — weekly reviews appear on both the blog and in email.
The script exits non-zero with the HTTP body on any API failure.