ต้นแบบ · รุ่นทดลอง: มีทุก server ในทะเบียนทางการ อัปเดตทุก 30 นาที เข้าสู่ระบบด้วย Google เพื่อเขียนรีวิวได้แล้ว
PopNx MCPที่รวม MCP สำหรับคนใช้ AI · วิธีติดตั้งภาษาไทยทุกตัว

Caption Checker

โดย markksantosรุ่น 1.3.3i★ 0iรันบนเครื่อง
ชื่อใน registryio.github.markksantos/caption-checker

วิธีติดตั้ง

ใช้ทำอะไรได้

ยังไม่มีคำอธิบายภาษาไทย ดูข้อเท็จจริงด้านล่าง หรือเปิดคำอธิบายต้นฉบับจากผู้ทำ

  • ต่อแบบ ติดตั้งในเครื่อง
  • บัญชีหรือคีย์ ไม่ต้องใส่คีย์
  • หมวด อื่น ๆ
คำอธิบายต้นฉบับจากผู้ทำ (อังกฤษ)
Check, fix, convert and retime SRT and WebVTT captions against Netflix, BBC and DCMP limits.

ติดตั้ง

เลือกโปรแกรม AI ที่คุณใช้ แล้วคัดลอกค่าตั้งไปวาง

ผลตรวจผ่าน 3/3 · ทำงานบนเครื่องคุณ

ขั้นแรก: คุณใช้ AI ตัวไหน

เลือกแอปที่คุณใช้ ขั้นตอนจะขึ้นด้านล่าง

ต่อกับ Claude ได้ แต่ต้องเตรียมก่อน

ไม่ต้องใช้คีย์ ไม่ต้องลงโปรแกรม · ใช้ได้เฉพาะแอป Claude บนคอม (Windows หรือ Mac) ไม่ใช่บนเว็บหรือมือถือ

  1. ดาวน์โหลดไฟล์ติดตั้งของผู้ทำ

    ดาวน์โหลดไฟล์ .mcpb ของผู้ทำ

    ไฟล์ .mcpb มาจากผู้ทำโดยตรง เราไม่ได้แก้ไฟล์

  2. ดับเบิลคลิกไฟล์ แล้วกด Install ในแอป Claude บนคอม

  3. ลองเลย

    ใช้ Caption Checker บอกหน่อยว่าทำอะไรให้ฉันได้บ้าง แล้วลองทำให้ดูหนึ่งอย่าง

    ✓ ถ้า Claude บอกว่ากำลังใช้ Caption Checker หรือมีชื่อเครื่องมือของ Caption Checker ขึ้นในคำตอบ แปลว่าต่อสำเร็จ

ชื่อเมนูตรวจกับหน้าช่วยเหลือของ Anthropic เมื่อ 11 พ.ย. 2569 · หน้าจอของคุณอาจต่างเล็กน้อยตามรุ่นของแอป

ChatGPT ยังต่อ Caption Checker ไม่ได้

Caption Checker ต้องติดตั้งในเครื่องคุณ แต่ ChatGPT ต่อได้เฉพาะตัวที่ทำงานบนเว็บ

คุณทำแบบนี้แทนได้

ก · ใช้แอปที่ต่อ Caption Checker ได้

  • ไม่ต้องใช้คีย์ ไม่ต้องลงโปรแกรม · ใช้ได้เฉพาะแอป Claude บนคอม (Windows หรือ Mac) ไม่ใช่บนเว็บหรือมือถือ

ข · ตัวอื่นในหมวด อื่น ๆ ที่ต่อกับ ChatGPT ได้

เลือกจากตัวที่ใช้มากในหมวดเดียวกัน เฉพาะตัวที่ต่อด้วยที่อยู่ได้โดยไม่ต้องใส่คีย์

Claude Code ยังต่อ Caption Checker ไม่ได้

ผู้ทำมีแต่ไฟล์ติดตั้งสำหรับแอป Claude บนคอม

