本文へ移動
cccskills
無料GitHub で公開日本語紹介

caption-qa

SRTやWebVTTの字幕を配信基準に照らして検査し、表示時間や行分けを調整して読みやすく整えます。Netflix、BBC、教育向け基準の確認やCIでのチェックにも対応します。

原文原文の説明を見る

Check SRT or WebVTT captions and subtitles against published standards (Netflix English, BBC subtitle guidelines, DCMP Captioning Key) for reading speed, line length, line count, time on screen, gaps and overlaps, then fix failures by retiming before rewording. Use when asked to QA, lint or validate captions, check whether subtitles read too fast, prepare captions for Netflix, broadcast or educational delivery, or add a caption check to CI.

github/awesome-copilotスター 40,562(GitHub 40,562 + cccskills 0)

実行スコア 未検証

インストール方法を見る

こんなときに便利

  • 字幕を納品前に基準と照合したいとき
  • 字幕の読む速さや行の長さを調べたいとき
  • 配信先に合わせて字幕を整えたいとき
  • CIで字幕ファイルを自動点検したいとき

日本語での紹介

できること

SRTやWebVTTの字幕を、Netflix English、BBC字幕ガイドライン、DCMP Captioning Keyの基準に沿って確認します。表示文字数と時間から読む速さを調べ、行の長さや行数、画面に表示される時間、字幕間の空き、重なりを字幕ごとに報告します。対象の配信先が指定されていない場合はNetflix English(成人向け)を使い、その前提を伝えます。問題があれば、話した言葉を保つことを優先し、表示時間の延長や開始時刻の調整、文節での分割、行の折り返しなどを順に検討します。修正後の再計測や、繰り返し実行できるPython 3のチェック、CIへの組み込みも扱います。

こんなときに便利

字幕の納品前に基準を満たすか確認したいときや、プラットフォームに却下された理由を調べたいときに使えます。Netflix、放送、米国の教育向けメディアに合わせた字幕の準備にも向いています。複数ファイルを定期的に点検したり、CIで不備のある字幕を検出したりする場合にも役立ちます。

使い方の例

  • 「このSRTをNetflix Englishの基準で確認して、問題のある字幕を教えてください」
  • 「字幕の読む速さと行の長さを調べて、話した言葉を変えずに直してください」
  • 「字幕チェックをCIで実行できるスクリプトを用意してください」

注意点

対象はSRTとWebVTTです。フレーム単位の字幕間隔を判定するにはフレームレートが必要で、未指定なら24 fpsを仮定します。ASSは事前にSRTへ変換します。数値基準を満たしても、字幕のスタイル審査への適合を保証するものではありません。

この紹介文は、公開されている SKILL.md をもとに AI(OpenAI Codex)が作成しました。正確な仕様は下の原文を確認してください。

資料チェック

SKILL.md の記述から、注意が要る操作と導入の前提を AI が確認しました。点数は実際に動かした結果(実行検証)だけで付けています。

安全面送信・削除・コマンド実行などの扱いが明示されているか
B一部不足字幕の修正やCI用スクリプト作成がありますが、上書き確認手順は示されていません。
導入のしやすさ必要なツールや API キーが少ないか、書かれているか
A良好繰り返しチェックに必要なのはPython 3と明記されています。

点数には入れていません。 2026年10月27日 時点で AI(OpenAI Codex)が判定しました。目安なので、入れる前に原文も確認してください。

評価が違うと思ったら、見直しを依頼する

どの項目が、なぜ違うと思うかを書いてください。ログインは不要です。内容を SKILL.md と照らし合わせて評価を作り直し、この欄に反映します。

このフォームは reCAPTCHA で保護されており、Google のプライバシーポリシーと利用規約が適用されます。

含まれるファイル(1)

  • SKILL.md8.2 KB

SKILL.md(原文)

インストールする前に、エージェントに与えられる指示の中身を確認できます。

Caption QA

Captions fail delivery and accessibility review on numbers: characters a second, characters a line, time on screen and the gap between captions. Each standard publishes its own limits, and they differ, so "are these captions OK?" has no answer until you know where they are going. This skill picks the right set of limits, measures every cue the same way the published limits are written, and fixes failures without cutting the speaker's words.

When to Use This Skill

  • The user has an .srt or .vtt file and asks whether it is ready to ship, or why a platform rejected it.
  • The user asks whether captions or subtitles read too fast, or have lines that are too long.
  • Captions are headed for Netflix, a broadcaster, or US educational media, and must meet that spec.
  • The user wants caption checks in CI so a bad file fails the build.

Pick the Standard

If the user names no target, use Netflix English (adult) and say that you did.

