Post to YouTube
Once you’ve approved content, it’s ready to go live on YouTube as a Short.
Prerequisites
Before your first post, make sure you have:
- YouTube OAuth credentials configured (see Prerequisites)
- At least one approved content item in the Review Queue or Library
Posting a Single Video
- Go to the Library and find an approved content item
- Open the content detail page
- Click Post to YouTube
The system:
- Downloads the video from storage
- Exchanges the refresh token for an access token
- Uploads the video via YouTube’s resumable upload API
- Sets all metadata (title, description, hashtags, category, tags)
- Posts an engagement comment as the first reply
- Updates the content record with the YouTube video ID
What Gets Posted
| Field | Content |
|---|---|
| Title | The hook (first 100 characters) |
| Description | Hook + #Shorts + niche hashtags |
| Category | Niche-specific (Gaming=20, Entertainment=24, Education=27, Science & Tech=28) |
| Tags | Channel name, “Shorts”, “YouTube Shorts”, niche keywords |
| Privacy | Public |
| Language | English |
| Synthetic Media | Declared (AI-generated content disclosure) |
Verifying Your Post
After posting:
- Go to YouTube Studio
- Find the video in your content list
- Verify it shows as a “Short” (not a regular video)
- Check that the engagement comment was posted
- The video should be vertical (1080x1920) and ≤3 minutes
Troubleshooting
Video doesn’t appear as a Short:
- Must be vertical (9:16 aspect ratio) — the system always outputs 1080x1920
- Must be ≤3 minutes — default is ~30 seconds
- Must include #Shorts in the description — automatically added
Upload fails:
- Check that YouTube OAuth credentials are correct
- Verify the refresh token hasn’t expired (they can expire if not used for 6 months)
- Check the worker logs for specific API error messages
No engagement comment:
- This is non-critical — the video is still posted even if the comment fails
- Check that your OAuth token has the
youtube.force-sslscope
Scheduled Posting
Instead of posting immediately, you can set a scheduled_for time on approved content. The hourly cron job will automatically post it when the time arrives.
Last updated on