Agent Skills that let your AI agent turn audio and video into text or SRT/VTT
subtitles, and check subtitle reading speed, from the team behind
ScribeToAny.
They work in Claude Code, Claude.ai, Codex, Cursor, Gemini CLI, OpenCode and
other agents that read SKILL.md folders, such as OpenClaw and Hermes.
| Skill | What it does |
|---|---|
| subtitle-qc | Checks and fixes subtitle reading speed (CPS), line length, duration and gaps in SRT/VTT files. Timing first, words last. |
| scribetoany | Transcribes local audio and video files (or public links) into text, SRT or VTT subtitles with the ScribeToAny CLI. |
A subtitle can be accurate and still fail: if it leaves the screen before the viewer finishes reading, it was missed. Auto-captions and raw Whisper output fail this constantly, because each cue is timed to the words, not to the reading.
Ask your agent:
Check
episode-12.srtfor reading speed and fix what you can.
帮我检查一下这个字幕是不是太快了,能修就修。
It runs a fixed order:
- Check reading speed against Netflix-style limits: 17 CPS and 42 characters a line for Latin scripts, 9 CPS and 16 characters for Chinese, Japanese and Korean (picked from the text automatically), 2 lines, 0.83–7 s, 80 ms between cues. Overlaps and reversed times are reported.
- Fix the timing without touching a word: extend cues into the silence after them, merge short neighbours (never across a speaker change), open gaps, re-break long lines. Always into a new file.
- Condense what's left, only if you approve: the agent proposes shorter wording for the few cues still over the limit, never changing names, numbers or meaning, and never for verbatim or legal transcripts.
Example on cues timed exactly to the words:
Before After
Cues 9 6
Median CPS 25.0 17.0
Over 17 CPS 8 3
Shorter than 0.83 s 5 1
Lines over 42 chars 3 0
Chars to cut to pass 67 19
On a 447-word English voiceover, the same order took cues over 17 CPS from 68% to 24% before a single word was cut. The method and sources are in Subtitle reading speed (CPS).
Claude Code (plugin marketplace)
/plugin marketplace add scribetoany/skills
/plugin install subtitle-qc@scribetoany-skills
/plugin install scribetoany@scribetoany-skills
Cursor (plugin)
git clone https://github.com/scribetoany/skills.git
mkdir -p ~/.cursor/plugins/local
cp -r skills/plugins/scribetoany ~/.cursor/plugins/local/scribetoany
cp -r skills/plugins/subtitle-qc ~/.cursor/plugins/local/subtitle-qcThen run Developer: Reload Window. The scribetoany plugin adds the
ScribeToAny MCP server (Cursor asks you to sign in once) and the
transcription skill; subtitle-qc adds the subtitle check.
Any agent, with the skills CLI
npx skills add scribetoany/skillsClaude Code, Codex, Cursor, Gemini CLI, OpenCode (copy the folder)
git clone https://github.com/scribetoany/skills.git
# Claude Code
cp -r skills/plugins/subtitle-qc/skills/subtitle-qc ~/.claude/skills/
# Agents that read ~/.agents/skills
cp -r skills/plugins/subtitle-qc/skills/subtitle-qc ~/.agents/skills/Claude.ai: zip the subtitle-qc folder and upload it under
Settings → Capabilities → Skills.
Without an agent: the script is standard-library Python 3.8+.
python3 scripts/subtitle_qc.py check episode.srt
python3 scripts/subtitle_qc.py fix episode.srt -o episode.qc.srt --todo todo.json
python3 scripts/subtitle_qc.py check episode.srt --preset netflix-adult --jsonThese skills work on files you already have. To get an SRT or VTT from audio or video, any transcription tool works. ScribeToAny does it in about 98 languages, with a free 100 minutes every month, and translates subtitles into 134+ languages with the timings kept.
python3 -m unittest discover tests
claude plugin validate .tests/fixtures/ holds SRT quirks seen in the wild: BOM, CRLF, missing blank
lines or numbers, 2-digit milliseconds, -> arrows, position coordinates,
HTML and ASS tags, Windows-1252 text, overlaps and reversed times.
MIT