คุณทำแบบนี้แทนได้

ก · ใช้แอปที่ต่อ Caption Checker ได้

  • ไม่ต้องใช้คีย์ ไม่ต้องลงโปรแกรม · ใช้ได้เฉพาะแอป Claude บนคอม (Windows หรือ Mac) ไม่ใช่บนเว็บหรือมือถือ

Cursor ยังต่อ Caption Checker ไม่ได้

ผู้ทำมีแต่ไฟล์ติดตั้งสำหรับแอป Claude บนคอม

คุณทำแบบนี้แทนได้

ก · ใช้แอปที่ต่อ Caption Checker ได้

  • ไม่ต้องใช้คีย์ ไม่ต้องลงโปรแกรม · ใช้ได้เฉพาะแอป Claude บนคอม (Windows หรือ Mac) ไม่ใช่บนเว็บหรือมือถือ

VS Code ยังต่อ Caption Checker ไม่ได้

ผู้ทำมีแต่ไฟล์ติดตั้งสำหรับแอป Claude บนคอม

คุณทำแบบนี้แทนได้

ก · ใช้แอปที่ต่อ Caption Checker ได้

  • ไม่ต้องใช้คีย์ ไม่ต้องลงโปรแกรม · ใช้ได้เฉพาะแอป Claude บนคอม (Windows หรือ Mac) ไม่ใช่บนเว็บหรือมือถือ

โปรแกรมอื่นที่ใช้ MCP ได้ เช่น Windsurf, Zed หรือ Gemini CLI มีวิธีเพิ่มต่างกัน ดูวิธีของแต่ละตัวในหน้ารวมโปรแกรม

ดูโปรแกรมที่ใช้ MCP ทั้งหมด →

ค่าตั้งแบบไฟล์ JSON อยู่ในหัวข้อ “สำหรับคนเขียนโค้ด” ด้านล่าง

ติดตรงไหน? ถามคนที่ใช้ Caption Checker อยู่💬 พูดคุย →

สรุป

ดาวน์โหลดต่อสัปดาห์i
ไม่มียอดใน npm/PyPI
การเชื่อมต่อ
รันบนเครื่อง
รุ่นล่าสุดi
1.3.3
หมวดi
อื่น ๆ
ส่งเข้า registryi
1 พ.ย. 2569
แก้โค้ดล่าสุดi
1 พ.ย. 2569
ผู้ทำ
markksantos
แพ็กเกจ
mcpb: …/caption-checker-1.3.3.mcpb
เว็บผู้ทำ
www.markstudios.com
สถานะใน registry
ใช้งานอยู่

ใช้กับโปรแกรมไหนได้

ดูจากแบบการต่อของ server ตัวนี้ และเอกสารของผู้ทำโปรแกรมแต่ละตัว ตรวจเมื่อ 10 พ.ย. 2569

ติดตั้งบนเครื่องได้ใน

ClaudeGooseLM StudioMsty StudioCherry StudioVisual StudioWindsurf (Devin Desktop)ZedKiroClineContinueJetBrains AI AssistantCodex CLIGemini CLIOpenCodenodecodeWarpLibreChatRaycast

ดูโปรแกรมทั้งหมดพร้อมข้อดีข้อเสีย →

คู่มือที่เกี่ยวข้อง

ทำอะไรได้บ้าง

รันในเครื่องคุณ รายการเครื่องมือจะขึ้นในแอป AI หลังติดตั้ง

ผลตรวจเบื้องต้นi

