Turn new podcast episodes into Notion show notes and SRT files

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.

Deterministic Code
DropboxAssemblyAINotionMarketingOperationsContent GenerationDocument Processing

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.

Additional information

What does this prompt do?
  • Watches a Dropbox folder once an hour for newly uploaded podcast episodes.
  • Transcribes every new recording with speaker labels and timestamped paragraphs.
  • Creates a Notion page in your Episodes database with a summary, speaker list, and full paragraph-by-paragraph transcript.
  • Saves an SRT subtitle file next to the audio so your video editor can drop it straight into the timeline.
What do I need to use this?
  • A Dropbox account with the folder where you drop new episode audio.
  • An AssemblyAI account for transcription (free tier is fine to start).
  • A Notion workspace with an Episodes database, plus a connection that can read and write to it.
How can I customize it?
  • Change how often we sweep the folder (every 30 minutes, twice a day, only on weekdays).
  • Point at any Dropbox folder and any Notion database. Title, date, host, season, and tag fields all map cleanly.
  • Adjust the show notes layout: summary length, whether to include a speaker list, chapter markers, or links to listen.

Frequently asked questions

What audio formats does this support?
Common podcast formats like MP3, WAV, M4A, FLAC, and AAC. We hand the file straight to AssemblyAI, which handles every mainstream audio and video container.
How long until a new episode shows up in Notion?
Usually within the hour. We check Dropbox at the top of each hour, and transcription typically finishes in a few minutes for a sixty-minute episode.
Will it accidentally re-process the same episode twice?
No. We track which files we have already handled, so every episode is transcribed exactly once even if you rename it or re-run the workflow.
Can I change the show notes format?
Yes. The Notion page layout, the database property fields, and the subtitle filename pattern are all easy to tweak after you load the prompt.
Do I need a paid AssemblyAI plan?
The free tier covers a few hours of audio per month, which is plenty for a short series. Weekly hour-long shows usually justify a paid plan for higher concurrency.

Stop hand-writing show notes for every episode.

Connect Dropbox, AssemblyAI, and Notion once, and we will publish notes plus subtitles for every new recording automatically.