1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

YouTube の字幕を取得し、Gemini で要約まで自動化する Python ツール(CLI & GUI)

Last updated at Posted at 2025-09-22

asdf.png

1. はじめに

  • YouTube 動画を見ていて「この内容、後でテキストで読み返したいな」と思ったことはありませんか?特に解説動画や講義動画では、重要なポイントを見逃したくないですよね。
  • あるいは、「面白そうだが、動画の尺が長いので見る前に要点だけ知りたい」ということもあるでしょう。
  • 今回紹介するのは、YouTube 動画の文字起こしを取得し、さらに Google Gemini API を使って要約まで自動作成してくれる Python ツール(CLI & GUI)です。

2. このツールでできること

主な機能

  • 🎥 文字起こし取得: yt-dlpを使用した安定した取得
  • 🔗 堅牢な ID 取得機能: 様々な形式の YouTube URL から Video ID を取得
  • 📝 Markdown 形式での出力: タイムスタンプ付きで読みやすいマークダウン形式
  • 🔧 柔軟な出力オプション: タイムスタンプ、要約の有無などをカスタマイズ可能
  • 🤖 AI 要約機能: Gemini API による構造化された要約(日本語・英語から選択可能)

例えば、このツールを使うと次のような用途に活用できます:

  • 解説動画を文字起こしして、重要ポイントを要約
  • 大学の講義動画を要約して、復習用のノートを自動生成
  • 英語の動画を文字起こし&日本語要約で効率的に学習
  • 長時間のカンファレンス動画の要点を素早く把握

3. コードの構成について

このリポジトリは2つの使い方ができます:

3.1. CLI バージョン

3.1.1. モジュール化されたバージョン main.py

main.py                     # メインスクリプト
├── url_extractor.py        # URL/Video IDの抽出
├── transcript_processor.py # 文字起こしの処理
├── gemini_api.py           # AI要約の生成
└── utils.py                # ユーティリティ関数

3.1.2. オールインワンバージョン all.py

シンプルに1ファイルで完結させたい場合は、全機能が統合された all.py を使用してください。

3.2. FastAPI を用いた GUI バージョン app.py

app.py を起動して、以下のような UI で利用することもできます。

screenshot.png

4. インストール方法

4.1. スクリプトのダウンロード

GitHubからリポジトリをクローンまたはダウンロードします:

git clone https://github.com/kkensuke/yt_dlp_transcript
cd yt_dlp_transcript

4.2. 必要なライブラリのインストール

pip install yt-dlp

# `app.py` を使う場合は fastapi と uvicorn も
pip install fastapi uvicorn

4.3. (オプション)Gemini API の設定

要約機能を使いたい場合は、Gemini API キーが必要です:

  1. Google AI Studioで API キーを取得
  2. 環境変数の設定:
    export GEMINI_API_KEY="YOUR_GEMINI_API_KEY"
    
  3. それぞれのファイル(main.py,all.py,app.py)内で直接設定しても可:
    GEMINI_API_KEY = "YOUR_GEMINI_API_KEY"
    

5. 基本的な使い方

5.1. GUI の使い方

以下を実行し、ブラウザで http://localhost:8000 を開く。抽出に10秒ほどかかります。

python app.py

5.2. CLI のシンプルな使い方

# YouTube URL を指定
python main.py 'https://www.youtube.com/watch?v=VIDEO_ID'

# または、Video ID だけでもOK
python main.py 'VIDEO_ID'

all.py を使う場合も同様です。

これだけで、以下の2つのファイルが生成されます:

  1. {video_id}_transcript.md - タイムスタンプ付き文字起こし
  2. {video_id}_summarized.md - AI 生成の要約(API キー設定時)

5.3. 生成されるファイルの例

文字起こしファイル(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は初心者に優しいプログラミング言語である
- 変数を使うことでデータを効率的に管理できる
...

6. 詳細なオプション

6.1. タイムスタンプを削除

タイムスタンプが不要な場合:

python main.py 'VIDEO_URL' --no-timestamps

6.2. 要約をスキップ

文字起こしだけが欲しい場合:

python main.py 'VIDEO_URL' --no-summary

6.3. 要約言語を指定

動画は日本語だけど、要約は英語で欲しい場合:

python main.py 'VIDEO_URL' --summary-lang en

逆に、英語動画の日本語要約:

python main.py 'VIDEO_URL' --summary-lang ja

6.4. カスタムファイル名

出力ファイル名を指定したい場合:

python main.py 'VIDEO_URL' -o my_custom_transcript.md

7. 実践的な活用例

7.1. ケース1: 講義ノートの自動生成

# 大学の講義動画から日本語の要約ノートを作成
python main.py 'LECTURE_VIDEO_URL' --summary-lang ja -o lecture_note.md

活用シーン:

  • 復習用の要点まとめ

7.2. ケース2: 英語学習教材の作成

# 英語動画の文字起こしを取得(要約は不要)
python main.py 'ENGLISH_VIDEO_ID' --no-summary

活用シーン:

  • リスニング練習の答え合わせ
  • 知らない単語やフレーズの確認

7.3. ケース3: 技術カンファレンスの動画を要約

# 長時間の技術カンファレンス動画から要点を抽出
python main.py 'https://www.youtube.com/watch?v=CONF_VIDEO' --summary-lang ja

活用シーン:

  • 1時間以上の動画の要点を5分で把握

8. トラブルシューティング

8.1. Gemini API のエラー

  1. APIキーが正しいか確認
  2. Google AI Studioでクォータを確認

8.2. yt-dlpの抽出失敗

  • yt-dlp が古い場合はアップデート:pip install -U yt-dlp
  • 1日の利用制限の超過している場合は、翌日まで待つ

9. カスタマイズのアイデア

9.1. 要約プロンプトの調整

gemini_api.py 内のプロンプトをカスタマイズすることで、要約のスタイルを変更できます:

# 例:より技術的な要約にしたい場合
prompt = f"""
あなたは経験豊富なソフトウェアエンジニアです。
以下の技術動画の文字起こしから、実装に役立つ具体的な情報を抽出してください。
- ベストプラクティスを強調
- 注意点やよくあるミスも記載
...
"""

9.2. 長文の処理

50,000文字を超える長い文字起こしの場合、main.pyMAX_SUMMARY_LENGTH を調整:

MAX_SUMMARY_LENGTH = 100000  # より長い動画に対応

ただし、Gemini のトークン制限には注意が必要です。

10. まとめ

このツールを使えば、YouTube 動画から効率的に情報を抽出できます:

  • 時間の節約: 長い動画を見る時間がない時に要約で要点把握
  • 学習効率UP: 文字起こしで復習しやすく
  • 言語の壁を越える: 英語動画→日本語要約で情報収集
  • ナレッジベース構築: 技術動画をテキスト資料として蓄積

参考リンク:

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?