Caption Checker について
Caption Checkerは、字幕編集や動画制作向けにSRTとWebVTTを検査するツールです。Netflix English、BBC、DCMPの基準に照らして問題を示し、CLI、ライブラリ、ローカルMCPサーバーとして利用できます。
主な機能
- 01SRTとWebVTTの検査
- 023種類の字幕基準に対応
- 03速度・行数・表示時間の問題を検出
- 04CLI、JavaScriptライブラリ、MCPサーバー
- 05アップロード不要のローカル実行
活用シーン
- 01公開前に字幕の基準適合を確認
- 02CIで基準違反の字幕を検出
- 03編集作業中にエージェントで字幕を確認
MCP 対応
ローカルMCPサーバーは、`check_captions` と `list_standards` ツールを提供し、ファイルパスまたは字幕テキストを検査して基準を表示します。キーやネットワーク接続は不要です。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
caption-checker
SRT と WebVTT の字幕が、公開されている字幕規格(Netflix English、BBC subtitle guidelines、DCMP Captioning Key)に準拠しているか確認します。字幕の読み上げ速度が速すぎる場合、1 行が長すぎる場合、行数が多すぎる場合、画面に表示される時間が短すぎるか長すぎる場合、最小間隔を下回る場合、字幕が重なっている場合、タイムスタンプが壊れている場合に警告します。
依存関係はありません。Node 18 以降が必要です。インストールもアップロードも不要で、ブラウザーでも同じチェッカーを利用できます。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)
...
制限値
各制限値は、2026-10-15 に規格の公式ページを確認したものです。
| Netflix (English) | BBC | DCMP Captioning Key | |
|---|---|---|---|
| 読み上げ速度 | 1 秒あたり最大 20 文字(成人)、17 文字(子ども) | 1 分あたり 160~180 語 | 1 分あたり最大 130/140/160 語(初級/中級/上級) |
| 1 行あたりの文字数 | 42 | 放送(テレテキスト)では 37 | 文字数の制限なし |
| 1 件あたりの行数 | 2 | 2。縦型 9:16 動画では 3 | 2 行以下を推奨 |
| 画面表示時間の最短 | 5/6 秒 | 1 語あたり約 0.3 秒(推奨) | 40 フレーム(1 秒と 10 フレーム) |
| 画面表示時間の最長 | 7 秒 | 数値の指定なし | 6 秒 |
| 字幕間の間隔 | 最低 2 フレーム。0.5 秒未満の間隔は 2 フレームに短縮 | 間隔を空ける場合は、少なくとも 1 秒(推奨) | 規定なし |
出典: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
数え方。 文字数には文字、スペース、句読点を含みますが、改行や書式指定(<i> タグ、{\an8} コード、WebVTT の話者スパン)は含みません。読み上げ速度は、文字数 ÷(終了時刻 − 開始時刻)で計算します。単語は、文字または数字を含む文字列のまとまりです。そのため、DCMP の指定どおり、話者ラベルや効果音タグも単語数に含まれます。字幕間の間隔は、指定したフレームレートで、ある字幕の終了時刻から次の字幕の開始時刻までをフレーム数で計算します。規格が推奨として示している項目は、違反ではなく推奨事項として報告します。
CLI
npx github:markksantos/caption-checker captions.srt
# or: git clone https://github.com/markksantos/caption-checker && node caption-checker/bin/caption-check.js captions.srt
caption-check <file.srt|file.vtt> [more files] [options]
-s, --standard <id> netflix | netflix-kids | bbc | dcmp-upper | dcmp-middle | dcmp-lower (default: netflix)
-f, --fps <rate> 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
--mcp run as an MCP server on stdio
いずれかの字幕が制限に違反すると 1 を返すため、字幕を公開する前の CI チェックとして使用できます。
ライブラリ
const { parse, check } = 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);
check() は、規格 ID、または index.js の STANDARDS と同じフィールドを持つ独自の規格オブジェクトを受け取ります。
MCP サーバーと Claude Code プラグイン
同じチェックを MCP サーバーとして実行できるため、Claude、Cursor、VS Code などの MCP クライアントが作業中に字幕ファイルを確認できます。ツールは 2 つです。check_captions(ファイルパスまたは貼り付けた SRT/VTT テキスト、規格、fps、vertical)と list_standards(各制限値とその出典ページ)です。ローカルで実行されるため、キーもネットワーク接続も不要です。
# 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 --mcp
その他のクライアント:
{ "mcpServers": { "caption-checker": { "command": "npx", "args": ["-y", "github:markksantos/caption-checker", "--mcp"] } } }
skills/caption-checker/SKILL.md のスキルでは、エージェントに対して、どの規格を選ぶか、結果をどう報告するか、字幕の文言を変えずに修正する方法を説明しています。
調査
study/ には、このライブラリを使って測定した、NASA の動画と MIT OpenCourseWare の講義動画 387 本に含まれる 339,521 件の字幕を対象とした字幕の読解速度に関する調査のコードとデータが含まれています。
study-auto-captions/ には、299 本の動画を対象に自動生成字幕と人手による字幕を比較し、登録者数上位のチャンネルの字幕カバー率も調べたYouTube 自動生成字幕の精度に関する調査が含まれています。
study-dubbing/ には、登録者数上位 97 チャンネルの動画 485 本に含まれるすべての音声トラックを対象に、各チャンネルが作成した吹き替えと YouTube による自動吹き替えに分けて調べたYouTube の吹き替えに関する調査が含まれています。
study-video-length/ には、登録者数上位のチャンネルにおける最新動画 2,859 本の長さと、最近投稿された動画 1,484 本に占めるショート動画の割合を調べたYouTube 動画の長さに関する調査が含まれています。
バージョン履歴
CHANGELOG.md とリリースをご覧ください。
テスト
npm test
ライセンス
MIT © 動画編集・制作スタジオのMark Studios。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。