-->
Class of One: Podcast feed from NotebookLM summaries
Skip to content
Podcasts are a good first pass to get oriented on a topic. I can convert some of my technical reading goals into podcasts then I can grok them better when I decide to go deeper into it.
Google’s NotebookLM (Gemini Notebook now), has an Audio Overviews feature that turns a pile of source material into a two-host, podcast-style conversation. That solved the content half of the problem. What it didn’t give me was a way to get that audio into my podcast app, sitting next to everything else I already listen to.
So I built a small pipeline: upload the generated audio to a public store via webapp, turn that into a podcast RSS feed, and subscribe to it in Pocket Casts like any other show. I call it Class of One , since I am the only audience.
Generate audio
Gemini Notebook
Upload
via the webapp
RSS rebuilds
in the background
Refresh
Pocket Casts
Architecture
Underneath the webapp is one Cloudflare Pages project, serving both the static frontend and the upload/publish API (as Pages Functions). The only storage is a single (public) R2 bucket (Cloudflare version of S3). It holds the audio files, the cover art, the episode list, and the generated feed.xml. The webapp is protected by Cloudflare Access so that only I can upload the episodes.
Cloudflare Access
one login in front of everything
Pages
dashboard
Pages Functions
/api/*
R2 bucket
audio · images · episode list · feed.xml
No database, no separate backend process to keep running. Publishing writes straight to R2. Pocket Casts reads the feed straight from R2 (hence the bucket is public).
The result
I wanted the webapp to feel like a school notebook. So it borrows straight from a paper metaphor with a graph-paper grid, a coral margin rule running the height of the page, and three punch-hole circles down the left edge like a ring binder. Typography carries the notebook idea further.
Here is how the webapp turned out:
The Class of One publish dashboard.
Add episode details, hit publish, and a few seconds later it’s a new episode in Pocket Casts.
You can try the dashboard yourself at class-of-one.vercel.app. It’s a demo: hitting publish just plays the animation, nothing actually gets fed anywhere.
--><br>Point-in-Time Joins
↑ Back to top