1. はじめに
- YouTube 動画を見ていて「この内容、後でテキストで読み返したいな」と思ったことはありませんか?特に解説動画や講義動画では、重要なポイントを見逃したくないですよね。
- あるいは、「面白そうだが、動画の尺が長いので見る前に要点だけ知りたい」ということもあるでしょう。
- 今回紹介するのは、YouTube 動画の文字起こしを自動取得し、さらに Google Gemini API を使って要約まで作成してくれる Python スクリプトです。
2. このツールでできること
主な機能
- 🎥 文字起こし取得:
yt-dlp
を使用した安定した取得 - 🔗 堅牢な ID 取得機能: 様々な形式の YouTube URL から Video ID を取得
- 📝 Markdown 形式での出力: タイムスタンプ付きで読みやすいマークダウン形式
- 🔧 柔軟な出力オプション: タイムスタンプ、要約の有無などをカスタマイズ可能
- 🤖 AI 要約機能: Gemini API による構造化された要約(日本語・英語から選択可能)
3. 使用例
例えば、このツールを使うと次のような用途に活用できます:
- 解説動画を文字起こしして、重要ポイントを要約
- 大学の講義動画を要約して、復習用のノートを自動生成
- 英語の動画を文字起こし&日本語要約で効率的に学習
- 長時間のカンファレンス動画の要点を素早く把握
4. コードの構成について
このリポジトリは2つの使い方ができます:
4.1. モジュール化されたバージョン
main.py # メインスクリプト
├── url_extractor.py # URL/Video IDの抽出
├── transcript_processor.py # 文字起こしの処理
├── gemini_api.py # AI要約の生成
└── utils.py # ユーティリティ関数
各モジュールは独立しているため、必要に応じてカスタマイズや拡張が可能です。
4.2. オールインワンバージョン
シンプルに1ファイルで完結させたい場合は、こちらを使用してください。
all.py # 全機能が1ファイルに統合
5. インストール方法
5.1. 必要なライブラリのインストール
pip install yt-dlp
5.2. スクリプトのダウンロード
GitHubからリポジトリをクローンまたはダウンロードします:
git clone https://github.com/kkensuke/yt_dlp_transcript
cd yt_dlp_transcript
5.3. (オプション)Gemini API の設定
要約機能を使いたい場合は、Gemini API キーが必要です:
- Google AI Studioで API キーを取得
- 環境変数に設定:
export GEMINI_API_KEY="your_api_key_here"
- または、
main.py
orall.py
内で直接設定:GEMINI_API_KEY = "your_api_key_here"
6. 基本的な使い方
6.1. シンプルな例
# YouTube URL を指定
python main.py 'https://www.youtube.com/watch?v=VIDEO_ID'
# または、Video ID だけでもOK
python main.py 'VIDEO_ID'
all.py
を使う場合も同様です。
これだけで、以下の2つのファイルが生成されます:
-
{video_id}_transcript.md
- タイムスタンプ付き文字起こし -
{video_id}_summarized.md
- AI 生成の要約(API キー設定時)
6.2. 生成されるファイルの例
文字起こしファイル(transcript.md):
# Pythonプログラミング入門講座
**Video ID:** ABC123
**YouTube URL:** https://www.youtube.com/watch?v=ABC123
---
**[00:00:15]** こんにちは、今日は Pythonプログラミングの基礎について解説します。
**[00:01:30]** まず、変数について説明しましょう。変数とは、データを保存するための箱のようなものです。
要約ファイル(summarized.md):
# Pythonプログラミング入門講座 - Summary
## 📝 要約
この動画では、Pythonの基本的な概念である変数、データ型、制御構造について...
## 🔑 主要な概念とキーワード
- **変数(Variable)**: データを格納する容器、重要度(高)
- **データ型(Data Type)**: 整数、文字列、リストなど、重要度(高)
## ✨ 重要ポイント
- Pythonは初心者に優しいプログラミング言語である
- 変数を使うことでデータを効率的に管理できる
...
7. 詳細なオプション
7.1. タイムスタンプを削除
読みやすさ重視でタイムスタンプが不要な場合:
python main.py 'VIDEO_URL' --no-timestamps
7.2. 要約をスキップ
文字起こしだけが欲しい場合:
python main.py 'VIDEO_URL' --no-summary
7.3. 要約言語を指定
動画は日本語だけど、要約は英語で欲しい場合:
python main.py 'VIDEO_URL' --summary-lang en
逆に、英語動画の日本語要約:
python main.py 'VIDEO_URL' --summary-lang ja
7.4. カスタムファイル名
出力ファイル名を指定したい場合:
python main.py 'VIDEO_URL' -o my_custom_transcript.md
8. 実践的な活用例
8.1. ケース1: 講義ノートの自動生成
# 大学の講義動画から日本語の要約ノートを作成
python main.py 'LECTURE_VIDEO_URL' --summary-lang ja -o lecture_note.md
活用シーン:
- 復習用の要点まとめ
- 試験前の総復習資料
8.2. ケース2: 英語学習教材の作成
# 英語動画の文字起こしを取得(要約は不要)
python main.py 'ENGLISH_VIDEO_ID' --no-summary
活用シーン:
- リスニング練習の答え合わせ
- 知らない単語やフレーズの確認
8.3. ケース3: 技術カンファレンスの動画を要約
# 長時間の技術カンファレンス動画から要点を抽出
python main.py 'https://www.youtube.com/watch?v=CONF_VIDEO' --summary-lang ja
活用シーン:
- 1時間以上の動画の要点を5分で把握
- チーム内で共有するための議事録的な資料作成
9. トラブルシューティング
9.1. Gemini API のエラー
原因: APIキーの問題、またはクォータ超過
解決策:
- APIキーが正しいか確認
- Google AI Studioでクォータを確認
- 非常に長い動画は、トークン制限に引っかかる可能性あり
9.2. yt-dlpの抽出失敗
原因: yt-dlp
が古い、または地域制限
解決策:
# yt-dlp を最新版にアップデート
pip install -U yt-dlp
10. カスタマイズのアイデア
10.1. 要約プロンプトの調整
gemini_api.py
内のプロンプトをカスタマイズすることで、要約のスタイルを変更できます:
# 例:より技術的な要約にしたい場合
prompt = f"""
あなたは経験豊富なソフトウェアエンジニアです。
以下の技術動画の文字起こしから、実装に役立つ具体的な情報を抽出してください。
- ベストプラクティスを強調
- 注意点やよくあるミスも記載
...
"""
10.2. バッチ処理の実装
複数の動画を一度に処理したい場合:
# batch_process.py
import subprocess
video_ids = [
'VIDEO_ID_1',
'VIDEO_ID_2',
'VIDEO_ID_3'
]
for vid in video_ids:
subprocess.run(['python', 'main.py', vid])
10.3. 長文の処理
50,000文字を超える長い文字起こしの場合、main.py
の MAX_SUMMARY_LENGTH
を調整:
MAX_SUMMARY_LENGTH = 100000 # より長い動画に対応
ただし、Gemini のトークン制限には注意が必要です。
11. まとめ
このツールを使えば、YouTube 動画から効率的に情報を抽出できます:
- ✅ 時間の節約: 長い動画を見る時間がない時に要約で要点把握
- ✅ 学習効率UP: 文字起こしで復習しやすく
- ✅ 言語の壁を越える: 英語動画→日本語要約で情報収集
- ✅ ナレッジベース構築: 技術動画をテキスト資料として蓄積
12. 応用編:こんな使い方も
12.1. Obsidian や Notion との連携
Markdown 形式の出力なので、Obsidian などのナレッジベースツールとシームレスに統合できます。
12.2. チーム内の知識共有
技術カンファレンスや勉強会の動画を要約して、Slack や Notion で共有。
12.3. コンテンツ再利用
自分の YouTube 動画から文字起こしを作成し、ブログ記事の下書きとして利用。
参考リンク: