A daily podcast that generates itself — and improves itself based on your feedback.
Fork this val, add your API keys, and you have a personal daily audio briefing that gets better over time.
generate-daily.ts runs on a schedule (interval)generate-podcast.ts fetches live data and generates a TTS episode via ElevenLabsfeed.ts as an RSS feedSubscribe in your 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 sources, 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 |
Out of the box, the podcast script includes:
WEATHER_LOCATIONS in generate-podcast.ts to change.POLYMARKET_EVENTS.Want more? Just submit feedback like "Add top Hacker News stories" or "Include Bitcoin price" and the agent will wire it up.
| 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 its own files) |
agent.ts — change VAL_UUID to your forked val's UUIDgenerate-daily.ts (e.g. daily at 7am)Your feed URL is the endpoint for feed.ts — copy it from the Val Town dashboard.
⚠️ Spotify does not support subscribing to private/custom RSS feeds. You'd need to submit your podcast publicly through Spotify for Creators, which isn't really the point here. Use one of the apps above instead.
/feedback on the feed endpoint (linked in each episode description)generate-daily.ts runs, the agent reads all unprocessed feedbackchangelog.mdgenerate-podcast.ts runs to create that day's episodeEdit the constants at the top of each file:
generate-podcast.ts — WEATHER_LOCATIONS, POLYMARKET_EVENTS, ELEVENLABS_VOICE_IDfeed.ts — PODCAST_TITLE, PODCAST_DESCRIPTION, PODCAST_AUTHOROr just submit feedback and let the agent do it for you!
self-improving-podcast/
episodes/ — MP3 files (2026-03-25-1711234567890.mp3)
feedback/ — Feedback JSON blobs (timestamp.json)
agent-runs/ — Agent execution logs