See llms.txt for all machine-readable content.

Back to Templates

Find and render podcast/video clips from transcripts with Google Drive and OpenAI

Quick overview

I built this for podcast and video producers who already have a transcript and still lose an afternoon turning it into clips. OpenAI names the moments by quoting them, code cuts each one on whole sentences, and your editor approves clips before anything reaches your render service.

How it works

  1. A transcript (SRT, VTT, or JSON with times) arrives in a Drive folder or on a webhook. A file I cannot read is refused with a reason, and an episode I already did is skipped.
  2. OpenAI names candidate moments by quoting them. The model never sees or gives a time, and a quote I cannot find in the transcript is dropped and counted.
  3. Each clip ends on a whole sentence, fits a platform length and loses to a higher-scoring clip that overlaps it.
  4. One Drive folder per episode holds a subtitle file per clip, a cut list and a brief.
  5. The editor's approve and reject links are signed and expire, and opening one only shows a page with a button.
  6. An approved clip goes to your render service as a JSON job, and a callback saves the finished file's link in the folder.
  7. Every failure becomes a row in an Errors table and an email. A second workflow in the pack watches for stuck renders and sends a daily digest.

Setup

  1. Create four Data Tables named clip_episodes, clip_candidates, clip_renders and clip_errors. The columns are in the README.
  2. Open Settings and replace every placeholder, because I stop until they are gone. In preview mode any https address will do for the render endpoint.
  3. Connect your Drive, Gmail and OpenAI accounts and pick your transcript folder in the Drive trigger. On the HTTP Request nodes that call your render service, make a Header Auth credential called Render service.
  4. Copy the production URLs of the decision link and callback webhooks into Settings.
  5. Run a real transcript in preview mode first. Preview emails only you and never calls the render service, and you switch mode to live when the clips look right.

Requirements

n8n 2.18.5 or later, a Google Drive account, Gmail, an OpenAI key and a render service that accepts a JSON job and calls back, such as Shotstack, Creatomate or your own ffmpeg worker.

Customization

I keep platform lengths, the score floor, filler words and the model in Settings. Map the render job to your service's field names in Build The Render Job.

Additional info

Price: $3 plus local sales tax or VAT where it applies.

The render job is generic JSON, not a vendor's API, so you map it to your service. Subtitle timing follows the transcript and can sit a fraction of a second off the audio. I tested the logic against fixtures, and I have not run it against live Google, Gmail, OpenAI or a render service yet.

Support: [email protected]