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動画の文字起こしを自動取得&AI要約するPythonスクリプトの紹介

Last updated at Posted at 2025-09-22

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 キーが必要です:

  1. Google AI Studioで API キーを取得
  2. 環境変数に設定:
    export GEMINI_API_KEY="your_api_key_here"
    
  3. または、main.py or all.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つのファイルが生成されます:

  1. {video_id}_transcript.md - タイムスタンプ付き文字起こし
  2. {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キーの問題、またはクォータ超過

解決策:

  1. APIキーが正しいか確認
  2. Google AI Studioでクォータを確認
  3. 非常に長い動画は、トークン制限に引っかかる可能性あり

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.pyMAX_SUMMARY_LENGTH を調整:

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

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

11. まとめ

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

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

12. 応用編:こんな使い方も

12.1. Obsidian や Notion との連携

Markdown 形式の出力なので、Obsidian などのナレッジベースツールとシームレスに統合できます。

12.2. チーム内の知識共有

技術カンファレンスや勉強会の動画を要約して、Slack や Notion で共有。

12.3. コンテンツ再利用

自分の YouTube 動画から文字起こしを作成し、ブログ記事の下書きとして利用。


参考リンク:

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?