-
-
Notifications
You must be signed in to change notification settings - Fork 38
YouTube Auto Upload
OpenSource Clipping includes a standalone YouTube auto-uploader with scheduling support, allowing you to automatically publish generated clips with full metadata.
- A Google Cloud project with the YouTube Data API v3 enabled
- OAuth 2.0 credentials (
youtube_token.json) configured for your YouTube channel - Generated clips in the
outputs/directory with arender_manifest.json
First time? Follow the complete YouTube API Setup Guide for step-by-step instructions with screenshots on creating your Google Cloud project, OAuth credentials, and generating the token.
Run the token generator to authenticate your YouTube account:
python youtube_uploader/generate_youtube_token.pyThis will open a browser window for Google OAuth. After authorizing, a youtube_token.json file will be created.
Move the generated token file into the .credentials/ directory:
mkdir -p .credentials
mv youtube_token.json .credentials/After rendering clips, simply run:
python run_upload.pyThis will:
- Read
outputs/render_manifest.jsonfor clip metadata - Upload each clip to YouTube with AI-generated titles, descriptions, and tags
- Schedule uploads at 8-hour intervals by default
# 12-hour intervals with Jakarta timezone
python run_upload.py --interval-hours 12 --tz-name "Asia/Jakarta"
# Test with only the first video
python run_upload.py --test-modepython run_upload.py --helpThe uploader uses the AI-generated metadata from metadata_preview.json:
- Title — YouTube-optimized title
- Description — SEO-friendly description with relevant context
- Tags — Keyword tags for discoverability
- TikTok Caption — Also generated for cross-platform publishing
Need to reschedule already-uploaded videos?
python youtube_uploader/reschedule_youtube.pyThis tool can reschedule videos that are still in scheduled or private status.
| Issue | Solution |
|---|---|
| Token expired | Re-run generate_youtube_token.py
|
| API quota exceeded | Wait 24 hours or use a different API project |
| Rate limited (429) | Increase interval between uploads |
| Upload fails silently | Check outputs/render_manifest.json for valid file paths |
- Getting Started — Initial setup
- CLI Reference — Pipeline options