เราตรวจจากข้อมูลที่ใครก็เปิดดูได้ ยังไม่ได้อ่านโค้ด ข้อที่ไม่เกี่ยวกับตัวนี้ไม่นับในตัวหาร · ตรวจเมื่อ 13 พ.ย. 2569

  • ✓ ผ่าน

    ตัวตนผู้ทำตรงกับ repo

    ชื่อใน registry ยืนยันด้วยบัญชี GitHub markksantos ซึ่งเป็นเจ้าของ repo

  • ✓ ผ่าน

    ยังมีคนดูแล

    มีการแก้โค้ดล่าสุด 12 วันที่ผ่านมา

  • ✓ ผ่าน

    มีสัญญาอนุญาต (license)

    ใช้ MIT

  • – ไม่เกี่ยว

    endpoint ตอบ

    ตัวนี้รันบนเครื่องคุณ ไม่มี endpoint บนอินเทอร์เน็ต

  • – ไม่เกี่ยว

    ล็อกอินแบบ OAuth

    ตัวนี้รันบนเครื่อง ใช้ค่าที่ตั้งในเครื่องแทน

  • … ยังไม่ตรวจ

    คำอธิบายเครื่องมือไม่มีคำสั่งแอบแฝง

    รันในเครื่องคุณ เราอ่านรายการเครื่องมือได้เฉพาะตัวที่มี endpoint บนอินเทอร์เน็ต

พูดคุย

ถาม แชร์เคล็ดลับ หรือแจ้งว่าใช้ไม่ได้ เรียงตามที่คนกดว่ามีประโยชน์

ยังไม่มีใครโพสต์ ถามหรือแชร์เป็นคนแรกได้เลย

ข้อความในส่วนนี้เขียนโดยผู้ใช้ ไม่ใช่ทีม PopNx

เข้าสู่ระบบด้วย Google เพื่อโพสต์

รีวิวจากผู้ใช้

ยังไม่มีรีวิว

เข้าสู่ระบบด้วย Google เพื่อเขียนรีวิว

เทียบกับตัวอื่นในหมวด อื่น ๆi

  • ดาวมากกว่า 0% ของอีก 19421 ตัวในหมวดนี้
  • ส่งรุ่นใหม่เข้า registry ล่าสุดกว่า 78% ของอีก 19421 ตัวในหมวดนี้
  • ผลตรวจเบื้องต้นดีกว่าหรือเท่ากับ 100% ของอีก 19421 ตัวในหมวดนี้

เทียบกับทุก server ที่ยังใช้งานในหมวดนี้ทั้งทะเบียน ดาวนับเฉพาะเมื่อผู้ลงทะเบียนเป็นเจ้าของ repo

คำถามที่พบบ่อย

Caption Checker ปลอดภัยไหม?

จากการตรวจเบื้องต้นของเรา ผ่าน 3 จาก 3 ข้อที่ตรวจได้ เรายังไม่ได้อ่านโค้ด ก่อนใส่กุญแจหรือ token ให้ดูว่า server ขอสิทธิ์อะไร และเลือกกุญแจที่ทำได้เท่าที่จำเป็น

ต้องใช้กุญแจหรือรหัสอะไรบ้าง?

registry ไม่ได้ระบุว่าต้องใช้กุญแจ แต่บางตัวจะขอให้ล็อกอินตอนใช้ครั้งแรก

ตัวนี้รันบนเครื่องหรือบนคลาวด์?

รันบนเครื่องของคุณ โปรแกรม AI จะเปิด server ขึ้นมาเองเมื่อใช้ ข้อมูลไม่ต้องผ่านเซิร์ฟเวอร์ของผู้ทำ (ยกเว้นตัวที่ไปเรียกบริการออนไลน์ต่อ)

ยังมีคนดูแลอยู่ไหม?

repo บน GitHub มีการแก้โค้ดล่าสุด 12 วันที่ผ่านมา และส่งรุ่นล่าสุด (1.3.3) เข้า registry 12 วันที่ผ่านมา

ใช้กับโปรแกรมไหนได้บ้าง?

โปรแกรมที่รองรับ MCP เช่น Claude Desktop, Claude Code, Cursor และ VS Code ตัวนี้ต้องมี MCPB ในเครื่องด้วย

มีตัวไหนใช้แทนได้บ้าง?

ในหมวดเดียวกันมี World Monitor, Claude Flow, Windmill

