DIGIT SRT Maker
Turn a script into timed subtitles without touching an audio file
- srt_filepath
- srt_text
Most subtitle tools start from audio or video. DIGIT SRT Maker is the odd one out in the best way: it starts from a script. Paste a Google Doc URL or raw script text, and it has Gemini figure out what's actually spoken - stripping out stage directions, scene headings, camera notes, and action lines - then generates a properly timed SRT at a natural speaking pace. If you're captioning a commercial, a short film, or any produced piece where the script is the source of truth, this is the node you want before you've even rendered the audio.
It pairs naturally with SRT From Video (transcribe from audio) - this one is for when the script is cleaner than any transcription would be, and you want dialogue-only captions that read like the writer intended, not like Whisper heard it.
The inputs that matter
script_url- a Google Doc URL or any web URL containing the script. Private docs work if you've donegcloud auth login --enable-gdrive-access, since the node grabs a token fromgcloudand talks to the Drive API; if authenticated access fails it falls back to public export.script_text- paste the script directly instead. Overrides the URL if both are given, and honestly it's the more reliable path for most people.extra_instructions- pre-filled with a sensible default that says "only include actually spoken word, no stage direction." You can tailor it: filter by character, by scene, whatever the project needs.words_per_second- 2.5 is the natural conversational pace and the default. Drop it toward 1.5–2 for slower, longer subtitles; push it up and entries get shorter. This is the single knob that controls how the timing feels.model-gemini-2.5-flashdefault, Pro or Gemini 3 previews available if the script is gnarly.projekts_root/project/filename- where it saves. Output lands inPROJEKTS/project/assets/auto_srt/<filename>.srt,dialogue.srtby default.
Outputs: srt_filepath (the saved file) and srt_text (raw content - run it through SRT Preview to QA before you commit to it).
How it works
The node fetches the script (Google Docs via the Drive API, plain URLs via HTTP), strips HTML down to text, and sends the whole thing to Gemini with your extra_instructions. Gemini identifies only the spoken dialogue and returns timed SRT entries based on a natural speaking pace - that's where words_per_second comes in; the node uses it to lay out subtitle durations and spacing. There's a small fixed gap between entries so captions don't butt against each other.
Setup and gotchas
Standard DIGIT install - ComfyUI Manager search comfyui-digit, or clone-and-pip. This is a Vertex AI node, so it needs the gcloud application-default credentials and aiplatform.googleapis.com enabled; gcp_region defaults to global, which is fine for Gemini.
The one thing that trips people: a Google Doc that looks public but exports nothing usually means the share settings are view-only-for-specific-accounts. Either make it link-shared or use script_text instead - pasting is faster than fighting Drive permissions anyway. And remember Gemini's output is only as clean as the instruction: if you see scene headings sneaking into captions, that's the extra_instructions field doing its job poorly, so say exactly what to exclude.
Inputs (10)
| Name | Type | Default | Description |
|---|---|---|---|
| model | COMBO | gemini-2.5-flash | 9 options: gemini-2.5-pro, gemini-2.5-flash, gemini-2.5-flash-lite, gemini-2.0-flash, gemini-2.0-flash-lite, gemini-3.1-pro-preview, +3 |
| script_url | STRING | — | |
| extra_instructions | STRING | only include actually spoken word. look at the script and do not include any words describing people, actors, or stage direction. figure out only what is actually going to be spoken, and only use that in the SRT file outputs. The SRT outputs are only for on screen dialogue. | — |
| words_per_second | FLOAT | 2.50.5–10 | — |
| projekts_root | COMBO | 1 options: /root/PROJEKTS | |
| project | COMBO | 1 options: | |
| filename | STRING | dialogue | — |
| gcp_project_id | STRING | GCP project ID. Auto-detected from DIGIT_GCP_PROJECT env var or GCP metadata. | |
| gcp_region | STRING | GCP region. Auto-detected from DIGIT_GCP_REGION env var or GCP metadata. Defaults to 'global'. | |
| script_textopt | STRING | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| srt_filepath | STRING | — |
| srt_text | STRING | — |