🦆
Youtubeのチャンネル更新をRSSFeedで取得する
なぜ作成したのか
- よく見るYoutubeのチャンネルの更新を検知したい
- チャンネル登録してればいいのかもだけど、毎朝の情報チェックの流れでまとめて記録しておきたい
- となるとRSSFeedで取得できるのが良いのでは
やりたいこと
- 指定のチャンネルの更新をRSSFeedで定期的に取得し、蓄積する
- FeedUrlが取得できれば、現在運用している仕組みに組み込めるので、カテゴリ分類、タグ付けが共通化できる
調査
ChatGPTで調べた結果、公式に仕組みが提供されているらしい
1. 基本形:YouTube公式のRSSフィードURL
C: YouTubeはチャンネル・ユーザー・再生リストごとに、実は今もRSSを出しています:
- チャンネルID指定
https://www.youtube.com/feeds/videos.xml?channel_id=【チャンネルID】
- ユーザー名指定(古い /user/ 型チャンネル)
https://www.youtube.com/feeds/videos.xml?user=【ユーザー名】
- 再生リスト単位
https://www.youtube.com/feeds/videos.xml?playlist_id=【プレイリストID】
実運用では、ほぼ channel_id 版 を使うのが安定です。(Hacker News)
2. チャンネルID(UC…)を取得する方法
A. 一番汎用的なやり方(ページソースから探す)
- 対象チャンネルのページを開く
例:https://www.youtube.com/@SomeChannel - ブラウザで右クリック → 「ページのソースを表示」/「View Page Source」
- 表示されたソースで
RSSまたはfeedsを検索(Ctrl+F) - 次のような
<link>要素を探す:
<link rel="alternate" type="application/rss+xml" title="RSS"
href="https://www.youtube.com/feeds/videos.xml?channel_id=UCcJCTa4PvbOQj50y_HJSxXw">
-
href="..."のURLをそのままRSSリーダーに登録すればOK (Chuck Carroll)
実質「YouTubeが自分でRSS URLを教えてくれている」ので、それをコピーするだけです。
B. /channel/ 型URLなら、URLだけでOK
もしチャンネルURLがすでにこうなっている場合:
https://www.youtube.com/channel/UCXXXXXXX...
この UCXXXXXXX... 部分が channel_id なので、
https://www.youtube.com/feeds/videos.xml?channel_id=UCXXXXXXX...
に差し込めば完了です。(Hacker News)
C. /@handle (ハンドル)型チャンネルの場合
最近多い https://www.youtube.com/@channelname 形式は、そのままでは使えません。
この場合は、
-
https://www.youtube.com/@channelnameにアクセス - 上記 Aのソース表示→RSSリンクを検索 で
channel_id付きリンクを取得
または -
/aboutページ(例:https://www.youtube.com/@channelname/about)のソースで
itemprop="identifier"を探すと channel_id が出てきます。(Erika Rowland)
3. Playlist単位でRSSを取りたい場合
チャンネル全体ではなく、特定の再生リストだけ追いたい場合:
- 再生リストページにアクセス
例:https://www.youtube.com/playlist?list=PLxxxxxxxxxxx - URLの
list=の値がplaylist_id - 次のURLに差し替え:
https://www.youtube.com/feeds/videos.xml?playlist_id=PLxxxxxxxxxxx
4. APIを使った取得(障害・仕様変更対策)
YouTube公式RSSは、過去に一時的に 404 になる事象が何度かあり、将来仕様変更される可能性もあります。(大阪北区のホームページ制作会社インターコード)
安定性を上げたい場合は、YouTube Data API v3でチャンネルの最新動画を定期取得し、自前でRSS相当のデータを作る、という構成もあります:
https://www.googleapis.com/youtube/v3/search
?part=snippet
&channelId=【チャンネルID】
&maxResults=5
&order=date
&type=video
&key=【APIキー】
取得したJSONをGASなどで加工して、Spreadsheetに書き込んだり、別途RSSを生成する、というパターンです。(大阪北区のホームページ制作会社インターコード)
実験
- ためしに「ゆる民俗学ラジオ」さんのFeedURLを取得してみる
-
channel_idが 「UC6pDJs3tlf2iw-t4JaG7Qsg」なので、URLは「https://www.youtube.com/feeds/videos.xml?channel_id=UC6pDJs3tlf2iw-t4JaG7Qsg」になる 
まとめ
- Youtubeチャンネルの更新はRSSFeedで取得できた
- 動画の情報も既存のRSS情報収集の一環としてカタログ化・タグ付けできるので非常に助かる


Discussion