Youtube→Notebook LMで情報取得効率を最高に上げる

AI、学習

投資分析や情報収集のために、YouTubeの動画を端から端まで眺める。その行為が悪いとは言わない。だが、時間は有限だ。1,000本を超える動画アーカイブを持つチャンネルをすべてチェックするのに、一体どれだけのコストを支払うつもりなのか。

賢明な投資家や分析家は、時間をショートカットする。Macのターミナルとわずかなコードを用い、チャンネル内の全動画から「テキスト」のみを抽出する方法がある。それをGoogleのAI「NotebookLM」に読み込ませれば、膨大な知識ベースを持つ強力な分析パートナーが手に入るというわけだ。

手順は至ってシンプル。「コマンドをコピーして実行する」。それだけで完結する。



ステップ1:道具の調達

まずはMacの「ターミナル」を起動する。黒い画面が表示されても動じる必要はない。

最初に、動画データを扱うためのツール「yt-dlp」を導入する。すでに環境が整っているなら、この工程は飛ばして構わない。

Terminal
python3 -m pip install yt-dlp

ステップ2:字幕データの確保

動画ファイルそのものは不要だ。必要なのは「言葉」のみ。

まずはデスクトップに専用のフォルダを作成し、そこへ移動する。

Terminal - 準備
cd ~/Desktop && mkdir my_channel_subs && cd my_channel_subs

次に、字幕データをダウンロードする。以下のコマンドの末尾にあるURLを、分析したいチャンネルのURLに書き換えてから実行してくれ。

Terminal - 実行
python3 -m yt_dlp --skip-download --write-auto-sub --sub-lang ja --output "%(upload_date)s_%(title)s" https://www.youtube.com/@ターゲットのチャンネルID/videos

ステップ3:データの研磨

ここが最も重要な局面だ。ダウンロードされたVTTファイルを確認すればわかる通り、タイムスタンプや制御タグで埋め尽くされている。加えてYouTubeの自動字幕は「カラオケ形式」であり、同じフレーズが何度も重複して記録されている。

このままAIに読み込ませても、ノイズ過多でエラーを吐くだけだ。

そこで、フォルダ内の全ファイルを巡回し、不要なタグを除去し、重複行を整理して、可読性の高い「TXTファイル」へと変換するプログラムを作成する。

以下の長いコードブロックをコピーし、ターミナルに貼り付けて実行する。これで「変換ツール」がその場で作られる。

Terminal - ツール作成
# 変換プログラムを作成する
cat << 'EOF' > convert_all_vtts.py
import glob
import re
import os

def clean_text(text):
    lines = text.split('\n')
    cleaned_lines = []
    
    # タグと時刻の削除
    for line in lines:
        if '-->' in line or line.startswith('WEBVTT') or line.startswith('Kind:') or line.startswith('Language:'):
            continue
        line = re.sub(r'<[^>]+>', '', line)
        line = line.strip()
        if line:
            cleaned_lines.append(line)

    # 重複行の削除(カラオケ字幕対策)
    unique_lines = []
    if not cleaned_lines:
        return ""
        
    for i in range(len(cleaned_lines) - 1):
        current_line = cleaned_lines[i]
        next_line = cleaned_lines[i+1]
        if next_line.startswith(current_line):
            continue
        if current_line == next_line:
            continue
        unique_lines.append(current_line)
    
    if cleaned_lines:
        unique_lines.append(cleaned_lines[-1])
    
    return '\n'.join(unique_lines)

# 実行処理
vtt_files = glob.glob("*.vtt")
print(f"{len(vtt_files)} 個のファイルを確認。変換を開始する。")

count = 0
for vtt_file in vtt_files:
    try:
        with open(vtt_file, 'r', encoding='utf-8') as f:
            content = f.read()
        
        clean_content = clean_text(content)
        txt_file = vtt_file.rsplit('.', 1)[0] + ".txt"
        
        with open(txt_file, 'w', encoding='utf-8') as f:
            f.write(clean_content)   
        count += 1
    except Exception as e:
        print(f"エラー発生 ({vtt_file}): {e}")

print(f"完了。 {count} 個のファイルをテキスト形式に変換した。")
EOF

道具は完成した。あとは引き金を引くだけだ。以下のコマンドで変換を実行する。

Terminal - 変換実行
python3 convert_all_vtts.py

ステップ4:情報の統合

フォルダ内には、整形されたテキストファイルが並んでいるはずだ。

NotebookLMには一度に読み込めるファイル数に制限があるため、これらを「一つの統合ファイル」にまとめる処理を行う。

Terminal
cat *.txt > All_Videos_Cleaned.txt

ファイナル:AIによる分析

これで準備は整った。デスクトップに生成された All_Videos_Cleaned.txt。これこそが、そのチャンネルが長年蓄積してきた知見の結晶だ。

あとはこれをGoogleの NotebookLM にアップロードすればいい。

「今後の市場見通しはどうなっている?」「過去に言及されたリスク要因を列挙せよ」……あらゆる問いかけに対し、答えは即座に提示される。

数千時間の動画を視聴する必要はない。結果だけを享受すればいい。

なお、この手法はあくまで私的利用の範囲に留めること。権利侵害やトラブルにならぬよう、節度ある運用を推奨する。

QooQ