video-summarizer について
video-summarizerは、動画をダウンロードし、要約や文字起こし、字幕、メディアファイルを作成するスキルです。動画内容を確認したい人向けで、yt-dlp対応サイトを扱い、字幕がない場合は音声を文字起こしします。
主な機能
- 01MP4動画とMP3音声のダウンロード
- 02字幕の取得または音声の文字起こし
- 03テキスト起こしと要約の作成
- 04yt-dlp対応サイトのサポート
活用シーン
- 01リンクされたオンライン動画の要約
- 02字幕のない動画の文字起こし
- 03個人学習用の動画資料の保存
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ liang121/ video-summarizer --skill video-summarizerインストール後、Claude Code で/video-summarizerを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
reference/summary-prompt.mdscripts/install_deps.shparallel_transcribe.py詳細
動画要約
概要
あらゆるプラットフォームから動画をダウンロードし、以下を含む完全なリソースパッケージを生成します。
- 元の動画ファイル(mp4)
- 音声ファイル(mp3)
- 字幕ファイル(タイムスタンプ付き、vtt/srt形式)
- 要約ファイル(summary.md)
yt-dlpが対応する1800以上のウェブサイトすべてをサポートしています。
起動条件
ユーザーが次の操作を行った場合:
- 動画リンクを提示して要約を依頼する
- 「この動画を要約して」「この動画には何が映っているの?」と言う
- 「動画の内容を抽出して」「動画を文字起こしして」と依頼する
- 「この動画をダウンロードして」と言う
- YouTube/Bilibili/Twitter/Vimeo/TikTokなどのリンクを提示する
対応プラットフォーム
- YouTube (youtube.com, youtu.be)
- Bilibili (bilibili.com, b23.tv)
- Twitter/X (x.com, twitter.com)
- Vimeo (vimeo.com)
- TikTok (tiktok.com)
- Instagram (instagram.com)
- Twitch (twitch.tv)
- その他1800以上のプラットフォーム(yt-dlpが対応するすべてのサイト)
出力構成
すべてのファイルは、現在の作業ディレクトリにある downloads/<video-title>/ に保存されます。
./downloads/
└── <video-title>/
├── video.mp4 # Original video
├── audio.mp3 # Extracted audio
├── subtitle.vtt # Subtitles with timestamps
├── transcript.txt # Plain text transcript (no timestamps)
└── summary.md # Structured summary
ワークフロー
ステップ 1:依存関係をインストールする
インストールスクリプトを実行して、すべての依存関係を確認し、インストールします。
bash "$SKILL_DIR/scripts/install_deps.sh"
以下がインストールされます:uv(Pythonパッケージマネージャー)、ffmpeg、yt-dlp。Pythonのバージョンも確認されます。 faster-whisperはuvによって自動的に管理されます。
ステップ 2:動画情報を取得し、出力ディレクトリを作成する
# Get video title (sanitize special characters for folder name)
TITLE=$(yt-dlp --print "%(title)s" "VIDEO_URL" | sed 's/[/:*?"<>|]/_/g' | cut -c1-80)
DURATION=$(yt-dlp --print "%(duration)s" "VIDEO_URL")
# Create output directory
OUTPUT_DIR=./downloads/"$TITLE"
mkdir -p "$OUTPUT_DIR"
ステップ 3:動画と音声をダウンロードする
# Download video (mp4 format, best quality up to 1080p)
yt-dlp -f "bestvideo[height<=1080][ext=mp4]+bestaudio[ext=m4a]/best[height<=1080][ext=mp4]/best" \
--merge-output-format mp4 \
-o "$OUTPUT_DIR/video.%(ext)s" "VIDEO_URL"
# Extract audio (mp3 format)
yt-dlp -x --audio-format mp3 -o "$OUTPUT_DIR/audio.%(ext)s" "VIDEO_URL"
ステップ 4:字幕を取得する
優先順位:
- 手動字幕のダウンロードを試す(最高品質)
yt-dlp --write-subs --sub-lang zh,en,zh-Hans,zh-Hant --skip-download \
-o "$OUTPUT_DIR/subtitle" "VIDEO_URL"
- 自動生成字幕のダウンロードを試す
yt-dlp --write-auto-subs --sub-lang zh,en --skip-download \
-o "$OUTPUT_DIR/subtitle" "VIDEO_URL"
- 字幕がない場合はfaster-whisperで文字起こしする
uv run "$SKILL_DIR/scripts/parallel_transcribe.py" \
--input "$OUTPUT_DIR/audio.mp3" \
--output-dir "$OUTPUT_DIR" \
--model small \
--language auto
スクリプトは自動的に次の処理を行います。
- 無音箇所で長い音声ファイルを分割する
- 複数のCPUコアを使って並列で文字起こしする
subtitle.vttとtranscript.txtの両方を出力する
文字起こしのオプション:
| オプション | デフォルト | 説明 |
|---|---|---|
--model | small | tiny/base/small/medium/large-v3 |
--language | auto | 言語コードまたは「auto」 |
--workers | CPU/2 | 並列ワーカー数 |
--min-segment | 60 | 分割を有効にする最小時間(秒) |
ステップ 5:プレーンテキストの文字起こしを生成する
字幕をダウンロードした場合(文字起こしを行っていない場合)は、プレーンテキストに変換します。
if [[ ! -f "$OUTPUT_DIR/transcript.txt" ]]; then
SUBTITLE_FILE=$(ls "$OUTPUT_DIR"/*.vtt "$OUTPUT_DIR"/*.srt 2>/dev/null | head -1)
if [[ "$SUBTITLE_FILE" == *.vtt ]]; then
sed '/^[0-9]/d; /^$/d; /-->/d; /^WEBVTT/d; /^Kind:/d; /^Language:/d; /^NOTE/d' \
"$SUBTITLE_FILE" > "$OUTPUT_DIR/transcript.txt"
elif [[ "$SUBTITLE_FILE" == *.srt ]]; then
sed '/^[0-9]/d; /^$/d; /-->/d' "$SUBTITLE_FILE" > "$OUTPUT_DIR/transcript.txt"
fi
fi
ステップ 6:要約ファイルを生成する
$SKILL_DIR/reference/summary-prompt.mdからプロンプトテンプレートを読み込みます- プレースホルダーを置き換えます:
{{TITLE}}、{{PLATFORM}}、{{URL}}、{{DURATION}}、{{LANGUAGE}}、{{DOWNLOAD_TIME}}、{{TRANSCRIPT}} - 要約を生成し、
$OUTPUT_DIR/summary.mdに保存します
プラットフォーム別の処理
Bilibili
# Prioritize Chinese subtitles
yt-dlp --sub-lang zh-Hans,zh-Hant,zh ...
# If login required
yt-dlp --cookies-from-browser chrome "VIDEO_URL"
ログインが必要なプラットフォーム
yt-dlp --cookies-from-browser chrome "VIDEO_URL"
# or firefox
yt-dlp --cookies-from-browser firefox "VIDEO_URL"
エラー処理
字幕を取得できない場合
並列文字起こしスクリプトを使用します(ステップ 4、オプション 3)。
動画が長すぎる場合(1時間超)
- 一部の内容だけでよいかユーザーに確認します
- 並列スクリプトは長いファイルを自動的に処理します
未対応のプラットフォーム
yt-dlp --list-extractors | grep -i "platform-name"
メモ
- 保存先:ファイルは現在の作業ディレクトリにある
./downloads/に保存されます - 著作権:個人学習目的でのみ使用してください
- ネットワーク:一部のプラットフォームではプロキシが必要な場合があります
- 初回実行時:Whisperモデルのダウンロードが必要です(smallの場合は約244MB)
- 並列処理:長い音声(60秒超)は無音箇所で自動的に分割されます
コメント
Markdown 対応