YouTube
CLI examples for YouTube video scheduling in OpenQuok
Connect your agent today
Draft from chat, review in your calendar, and publish only what you approve.
Channel quick reference
| Property | Value |
|---|---|
| Provider identifier | youtube |
| Max description length | 5,000 characters (-c body) |
| Required attachments | Exactly one .mp4 video |
| OAuth setup | YouTube |
YT_ID=$(openquok integrations:list | jq -r '.[] | select(.identifier=="youtube") | .id') Video with title and privacy
The post body becomes the YouTube description. Set title and privacy in providerSettingsByIntegrationId:
test -f ./walkthrough.mp4 && test -s ./walkthrough.mp4
VIDEO=$(openquok upload ./walkthrough.mp4 | jq -c '[{id: .data.id, path: (.data.path // .data.filePath)}]')
openquok posts:create
-c "Full product walkthrough — links in description."
-m "$VIDEO"
-s "2026-01-01T12:00:00Z"
-i "<youtube-integration-id>"
--providerSettingsByIntegrationId '{"<youtube-integration-id>":{"title":"OpenQuok walkthrough","type":"public","selfDeclaredMadeForKids":"no"}}' With tags and nested youtube bucket
The backend accepts flat keys and a nested youtube bucket (same shape as the web composer):
openquok posts:create
-c "Scheduled from the CLI."
-m "$VIDEO"
-s "2026-01-01T12:00:00Z"
-i "<youtube-integration-id>"
--providerSettingsByIntegrationId '{"<youtube-integration-id>":{"youtube":{"title":"Weekly update","type":"unlisted","selfDeclaredMadeForKids":"no","tags":[{"value":"update","label":"update"},{"value":"product","label":"product"}]}}}' With custom thumbnail
Upload a still image, then pass its storage path in settings:
test -f ./thumb.jpg && test -s ./thumb.jpg
THUMB_PATH=$(openquok upload ./thumb.jpg | jq -r '.data.path // .data.filePath')
openquok posts:create
-c "See chapters in the description."
-m "$VIDEO"
-s "2026-01-01T12:00:00Z"
-i "<youtube-integration-id>"
--providerSettingsByIntegrationId "$(jq -nc --arg id "<youtube-integration-id>" --arg thumb "$THUMB_PATH" '{($id):{title:"Launch recap",type:"public",selfDeclaredMadeForKids:"no",thumbnail:{path:$thumb}}}')" Flat settings on a single channel
When -i lists one integration, --settings merges the same keys:
openquok posts:create
-c "Private draft upload for review."
-m "$VIDEO"
-s "2026-01-01T12:00:00Z"
-i "<youtube-integration-id>"
--settings '{"title":"Internal review cut","type":"private","selfDeclaredMadeForKids":"no"}' Resolve integration UUID
YT_ID=$(openquok integrations:list | jq -r '.[] | select(.identifier=="youtube") | .id')
openquok integrations:settings "$YT_ID"
openquok analytics:platform "$YT_ID" -d 30 Post insights
POST_ID=$(openquok posts:list | jq -r '.items[] | select(.identifier=="youtube") | .id' | head -1)
openquok analytics:post "$POST_ID" -d 7 Validation
YouTube rejects posts with zero or multiple videos, non-MP4 files, or titles shorter than 2 or longer than 100 characters. Run integrations:settings for output.rules before batch scripts.