Turn new podcast episodes into Notion show notes and SRT files

By General Input

Every hour we sweep your Dropbox episode folder, transcribe new recordings, and publish structured show notes to Notion with a ready-to-use SRT subtitle file.

Integrations

  • Dropbox
  • AssemblyAI
  • Notion

Type

Deterministic Code

Categories

  • Marketing
  • Operations

Build a deterministic code workflow that publishes podcast show notes to Notion and writes an SRT subtitle file back to Dropbox whenever a new episode audio file lands in a watched folder.

Trigger: a cron schedule that fires every hour.

On each tick, walk the configured Dropbox folder (default '/Podcast/Episodes') with Dropbox List Folder, paging through with List Folder Continue if has_more is true. Filter the entries to audio files (.mp3, .wav, .m4a, .flac, .aac, .mp4) whose server_modified timestamp is newer than the high-water mark we stored from the previous successful run. Persist the new high-water mark and the set of already-processed file IDs (or content_hash values) in workflow state so the same episode is never transcribed twice.

For each new audio file, in isolation so one bad file does not stop the batch:

1. Call Dropbox Get Temporary Link on the file path to mint a 4-hour direct download URL.

2. Call AssemblyAI Submit Transcript with audio_url set to that link and speaker_labels: true. (auto_chapters is deprecated, so use the LLM Gateway Chat Completion against the transcript_id afterwards to produce a chapter-style outline and a 2-3 paragraph summary.)

3. Poll AssemblyAI Get Transcript every ~10 seconds until status is 'completed'. If status is 'error', log the message and skip this file.

4. Call AssemblyAI Get Paragraphs to pull the timestamped paragraph segmentation, then AssemblyAI Export Subtitles (SRT/VTT) with format=srt to fetch the SRT string.

5. Call Notion Create a Page with parent.database_id set to a configured Episodes database. Set the Title property to the episode name parsed from the filename and the Date property to the file's server_modified date. Leave any extra database properties (Host, Season, Episode Number, Tags) unset so the user can wire them up later.

6. Call Notion Append Block Children on the new page with: a 'Summary' heading_2 plus the LLM-generated summary paragraphs, a 'Speakers' heading_2 listing each speaker label with a representative utterance, a 'Chapters' heading_2 with bulleted chapter timestamps if the LLM Gateway produced them, and a 'Transcript' heading_2 followed by one paragraph block per AssemblyAI paragraph, each prefixed with a [HH:MM:SS] tag derived from paragraph.start.

7. Call Dropbox Upload File with path set to the same folder as the audio file and filename '<episode-base-name>.srt', body = the SRT string encoded as UTF-8 bytes, mode = 'overwrite'. This drops the subtitle file in as a sibling so video editors can pick it up from the same place.

Inputs the user provides on first run: the Dropbox folder path, the Notion Episodes database ID, and (optional) an email or Slack channel for failure notifications. The flow is a straight pipeline with retries on transient errors and per-episode isolation. No agent reasoning is needed, just deterministic code nodes.

Related prompts

Explore more prompts
Screen chartered vessels for AIS gaps and sanctions red flagsCompare candidate store locations with drive time trade areasBrowse every competitor ad and build a Notion swipe fileAudience persona studio for brand and product marketersArtwork desk for the Notion posts still missing an imageShare of voice dashboard for your brand and competitorsInfluencer campaign roster board with AI creator briefsSmart home entity health cockpit for Home AssistantOpen model approval desk for your production AI stackBid board that watches every procurement portal for you