Delete Episode
Deleting an episode requires cleanup in three places.
Where Episodes Live
- •Hub database - Source of truth. Query via Kamal console from the hub directory.
- •Google Cloud Storage - MP3 file, manifest.json, feed.xml
- •RSS feed - Regenerate after manifest update so podcast apps reflect the change
Key Relationships
From a Hub Episode record:
- •
episode.podcast.podcast_id→ GCS folder name (e.g.,podcast_106f7e1301ae9fc2) - •
episode.gcs_episode_id→ MP3 filename (without .mp3 extension)
GCS Structure
code
gs://verynormal-tts-podcast/podcasts/{podcast_id}/
├── episodes/{gcs_episode_id}.mp3
├── manifest.json
└── feed.xml
RSS Regeneration
After updating manifest.json, regenerate feed.xml using:
- •
RSSGeneratorclass from the tts lib directory - •Podcast config from
config/podcast.yml - •Episodes array from the updated manifest
Constraints
- •Confirm before deleting - Show episode title, podcast, date, and ask for confirmation
- •Multiple matches - If search finds multiple episodes, list all with details and ask which one
- •Stop on failure - If any step fails, report what succeeded and what failed. Don't continue.
Deletion Order
- •Delete MP3 from GCS
- •Update manifest.json (remove episode entry)
- •Regenerate and upload feed.xml
- •Delete episode from Hub database