OpenParable
Skip to content
← Back to skills

Srt From Script

Documents
srt-from-script

Srt 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.

View on GitHub ↗
QUICK START

How to use this skill

Bring this guide into your coding agent with a prompt tailored to the tool you use.

  1. Open your project in Codex.
  2. Copy and paste the prompt below.
  3. Review files and risks before approving any action.
Prompt to paste
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:)

keyrequireddefaultnotes
scriptyes—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_pathyes—Output .srt path. Parent dir created if missing.
gap_msno200Tail 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_msno0Shifts 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: none or empty contributes no SRT cue but its DURATION_S still 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 with DURATION_S: and VOICEOVER: fields). Drift away from that format → zero cues, exit 1.
  • 3-5 shots tested. Larger shot counts work but timestamps grow.