はじめに
日々こんなこと思いませんか?
- 有益なYouTube動画だけ見たい
- 無駄な動画は見たくない
- 情報収集を自動化したい
そこで今回は、
- YouTubeの新着動画を取得
- スコアリングで質の高い動画だけ選別
- LINEにまとめて通知
という仕組みを
n8nで構築しました。
完成イメージ
LINEにこんな感じで届きます👇
質の高い動画を5件まとめました。
1件目
チャンネル:〇〇
タイトル:〇〇
公開日時:〇〇
再生数:〇〇
いいね:〇〇
コメント:〇〇
スコア:〇〇
URL:〇〇
--------------------
2件目
...
「ちゃんと見た方がいい動画だけ届く」のがポイントです。
使用技術
- n8n
- YouTube Data API
- LINE Messaging API
- Google Sheets(履歴管理)
ワークフロー全体像
① スプレッドシート(通知済み動画取得)
↓
② YouTube検索APIで新着取得
↓
③ 未通知動画だけ抽出
↓
④ 詳細情報取得(再生数など)
↓
⑤ スコア計算
↓
⑥ 上位5件に絞る
↓
⑦ LINE通知
↓
⑧ スプレッドシートに保存
実際のワークフロー
各処理の解説
① 通知済み動画を取得
重複通知防止のため
Google Sheetsから過去に通知した動画を取得
② YouTube検索APIで新着取得
GET https://www.googleapis.com/youtube/v3/search
ポイント:
relevanceLanguage=ja → 日本語動画限定
完全に絞り込みはできませんが、日本語コンテンツに設定できます
③ 未通知動画だけフィルタ
const notifiedIds = new Set(...);
return items.filter(item => {
return !notifiedIds.has(item.videoId);
});
一度送った動画は二度送りません。
④ 動画詳細を取得
GET https://www.googleapis.com/youtube/v3/videos
後続処理のスコアリングのため各動画の詳細を取得します。
取得する情報:
再生数
いいね数
コメント数
⑤ スコアリング
const score =
(viewCount / ageHours) * 0.6 +
likeCount * 8 +
commentCount * 12;
評価基準:
再生数(時間補正あり)
いいね
コメント
⑥ 上位5件に絞る
.sort((a, b) => b.json.score - a.json.score)
.slice(0, 5);
⑦ LINE通知
{
"to": "ユーザーID",
"messages": [
{
"type": "text",
"text": "まとめメッセージ"
}
]
}
一括で送ることで1件ずつ送るよりUXが良くなります。
⑧ スプレッドシートに保存
履歴管理&再送防止用です。
改良アイデア
使ってみて改善点も見つかりました。
-
AI要約追加
動画 → 要約 → LINE送信 -
ジャンル別通知
ショートと横動画で分けれたら良い
まとめ
今回作ったもの👇
- YouTube新着監視
- 質の高い動画だけ抽出
- LINE通知
これにより
YouTube「情報収集」が自動化できます。
