• Blog
  • Docs
  • Pricing
  • We’re hiring!
Log inSign up
dcm31

dcm31

self-improving-podcast

Self-improving daily podcast
Public
Like
1
self-improving-podcast
Home
Code
9
README.md
agent.ts
changelog.md
H
cover-art.ts
feature-ideas.md
H
feed.ts
C
generate-daily.ts
generate-podcast.ts
H
podcast-player.ts
Connections
Environment variables
Branches
1
Pull requests
Remixes
History
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.
Sign up now
Code
/
README.md
Code
/
README.md
Search
…
Viewing readonly version of main branch: v13
View latest version
README.md

πŸŽ™οΈ Self-Improving Podcast

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.

How it works

  1. generate-daily.ts runs on a schedule (interval)
  2. It checks for any unprocessed feedback and feeds it to the AI agent
  3. The agent can edit the val's own source code (e.g. add new data sources, change the script format)
  4. Then generate-podcast.ts fetches live data and generates a TTS episode via ElevenLabs
  5. The episode is stored as a blob and served via feed.ts as an RSS feed

Subscribe in any podcast app. Leave feedback via the web form. The AI agent processes it before the next episode.

Files

FileTypeWhat it does
generate-daily.tsintervalCron trigger β€” processes feedback, then generates today's episode
generate-podcast.tsscriptFetches data sources, builds script, calls ElevenLabs TTS
feed.tshttpRSS feed, episode audio serving, feedback form (/feedback)
podcast-player.tshttpSimple web audio player
agent.tsscriptSelf-improving AI agent β€” reads own source, calls Claude, applies code edits
cover-art.tshttpPodcast cover art
changelog.mdfileLog of all agent-applied changes
feature-ideas.mdfileFuture ideas

Built-in data sources

Out of the box, the podcast script includes:

  • Weather β€” via Open-Meteo (free, no API key). Default: New York. Edit WEATHER_LOCATIONS in generate-podcast.ts to change.
  • Prediction markets β€” via Polymarket Gamma API (free, no API key). Empty by default β€” uncomment or add event slugs in POLYMARKET_EVENTS.

Want more? Just submit feedback like "Add top Hacker News stories" or "Include Bitcoin price" and the agent will wire it up.

Feedback loop

  1. Visit /feedback on the feed endpoint (linked in each episode description)
  2. Submit text feedback β€” it's saved as a blob instantly
  3. Next time generate-daily.ts runs, the agent reads all unprocessed feedback
  4. The agent calls Claude with the full val source + your feedback
  5. Claude outputs edit blocks β†’ agent applies them via the Val Town API
  6. Changes are logged in changelog.md
  7. The (potentially updated) generate-podcast.ts runs to create that day's episode

Setup

  1. Fork this val
  2. Add environment variables:
KeyDescription
ELEVEN_LABS_API_KEYElevenLabs text-to-speech API key
ANTHROPIC_API_KEYAnthropic API key for Claude (used by agent)
TOWNIE_TOKENVal Town API token with write access (used by agent to edit its own files)
  1. Update agent.ts β€” change VAL_UUID to your forked val's UUID
  2. Set the interval schedule on generate-daily.ts (e.g. daily at 7am)
  3. Subscribe to the RSS feed URL in your podcast app

Customization

Edit the constants at the top of each file:

  • generate-podcast.ts β€” WEATHER_LOCATIONS, POLYMARKET_EVENTS, ELEVENLABS_VOICE_ID
  • feed.ts β€” PODCAST_TITLE, PODCAST_DESCRIPTION, PODCAST_AUTHOR

Or just submit feedback and let the agent do it for you!

Blob storage layout

self-improving-podcast/
  episodes/       β€” MP3 files (2026-03-25-1711234567890.mp3)
  feedback/       β€” Feedback JSON blobs (timestamp.json)
  agent-runs/     β€” Agent execution logs
FeaturesVersion controlCode intelligenceCLIMCP
Use cases
TeamsAI agentsSlackGTM
DocsShowcaseTemplatesNewestTrendingAPI examplesNPM packages
AboutAlternativesPricingBlogNewsletterCareers
We’re hiring!
Brandhi@val.townStatus
X (Twitter)
Discord community
GitHub discussions
YouTube channel
Bluesky
Open Source Pledge
Terms of usePrivacy policyAbuse contact
Β© 2026 Val Town, Inc.