Public
Like1
self-improving-podcast
Val Town is a collaborative website to build and scale JavaScript apps.
Deploy APIs, crons, & store data β all from the browser, and deployed in milliseconds.
Viewing readonly version of main branch: v10View latest version
A daily podcast that generates itself β and improves itself based on your feedback.
generate-daily.tsruns on a schedule (interval)- It checks for any unprocessed feedback and feeds it to the AI agent
- The agent can edit the val's own source code (e.g. add new data sources, change the script format)
- Then
generate-podcast.tsfetches live data and generates a TTS episode via ElevenLabs - The episode is stored as a blob and served via
feed.tsas an RSS feed
Subscribe in any podcast app. Leave feedback via the web form. The AI agent processes it before the next episode.
| File | Type | What it does |
|---|---|---|
generate-daily.ts | interval | Cron trigger β processes feedback, then generates today's episode |
generate-podcast.ts | script | Fetches data (weather, VO2 max, burpees, Polymarket), builds script, calls ElevenLabs TTS |
feed.ts | http | RSS feed, episode audio serving, feedback form (/feedback) |
podcast-player.ts | http | Simple web audio player |
agent.ts | script | Self-improving AI agent β reads own source, calls Claude, applies code edits |
cover-art.ts | http | Podcast cover art |
changelog.md | file | Log of all agent-applied changes |
feature-ideas.md | file | Future ideas |
- Weather β Open-Meteo (AraΓ§atuba, Brazil) in Fahrenheit
- VO2 Max β custom Val Town dashboard API
- Burpees β custom Val Town goal tracker API
- Prediction markets β Polymarket Gamma API
- Visit
/feedbackon the feed endpoint (linked in each episode description) - Submit text feedback β it's saved as a blob instantly
- Next time
generate-daily.tsruns, the agent reads all unprocessed feedback - The agent calls Claude with the full val source + feedback
- Claude outputs edit blocks β agent applies them via the Val Town API
- Changes are logged in
changelog.md - The (potentially updated)
generate-podcast.tsruns to create that day's episode
| Key | Description |
|---|---|
ELEVEN_LABS_API_KEY | ElevenLabs text-to-speech API key |
ANTHROPIC_API_KEY | Anthropic API key for Claude (used by agent) |
TOWNIE_TOKEN | Val Town API token with write access (used by agent to edit own files) |
self-improving-podcast/
episodes/ β MP3 files (2026-03-25-1711234567890.mp3)
feedback/ β Feedback JSON blobs (timestamp.json)
agent-runs/ β Agent execution logs