【自作Pythonコード解説 YMM4編④】動画投稿も全自動!YouTube Data API v3の「OAuth認証」をコピペで攻略する方法

本ページはプロモーションが含まれています
国内のAI狂い

みんな〜!動画投稿、手動でやってない!?国内のAI狂いだよ!🐍✨

YMM4で動画を作るところまでは自動化したけど、「YouTubeへのアップロード」でまた手作業に戻るなんてナンセンスだよね?
タイトルを入力して、概要欄をコピペして、サムネを選んで…うーん、面倒くさい!!😱

実はPythonを使えば、Google公式の「YouTube Data API v3」を経由して、これ全部ワンクリックで終わらせられるの!
今回は、初心者が一番つまずきやすい「OAuth認証」の壁を突破して、安全に動画を自動投稿するコードを紹介するよ!Geminiと一緒にAPIをハックしよう!🚀

💡 なぜ「Data API」を使うの?

Seleniumなどでブラウザを操作してアップロードする方法もあるけど、Googleはそれを推奨していないんだよね。
公式APIを使うメリットは、なんといっても「圧倒的な安定感」「BANリスクの低さ」
正しい手順で「認証」さえ通れば、あとはPythonが勝手にやってくれるよ。

  • STEP 1:Google Cloud ConsoleでAPIキーと認証情報(JSON)を取得
  • STEP 2:Pythonで「OAuth2.0」認証を通す
  • STEP 3:動画ファイルとメタデータを送信して完了!

💡 認証情報の取り扱いに注意!

コードを書く前に、Google Cloud Consoleから `client_secret.json` というファイルをダウンロードしておく必要があるよ。
このファイルは「家の鍵」みたいなものだから、絶対に他人に渡しちゃダメ!

セキュリティ警告

client_secret.json や、生成される token.json は、あなたのYouTubeチャンネルの操作権限そのものです。
Gitにアップロードしたり、ブログに貼り付けたりしないように厳重に管理してください!

💡 実装コード:認証からアップロードまで

これが実際に私が使っているアップロード用の関数だよ!
初回実行時だけブラウザが立ち上がってログインを求められるけど、2回目からは `token.json` が保存されるから完全自動になる仕組み!便利すぎ!✨

import os
from googleapiclient.discovery import build
from googleapiclient.http import MediaFileUpload
from google_auth_oauthlib.flow import InstalledAppFlow
from google.auth.transport.requests import Request
from google.oauth2.credentials import Credentials

# 設定:認証ファイルのパス
# 自分の環境に合わせて書き換えてね
BASE_DIR = r"C:\Users\AIGURUI\Desktop\AIラジオ"
CLIENT_SECRET_FILE = os.path.join(BASE_DIR, "client_secret.json")
SCOPES = ["https://www.googleapis.com/auth/youtube.upload"]

def get_authenticated_service():
    """OAuth2.0認証を行い、YouTubeリソースを返す関数"""
    creds = None
    token_path = os.path.join(BASE_DIR, "token.json")

    # すでにトークンがある場合は再利用
    if os.path.exists(token_path):
        creds = Credentials.from_authorized_user_file(token_path, SCOPES)
    
    # トークンがない、または期限切れの場合は再認証
    if not creds or not creds.valid:
        if creds and creds.expired and creds.refresh_token:
            creds.refresh(Request())
        else:
            flow = InstalledAppFlow.from_client_secrets_file(CLIENT_SECRET_FILE, SCOPES)
            creds = flow.run_local_server(port=0)
        
        # 次回用にトークンを保存
        with open(token_path, "w") as token:
            token.write(creds.to_json())

    return build("youtube", "v3", credentials=creds)

def upload_video(video_path, title, description):
    """動画をアップロードするメイン処理"""
    youtube = get_authenticated_service()

    body = {
        "snippet": {
            "title": title,
            "description": description,
            "tags": ["AI", "Python", "Automation"],
            "categoryId": "22" # 22=People & Blogs
        },
        "status": {
            "privacyStatus": "private", # 最初は非公開が安全!
            "selfDeclaredMadeForKids": False
        }
    }

    # アップロード実行(リジューム可能モード)
    media = MediaFileUpload(video_path, chunksize=-1, resumable=True)
    request = youtube.videos().insert(
        part=",".join(body.keys()),
        body=body,
        media_body=media
    )
    
    print("アップロード中...")
    response = request.execute()
    print(f"完了!動画ID: {response['id']}")

💡 コードのポイント解説

特に大事なのが get_authenticated_service 関数。
ここで「有効期限切れのトークンを自動更新(リフレッシュ)」する処理が入っているから、長期間放置してても勝手にログアウトされたりしないの。
これがプロの自動化スクリプトだよ!

国内のAI狂い
💡 管理人の考察

APIって聞くと難しく感じるけど、要は「許可証(JSON)」を持って「専用の入り口」を通るだけなんだよね。
一度この仕組みを作っちゃえば、あとはPythonが寝ている間に動画を投稿してくれる…まさに不労所得への第一歩!?

みんなも安全に気をつけて、快適な自動投稿ライフを楽しんでね!Pythonしか勝たん!💖

よかったらシェアしてね!
  • URLをコピーしました!
目次