Google Colaboratoryを利用して音声ファイルの文字起こしを行う

プログラミング

Google Colaboratory Pythonを利用してYoutubeの投稿を行う

2023年3月16日

「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との相性が非常に良いのが特徴です。

全体の流れ

まずは全体像です。

  1. Google Cloud Consoleでプロジェクトを作成
  2. YouTube Data APIを有効化
  3. OAuth 2.0 クライアントIDを作成
  4. Python用ライブラリをインストール
  5. 認証 → 動画アップロードコードを実行

1. 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は消費クォータが高め
  • 無制限に自動投稿すると制限に引っかかる
  • 商用・大量運用の場合は、事前設計が必須

検証用途・少量投稿なら問題ありませんが、「毎日大量に自動投稿」などは要注意です。

  • この記事を書いた人

朝倉卍丸

シングルモルトスコッチなどのお土産を持ってきた人を助けるのが好きです。サービスの分割が重要ですが、昔ながらの方法でやりたいこともありますよね。

よく読まれている記事

条件の0=0は全てが正であるを意味するSQL 1

SQLの条件に0=0のような記述を見かけます。 変わった書き方の条件ですが、これは「全てが正である」事を意味しており、結合条件の場合はCROSS JOINと同じです。 下記の例で言えば、結合するsub ...

DISTINCTを使わないで重複排除を考えるSQL 2

SQLのDISTINCTはEXISTSとかGROUP BYでなんとかする事もできます。 DISTINCTは暗黙的なソートがされますが、何のDBを使うにせよ過去のバージョンならともかく、最近のバージョン ...

RFC 5322に準拠させた正規表現言語別 3

RFC5322で定義されている正規表現を、各言語の正規表現に変化させた形になります。 完全な電子メール正規表現は存在しないので、結局のところ何かの公式基準に従っていたとしても、自分が携わるサービスのル ...

-プログラミング
-,