youtube-uploader
npx skills add https://github.com/y-ymmt/cc-manim-video-creator-plugin --skill youtube-uploader
Agent 安装分布
Skill 文档
YouTubeåç»ã¢ãããã¼ãã¼
YouTube Data API v3ã使ç¨ãã¦ã使ããåç»ãYouTubeã«ããã°ã©ããã£ãã¯ã«ã¢ãããã¼ããã¾ãã
åææ¡ä»¶
ååã»ããã¢ããï¼ã¦ã¼ã¶ã¼ãè¡ãï¼
以ä¸ã®ã»ããã¢ããã¯ã¦ã¼ã¶ã¼èªèº«ãè¡ãå¿ è¦ãããã¾ããã»ããã¢ãããå®äºãã¦ããªãå ´åã¯ããã®ã¹ãã«ã®ãååã»ããã¢ããã¬ã¤ããã»ã¯ã·ã§ã³ãåç §ããããæ¡å ãã¦ãã ããã
- Google Cloud Consoleã§ããã¸ã§ã¯ãã使
- YouTube Data API v3ãæå¹å
- OAuth 2.0èªè¨¼æ å ±ã使
credentials.jsonããã¦ã³ãã¼ã
ä¾åããã±ã¼ã¸
pip3 install google-auth-oauthlib google-api-python-client
credentials.json ã®é ç½®å ´æ
éè¦: 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ã§ä½æããåç»ã®ã¢ãããã¼ãä¾
# 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å½¢å¼ï¼ | – |
YouTubeã«ãã´ãªID
| ã«ãã´ãª | 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)
ååã»ããã¢ããã¬ã¤ã
ã¦ã¼ã¶ã¼ãã»ããã¢ããæªå®äºã®å ´åã以ä¸ã®æé ãæ¡å ãã¦ãã ããã
ã¹ããã1: Google Cloud Consoleã§ããã¸ã§ã¯ã使
- Google Cloud Console ã«ã¢ã¯ã»ã¹
- ä¸é¨ã®ãããã¸ã§ã¯ã鏿ãâãæ°ããããã¸ã§ã¯ãã
- ããã¸ã§ã¯ãåãå
¥åï¼ä¾:
YouTube-Uploaderï¼ - ã使ããã¯ãªãã¯
ã¹ããã2: YouTube Data API v3ãæå¹å
- å·¦ã¡ãã¥ã¼ âãAPIã¨ãµã¼ãã¹ãâãã©ã¤ãã©ãªã
- ãYouTube Data API v3ããæ¤ç´¢
- ãæå¹ã«ããããã¯ãªãã¯
ã¹ããã3: OAuth 2.0èªè¨¼æ å ±ã使
- ãAPIã¨ãµã¼ãã¹ãâãèªè¨¼æ å ±ã
- ã+ èªè¨¼æ å ±ã使ãâãOAuth ã¯ã©ã¤ã¢ã³ãIDã
åæç»é¢ã®è¨å®ï¼ååã®ã¿ï¼:
- User Type:ãå¤é¨ãã鏿
- ã¢ããªå:
YouTube Uploader - ãµãã¼ãã¡ã¼ã«: èªåã®ã¡ã¼ã«ã¢ãã¬ã¹
- ãä¿åãã¦æ¬¡ã¸ããç¹°ãè¿ã
- ãã¹ãã¦ã¼ã¶ã¼ã«èªåã®Googleã¢ã«ã¦ã³ãã追å
OAuth ã¯ã©ã¤ã¢ã³ãIDã®ä½æ:
- ã¢ããªã±ã¼ã·ã§ã³ã®ç¨®é¡:ããã¹ã¯ãããã¢ããªã
- ã使ãâãJSONããã¦ã³ãã¼ãã
- ãã¦ã³ãã¼ããããã¡ã¤ã«ã
credentials.jsonã«ãªãã¼ã
ã¹ããã4: ä¾åããã±ã¼ã¸ã®ã¤ã³ã¹ãã¼ã«
pip3 install google-auth-oauthlib google-api-python-client
ã¹ããã5: ååèªè¨¼
python3 youtube_uploader.py test_video.mp4 \
--title "Test Upload" \
--credentials credentials.json
ååå®è¡æï¼
- ãã©ã¦ã¶ãèªåã§éã
- Googleã¢ã«ã¦ã³ãã§ãã°ã¤ã³
- ã許å¯ããã¯ãªãã¯
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ã®å徿¹æ³ï¼
- YouTubeã§è©²å½ãã¬ã¤ãªã¹ããéã
- URLããæ½åº:
https://www.youtube.com/playlist?list=PLxxxxxxxxxxxx list=ã®å¾ã®é¨åããã¬ã¤ãªã¹ãID
ãã©ãã«ã·ã¥ã¼ãã£ã³ã°
credentials.json ãè¦ã¤ãããªã
# æ£ãããã¹ãæå®
python3 youtube_uploader.py video.mp4 \
--title "Test" \
--credentials ~/path/to/credentials.json
権éã¨ã©ã¼ (403)
token.jsonãåé¤- ã¹ã¯ãªãããåå®è¡ãã¦åèªè¨¼
- ããã¹ã¦ã許å¯ããã¯ãªãã¯
Invalid value ã¨ã©ã¼ (400)
--categoryã1-28ã®ç¯å²ã確èª--publish-atãISO 8601å½¢å¼ã確èª:2025-01-15T15:30:00Z
ã¢ãããã¼ããéä¸ã§æ¢ã¾ã
Ctrl+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
ã¯ã¼ã¯ããã¼ä¾: Manimåç»ä½æâYouTubeã¢ãããã¼ã
# 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