SRT cleanup: fix names from a glossary, merge short cues, cap line length
An agent prompt that takes a raw speech-to-text SRT and returns one you can publish: names fixed from your glossary, sub-second cues merged, lines wrapped at a character cap, timings untouched.
Clean the SRT below. Return a valid SRT only, no commentary, numbered from 1. GLOSSARY (correct spellings; STT turned these into other words): {Name = what STT wrote, one per line} Rules: 1. Replace every glossary miss with the correct form, including inside words and with the right case. Do not change any other proper noun. 2. Merge cues shorter than {1.0} s with the neighbour they belong to by sentence, keeping the earlier start and the later end. Never merge across a sentence end. 3. Split cues longer than {6} s at a sentence or clause boundary; divide the time proportionally by character count. 4. Wrap each cue to max 2 lines of max {32} characters, breaking at a phrase boundary (after a comma, before a conjunction), never leaving one word alone on a line. 5. Remove filler ('um', 'uh', repeated words at a restart) but not words that carry meaning. Keep the speaker's grammar. 6. Fix capitalisation and punctuation at sentence boundaries. Numbers stay as digits. 7. Timing values other than the merges and splits above stay exactly as given. No cue may overlap the next. SRT: {paste SRT}
In Claude Code, paste the prompt as a message, or run /transcribe which does this end to end.
Steps
- Build the glossary first from a skim of the raw transcript: every person, place and product, with the wrong form STT produced. Unknown names become celebrities; one glossary per project fixes it once.
- Run the prompt, then validate: `ffmpeg -i clean.srt -f null -` reports parse errors, and a diff against the raw SRT shows that only text and the merged cues changed.
- Burn it or upload it as a track. Keep the cleaned SRT beside the video as the transcript of record.
Tips
- Do the glossary pass before anything quotes the transcript, including the agent that proposes the story; a wrong name in the story brief propagates into the cut.
- 32 characters per line is a parameter for 9:16 at a readable size. For 16:9 on YouTube, 42 is common; the merge and split rules do not change.
| works with | Claude Code: Runs as a skill or a prompt in the terminal; can read your files and write the result. · Claude: Paste into claude.ai or the Claude app. · ChatGPT: Paste into ChatGPT; works with any GPT model. · Any LLM: Model-agnostic: Gemini, Mistral, a local model. |
| skill | npx skills add fortunto2/solo-factory/transcribe · source |
| cost | Free. No API, no key. |
| status | Unverified: written from the technique, not yet run end to end by us. |
| license | CC BY 4.0 for the text here; skills are MIT. |
| updated | 2026-11-01 |
| for agents | srt-cleanup-glossary-merge-cues-prompt.md |
Related
Burned subtitles for 9:16: position, lines, characters, colour, as parameters
Settings for subtitles burned into vertical video for muted feeds: above the platform UI, two lines, about 32 characters each, white with a dark outline. Starting values, checked on a phone.
Burn subtitles with ffmpeg: the command with size, outline and margin
One ffmpeg command that burns an SRT into a 9:16 video with white text, a dark outline and the block held above the platform UI, plus the check that your ffmpeg build can run it at all.
Transcript to YouTube chapters: timestamps in the format the description needs
A prompt that turns a timestamped transcript into a chapter list for the YouTube description: first chapter at 0:00, at least three, each 10 seconds or more, titles that say what the viewer gets.
Transcribe audio and video locally with word timings (/transcribe)
Transcribe audio or video to text locally — on the Apple GPU with mlx-whisper large-v3, or faster-whisper on CPU/CUDA — with the language decided per stretch of speech, .srt subtitles, word…
Generate a 10-clip b-roll pack for a talking-head video
One agent prompt that reads your transcript and writes ten generation prompts for cutaways that show what is being said, each tagged with the sentence it covers.
B-roll shot list from a transcript: the table to film or generate from
An agent prompt that reads a transcript and returns a shot table (timestamp, line, shot, source: have / film / generate) for a camera or a video model, grouped so each location is filmed once.