【Mac完全版】YouTube自動投稿システム:動画をフォルダに置くだけで完了!

AI
Screenshot

AIで動画生成を始めると、次に欲しくなるのが「投稿の自動化」です。 毎日1本、あるいは数本の動画を手動でアップロードするのは意外と時間がかかります。

本記事では、Mac環境でPythonを使い、指定したフォルダに動画を置くだけで、以下の作業をすべて自動化する仕組みを解説します。

  • タイトル生成(ファイル名から自動作成)
  • 動画アップロード
  • サムネイルの自動設定
  • 投稿済みファイルの自動仕分け整理

一度構築してしまえば、あなたは動画を作ってフォルダに入れるだけ。あとの面倒な作業はMacに任せましょう。


1. 準備:MacにPythonをインストールする

まずはプログラムを動かす環境を作ります。

  1. Python公式サイトからインストーラーをダウンロードし、インストールしてください。
  2. Macの「ターミナル」アプリを開き、python3 --version と入力してバージョンが表示されればOKです。
  3. 作業用フォルダを作り、準備を整えます。ターミナルに以下を順にコピペしてください。Bashmkdir ~/Desktop/youtube_automation cd ~/Desktop/youtube_automation python3 -m venv venv source venv/bin/activate pip install google-api-python-client google-auth-oauthlib

2. YouTube API(Google Cloud)の設定

YouTubeを操作するための「合鍵」を取得します。

  1. Google Cloud Consoleでプロジェクトを作成。
  2. YouTube Data API v3を有効にします。
  3. OAuth同意画面を設定し、必ず自分のGmailアドレスを**「テストユーザー」**に追加してください(※これを忘れるとエラー403で動きません)。
  4. 認証情報から「OAuth 2.0 クライアント ID」を「デスクトップアプリ」として作成し、JSONファイルをダウンロードします。
  5. ダウンロードしたファイル名を client_secret.json に変更して、デスクトップの youtube_automationフォルダに入れてください。

3. フォルダ構成

フォルダの中身を以下の状態にします。

  • main_uploader.py(下記のソースコードを保存)
  • client_secret.json(取得した鍵)
  • thumbnail.jpg(共通サムネイル画像)
  • upload_queue/(ここに投稿したい動画を入れる)
  • archive/(投稿が終わるとここへ自動移動されます)

4. 自動投稿ソースコード(main_uploader.py)

この内容をコピーして、テキストエディタなどで main_uploader.py という名前で保存してください。

Python

import os
import pickle
import shutil
from google_auth_oauthlib.flow import InstalledAppFlow
from googleapiclient.discovery import build
from googleapiclient.http import MediaFileUpload

# 設定
CLIENT_SECRET = "client_secret.json"
SCOPES = ['https://www.googleapis.com/auth/youtube.upload']
QUEUE_DIR = "upload_queue"
ARCHIVE_DIR = "archive"
THUMBNAIL = "thumbnail.jpg"

def get_service():
    creds = None
    if os.path.exists('token.pickle'):
        with open('token.pickle', 'rb') as token:
            creds = pickle.load(token)
    if not creds or not creds.valid:
        flow = InstalledAppFlow.from_client_secrets_file(CLIENT_SECRET, SCOPES)
        creds = flow.run_local_server(port=0)
        with open('token.pickle', 'wb') as token:
            pickle.dump(creds, token)
    return build('youtube', 'v3', credentials=creds)

def main():
    youtube = get_service()
    if not os.path.exists(ARCHIVE_DIR): os.makedirs(ARCHIVE_DIR)
    
    # フォルダ内のMP4を検索
    files = sorted([f for f in os.listdir(QUEUE_DIR) if f.endswith('.mp4')])
    
    if not files:
        print("投稿待ちの動画がありません。")
        return

    for filename in files:
        file_path = os.path.join(QUEUE_DIR, filename)
        print(f"🚀 投稿開始: {filename}")

        # タイトル生成(ファイル名をベースにする)
        title = f"【AI】{os.path.splitext(filename)[0]}"
        
        body = {
            "snippet": {"title": title, "categoryId": "10"},
            "status": {"privacyStatus": "unlisted"} # 安全のため限定公開
        }
        
        # アップロード
        media = MediaFileUpload(file_path, resumable=True)
        request = youtube.videos().insert(part="snippet,status", body=body, media_body=media)
        response = request.execute()
        video_id = response.get('id')

        # サムネイル設定
        if os.path.exists(THUMBNAIL):
            youtube.thumbnails().set(videoId=video_id, media_body=MediaFileUpload(THUMBNAIL)).execute()

        # 【自動仕分け】投稿済みフォルダへ移動
        shutil.move(file_path, os.path.join(ARCHIVE_DIR, filename))
        print(f"✅ 完了 ID: {video_id} -> archiveへ移動しました\n")

if __name__ == '__main__':
    main()

5. 日々の操作手順(運用マニュアル)

環境構築ができたら、普段の投稿は驚くほど簡単です。

  1. 動画を置く: 投稿したい動画を upload_queue フォルダにコピーします。ファイル名がそのままタイトルになります。
  2. 実行する: ターミナルで以下の3行を打つだけです(コピペでOK)。
    Bashcd ~/Desktop/youtube_automation source venv/bin/activate python main_uploader.py
  3. 完了の確認: 投稿が終わると動画は自動的に archive フォルダへ移動し、仕分けされます。

⚠️ 運用の重要ルール

このシステムでは、動画は一旦**「限定公開」**でアップロードされます。 AI生成コンテンツは、YouTube側での著作権チェック(Content IDなど)が完了するまで数分かかります。投稿完了後、YouTube Studioで問題がないか確認し、最後に自分の手で「公開」に切り替えてください。 これがアカウントを安全に守るコツです。

スポンサー

画像に alt 属性が指定されていません。ファイル名: bgt


画像に alt 属性が指定されていません。ファイル名: bgt

画像に alt 属性が指定されていません。ファイル名: bgt

画像に alt 属性が指定されていません。ファイル名: bgt
画像に alt 属性が指定されていません。ファイル名: bgt


コメント

タイトルとURLをコピーしました