ตัวอื่นในหมวดเดียวกัน

server หมวดเดียวกันจากผู้ทำคนอื่น เรียงตามดาว

อ่านการ์ด:↓ ดาวน์โหลดต่อสัปดาห์i★ ดาว GitHubiสามเสา: รีวิว · ผลตรวจ · การใช้งานiอัปเดต = วันที่ส่งรุ่นล่าสุดเข้า registryi

World Monitor

ข่าวกรองโลกแบบเรียลไทม์: ความขัดแย้ง ตลาด พลังงาน การค้า การขนส่ง และไซเบอร์

โดย koala73ใช้กันมาก★ 90.5Kอัปเดต เมื่อวาน

รันบนคลาวด์✓ เจ้าของบริการ · worldmonitor.app

Claude Flow

AI orchestration with hive-mind swarms, neural networks, and 87 MCP tools for enterprise dev.

โดย ruvnetใช้กันมาก↓ 13.5K/สัปดาห์★ 81.5Kอัปเดต 14 เดือนที่ผ่านมา

รันบนเครื่อง

Windmill

Run Windmill scripts and flows and manage jobs, schedules, resources and variables.

โดย windmill-labsใช้กันมาก★ 18.6Kอัปเดต เมื่อวาน

รันบนคลาวด์

README จากผู้ทำ

เปิดอ่าน README

ส่วนนี้คัดจาก repo ของผู้ทำตามต้นฉบับ PopNx MCP ไม่ได้ตรวจหรือรับรองเนื้อหา ตัด HTML รูปภาพ และสคริปต์ออกแล้ว ลิงก์จะพาออกนอกเว็บ

caption-checker

Check SRT and WebVTT captions against a published caption standard: Netflix English, the BBC subtitle guidelines or the DCMP Captioning Key. It flags captions that read too fast, lines that are too long, too many lines, captions that stay on screen too short or too long, gaps under the minimum, overlaps and broken timestamps. It can also fix those, convert SRT to WebVTT and back, and retime a file that's out of sync.

