PR
AI・プログラミングトックリツバメ観察

YouTube Liveコメント監視システム|鳥の定点観測で緊急通報を実現

背景

ひょんなことから始めた鳥観測システム1期目では1羽は生まれてすぐに死亡したのですが、それ以降は落下することもなく無事巣立ちました。しかし、まさかの2期目が始まり、4羽いたのですが、結構な割合で落下するようになりました。

早期救出が生存を分けると思うのですが、普段はリモートワークで普通に仕事しているので、仕事が終わって、子供が寝静まってから15時間分の動画をチェックして初めて気づくという形でした。

幸い、ヒナの落下が始まる頃には2期目はライブ配信を見守ってくれる方々が教えてくれるようになりました。教えてくれるのですが、YouTubeをちょこちょこ見るわけにもいかず、LINE通知ができれば少しでも早い救出ができると思ったので、YouTube Liveのコメントで特定キーワードが検出されたらLINEに通報する仕組みを作成したので、紹介します。

こちらがyoutubeライブ動画の一部をまとめたものです。

システム概要

主な機能

  • YouTube Liveのコメント欄をリアルタイム監視
  • 指定キーワード(「hina」「緊急」など)を自動検知
  • 検知時に即座にLINE通知を送信
  • APIクォータ節約機能で無料枠内で安全運用

効率的なAPI使用設計

  • 配信中:2分間隔でチェック
  • 配信待機中:10分間隔でチェック
  • 配信時間外:1時間間隔で自動調整
  • YouTube Data APIの無料枠(10,000クォータ/日)内で動作

動作環境

  • ハードウェア: Raspberry Pi(ラズパイ)
  • Python: 3.7以上
  • OS: Raspberry Pi OS

目次

  1. 準備
  2. YouTube API認証設定
  3. LINE Bot設定
  4. ソースコード
  5. 実行
  6. 実際の使用例
  7. セキュリティ注意事項
  8. まとめ

準備

Google APIを使うのと、LINE Message APIの二つの設定が必要なので事前に設定する情報が多いです。以下簡単に説明します。

YouTube API認証設定

こちらの記事にYouTube Data API v3の使い方を書いてあるので参照ください。

参考記事: YouTube動画200本をAPI自動化でHP掲載

Google Cloud Consoleでプロジェクト作成

  1. Google Cloud Console にアクセス
  2. 新しいプロジェクトを作成またはプロジェクトを選択
  3. YouTube Data API v3を有効化
  4. 認証情報を作成(OAuth 2.0 クライアントID)
  5. アプリケーションタイプで「デスクトップアプリケーション」を選択
  6. client.jsonファイルをダウンロード

client.jsonの設置

# ダウンロードしたファイルをプロジェクトルートに配置
cp ~/Downloads/client_secret_xxxxx.json ./client.json

LINE Bot設定

LINEのBot設定については、基本的な流れは以下のような記事を参考にしてください:

参考記事: PayPay決済通知をLINEで受け取る方法|Google Apps Script活用ガイド ※LINEボット設定部分を参照

LINE Developers ConsoleでBot作成

  1. LINE Developers Console にアクセス
  2. プロバイダーを作成(未作成の場合)
  3. Messaging APIチャネルを作成
  4. チャネルアクセストークン(長期)を発行
  5. Webhook設定を無効化(使用しないため)

LINE認証情報ファイル作成

bash

# アクセストークンファイル作成
echo "YOUR_CHANNEL_ACCESS_TOKEN" > access_token.txt

# 通知先ユーザーIDファイル作成
echo "YOUR_USER_ID" > user_id.txt

ユーザーIDの取得方法

  1. LINE Botと友達になる
  2. 任意のメッセージを送信
  3. LINE Bot Designer の Messaging API設定でWebhookを一時的に有効化
  4. Webhook URLで受信したイベントからユーザーIDを確認

ソースコード

こちらにソースコードを公開しております。

GitHub: hiirofish/comment-line-bot-youtube

設定ファイルの準備

プロジェクトをクローン後、以下のファイルを作成してください:

# リポジトリクローン
git clone https://github.com/hiirofish/comment-line-bot-youtube.git
cd comment-line-bot-youtube

# チャンネルIDファイル作成
echo "UCxxxxxxxxxxxxxxxxx" > channel_id.txt

# 必要パッケージインストール
pip install -r requirements.txt

実行

1. ライブ配信を開始

まず、YouTubeでライブ配信を実施します。

2. プログラム実行

python monitor_for_youtubelive.py

初回実行時のみ、ターミナルにGoogleの認証URLが表示されます:

Please visit this URL to authorize this application: https://accounts.google.com/oauth/authorize?...

ブラウザでURLを開いて認証すると、token.pickleファイルが生成され、2回目以降は自動で認証されます。

3. 自動動作開始

プログラムが以下のように動作します:

  1. channel_id.txtから自動でライブ配信を検索
  2. 配信中のコメントを取得
  3. 定期的に監視し、キーワードが発見されればLINEに通知