StandardReading speedLine lengthLinesTime on screenGap between captions
Netflix English, adult20 characters a second42 characters25/6 s to 7 sAt least 2 frames; close gaps under 0.5 s to 2 frames
Netflix English, children's17 characters a second42 characters25/6 s to 7 sSame as adult
BBC subtitle guidelines160-180 words a minute; aim for about 0.3 s a word37 characters (broadcast); online, 68% of the width of a 16:9 frame2-If you leave a gap, at least 1 s, preferably 1.5 s
DCMP Captioning Key (US educational media)130 / 140 / 160 words a minute for lower / middle / upper level-2 (preferred)40 frames (1 s 10 frames) to 6 s-

Sources: Netflix English (USA) Timed Text Style Guide, Netflix subtitle timing guidelines, BBC subtitle guidelines, DCMP Captioning Key: text and presentation rate. The BBC's per-word time and minimum gap are guidance, so report them as suggestions, not failures.

Measure Every Cue the Same Way

  • Characters are letters, digits, spaces and punctuation in the displayed text. Don't count line breaks, formatting tags (<i>, <b>, {\an8}) or the cue number.
  • Reading speed is characters divided by duration (out-time minus in-time), in seconds.
  • Words a minute is words divided by duration, times 60. A word is a run of characters that holds a letter or a digit, so a lone dash isn't one.
  • Gap runs from one cue's out-time to the next cue's in-time. Frame limits depend on the frame rate: 2 frames is 0.083 s at 24 fps but 0.067 s at 30 fps. Ask for the frame rate, or state that you assumed 24 fps.
  • Overlap: a cue that ends after the next one starts is always a failure, under every standard.
  • Read both timestamp forms: 00:00:01,000 (SRT) and 00:00:01.000 or 01.000 (WebVTT). Skip WebVTT NOTE, STYLE and REGION blocks, and treat cue settings after the timestamps (align:start) as part of the timing line.

Workflow

  1. Find the target (platform, broadcaster or audience level) and pick the standard from the table.
  2. Measure every cue, or run the command-line check below and read its output.
  3. Report with a count line first ("212 of 240 captions meet Netflix English, adult"). Then group failures by rule, with cue numbers and timecodes. Show the first few cues of each kind instead of hundreds of lines.
  4. Fix, keeping the words, in this order:
    1. Extend the out-time into the following gap, keeping the minimum gap.
    2. Start the cue earlier if the previous cue ends well before it.
    3. Split a long cue into two at a phrase boundary, each one meeting the minimum time on screen.
    4. Merge a flash cue (under the minimum time) into its neighbor.
    5. Re-break lines: break after punctuation or before a conjunction or preposition, and keep an article with its noun and a first name with a last name.
    6. Edit the wording only when the user asks for edited (not verbatim) captions.
  5. Measure again after fixing. A retime can create a new overlap or a gap under the minimum.

Reference Check Script

When the user wants a repeatable check (a folder of files, or CI), write this script, or adapt it to the chosen standard. It applies the Netflix adult limits from the table, prints each failing caption and exits with 1 when any caption fails, so it can gate a build. It needs only Python 3.

import re
import sys

# Netflix English, adult programs. Change these for another standard.
LIMITS = {"cps": 20, "cpl": 42, "lines": 2, "min_s": 5 / 6, "max_s": 7, "gap_frames": 2}
FPS = 24
T = r"(?:(\d+):)?(\d{1,2}):(\d{1,2})[,.](\d{1,3})"
TIMING = re.compile(T + r"\s*-->\s*" + T)
TAGS = re.compile(r"<[^>]+>|\{\\[^}]*\}")


def seconds(h, m, s, ms):
    return int(h or 0) * 3600 + int(m) * 60 + int(s) + int((ms + "00")[:3]) / 1000


def read_cues(path):
    text = open(path, encoding="utf-8-sig").read().replace("\r\n", "\n")
    for block in re.split(r"\n[ \t]*\n", text):
        lines = block.strip().split("\n")
        for i, line in enumerate(lines[:3]):
            m = TIMING.search(line)
            if m:
                body = [TAGS.sub("", t).rstrip() for t in lines[i + 1:]]
                g = m.groups()
                yield seconds(*g[:4]), seconds(*g[4:]), [t for t in body if t.strip()]
                break


