Youtube Uploader
Upload videos and custom thumbnails to YouTube.
- Rating
- 4.4 (336 reviews)
- Downloads
- 15,351 downloads
- Version
- 1.0.0
Overview
Upload videos and custom thumbnails to YouTube.
Complete Documentation
View Source →
YouTube Uploader
Upload videos with full metadata and custom thumbnails to YouTube via OAuth2.
Setup (one-time)
The user needs a Google Cloud project with the YouTube Data API v3 enabled and an OAuth2 client ID (type "Desktop app"). Download the client_secret.json file.
Authenticate
python3 {baseDir}/scripts/youtube-upload.py auth --client-secret /path/to/client_secret.json
This opens a browser for Google OAuth consent, then saves credentials to ~/.openclaw/youtube/channels.json. Multiple channels can be authenticated by repeating the command with different Google accounts.
List authenticated channels
python3 {baseDir}/scripts/youtube-upload.py channels
Upload a video
python3 {baseDir}/scripts/youtube-upload.py upload \
--file /path/to/video.mp4 \
--title "Video Title" \
--description "Video description" \
--tags "tag1,tag2,tag3" \
--category 22 \
--privacy private \
--channel-id UCxxxxxxxx
Required: --file, --title
Optional: --description, --tags (comma-separated), --category (default 22 = People & Blogs), --privacy (private/unlisted/public, default private), --publish-at (ISO 8601 for scheduled publish, requires privacy=private), --made-for-kids, --channel-id (uses first channel if omitted)
Returns JSON with videoId and url.
Upload a custom thumbnail
python3 {baseDir}/scripts/youtube-upload.py thumbnail \
--video-id VIDEO_ID \
--file /path/to/thumbnail.jpg \
--channel-id UCxxxxxxxx
Supports JPEG, PNG, BMP, GIF. Max 2MB per YouTube API. The channel must be verified for custom thumbnails.
Refresh token manually
python3 {baseDir}/scripts/youtube-upload.py refresh --channel-id UCxxxxxxxx
Workflow tips
- Always upload as
--privacy privatefirst, verify, then update privacy if needed. - Upload thumbnail immediately after video upload using the returned
videoId. - If auth expires, re-run the
authsubcommand. - When the user doesn't specify a category, default to 22. See
references/categories.mdfor the full list.
References
- See
references/categories.mdfor YouTube video category IDs.
Installation
openclaw install youtube-uploader
💻Code Examples
python3 {baseDir}/scripts/youtube-upload.py auth --client-secret /path/to/client_secret.json
This opens a browser for Google OAuth consent, then saves credentials to `~/.openclaw/youtube/channels.json`. Multiple channels can be authenticated by repeating the command with different Google accounts.
### List authenticated channels--channel-id UCxxxxxxxx
**Required**: `--file`, `--title`
**Optional**: `--description`, `--tags` (comma-separated), `--category` (default 22 = People & Blogs), `--privacy` (private/unlisted/public, default private), `--publish-at` (ISO 8601 for scheduled publish, requires privacy=private), `--made-for-kids`, `--channel-id` (uses first channel if omitted)
Returns JSON with `videoId` and `url`.
## Upload a custom thumbnail--channel-id UCxxxxxxxx
Supports JPEG, PNG, BMP, GIF. Max 2MB per YouTube API. The channel must be verified for custom thumbnails.
## Refresh token manuallypython3 {baseDir}/scripts/youtube-upload.py upload \
--file /path/to/video.mp4 \
--title "Video Title" \
--description "Video description" \
--tags "tag1,tag2,tag3" \
--category 22 \
--privacy private \
--channel-id UCxxxxxxxxpython3 {baseDir}/scripts/youtube-upload.py thumbnail \
--video-id VIDEO_ID \
--file /path/to/thumbnail.jpg \
--channel-id UCxxxxxxxxTags
Quick Info
Ready to Install?
Get started with this skill in seconds
Related Skills
4claw
4claw — a moderated imageboard for AI agents.
Aap Passport
Agent Attestation Protocol - The Reverse Turing Test.
Acestep Lyrics Transcription
Transcribe audio to timestamped lyrics using OpenAI Whisper or ElevenLabs Scribe API.
Adaptive Suite
A continuously adaptive skill suite that empowers Clawdbot.