# Yt Digest

> Summarize a YouTube video from its transcript (subtitles) fetched with yt-dlp, without watching it; never downloads the video or audio. Use when a YouTube URL (youtube.com / youtu.be) is shared and the user wants the content, key points, or a transcript — including vague asks like "what's this about?" as long as the target is a YouTube video.

- Skill: `gitt510/yt-digest` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add gitt510/yt-digest`
- Raw SKILL.md: https://api.skillmd.com/api/skills/gitt510/yt-digest/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Research & Search
- Author: gitt510 (https://skillmd.com/u/gitt510)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/gitt510/yt-digest

---


# 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

## 手順

1. 読み込んだ `SKILL.md` の親 directory を `<skill-directory>` として解決する。
   `~/.claude`、`~/.codex` などの固定 install path を仮定しない。

2. transcript を取得する:

   ```bash
   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 へ

3. `transcript.txt` を読む。長い動画（>50k chars）は分割して読む。
   `meta.json` に chapters があれば構成把握の手がかりにする。

4. 下の「出力の型」で要約を書く。

## 出力の型

1. 📌 **基本情報** — タイトル・チャンネル・長さ・公開日
2. **論旨の流れ** — 何を主張／説明する動画かを一文で言ってから、展開を追う
3. 💢 **ツッコミどころ** — 主張系の動画（投資・健康・製品レビューなど、
   何かを勧める／断じる動画）のみ。チュートリアルや純粋な解説には付けない。
   データの選び方の偏り（チェリーピッキング）、意図的に省かれた前提
   （税・手数料・リスク）、論理の飛躍を具体的に指摘する。
   依頼者が「見なくていい理由」まで含めて判断できるようにするのが目的
4. **宣伝の分離** — スポンサー枠・案件・自社宣伝は本編の要約に混ぜず、
   「動画の◯割が宣伝」程度に分けて報告する

自動字幕の場合、ASR の誤変換は文脈から修正して要約に反映する。
固有名詞の重要な修正は注記する（例:「東京会場→東京海上」）。

## Edge cases

- **字幕なし（exit 2）**: 音楽・ライブ配信・公開直後（自動字幕の生成前）は
  字幕が存在しないことがある。その旨を報告して止まる。
  音声をダウンロードしての文字起こしはこの skill の範囲外
- **メンバー限定・年齢制限・非公開**: アカウント不使用の設計なので取得
  できない。報告して止まる
- **「◯◯についてどこで話してる？」** と聞かれたら `transcript_timed.txt`
  から timestamp を引いて答える

## 拡張余地（未実装）

`transcript_timed.txt` の timestamp は、将来フレーム切り出し
（動画 DL + ffmpeg）を足すときの座標になる。図表が多くて transcript
だけでは不足する動画が出てきたら phase 2 として検討する。

