Video Summarizer について
Video Summarizerは、動画の文字起こしと要約を行うコマンドラインスキルです。動画を扱う人向けに、オンラインリンクやローカル・クラウド上のファイルを処理し、複数の要約スタイルと出力形式を備えています。
主な機能
- 01YouTube字幕または音声の文字起こし
- 02ローカルファイル、Google Drive、Dropboxに対応
- 03テキスト分割とLLM処理の並列実行
- 04複数の要約スタイル
- 05Markdown、JSON、HTMLで結果を保存
活用シーン
- 01YouTube動画や講義ファイルの要約
- 02複数の動画リンクの一括要約
- 03Q&A、チュートリアル、重要な知見の抽出
- 04動画内容からMermaid概念図を作成
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ martinopiaggi/ summarize --skill video-summarizerインストール後、Claude Code で/video-summarizerを入力して読み込まれたか確認します。
同梱ファイルREADME.md
詳細
概要
このスキルは、python -m summarizer CLI ツールを実行して、動画コンテンツを文字起こしし、要約します。YouTube(字幕または音声)、ローカルファイル、Google Drive、Dropbox に対応しています。文字起こしデータは分割され、OpenAI 互換の LLM で並列処理された後、最終的な要約に統合されます。
重要:必ず以下の CLI コマンドを使用してください。動画 URL を直接取得、スクレイピング、ダウンロードしようとしないでください(webfetch や curl など)。ダウンロード、文字起こし、要約はすべて CLI が内部で処理します。
クイックスタート(ステップごとの手順)
以下の手順を正確に実行してください。
ステップ 1 -- CLI を実行する:
python -m summarizer --source "VIDEO_URL"
このツールは、summarizer.yaml で設定済みのデフォルトプロバイダーを使用します。基本的な使い方では、追加のフラグは不要です。
ステップ 2 -- 出力ファイルを読む:
CLI は成功すると、出力ファイル名を表示します。ファイルは常に、プロジェクトの作業ディレクトリを基準とする summaries/ サブディレクトリ内に保存されます。例:
[+] Saved watch_20260207_234533.md
読み込むファイルのフルパスは summaries/watch_20260207_234533.md です。
ステップ 3 -- 結果をユーザーに表示する。
以上です。3 つのステップです。
ファイルの場所
すべてのパスは、プロジェクトの作業ディレクトリ(summarizer.yaml と setup.py がある場所)からの相対パスです。
| ファイル | 場所 |
|---|---|
| 設定 | ./summarizer.yaml |
| API キー | ./.env |
| プロンプトテンプレート | ./summarizer/prompts.json |
| 要約の出力先 | ./summaries/<filename>.md |
| CLI エントリーポイント | python -m summarizer |
ホームディレクトリやスキルディレクトリにある .env や設定ファイルを探さないでください。これらはプロジェクトのルートディレクトリにあります。
CLI リファレンス
python -m summarizer [OPTIONS]
必須オプション
| フラグ | 説明 |
|---|---|
--source | 1 つ以上の動画 URL またはファイルパス |
プロバイダーオプション
| フラグ | 説明 | デフォルト |
|---|---|---|
--provider | summarizer.yaml で指定されたプロバイダー名 | YAML の default_provider |
--base-url | API エンドポイント URL(プロバイダー設定を上書き) | YAML の設定値 |
--model | モデル識別子(プロバイダー設定を上書き) | YAML の設定値 |
--api-key | API キー(.env による自動照合を上書き) | .env から自動取得 |
ソースオプション
| フラグ | 説明 | デフォルト |
|---|---|---|
--type | YouTube Video、Video URL、Local File、Google Drive Video Link、Dropbox Video Link | YouTube Video |
--force-download | YouTube の字幕を使わず、代わりに音声をダウンロードする | False |
--transcription | Cloud Whisper(Groq API)または Local Whisper | Cloud Whisper |
--whisper-model | tiny、base、small、medium、large | tiny |
--language | auto は利用可能な最初の YouTube 字幕トラックを選び、Whisper に言語を検出させます。明示的なコードを指定した場合は、そのコードに厳密に従います | auto |
処理オプション
| フラグ | 説明 | デフォルト |
|---|---|---|
--prompt-type | 要約のスタイル(下記のスタイルを参照) | YAML のデフォルト設定 |
--chunk-size | テキストチャンクあたりの文字数 | YAML のデフォルト設定 |
--parallel-calls | 同時に行う API リクエスト数 | 30 |
--max-tokens | チャンクごとの最大出力トークン数 | 4096 |
出力オプション
| フラグ | 説明 | デフォルト |
|---|---|---|
--output-dir | 要約の保存先ディレクトリ | summaries |
--output-format | markdown、json、または html | markdown |
--no-save | ファイルに保存せず、標準出力にのみ表示する | False |
--verbose、-v | 詳細な進行状況を表示する | False |
警告: Windows では --no-save を使用しないでください。要約に含まれる Unicode 文字が標準出力をクラッシュさせる、既知のエンコード問題があります。必ずツールにファイルを保存させてから、そのファイルを読み込んでください。
設定オプション
| フラグ | 説明 |
|---|---|
--config | 設定ファイルのパス(デフォルト:自動検出) |
--no-config | 設定ファイルを無視し、CLI 引数のみを使用する |
--init-config | summarizer.yaml のサンプルを生成して終了する |
要約スタイル
--prompt-type とともに使用します。summarizer/prompts.json で定義されています。
| スタイル | 目的 |
|---|---|
Questions and answers | コンテンツからQ&Aを抽出 |
Summarization | タイトル付きの標準的な要約 |
Distill Wisdom | アイデア、引用、参照情報を抽出 |
DNA Extractor | 核心的な真実を最大200語に凝縮 |
Fact Checker | 主張をTRUE/FALSE/MISLEADINGのラベルで検証 |
Tutorial | コンテンツから手順を順を追って説明 |
Research | より広い文脈を踏まえた詳細な分析 |
Reflections | 述べられている内容を超えた哲学的な考察 |
Mermaid Diagram | Mermaid.js構文による概念の視覚的なマップ |
Essay Writing in Paul Graham Style | Paul Grahamのスタイルによる250語のエッセイ |
Only grammar correction with highlights | 太字のハイライト付きで文法を修正 |
使用例
YouTube動画を要約する(最も簡単な形式)
python -m summarizer --source "https://youtube.com/watch?v=VIDEO_ID"
# Output: summaries/watch_YYYYMMDD_HHMMSS.md
プロバイダーを指定する
python -m summarizer --source "https://youtube.com/watch?v=VIDEO_ID" --provider gemini
# Output: summaries/watch_YYYYMMDD_HHMMSS.md
Distill Wisdomで重要な洞察を抽出する
python -m summarizer \
--source "https://youtube.com/watch?v=VIDEO_ID" \
--provider openrouter \
--prompt-type "Distill Wisdom"
# Output: summaries/watch_YYYYMMDD_HHMMSS.md
Perplexityを使って動画の主張をファクトチェックする
python -m summarizer \
--source "https://youtube.com/watch?v=VIDEO_ID" \
--base-url "https://api.perplexity.ai" \
--model "sonar-pro" \
--prompt-type "Fact Checker"
# Output: summaries/watch_YYYYMMDD_HHMMSS.md
講義からMermaid図を生成する
python -m summarizer \
--source "https://youtube.com/watch?v=VIDEO_ID" \
--provider gemini \
--prompt-type "Mermaid Diagram"
# Output: summaries/watch_YYYYMMDD_HHMMSS.md
ローカルファイルを要約する
python -m summarizer \
--type "Local File" \
--source "./lecture.mp4" \
--provider groq
# Output: summaries/lecture_YYYYMMDD_HHMMSS.md
複数の動画を一括処理する
python -m summarizer \
--source "URL1" "URL2" "URL3" \
--provider gemini \
--prompt-type "Summarization"
# Output: one file per URL in summaries/
設定ファイルを使わずに実行する(すべてのフラグを明示)
python -m summarizer \
--source "https://youtube.com/watch?v=VIDEO_ID" \
--base-url "https://openrouter.ai/api/v1" \
--model "google/gemini-2.0-flash-exp:free" \
--api-key "sk-or-v1-YOUR_KEY" \
--prompt-type "Tutorial" \
--no-config
# Output: summaries/watch_YYYYMMDD_HHMMSS.md
出力の確認
CLIの実行後は、必ず summaries/ の出力ファイルを読んでください。
# The CLI prints something like:
# [+] Saved watch_20260207_234533.md
#
# The file is at:
summaries/watch_20260207_234533.md
フルパス summaries/<filename>(プロジェクトルートからの相対パス)に対してReadツールを使用してください。
複数ステップのワークフロー
包括的な分析を行うには、同じ動画に対して複数のスタイルを順に実行します。
- まず
Summarizationで概要を手早く把握します Distill Wisdomを使って重要な洞察を抽出しますFact Checkerを実行し(できればPerplexityを使用)、主張を検証します- 視覚的な参照用に
Mermaid Diagramを生成します
エラー処理
- APIキーが見つからない場合、ツールは
.envでプロバイダーURLのキーワードに一致するキーを確認します - YouTubeの字幕を利用できない場合、ツールは音声をダウンロードしてWhisperで文字起こしする方法に切り替えます
--language autoは英語を強制しません。最初に利用可能なYouTubeの字幕トラックを使用し、Whisperに言語を検出させます。--verboseを使うと、進捗の詳細を確認して問題をデバッグできます- クラウドWhisperにはGroq APIキーが必要です(無料プランを利用できます)
設定ファイル
すべてプロジェクトの作業ディレクトリにあります。
summarizer.yaml:プロバイダー定義(base_url、model、chunk-size)とデフォルト設定.env:APIキー。URLのキーワードに基づいて自動的に照合されます(例:generativelanguage = YOUR_KEY)summarizer/prompts.json:文字起こしテキストのプレースホルダーとして{text}を使うプロンプトテンプレート
テスト
python -m pytest tests/ -v