実際の使用例

起動時のログ例(実際の動作ログから一部マスク)

pi@raspberrypi:~/comment-line-bot-youtube $ python monitor_for_youtubelive.py 
2025-08-24 11:28:41,596 - INFO - ==================================================
2025-08-24 11:28:41,596 - INFO - YouTube Live Comment Monitor 起動(クォータ節約版)
2025-08-24 11:28:41,596 - INFO - ==================================================
2025-08-24 11:28:41,596 - INFO - チャンネルID読み込み完了: UCxxxxxxxxxxxxxxxxx
2025-08-24 11:28:41,597 - INFO - 監視チャンネル: UCxxxxxxxxxxxxxxxxx
2025-08-24 11:28:41,597 - INFO - 監視キーワード: 'hina' (緊急), 'test' (テスト)
2025-08-24 11:28:41,597 - INFO - 配信時間: 5:00-19:00
2025-08-24 11:28:41,597 - INFO - チェック間隔: 配信中120秒, 待機中600秒
2025-08-24 11:28:41,597 - INFO - ==================================================
2025-08-24 11:28:41,597 - INFO - LINE認証情報を読み込みました
2025-08-24 11:28:42,070 - INFO - YouTube API認証完了
2025-08-24 11:28:42,246 - INFO - ✅ LINE通知送信成功: test
2025-08-24 11:28:42,622 - INFO - 📺 ライブ配信発見: 野鳥の巣のライブ配信
2025-08-24 11:28:42,702 - INFO - ✅ 配信監視を開始しました
2025-08-24 11:28:42,907 - INFO - ✅ LINE通知送信成功: test

キーワード検知時のログ例

2025-08-24 14:53:57 - WARNING - ⚠️ キーワード検知 [emergency]: 視聴者A - hina いないかなぁ
2025-08-24 14:53:58 - INFO - ✅ LINE通知送信成功: emergency

実際のLINE通知例

システム起動通知:

🔍 【テスト】動作確認

投稿者: システム
コメント: 監視システムが起動しました(省エネモード)
時刻: 09:11:25

本日のAPI使用: 3回

緊急通知例:

🚨🚨🚨 【緊急】キーワード検知

投稿者: ○○ちゃん
コメント: hina いないかなぁ
時刻: 14:53:57

本日のAPI使用: 218回
🚨🚨🚨 【緊急】キーワード検知

投稿者: ××ロー
コメント: 14:47ちゅーたジャイアンに押された😭hina
時刻: 14:57:58

本日のAPI使用: 220回

APIクォータ管理

  • 1日の推定使用量: 約200-300クォータ(8時間配信の場合)
  • 無料枠内での安全運用: YouTube Data APIの10,000クォータ/日以内
  • クォータ超過時: 翌日17時まで自動待機

自動運転機能

  • 配信開始/終了の自動検知
  • エラー時の自動復旧
  • 重複通知の防止
  • 詳細なログ出力

セキュリティ注意事項

認証ファイルの適切な管理

以下のファイルには重要な認証情報が含まれているため、適切に管理してください:

秘匿すべきファイル:

  • client.json – YouTube API OAuth認証情報
  • token.pickle – YouTubeアクセストークンキャッシュ
  • access_token.txt – LINEボットアクセストークン
  • user_id.txt – LINE通知先ユーザーID
  • channel_id.txt – 監視対象チャンネルID

セキュリティ対策

  1. ファイル権限設定
# 認証ファイルの権限を制限
chmod 600 client.json token.pickle access_token.txt user_id.txt
  1. Git管理からの除外 .gitignoreファイルで以下を除外設定:
client.json
token.pickle
access_token.txt
user_id.txt
channel_id.txt
  1. 定期的なトークン更新
  • LINEアクセストークンは定期的に再発行を推奨
  • YouTube APIトークンは自動更新されますが、問題発生時はtoken.pickleを削除して再認証
  1. ネットワークセキュリティ
  • ラズパイのSSH設定を適切に行う
  • ファイアウォール設定でポート制限
  • 定期的なシステム更新

救出成功例

実際にこのシステムを使って、視聴者からの通報により迅速にヒナの救出に成功した事例があります。従来なら仕事終わりに録画をチェックして発見する(数時間後)ところを、リアルタイム通知により数分以内に対応できるようになりました。

まとめ

設定がやや複雑だったりしますが、定点観測などの緊急通報システムとしては実用的だと思いました。今回はコメントからLINE通知でしたが、コメントから動画演出を加えるようなシステムも作れれば面白そうですね。

ラズパイでの24時間稼働も問題なく、APIクォータも無料枠内で十分運用できています。時間があれば、コメントトリガーでの自動録画機能なども試してみたいと思います。

野鳥観察や定点観測で同様の課題を抱えている方の参考になれば幸いです。

タイトルとURLをコピーしました