No dependencies. Node 18+. The same checker runs in the browser, with no install and no upload, at [markstudios.com/tools/caption-checker](https://www.markstudios.com/tools/caption-checker).

$ caption-check examples/travel-vlog.srt

travel-vlog.srt: 2 of 8 captions meet Netflix English, adult programs #1 0:00.500 -> 0:03.000 Welcome back to the channel. ✗ Gap to the next caption is 0 frames at 24 fps (minimum 2) #3 0:06.600 -> 0:07.100 First, ✗ On screen 0.50 s (minimum 5/6 of a second) #4 0:07.200 -> 0:09.000 we packed water, snacks, a rain jacket and a spare battery for the cam ✗ Reading speed 41.1 characters a second (limit 20) ✗ Line 1 is 74 characters (limit 42) ...

The limits

Each limit was read on the standard's own page on 2026-10-15.

Netflix (English)BBCDCMP Captioning Key
Reading speedUp to 20 characters a second (adult), 17 (children’s)160–180 words a minuteUp to 130 / 140 / 160 words a minute (lower / middle / upper level)
Characters a line4237 on broadcast (Teletext)No character count
Lines a caption22; 3 for vertical 9:16 videoNo more than 2 preferred
Shortest time on screen5/6 of a secondAbout 0.3 s a word (advice)40 frames (1 second and 10 frames)
Longest time on screen7 secondsNo number6 seconds
Gap between captions2 frames minimum; gaps under 0.5 s closed to 2 framesIf you leave a gap, at least 1 second (advice)No rule

Sources: Netflix English (USA) Timed Text Style Guide · Netflix General Requirements · Netflix Subtitle Timing Guidelines · BBC Subtitle Guidelines · DCMP Captioning Key: Text · DCMP Captioning Key: Presentation Rate

How it counts. Characters include letters, spaces and punctuation, but not line breaks or formatting ( tags, {\an8} codes, WebVTT voice spans). Reading speed is characters ÷ (out-time − in-time). Words are runs of characters that hold a letter or a digit, so speaker labels and sound tags count, as DCMP asks. Gaps run from one caption's out-time to the next caption's in-time, in frames at the frame rate you give. Anything a standard words as a recommendation is reported as advice, not as a failure.

CLI

npx github:markksantos/caption-checker#v1.3.3 captions.srt

or: git clone --depth 1 --branch v1.3.3 https://github.com/markksantos/caption-checker && node caption-checker/bin/caption-check.js captions.srt

(#v1.3.3 and --branch v1.3.3 pin a tagged release; without them you get whatever is on main)

caption-check [more files] [options] -s, --standard netflix | netflix-kids | bbc | dcmp-upper | dcmp-middle | dcmp-lower (default: netflix) -f, --fps frame rate for frame-gap checks (default: 24) --vertical 9:16 video (the BBC allows three lines) --json JSON output --advice also print advice-only notes --fix write a fixed copy to (one input file) --mcp run as an MCP server on stdio

caption-check --to vtt|srt [--speakers] [--crlf] [--out ] convert caption-check --shift [--from ] | --start-at | --rate | --sync [--to vtt|srt] [--out ] retime

It exits with 1 when any caption breaks a limit, so it works as a CI check before captions ship.

Fix mode

--fix writes a copy with every fix that doesn't need a person: it never changes a word or an in-time.

$ caption-check examples/travel-vlog.srt --fix fixed.srt

travel-vlog.srt: 8 changes in 7 captions, written to fixed.srt #1 Out-time 0:03.000 -> 0:02.916 (to leave 2 frames before the next caption) #4 Rewrapped to 2 lines (38 + 35 characters) #5 Out-time 0:17.000 -> 0:16.100 (off an overlap, to the 7 s maximum) ... Left for a person (2): #3 Still on screen only 0.52 s (minimum 5/6 of a second) with no free time after it: merge it with a neighbor or move the next caption #4 Still reads at 40.2 characters a second (limit 20) with no free time after it: split it, condense it or move the next caption fixed.srt: 6 of 8 captions meet Netflix English, adult programs (before: 2 of 8)

  • Line breaks. A caption with a line over the limit, or too many lines, is rewrapped into the fewest lines that fit, breaking after punctuation where it can and avoiding a break after an article, preposition, conjunction or auxiliary verb ("the", "of", "and", "was"). Captions with formatting tags or two speakers are left for a person.
  • Out-times. An out-time is pulled back off an overlap or a gap under the minimum, cut to the longest time on screen, and pushed into free time when a caption is too short or reads too fast. For Netflix, gaps under 0.5 s are closed to 2 frames, as its timing guide asks.
  • Everything else stays. Captions that needed nothing keep their exact bytes, and so do cue ids, WebVTT headers, NOTE blocks, cue settings, line endings and a byte-order mark. A second run changes nothing.

Run against 300 caption files with all six standards, it never changed a word, an in-time or the number of captions, and never left more captions failing than it started with.

Convert and retime

--to converts SubRip to WebVTT or back; the retiming flags fix captions that are out of sync with the video. Without --out, the file goes to stdout and the summary to stderr.

$ caption-check examples/travel-vlog.srt --to vtt --out travel-vlog.vtt

travel-vlog.srt: 8 captions converted from SubRip (.srt) to WebVTT (.vtt). Written to travel-vlog.vtt $ caption-check episode.srt --shift -2.5 --from 120 --out episode.synced.srt # late by 2.5 s from caption 120 on $ caption-check film.srt --rate 23.976:25 --out film.25fps.srt # timed for 23.976 fps, video is 25 fps $ caption-check film.srt --sync 1=0:04.200,640=41:12.5 --out film.synced.srt # pin two captions, stretch the rest

  • Converting keeps every caption's text and timing. Italic, bold and underline stay; SubRip {\an8}-style position codes become WebVTT line/align settings and back; & and < are escaped for WebVTT and unescaped for SubRip; voice tags become "Name: " with --speakers. Whatever the other format can't hold (font colours, NOTE blocks, WebVTT position or size) is listed, not silently dropped.
  • Retiming works on integer milliseconds, so nothing drifts from rounding. A two-point sync says when the stretch matches a common frame-rate pair (23.976/25, 24/25, 29.97/30 ...). Times pushed before 0:00 are clamped and counted.
  • Encodings. Every mode reads UTF-8, UTF-16 (by its byte-order mark) and Windows-1252, the encoding SubRip itself writes by default, and writes UTF-8.

It uses the same reader and writer as the online SRT to VTT converter and subtitle time shifter (subtitles.js is that code, unchanged). Run on 300 caption files (34,836 captions), SRT to WebVTT and back kept every caption's timing, and a shift there and back restored every time.

Library

const { parse, check, fix } = require('caption-checker');

const result = check(parse(fs.readFileSync('captions.vtt', 'utf8')), 'bbc', { vertical: true }); console.log(result.flagged, 'of', result.cues.length, 'captions break a limit'); for (const cue of result.cues) for (const issue of cue.issues) console.log(cue.n, issue.severity, issue.message);

const fixed = fix(fs.readFileSync('captions.srt', 'utf8'), 'netflix', { fps: 25 }); fs.writeFileSync('captions.fixed.srt', fixed.text); // also: fixed.changes, fixed.unresolved, fixed.before, fixed.after

const { convert, retime } = require('caption-checker/convert.js'); const vtt = convert(srtText, 'vtt'); // { text, from, to, captions, notes } const synced = retime(srtText, { rate: { from: 23.976, to: 25 } }); // or { offset: '-2.5', from: 120 }, { startAt: { caption, time } }, { sync: [a, b] }

check() accepts a standard id or your own standard object with the same fields as STANDARDS in index.js.

MCP server and Claude Code plugin

The same checks run as an MCP server, so Claude, Cursor, VS Code and other MCP clients can check a caption file mid-task. Five tools: check_captions (a file path or pasted SRT/VTT text, a standard, fps, vertical), fix_captions (the same arguments; returns the fixed file and what changed), convert_captions (SRT to WebVTT or back), retime_captions (offset, start at, frame-rate change or two-point sync) and list_standards (each limit and the page it comes from). It runs locally: no key, no network.

# Claude Code plugin (MCP server + a caption QA skill)

/plugin marketplace add markksantos/caption-checker /plugin install caption-checker@caption-checker

or the server on its own

claude mcp add caption-checker -- npx -y github:markksantos/caption-checker#v1.3.3 --mcp

Other clients:

{ "mcpServers": { "caption-checker": { "command": "npx", "args": ["-y", "github:markksantos/caption-checker#v1.3.3", "--mcp"] } } }

The skill in skills/caption-checker/SKILL.md tells an agent which standard to pick, how to report results and how to fix a caption without changing its words. skills/caption-fixer/SKILL.md covers fixing a file: what fix_captions changes, and what to do with the captions it leaves for a person. skills/caption-converter/SKILL.md covers converting between SRT and WebVTT and working out which kind of timing fix an out-of-sync file needs.

Study

study/ holds the code and data behind the caption reading speed study: 339,521 captions in 387 NASA videos and MIT OpenCourseWare lectures, measured with this library.

study-auto-captions/ holds the YouTube auto-caption accuracy study: automatic vs human captions on 299 videos, plus caption coverage of the most-subscribed channels.

study-dubbing/ holds the YouTube dubbing study: every audio track on 485 videos from the 97 most-subscribed channels, split into the channels' own dubs and YouTube's automatic ones.

study-video-length/ holds the YouTube video length study: durations of 2,859 latest videos and the Shorts share of 1,484 recent uploads on the most-subscribed channels.

ตัดมาแค่ช่วงต้น อ่านต่อใน repo