YouTube Data API v3を使用して動画をYouTubeにアップロードします。このスキルは、(1) Manimで作成した動画のYouTubeへのアップロード、(2) 動画メタデータ(タイトル、説明、タグ)の設定、(3) プライバシー設定(公開、限定公開、非公開)、(4) 予約投稿、(5) プレイリストへの追加に使用します。
Uploads videos to YouTube using the YouTube Data API v3. Triggers when you need to publish Manim animations or other videos to YouTube with metadata, privacy settings, scheduled publishing, or playlist additions.
/plugin marketplace add y-ymmt/cc-manim-video-creator-plugin/plugin install manim-video-creator@manim-video-creatorThis skill inherits all available tools. When active, it can use any tool Claude has access to.
requirements.txtscripts/youtube_uploader.pysetup.shYouTube Data API v3を使用して、作成した動画をYouTubeにプログラマティックにアップロードします。
以下のセットアップはユーザー自身が行う必要があります。セットアップが完了していない場合は、このスキルの「初回セットアップガイド」セクションを参照するよう案内してください。
credentials.json をダウンロードpip3 install google-auth-oauthlib google-api-python-client
重要: credentials.json は以下の優先順位で自動検索されます。明示的に --credentials オプションを指定しなくても、以下の場所に配置されていれば自動的に使用されます。
| 優先度 | 場所 | パス |
|---|---|---|
| 1 | 明示的指定 | --credentials /path/to/credentials.json |
| 2 | プロジェクトディレクトリ | ./credentials.json |
| 3 | ホームディレクトリ | ~/credentials.json |
| 4 | 設定ディレクトリ | ~/.config/youtube/credentials.json |
| 5 | プラグインディレクトリ | ${CLAUDE_PLUGIN_ROOT}/credentials.json |
# 個人用(全プロジェクト共通)- 推奨
~/.config/youtube/credentials.json
# または
~/credentials.json
# プロジェクト固有の認証情報
./credentials.json
token.json(認証トークン)は credentials.json と同じディレクトリに自動生成されます.gitignore に credentials.json と token.json を追加してくださいcredentials.json がある場合、優先度の高い場所のファイルが使用されます動画をアップロードする前に、以下を確認してください:
1. 動画ファイルの確認
- ファイルパスが正しいか
- MP4形式であるか
- ファイルが存在するか
2. 認証情報の確認
- credentials.json が存在するか
- 初回実行時はブラウザ認証が必要
3. メタデータの準備
- タイトル(必須)
- 説明(推奨)
- タグ(推奨)
- カテゴリ(デフォルト: 22 = People & Blogs)
- プライバシー設定(デフォルト: private)
アップロードスクリプトは以下の場所にあります:
${CLAUDE_PLUGIN_ROOT}/skills/youtube-uploader/scripts/youtube_uploader.py
python3 ${CLAUDE_PLUGIN_ROOT}/skills/youtube-uploader/scripts/youtube_uploader.py \
/path/to/video.mp4 \
--title "動画タイトル" \
--credentials /path/to/credentials.json
python3 ${CLAUDE_PLUGIN_ROOT}/skills/youtube-uploader/scripts/youtube_uploader.py \
/path/to/video.mp4 \
--title "動画タイトル" \
--description "動画の詳細な説明文" \
--tags "manim,アニメーション,解説" \
--privacy private \
--category 27 \
--credentials /path/to/credentials.json
# Manimの出力動画をアップロード
python3 ${CLAUDE_PLUGIN_ROOT}/skills/youtube-uploader/scripts/youtube_uploader.py \
./media/videos/scene/1080p60/MyScene.mp4 \
--title "Manimで作成した解説動画" \
--description "Manim Community ライブラリで作成したアニメーション" \
--tags "manim,animation,python,math" \
--privacy unlisted \
--category 27 \
--credentials ~/credentials.json
| オプション | 必須 | 説明 | デフォルト |
|---|---|---|---|
file | 必須 | アップロードするMP4動画のパス | - |
--title | 必須 | 動画タイトル | - |
--description | 任意 | 動画の説明文 | 空 |
--tags | 任意 | カンマ区切りのタグ | 空 |
--privacy | 任意 | private, unlisted, public | private |
--category | 任意 | YouTubeカテゴリID | 22 |
--credentials | 任意 | credentials.jsonのパス | credentials.json |
--playlist | 任意 | 追加先プレイリストID | - |
--publish-at | 任意 | 予約投稿日時(ISO 8601形式) | - |
| カテゴリ | ID |
|---|---|
| Film & Animation | 1 |
| Autos & Vehicles | 2 |
| Music | 10 |
| Pets & Animals | 15 |
| Sports | 17 |
| Travel & Events | 19 |
| Gaming | 20 |
| People & Blogs | 22 |
| Comedy | 23 |
| Entertainment | 24 |
| News & Politics | 25 |
| Howto & Style | 26 |
| Education | 27 |
| Science & Technology | 28 |
Manim動画の推奨カテゴリ:
27 (Education)28 (Science & Technology)24 (Entertainment)ユーザーがセットアップ未完了の場合、以下の手順を案内してください。
YouTube-Uploader)同意画面の設定(初回のみ):
YouTube UploaderOAuth クライアントIDの作成:
credentials.json にリネームpip3 install google-auth-oauthlib google-api-python-client
python3 youtube_uploader.py test_video.mp4 \
--title "Test Upload" \
--credentials credentials.json
初回実行時:
token.json が自動生成される(以降の認証に使用)動画を特定の日時に公開予約できます:
python3 youtube_uploader.py video.mp4 \
--title "予約投稿動画" \
--privacy private \
--publish-at "2025-02-01T18:00:00Z"
注意: 予約投稿は private または unlisted の動画でのみ機能します。
アップロードと同時にプレイリストに追加:
python3 youtube_uploader.py video.mp4 \
--title "プレイリスト用動画" \
--playlist "PLxxxxxxxxxxxx"
プレイリストIDの取得方法:
https://www.youtube.com/playlist?list=PLxxxxxxxxxxxxlist= の後の部分がプレイリストIDcredentials.json が見つからない# 正しいパスを指定
python3 youtube_uploader.py video.mp4 \
--title "Test" \
--credentials ~/path/to/credentials.json
token.json を削除--category が1-28の範囲か確認--publish-at がISO 8601形式か確認: 2025-01-15T15:30:00ZCtrl+C で中断可能# .gitignoreに追加
echo "credentials.json" >> .gitignore
echo "token.json" >> .gitignore
export YOUTUBE_CREDENTIALS_FILE="/path/to/credentials.json"
python3 youtube_uploader.py video.mp4 \
--title "My Video" \
--credentials $YOUTUBE_CREDENTIALS_FILE
# 1. Manimで動画をレンダリング
uv run manim -qh scene.py MyScene
# 2. 音声を合成(フル版の場合)
python3 combine_final.py
# 3. YouTubeにアップロード
python3 ${CLAUDE_PLUGIN_ROOT}/skills/youtube-uploader/scripts/youtube_uploader.py \
./final_output.mp4 \
--title "Manim解説動画" \
--description "Manim Community ライブラリで作成" \
--tags "manim,animation,python" \
--privacy unlisted \
--category 27 \
--credentials ~/credentials.json