Adding a new content type to my blog-to-newsletter tool
Simon Willison built a short, three-line AI prompt that successfully extended his custom blog-to-newsletter tool to support a new content category called "beats." This matters because it demonstrates how developers can use agentic AI patterns to handle real software engineering t...
Simon Willison, writing on his personal weblog at simonwillison.net, documented a practical example of what he calls agentic engineering patterns, showing how a compact AI prompt sent to Claude Code handled a non-trivial software task from start to finish. The post, part of his ongoing guides series, walks through exactly how he extended his blog-to-newsletter tool to support a new content type he introduced to his blog on February 20, 2026. The result is a tight case study in how developers are rethinking the way they interact with AI coding tools.
Why This Matters
Most AI coding demos are either toy problems or vague hand-waving about productivity gains. Willison's example is neither. He ran a three-line prompt against a repository containing more than 200 HTML apps, and the agent correctly identified which file to modify, cloned a second repository for architectural context, spun up a local server, and validated its own output against a live website. That is not autocomplete. That is an autonomous engineering workflow, and it worked on the first shot. Developers building on top of tools like Claude Code should pay close attention, because this shows the bar for "agent-ready" tasks has moved considerably higher than most people realize.
Daily briefing from 50+ sources. Free, 5-minute read.
The Full Story
Willison runs a free Substack newsletter roughly once per week, but he does not treat Substack as a primary publishing platform. Instead, he uses it purely as an email delivery mechanism for his blog at simonwillison.net, keeping his blog as the single authoritative source for everything he writes. To make that work without copy-pasting content manually every week, he built a custom tool called blog-to-newsletter, an HTML and JavaScript application that pulls his latest content from a Datasette instance running at datasette.simonwillison.net, formats everything as rich text HTML, and puts it on the clipboard ready to paste into Substack. He originally documented this system in an April 2023 post.
In February 2026, Willison added a new content category to his blog called "beats." The beats category was designed to capture things he publishes or creates outside the blog itself, including releases of his open source projects, new browser-based tools he has built, and museum visits logged on his side project niche-museums.com. Beats are automatically imported from multiple sources, which means many of them are low-signal entries, like a minor bug-fix release for a smaller project. To make them newsletter-worthy, Willison built in the ability to attach an additional description to individual beats, and he wanted those described beats included in the generated newsletter output.
Rather than manually digging into the blog-to-newsletter codebase and writing the new logic himself, Willison wrote a single prompt and sent it to Claude Code running in the web interface. The prompt had three instructions. First, clone the simonw/simonwillisonblog repository from GitHub into the /tmp directory for reference. Second, update blog-to-newsletter.html to include beats that have descriptions, modeled on how the blog's Atom "everything" feed already handles that content type. Third, run a local Python HTTP server and use a tool called rodney to test the output, then compare what the newsletter generates against what actually appears on the homepage of simonwillison.net.
The clone-to-/tmp instruction is a deliberate pattern Willison uses regularly. By directing the agent to clone reference code into a temporary directory rather than the working directory, he prevents the agent from accidentally committing that reference material as part of the pull request later. It is a small but precise guard against a common agentic failure mode, and it highlights the kind of prompt craftsmanship that separates working agentic workflows from chaotic ones. The agent used the simonwillisonblog source code, which contains the Django models and database schema for the beats feature, to understand exactly what data was available and how to format it correctly.
The result was pull request number 268 on the simonw/tools GitHub repository, which Willison describes as the exact solution he needed. One prompt, one pull request, done.
Key Details
- Willison introduced the "beats" content type to his blog on February 20, 2026.
- The blog-to-newsletter tool lives in the simonw/tools repository, which contains more than 200 HTML applications.
- The tool fetches content from a Datasette instance at datasette.simonwillison.net.
- The working prompt contained exactly 3 instructions and produced pull request 268 as its output.
- Willison originally documented the blog-to-newsletter system in an April 2023 post about integrating Observable and Substack.
- The agent cloned the simonw/simonwillisonblog Django repository to /tmp as a reference for the beats schema and logic.
- Testing was performed using the rodney tool via uvx and a Python HTTP server.
What's Next
Willison is actively building out his guides section on agentic engineering patterns, using real examples from his own workflow rather than hypothetical scenarios, which means more detailed case studies like this one are coming. Developers watching this space should expect the clone-for-context pattern he describes to become a standard technique in multi-repository agentic workflows, particularly as tools like Claude Code gain wider adoption. The beats content type itself will now appear in his weekly Substack newsletter, giving subscribers richer visibility into his full output across tools, museums, and open source releases.
How This Compares
The broader trend here is that AI-assisted newsletter automation has been moving fast. Ryan Kemmer published a Medium post documenting a fully AI-generated weekly newsletter, but that work focused on content creation, having the AI write the newsletter itself. Willison's approach is structurally different. He is not asking AI to generate content. He is asking AI to modify the infrastructure that assembles and formats content he already wrote. That distinction matters enormously. One is a parlor trick; the other is a scalable engineering pattern.
Platforms like Pabbly Connect have released tutorials on using AI agents to automate newsletter generation by scanning trending topics and summarizing blog posts. And a December 2025 post in The AI Maker newsletter described building an agent that uses Perplexity to find news and send weekly summaries automatically. These are legitimate AI tools and workflows, but they all treat the newsletter as an output, not as a system to be maintained and extended. Willison is treating his newsletter pipeline like a software product, and that framing puts him ahead of most individual publishers in terms of long-term sustainability and control.
What makes his approach worth studying is the prompt engineering discipline on display. Directing an agent to clone reference code to /tmp, specifying the exact file to modify out of 200-plus options, and building in a self-verification step against a live URL are not accidental choices. They are the kind of guardrails that separate agentic tasks that succeed from ones that hallucinate a solution and commit broken code. For developers looking to build similar workflows, Willison's guides are worth reading closely.
FAQ
Q: What is the blog-to-newsletter tool Simon Willison built? A: It is a custom HTML and JavaScript application that pulls content from Willison's blog via a Datasette backend, formats it as rich text HTML, and puts it on the clipboard so he can paste it directly into the Substack editor. The tool eliminates manual reformatting every time he publishes a newsletter.
Q: What are "beats" in the context of Willison's blog? A: Beats are a content type Willison added in February 2026 to capture things he publishes outside his main blog, including open source releases, new tools, and museum visits from his site niche-museums.com. Beats that include an additional written description are the ones selected for newsletter inclusion.
Q: What is an agentic engineering pattern in AI development? A: It is a workflow where a developer writes a carefully structured prompt that gives an AI agent enough context to handle multiple steps of a task autonomously, including reading existing code, making design decisions, and verifying its own output, rather than generating one snippet at a time and reviewing each step manually.
Willison's documentation of this workflow is exactly the kind of practical, real-world AI news that developers need more of, grounded in an actual codebase with actual constraints and an actual pull request as proof. As agentic coding tools mature, the developers who invest in learning these prompt patterns now will have a significant head start. Subscribe to the AI Agents Daily weekly newsletter for daily updates on AI agents, tools, and automation.
Get stories like this daily
Free briefing. Curated from 50+ sources. 5-minute read every morning.


