Crawl and summarize newsletter posts from Nonzero and the NZN Network.
When Invoked
1. Ask what to summarize
If the user provides args (e.g. /nznet nonzero 30d), skip asking.
Otherwise, read ~/Documents/Projects/Nonzero/nzn-network.md and print a numbered list of all newsletters as plain text:
Which newsletter(s)? Reply with numbers (e.g. "1", "1,3,5", or "all")
1. Nonzero (Robert Wright)
2. Small Potatoes (Paul Bloom)
3. Foreign Exchanges
...etc (full list from nzn-network.md)
Time period? (e.g. 7d, 14d, 30d, or a date range)
Do NOT use AskUserQuestion — just print the list and wait for the user to type their selection. Parse their reply (numbers, comma-separated, or "all") and the period.
2. Crawl the archive
For each selected newsletter:
- Open the archive page via agent-browser with the Substack profile:
agent-browser close agent-browser --profile ~/.agent-browser/substack open "<url>/archive" - Extract post URLs and dates from the archive HTML (grep for
hrefanddatetimeattributes). - Filter to posts within the requested time period.
3. Read posts
ALWAYS use agent-browser. NEVER use WebFetch. Agent-browser has Nikita's paid Substack login and returns the actual article text, not an AI summary. WebFetch has no auth and produces lossy summaries.
For each post, sequentially:
1. agent-browser close (if needed)
2. agent-browser --profile ~/.agent-browser/substack open "<post-url>"
3. agent-browser get text "article" to extract the text
Access tracking: Mark each post with one of:
- [full] — got the complete article text
- [free preview] — hit a paywall, only got the preview text above it
- [title only] — only title and date available (no content extracted)
Always include these markers so the user knows exactly what was read vs. inferred.
4. Present results (three-step flow)
Step A — One-line index. List every post from every newsletter, grouped by newsletter. Each entry is one substantive full sentence describing the post's argument or content. Consistent depth — no post gets a paragraph, no post gets a fragment. Include the access marker.
Step B — Bob's highlights. Flag which posts seem most relevant to Nonzero's territory (AI, foreign policy, tribalism, cognitive bias, meditation/mindfulness, evolution of cooperation). Briefly say why each is relevant. This helps Nikita decide what to surface to Bob.
Step C — Ask. Ask if the user wants fuller summaries of any specific items, or wants to save as-is.
5. Save
When the user is ready, save to ~/Documents/Projects/Nonzero/summaries/{date}-{newsletter-slug}-{period}.md
Access Notes
- agent-browser profile:
~/.agent-browser/substack(Nikita's Substack login) ~/Documents/Projects/Nonzero/nzn-network.mdtracks which newsletters have full paid access vs. free preview only- Auto-update access status: If a post hits a paywall on a newsletter marked
fullin nzn-network.md, update it tofree preview only. If access works on one markedfree preview only, update it tofull. This keeps the file current across runs. - If agent-browser cookies expire (you get logged out), tell the user to re-login:
agent-browser --headed --profile ~/.agent-browser/substack open "https://substack.com/sign-in"
Tone
Informational. Neutral summaries that capture Bob's arguments faithfully without editorializing.
$ARGUMENTS