YT Digest
Goal
動画を視聴せずに、YouTube が字幕表示用(CC ボタン)に配信している VTT データだけから内容を把握し、「見なくて済む判断材料」を渡す。 依頼者は内容の紹介ではなく、見る価値があるかの判断と要点を求めている。
動画・音声・storyboard は取得せず、account credentials なしで公開取得できる字幕 VTT だけをローカルで処理する。user がアクセス・処理する権限を持つ動画だけを対象にし、 platform の利用規約、著作権、適用法に従う。この skill 自体は利用の適法性を判断しない。
Requirements
- Python 3
uvx(uvに同梱)- Node.js(
yt-dlp --js-runtimes nodeから使用) - YouTube と package registry への network access
手順
読み込んだ
SKILL.mdの親 directory を<skill-directory>として解決する。~/.claude、~/.codexなどの固定 install path を仮定しない。transcript を取得する:
python3 "<skill-directory>/scripts/fetch_transcript.py" <URL> \ --outdir <scratchpad>/yt-digest-<video_id>uvxが一時環境にyt-dlpを取得して実行する- 字幕の優先順位は 手動 ja → 自動 ja → 手動 en → 自動 en (手動字幕は人手なので誤変換がなく品質が段違い)
- exit 2 = 字幕なし。下の Edge cases へ
transcript.txtを読む。長い動画(>50k chars)は分割して読む。meta.jsonに chapters があれば構成把握の手がかりにする。下の「出力の型」で要約を書く。
出力の型
- 📌 基本情報 — タイトル・チャンネル・長さ・公開日
- 論旨の流れ — 何を主張/説明する動画かを一文で言ってから、展開を追う
- 💢 ツッコミどころ — 主張系の動画(投資・健康・製品レビューなど、 何かを勧める/断じる動画)のみ。チュートリアルや純粋な解説には付けない。 データの選び方の偏り(チェリーピッキング)、意図的に省かれた前提 (税・手数料・リスク)、論理の飛躍を具体的に指摘する。 依頼者が「見なくていい理由」まで含めて判断できるようにするのが目的
- 宣伝の分離 — スポンサー枠・案件・自社宣伝は本編の要約に混ぜず、 「動画の◯割が宣伝」程度に分けて報告する
自動字幕の場合、ASR の誤変換は文脈から修正して要約に反映する。 固有名詞の重要な修正は注記する(例:「東京会場→東京海上」)。
Edge cases
- 字幕なし(exit 2): 音楽・ライブ配信・公開直後(自動字幕の生成前)は 字幕が存在しないことがある。その旨を報告して止まる。 音声をダウンロードしての文字起こしはこの skill の範囲外
- メンバー限定・年齢制限・非公開: アカウント不使用の設計なので取得 できない。報告して止まる
- 「◯◯についてどこで話してる?」 と聞かれたら
transcript_timed.txtから timestamp を引いて答える
拡張余地(未実装)
transcript_timed.txt の timestamp は、将来フレーム切り出し
(動画 DL + ffmpeg)を足すときの座標になる。図表が多くて transcript
だけでは不足する動画が出てきたら phase 2 として検討する。