Srt From Script
Documentssrt-from-scriptSrt From Script is an Agent Skill for documents published in the opensquilla/opensquilla repository on GitHub: a SKILL.md instruction file an AI agent can load to do this task.
Build an SRT subtitle file from a 3-shot short-drama script (ai-video-script OUTPUT FORMAT). Reads each SHOT_N block's DURATION_S + VOICEOVER, emits cumulative-timestamped SRT cues. Pure text-processing, no LLM, no network. Used by meta-short-drama between merge and the final subtitle-burn step.
How to use this skill
Bring this guide into your coding agent with a prompt tailored to the tool you use.
- Open your project in Codex.
- Copy and paste the prompt below.
- Review files and risks before approving any action.
Inspect the Agent Skill at https://github.com/opensquilla/opensquilla/blob/HEAD/src/opensquilla/skills/bundled/srt-from-script/SKILL.md and all supporting files. Report provenance, permissions, scripts, dependencies, and security risks. Propose an exact installation into .agents/skills/srt-from-script, but wait for my approval before writing files or running scripts.
Copying this prompt does not install or run the skill. Review third-party files before use.
srt-from-script
Parses an ai-video-script 3-shot script and writes an SRT subtitle file whose cues track the script's VOICEOVER per shot, time-coded with cumulative shot durations.
Inputs (with:)
| key | required | default | notes |
|---|---|---|---|
script | yes | — | Full script text (the entire OUTPUT FORMAT block, including OVERVIEW + SHOT_1..N). Passed via stdin so the orchestrator does not need to write a temp file. |
output_path | yes | — | Output .srt path. Parent dir created if missing. |
gap_ms | no | 200 | Tail pad subtracted from each cue's end so the subtitle vanishes ~200 ms before the next shot starts — avoids cuts clipping mid-character. |
leading_offset_ms | no | 0 | Shifts every cue forward by this many ms. Set to the cover/intro clip duration when the merged video prepends a title card before SHOT_1. |
Parsing rules
- A shot with
VOICEOVER: noneor empty contributes no SRT cue but itsDURATION_Sstill advances the timeline cursor. - Cue language follows the script verbatim. Chinese stays Chinese, English stays English — no translation.
- Cumulative timestamps: SHOT_1 starts at 00:00:00,000; SHOT_2 starts at SHOT_1.duration; etc.
- End time of each cue = next-shot start −
gap_ms, clamped to ≥ 800 ms after start so very short voiceover lines remain readable.
Output
Prints the absolute path of the written .srt on stdout.
The file is UTF-8 encoded so CJK voiceover lines survive when ffmpeg
reads them via the subtitles= filter.
Limits
- Assumes the script follows ai-video-script's strict OUTPUT FORMAT
(
=== SHOT_N ===blocks withDURATION_S:andVOICEOVER:fields). Drift away from that format → zero cues, exit 1. - 3-5 shots tested. Larger shot counts work but timestamps grow.