YouTube公式APIでは、ライブ中のチャットは取得できますが、アーカイブ配信のチャット(リプレイ)は取得できません。
そこで活躍するのが、非公式ライブラリpytchatです。本記事では、pytchatを使って動画IDを指定し、チャットコメントをCSVに保存する方法を紹介します。
1. 前提と準備
- Python 3.9+(推奨)
- pytchatライブラリ
インストール
pip install pytchat
2. サンプルコード(アーカイブ配信のチャット取得)
import pytchat
import pandas as pd
VIDEO_ID = "YOUR_VIDEO_ID" # 例: "dQw4w9WgXcQ"
chat = pytchat.create(video_id=VIDEO_ID)
rows = []
while chat.is_alive():
for c in chat.get().sync_items():
rows.append({
"time": c.datetime,
"author": c.author.name,
"authorChannelId": c.author.channelId,
"message": c.message,
"amountValue": c.amountValue, # SuperChat金額(ない場合は0)
"amountString": c.amountString, # SuperChat表示(例: "¥500")
})
if len(rows) > 500: # デモ用。500件で停止
break
df = pd.DataFrame(rows)
print(df.head())
# CSV保存
df.to_csv("chat_archive.csv", index=False, encoding="utf-8-sig")
print("Saved to chat_archive.csv")
このコードを実行すると、指定した動画のチャットが順次取得され、CSVに保存されます。
3. 実行結果サンプル
time | author | authorChannelId | message | amountValue | amountString |
---|---|---|---|---|---|
2025-08-01 20:15:32 | ユーザーA | UCxxxxxx | おつかれさま! | 0 | |
2025-08-01 20:16:10 | ユーザーB | UCyyyyyy | 楽しかったです! | 500 | ¥500 |
4. 注意点
- 非公式ライブラリのため、YouTubeの仕様変更で動作が停止する可能性あり
- SuperChat金額・通貨も取得可能だが、収益計算用途は規約違反の恐れ
- 商用利用は規約に十分注意し、研究・分析目的に留めるのが安全