Agents In Use
What’s new todayLast update
108 use cases added today

How to use Codex to build a newsletter archive

Simon Willison used Codex voice mode to build Django newsletter imports and searchable archives, then reviewed a pull request and corrected private-repo access.

Source published simonwillison.netAgent: Codex
FROM THE SOURCE

Original prompt

Shared by the source author. See source notes for context.

The other thing is that I want them searchable, uh the Substack ones are not searchable,

Evidence at a glance

Sourced account
Source author
Simon Willison
Original account
Read the source ↗
Published
Source link checked
Reported result
Archive deployed on author's blog.
Human involvement
Author reviewed PR, created private-repo API key, requested display/import changes and landed PR.

A linked account supports attribution. It does not mean we independently reproduced its result.

Report an issue with this caseOpen correction email

Opens your email app with the case link included. Nothing is sent automatically.

How the agent did it

  1. Opened local checkout and development preview.
  2. Spoke model, migration, archive and import requirements while cooking.
  3. Codex built RSS/API/GitHub imports and opened a PR.

Simon Willison added a newsletter archive to his existing Django blog using Codex voice mode while cooking dinner. He first opened the local checkout, started its development server and displayed a browser preview. That gave his spoken requests a concrete page to refer to.

Codex created a newsletter model, database migration, admin configuration and public archive pages. Imports gathered recent Substack items through RSS, older items through an API, published monthly newsletters from GitHub and a private sponsors-only newsletter. Willison specified where the new content should appear: date archives could include it, while tags and the homepage should not. Archived monthly newsletters also needed search integration.

The feature still required keyboard work. After Codex opened a pull request, Willison reviewed the code and replaced a Git subprocess import with GitHub API access for the private repository. He supplied the necessary credential and requested display changes before landing the PR.

The archive went live, but Willison describes voice as useful for multitasking rather than his preferred interface for detailed edits.

Prompt
Original prompt

Source: Blog · Simon Willison

Frequently asked questions

What did Codex import?

Substack newsletters through RSS and an API, plus published and private monthly newsletters from GitHub repositories.

Why did the import need review?

One import used Git in a subprocess. Willison requested GitHub API access for the private repository and supplied a credential.

Did voice handle the whole release?

No. Willison switched to typed prompts for import and display corrections before landing the pull request.

More details

Remaining steps

  1. Replaced subprocess Git import with API import during review.

About this account

Codex created Django models, imports, views and templates from spoken requirements, researched import pagination and revised the implementation after review.

Primary first-person account opened and checked on 2026-10-14. Voice suited broad changes; detailed finishing used typed prompts. Outcomes and test claims are attributed to the source and were not independently reproduced. Original prompt excerpt: reproduced verbatim from the first-person account.

Credit: Simon Willison on Blog

Source published

Added to Agents In Use

Source checked

Tools and topics

Codex · ChatGPT desktop · Django · GitHub · Substack

Newsletters · Django · Voice coding

Editorial completeness: 100/100. Measures documented fields, not agent performance or verified outcomes.