How it works
A launchd job on my Mac wakes a headless Playwright browser, opens the saved-posts feed with my own session and stores anything new in SQLite. Missed runs catch up on the next wake.
New posts go to Claude Sonnet, which writes the daily Markdown report: key themes, must-act items, a quick-reference table. It arrives by email and as a WhatsApp heads-up.
Posts worth a deeper look become research candidates. One reply on WhatsApp, or a button in the book, runs Claude Code headless: it clones the repo read-only, reads the articles and writes RESEARCH.md, TRIAL.md and ARTICLE.md into a folder.
Claude Opus proposed the taxonomy from a digest of every post and tagged each one with a title, a takeaway, chapters, tools and a kind. One build renders a single HTML file with no dependencies that is the book.
Screenshots






What the book does
- Internal links everywhere. Chapters, posts, authors, tools, daily reports and research items all link to each other; search is one keystroke away.
- Notes, plans, tags and stars on every page. Markdown notes autosave, plans live on a board, custom tags get their own pages, stars pin things to the sidebar. State is one JSON file that survives rebuilds.
- Research from the page. A post without a research candidate gets one created from its tags and links, the run happens in the background, and the book re-renders itself when it finishes.
- Plans become Claude Code sessions. The plan, its linked posts and research, and my notes are written to a brief, and a Terminal opens with Claude Code reading it.
- Incremental and cheap. Only new posts are tagged on the daily build; the one-off pass over the whole archive cost a few dollars.
Built with Python (Playwright, Typer, SQLite, the Anthropic SDK), the Claude Code CLI, macOS launchd, and a single hand-written HTML file with vanilla JavaScript for the book. It reads my own LinkedIn account, so it is not hosted anywhere; this page is the showcase.