Skills
Skill 2 of 3
Use when the user wants an SRT or WebVTT caption or subtitle file converted to the other format, or its timing fixed because it is out of sync with the video - captions that are…
3 minutes · 739 words · 10 sections
Install
npx skills add markksantos/caption-checker --skill caption-converternpx skills add markksantos/caption-checker/plugin marketplace add markksantos/caption-checkerThe first command installs just this skill, by the name in its SKILL.md; the second installs the whole repository.
This skill converts captions between SubRip (.srt) and WebVTT (.vtt) and fixes timing that is out of sync with the video. It uses two tools of the caption-checker MCP server, which ships with the plugin: convert_captions and retime_captions. Both run locally with no key and no upload, and both return the new file as text for you to save.
Use WebVTT for HTML5 <track> elements, most web players and course platforms. Use SubRip for desktop players, most editing software and YouTube, Vimeo or social uploads that ask for .srt.
claude mcp add caption-checker -- npx -y github:markksantos/caption-checker#v1.3.3 --mcp). Without it, use the CLI in the Examples section, which needs Node 18+.convert_captions with path (or text). It writes the other format unless you pass to.speakers: true when converting WebVTT with voice tags (<v Ana>) to SubRip and the speaker names should stay visible as “Ana: “. Without it, the names are dropped, since SubRip has no voice tag.lecture.srt → lecture.vtt).::cue CSS instead), NOTE blocks (SubRip has no place for them) or WebVTT position settings with no SubRip code. Mention them in one line each, so the user knows what to restyle.offset, such as "2.5" for later or "-1.2" for earlier.offset with from, the first caption number that is wrong.start_at: { caption: 12, time: "0:41" }.rate when the rates are known ({ from: 23.976, to: 25 }: the rate the captions were timed for, then the video’s), or sync with two captions near the start and the end and their right start times. The summary says when a sync matches a common frame-rate pair.retime_captions with exactly one of offset, start_at, rate or sync. Pass to to change format at the same time.check_captions if the user wants to know whether the retimed file meets a caption standard: a frame-rate rescale changes durations and gaps slightly.convert_captions: a line such as “412 captions converted from SubRip (.srt) to WebVTT (.vtt).”, the notes, then the converted file.retime_captions: the summary line, the notes (clamped captions, format changes), then the retimed file. The structured result has changed, clamped, scale or offsetMs, and the file as retimed.1.5), MM:SS.mmm, HH:MM:SS,mmm, 2m30s or 750ms, with - for earlier.sync, give the earlier caption first, with the earlier time.“These subtitles are 2 seconds late” → retime_captions with path: "episode.srt", offset: "-2", then save the second content item as episode.srt once the user confirms, or as episode.synced.srt.
“Convert lecture.vtt to SRT and keep who’s speaking” → convert_captions with path: "lecture.vtt", to: "srt", speakers: true.
“Caption 1 is right but the last one, number 640, should start at 41:12.5” → retime_captions with sync: [{ caption: 1, time: "<caption 1's current start>" }, { caption: 640, time: "41:12.5" }].
The same from a terminal:
npx github:markksantos/caption-checker#v1.3.3 episode.srt --shift -2 --out episode.synced.srt
npx github:markksantos/caption-checker#v1.3.3 lecture.vtt --to srt --speakers --out lecture.srt
npx github:markksantos/caption-checker#v1.3.3 film.srt --rate 23.976:25 --out film.25fps.srt
npx github:markksantos/caption-checker#v1.3.3 film.srt --sync 1=0:04.200,640=41:12.5 --to vtt --out film.vttUse when the user wants an SRT or WebVTT caption or subtitle file converted to the other format, or its timing fixed because it is out of sync with the video - captions that are all early or late, late from a certain point on, drifting later and later (a frame-rate mismatch such as 23.976 vs 25 fps), or that need re-syncing to two known points. Trigger with "convert this SRT to VTT", "make a WebVTT file for my HTML5 player", "the subtitles are 2 seconds late", "the captions drift out of sync", "shift these subtitles" or "sync the subtitles to the video".
The verbatim description from this skill’s front matter — the string an agent matches on to decide whether to load it.
mcp__plugin_caption-checker_caption-checker__convert_captionsmcp__plugin_caption-checker_caption-checker__retime_captionsmcp__plugin_caption-checker_caption-checker__check_captionsmcp__caption-checker__convert_captionsmcp__caption-checker__retime_captionsmcp__caption-checker__check_captionsskills/caption-converter/SKILL.mdmain, last pushed 1 November 2026.SKILL.md, not by matching a directory convention. One layout observed: skills/*/SKILL.md.h1 and no skipped levels:.claude-plugin/marketplace.json by Mark Studios, declaring 1 plugin. It is read for editorial metadata only — never as the skill index, which is always the repository tree./markksantos/caption-checker.md, and each skill at its own .md URL.