YouTubeの予約投稿(公開予定)をGoogleカレンダーに同期する(公式API・ローカルPython)
はじめに
YouTube Studio で動画の「予約投稿(公開予定)」を管理している。
特にだれに頼まれたわけでもないのだが、予約投稿をきっちりと行っており大体3か月くらい先までは勝手に更新される。
だが、そんなことをやっていると、どの動画がいつ更新されるのか分からなくなってしまった。つい先日、予約投稿がされていたにもかかわらず別の動画をあげてしまう事故が発生した。
これはだめだな…。
そう思い、公開予定をカレンダー形式で管理したいと考えた。
本記事では下記3つの要素で「YouTubeの公開予定動画をgoogleカレンダーに同期する」。
①YouTube Data API v3(公式)
②Google Calendar API(公式)
③ローカルPython実行
できること
実行日時よりあとに投稿される予定の動画情報を取得して反映する。
これによって「非公開→公開」「メンバー優先」の両方を反映できる。
・YouTubeチャンネルの「公開予定(予約投稿)」動画を取得
・公開予定日時を Googleカレンダーに自動反映
・日時変更時は 同じ予定を上書き更新(キャンセル乱発なし)
・何度実行しても 重複しない(upsert)
・ローカル実行のみ(サーバー不要)
前提条件
いくつか前提はあるが無料である。ハードルは低い。
・自分の YouTube チャンネル(管理権限あり)
・Python 3.10 以上
・Google Cloud プロジェクト作成権限
全体構成
- YouTubeチャンネルから動画情報を取得
- 公開日時が未来の動画に絞り込み
- Googleカレンダーに反映
予約投稿判定ロジック
status.publishAtが未来であること
準備作業その1(GCP)
準備作業としてプログラム内で用いる認証情報をダウンロードする。
- Google Cloud プロジェクトを作成
- 必要な API を有効化
- YouTube Data API v3 を有効化
- Google Calendar API を有効化
- OAuth 同意画面を作成
- OAuth クライアント ID を作成
- Google Auth Platform → クライアント→「クライアントを作成」
- 認証情報をダウンロード
- 作成した OAuth クライアントから認証情報をダウンロード
準備作業その2(初回実行)
初回実行では自分のYouTubeチャンネルとGoogleカレンダー反映用アカウントでのログインが必要。
- プログラムを実行
- YouTubeチャンネルログイン(ブランドアカウントの場合はブランドアカウントを利用)
- Googleカレンダー反映用アカウントログイン
この初回実行が終わるとプログラムと同じディレクトリ内にtokenが作成される。
これによって次回からのログインが不要となる。
コード
付け焼刃でコードをアップロードした。
SYNC.pyと準備作業その1(GCP)>#5で取得した.jsonファイルは同じディレクトリに配置する。
終わりに
こんな機能、YouTube Studioにつけといてくれ。