「PythonでYouTube投稿を自動化したい。でも環境構築が面倒」
「Google Colabで完結できないか探している」
そんな人が最短で「動くところ」まで辿り着くための記事です。
ここでは、Google Colaboratory上でPythonを使い、YouTube Data API経由で動画を投稿するまでの実装手順を、必要最小限かつ実務視点でまとめています。
APIの概要説明で終わらせず、「なぜその設定が必要か」「どこで詰まりやすいか」まで含めて整理しています。
この記事でわかること
- Google Colab × PythonでYouTubeに動画をアップロードする具体手順
- YouTube Data APIを使うための認証・認可の考え方
- そのまま使えるサンプルコードとカスタマイズポイント
- 実運用で必ず意識すべき権限・クォータの注意点
対象:Pythonの基礎があり、YouTube投稿の自動化・効率化を考えている人
Google ColabでYouTube投稿はできるのか?
結論から言うとできます。
YouTubeは公式にYouTube Data API(RESTful API)を提供しており、PythonからこのAPIを叩くことで「動画投稿」「タイトル・説明文設定」「公開範囲指定」まで制御できます。
Google Colabは
- Python実行環境が即使える
- Googleアカウント連携が前提
という点で、YouTube APIとの相性が非常に良いのが特徴です。
全体の流れ
まずは全体像です。
- Google Cloud Consoleでプロジェクトを作成
- YouTube Data APIを有効化
- OAuth 2.0 クライアントIDを作成
- Python用ライブラリをインストール
- 認証 → 動画アップロードコードを実行
1. Google Cloud Consoleでプロジェクトを作成
最初にやることは一つだけ。
- [Google Cloud Console] にアクセス
- 新規プロジェクトを作成
YouTube Data APIはプロジェクト単位で管理されるため、既存プロジェクトを使う場合でも「どのチャンネルに紐づくか」はここで決まります。
2. YouTube Data APIを有効化する
作成したプロジェクトで、次を実行します。
- 「APIとサービス」 → 「ライブラリ」
- YouTube Data API v3を検索
- 有効にする
ここを忘れると、後続のコードはすべて失敗します。
3. OAuth 2.0 クライアントIDを作成する
YouTubeへの投稿は**ユーザーの代理操作**になるため、APIキーでは不可。
OAuth 2.0 認証が必須です。
手順
- 「認証情報」→「認証情報を作成」
- OAuth 2.0 クライアント IDを選択
- アプリケーションタイプ:デスクトップアプリ
- クライアントID作成後、client_secrets.json をダウンロード
このJSONファイルが、Pythonコードから認証するための「鍵」になります。
4. Google Colabに必要なライブラリをインストール
Colab上で以下を実行します。
## 必要なライブラリをインストール !pip install google-api-python-client google-auth-oauthlib google-auth-httplib2
YouTube Data APIを扱うための公式クライアントライブラリ一式です。
5. YouTube Data APIへの認証・認可
ダウンロードした `client_secrets.json` をColabのファイル領域にアップロードした上で、以下を実行します。
import google.oauth2.credentials
from google_auth_oauthlib.flow import InstalledAppFlow
from googleapiclient.discovery import build
CLIENT_SECRETS_FILE = 'path/to/client_secrets.json'
SCOPES = ['https://www.googleapis.com/auth/youtube.force-ssl']
def get_authenticated_service():
flow = InstalledAppFlow.from_client_secrets_file(
CLIENT_SECRETS_FILE, SCOPES
)
credentials = flow.run_local_server(port=0)
return build('youtube', 'v3', credentials=credentials)
ここで何が起きているか
- Googleアカウントでログイン
- 「このアプリにYouTube操作を許可しますか?」と聞かれる
- 承認すると、PythonからYouTube操作が可能になる
初回のみブラウザ認証が走ります。これは仕様なので省略不可です。
6. Pythonで動画をアップロードする
実際に動画を投稿するコードです。
from googleapiclient.http import MediaFileUpload
def upload_video(youtube, file_path, title, description, privacy_status='public'):
request_body = {
'snippet': {
'title': title,
'description': description,
'tags': ['python', 'tutorial'],
'categoryId': '22'
},
'status': {
'privacyStatus': privacy_status
}
}
media_file = MediaFileUpload(file_path)
response = youtube.videos().insert(
part='snippet,status',
body=request_body,
media_body=media_file
).execute()
print(f"Video id '{response['id']}' was successfully uploaded.")
if __name__ == '__main__':
youtube = get_authenticated_service()
upload_video(
youtube,
'/content/sample_data/xxxxxx_video.mp4',
'My Python Video',
'A tutorial on how to use Python.'
)
設定できる主な項目
- title:動画タイトル
- description:説明文
- tags:タグ
- privacyStatus:`public / unlisted / private`
必要に応じて、投稿テンプレ化・自動生成も可能です。
実運用で必ず知っておくべき注意点
見落とされがちですが、重要です。
YouTube Data APIには「権限」と「クォータ制限」がある
- 投稿・更新系APIは消費クォータが高め
- 無制限に自動投稿すると制限に引っかかる
- 商用・大量運用の場合は、事前設計が必須
検証用途・少量投稿なら問題ありませんが、「毎日大量に自動投稿」などは要注意です。