# tldr-radio

> Self-hosted app that reads the daily TLDR newsletters aloud as podcast episodes

- Repository: https://github.com/mat-nolen/tldr-radio
- Category: Image, video & audio
- Stars: 110 · Forks: 11 · Language: Python · License: MIT
- Experience: Beginner friendly
- Page: https://ir.adyog.com/repos/mat-nolen/tldr-radio/

TLDR publishes 14 newsletters, and reading them all takes time. TLDR Radio turns each one into an audio episode you can play while cooking or driving. You pick a date, press Broadcast, and a few minutes later the episodes are in your browser, one per newsletter, with each story as its own chapter.

It runs as two Docker containers: a FastAPI app with a plain JavaScript frontend, and Kokoro-82M speech synthesis on the CPU. The pipeline is fixed from start to finish. It fetches the archive page, parses it by page structure, fills in a script from templates and a pronunciation dictionary, and sends that script to the speech model. No language model summarizes or rewrites anything.

The README contrasts it with listen-to-your-newsletter tools that need an account, a subscription and access to your inbox. This one needs only Docker and about 8 GB of disk. It is meant for personal use, and the README asks you not to publish the audio.

## What it does

- **Chapterized episodes**: Each newsletter becomes one episode and each story a chapter, with its section heading, the source summary and a link to the original. You can download an episode as a single tagged mp3.
- **Sponsor reads as skippable chapters**: Sponsor segments are read in a different voice as their own chapters, introduced with a spoken notice. They are on by default and can be turned off in Settings.
- **Overnight builds**: Set a time and timezone and the chosen newsletters are built automatically. It retries about every 25 minutes if an issue isn't posted yet, and can send an ntfy notification when done.
- **Station picker and voices**: All 14 TLDR newsletters can be put on the Desk for manual runs and/or in the overnight build. 68 voices are available, and you can audition them in Settings.
- **Player with resume**: The player has ±15 s skip, speed up to 2.5×, auto-advance, resume where you left off and keyboard shortcuts. It has light and dark themes.

## What you could build

- Listen to the TLDR AI or infosec newsletter on your commute.
- Schedule overnight builds so fresh episodes are ready each morning.
- Download a tagged mp3 of an episode and load it into a podcast or audiobook app for personal use.
- Run a text-to-speech pipeline on a home server or homelab without any cloud service.
- Study a small FastAPI and Docker project that talks to a local Kokoro TTS service.

## Who it's for

Suits anyone who reads TLDR and has a machine running Docker; you should be comfortable with basic Docker commands and be ready to download about 5 GB on the first run.

## Get started

Clone the repo (replace <you> with the repo owner's account, mat-nolen) and run make up, or docker compose up -d --build. The first run downloads about 5 GB and needs a minute or two to warm up. Then open http://localhost:7777, pick a date and press Broadcast.

```
git clone https://github.com/<you>/tldr-radio.git
```
```
cd tldr-radio
```
```
make up
```

Tags: tts, podcast, self-hosted, newsletter, docker