def check(path, lim=LIMITS, fps=FPS):
    cues, failed = list(read_cues(path)), 0
    for n, (start, end, text) in enumerate(cues, 1):
        dur, chars, issues = end - start, sum(len(t) for t in text), []
        if dur > 0 and chars / dur > lim["cps"]:
            issues.append(f"{chars / dur:.1f} characters a second")
        issues += [f"line {j} is {len(t)} characters"
                   for j, t in enumerate(text, 1) if len(t) > lim["cpl"]]
        if len(text) > lim["lines"]:
            issues.append(f"{len(text)} lines")
        if dur < lim["min_s"] or dur > lim["max_s"]:
            issues.append(f"on screen {dur:.2f} s")
        if n < len(cues):
            gap = cues[n][0] - end
            if gap < 0:
                issues.append(f"overlaps the next caption by {-gap:.2f} s")
            elif gap * fps < lim["gap_frames"] - 0.01:
                issues.append(f"gap of {gap * fps:.0f} frames at {fps} fps")
        if issues:
            failed += 1
            print(f"{path} #{n} {start:.3f} -> {end:.3f}: " + "; ".join(issues))
    print(f"{path}: {len(cues) - failed} of {len(cues)} captions pass")
    return failed == 0


if __name__ == "__main__":
    results = [check(p) for p in sys.argv[1:]]
    sys.exit(0 if results and all(results) else 1)

Run it as python3 check_captions.py captions/*.srt. For another standard, change LIMITS, and add a words-a-minute check (words divided by duration, times 60) for the BBC and DCMP. The script doesn't check the advice-level rules (chaining short gaps, the BBC's per-word time); report those separately.

In GitHub Actions:

- run: python3 check_captions.py captions/*.srt

Gotchas

  • Meeting these numbers doesn't certify a file. Netflix and broadcasters also review style: italics, speaker labels, sound descriptions and position.
  • The limits were read from each standard's own page in October 2026. Check the source before quoting a limit as current.
  • Only SRT and WebVTT are covered. Convert ASS first with ffmpeg -i subs.ass subs.srt, which keeps the timing and wraps the text in font tags that the character count ignores.

レビュー

まだレビューはありません。使ってみた感想をお寄せください。

コメント

ログインなしで書き込めます。使ってみた感想、質問、動かなかった環境などを気軽にどうぞ。

まだコメントはありません。最初のコメントを書いてみませんか。

送信するとすぐに公開されます。メールアドレスや電話番号などの個人情報は書かないでください。URL は 2 つまでです。

0 / 1000 文字

このフォームは reCAPTCHA で保護されており、Google のプライバシーポリシーと利用規約が適用されます。

同じリポジトリのスキル

acquire-codebase-knowledge

無料概要あり

既存プロジェクトのコードや設定を調べ、技術構成・設計・規約・テスト・懸念点などを7つの文書に整理します。根拠のファイルと不明点も明記し、引き継ぎに役立てます。

  • 初めて触るコードの全体像を知りたいとき
  • プロジェクトの引き継ぎ資料作成
  • 設計資料と実装の違いを確認
github/awesome-copilot4.1万2026年10月29日 更新

acreadiness-assess

無料概要あり

リポジトリのAI活用準備度をAgentRCで評価し、9つの観点のスコアや改善案をHTMLにまとめます。組織独自の採点方針にも対応します。

  • AIエージェント導入前の準備度確認
  • 評価結果から改善の優先順位を決めたいとき
  • 組織独自の基準で採点したいとき
github/awesome-copilot4.1万2026年10月29日 更新

実際のコードから言語や開発ルールを読み取り、AIコーディングエージェント向けの指示ファイルを生成。プロジェクト全体や領域別にルールを整理します。

  • VS Code Copilot向け指示を作成
  • 開発ルールの変更を指示に反映
  • モノレポの領域別ルールを整理
github/awesome-copilot4.1万2026年10月29日 更新

acreadiness-policy

無料概要あり

AgentRCの準備度評価を、組織やチームの基準に合わせて調整します。チェックの重みや合格率、除外項目を設定し、CIでの合否判定にも使えます。

  • 組織共通の評価基準づくり
  • AI関連の整備状況だけを評価
  • チェックの重要度を調整したいとき
github/awesome-copilot4.1万2026年10月29日 更新

ad-campaign-analyzer

無料概要あり

広告の実績データから無駄な支出と成果の高い施策を見つけ、停止・増額・検証の候補を整理します。媒体をまたぐ予算配分の見直しやA/Bテストの評価にも使えます。

  • 停止すべき広告やキーワードの特定
  • 増額候補のキャンペーンや配信対象の発見
  • A/Bテスト結果の有意性を確認したいとき
github/awesome-copilot4.1万2026年10月29日 更新

add-educational-comments

無料概要あり

指定したコードファイルに、構文や設計の理由を説明する学習用コメントを追加します。読む人の知識に合わせて解説の深さや繰り返し、注釈番号の有無を調整できます。

  • 既存コードに初心者向け解説を付けたいとき
  • 構文や設計を選んだ理由の説明
  • 読み手の経験に合わせたコメント調整
github/awesome-copilot4.1万2026年10月29日 更新

github のスキルをすべて見る

このスキルの問題を報告する