Automate YouTube with AI Agents
Upload videos, set visibility, add custom thumbnails and tags, manage kids content declarations — all from the command line or through your AI agent.
Please make sure there is always a human in the loop.
Post to YouTube in Seconds
Terminal
# Install globally
npm install -g postiz
# Set your API key
export POSTIZ_API_KEY=your_api_key
# Find your YouTube integration
postiz integrations:list
# Upload a video
VIDEO=$(postiz upload video.mp4)
VIDEO_URL=$(echo "$VIDEO" | jq -r '.path')
# Schedule a YouTube upload
postiz posts:create \
-c "Description of my awesome video" \
-m "$VIDEO_URL" \
-s "2025-01-15T10:00:00Z" \
--settings '{"title":"My Awesome Video","type":"public","selfDeclaredMadeForKids":"no"}' \
-i "your-youtube-integration-id"YouTube-Specific Features
Video Uploads
Upload videos directly via the CLI. Supports all major formats including MP4, MOV, AVI, MKV, and WEBM.
Visibility Control
Set videos to public, unlisted, or private. Control who can discover and watch your content from the start.
Kids Content
Declare whether your content is made for kids to comply with YouTube's COPPA requirements. Set per video.
Custom Thumbnails
Upload and attach custom thumbnail images to your videos. First impressions matter — control your click-through rate.
Tags & Metadata
Add tags to improve discoverability. Each tag has a value and label for flexible categorization and SEO.
Scheduled Publishing
Schedule video uploads with precise timestamps. Videos are uploaded and set to publish at your chosen time.
How It Works
Find Your YouTube Integration
List your connected accounts and grab your YouTube integration ID. You can also fetch available settings to see what options are supported.
Discovery
# List all integrations
postiz integrations:list
# Filter for YouTube
postiz integrations:list | jq \
'.[] | select(.identifier=="youtube")'
# Get YouTube settings schema
postiz integrations:settings <youtube-id>Upload Your Video & Thumbnail
Upload your video file and optionally a custom thumbnail. YouTube requires media to be accessible via HTTPS. Supports MP4, MOV, AVI, MKV, WEBM, and more.
Upload
# Upload video and extract URL
RESULT=$(postiz upload video.mp4)
VIDEO_URL=$(echo "$RESULT" | jq -r '.path')
# Upload custom thumbnail
THUMB=$(postiz upload thumbnail.jpg)
THUMB_ID=$(echo "$THUMB" | jq -r '.id')
THUMB_PATH=$(echo "$THUMB" | jq -r '.path')
echo $VIDEO_URL
# https://uploads.postiz.com/your-video.mp4Create Your Post
Schedule a YouTube upload with your video, description, title, visibility settings, tags, and optional thumbnail.
Post Creation
postiz posts:create \
-c "Full video description here" \
-m "$VIDEO_URL" \
-s "2025-03-01T09:00:00Z" \
--settings '{
"title": "My Tutorial Video",
"type": "public",
"selfDeclaredMadeForKids": "no",
"thumbnail": {
"id": "thumb-id",
"path": "thumb-url"
},
"tags": [
{"value": "tutorial", "label": "Tutorial"},
{"value": "coding", "label": "Coding"}
]
}' \
-i "youtube-id"YouTube Settings Reference
Every YouTube post accepts these platform-specific settings via the --settings flag.
| Field | Type | Description |
|---|---|---|
__type | string | Must be "youtube" |
title | string | Video title (2-100 characters) |
type | string | Visibility: "public", "unlisted", or "private" |
selfDeclaredMadeForKids | string | Kids content declaration: "yes" or "no" |
thumbnail | object | Custom thumbnail: {id: string, path: string} |
thumbnail.id | string | Uploaded thumbnail file ID |
thumbnail.path | string | Public URL of the thumbnail image |
tags | array | Video tags: [{value: string, label: string}] |
tags[].value | string | Tag value used internally |
tags[].label | string | Tag display label |
Common Configurations
Copy-paste these settings for common YouTube uploading scenarios.
Public Video with Tags
settings.json
{
"title": "How to Build a REST API in 10 Minutes",
"type": "public",
"selfDeclaredMadeForKids": "no",
"tags": [
{"value": "tutorial", "label": "Tutorial"},
{"value": "api", "label": "API"},
{"value": "coding", "label": "Coding"}
]
}Unlisted Video with Custom Thumbnail
settings.json
{
"title": "Team Meeting Recording - March 2025",
"type": "unlisted",
"selfDeclaredMadeForKids": "no",
"thumbnail": {
"id": "thumb-abc123",
"path": "https://uploads.postiz.com/thumb.jpg"
}
}Kids Content Video
settings.json
{
"title": "Learn Colors with Fun Animations",
"type": "public",
"selfDeclaredMadeForKids": "yes",
"tags": [
{"value": "kids", "label": "Kids"},
{"value": "educational", "label": "Educational"},
{"value": "colors", "label": "Colors"}
]
}Private Draft Video
settings.json
{
"title": "Draft - Upcoming Product Launch",
"type": "private",
"selfDeclaredMadeForKids": "no"
}What is OpenClaw?
OpenClaw is the open-source personal AI agent with 145k+ GitHub stars. It runs locally on your machine, connects through apps you already use, and takes real actions on your behalf.
Works Where You Are
Message OpenClaw from WhatsApp, Telegram, Slack, Discord, Signal, iMessage, or 10+ other platforms. No new app to learn.
Skill-Based Architecture
OpenClaw extends its abilities through Skills — lightweight plugins defined in Markdown files. Postiz is available as a skill on ClawHub.
Proactive Automation
Schedule recurring tasks with cron jobs. OpenClaw can upload your YouTube videos on a schedule without you having to ask each time.
How Postiz Becomes an OpenClaw Skill
When you install Postiz Agent globally, OpenClaw automatically discovers it by reading the bundled SKILL.md file. This file tells OpenClaw what commands are available, what environment variables are needed, and how to compose YouTube uploads with the right settings.
- ✓Install from ClawHub with one command: clawhub install nevo-david/postiz
- ✓OpenClaw reads the SKILL.md and learns all Postiz commands
- ✓Eligibility is checked automatically — POSTIZ_API_KEY must be set
- ✓Skills are loaded on-demand, keeping the agent context clean
- ✓Works with any LLM backend: Claude, GPT, Gemini, Llama, and more
Install from ClawHub
# Install the Postiz skill
clawhub install nevo-david/postiz
# Or install the CLI globally
npm install -g postiz
# Set your API key
export POSTIZ_API_KEY=your_api_key
# Verify OpenClaw sees it
openclaw skills list --eligible
# Output:
# - postiz: Social media automation
# CLI for scheduling posts
# across 30+ platformsYouTube Uploading with OpenClaw
Message OpenClaw from any platform — it reads the Postiz skill, discovers your YouTube integration, and handles the entire upload workflow autonomously.
From Any Chat App
WhatsApp, Telegram, Slack, Discord...
Send a message to OpenClaw from your favorite chat app. It runs as a persistent daemon on your machine, so it picks up your message, discovers your YouTube account via Postiz, uploads the video with thumbnail, and schedules the publish — all while you go about your day.
WhatsApp / Telegram
You: Upload my tutorial.mp4 to YouTube
as public, title "React Hooks Guide",
schedule for tomorrow at 3pm
OpenClaw: Got it! Here's what I'll do:
1. Upload tutorial.mp4 to Postiz
2. Set title: "React Hooks Guide"
3. Schedule for 2025-03-02T15:00:00Z
4. Visibility: public, not for kids
Done! Your YouTube video is scheduled.
Post ID: abc-123Scheduled & Proactive
Cron jobs for recurring content
OpenClaw supports cron-based heartbeat tasks. Set up a recurring job that checks a folder for new videos and uploads them to YouTube automatically — no manual trigger needed.
openclaw.json (heartbeat)
{
"heartbeat": [
{
"cron": "0 14 * * 3",
"prompt": "Check ~/videos/youtube
for new .mp4 files. For each one,
upload to Postiz and schedule a
YouTube video for today at 3pm.
Use the filename as the title,
set to public, not for kids.
Move uploaded files to
~/videos/youtube/published."
}
]
}Why OpenClaw + Postiz for YouTube
OpenClaw's skill system makes Postiz a natural fit. The agent reads the SKILL.md to understand every available command, then autonomously chains them together for YouTube workflows.
- ✓Message from WhatsApp to upload a YouTube video — no terminal needed
- ✓Cron jobs for hands-free weekly upload schedules
- ✓Structured JSON output lets OpenClaw verify each step succeeded
- ✓Thumbnails and tags applied automatically based on your instructions
- ✓Cross-post to YouTube + other platforms in a single conversation
- ✓Model-agnostic — works with Claude, GPT, Gemini, or open-source LLMs
SKILL.md (auto-discovered)
---
name: postiz
description: Social media automation
CLI for scheduling posts across
30+ platforms including YouTube
metadata:
openclaw:
requirements:
env:
- POSTIZ_API_KEY
binaries:
- postiz
---
# Available Commands
- postiz integrations:list
- postiz integrations:settings <id>
- postiz posts:create
- postiz upload <file>
- postiz analytics:platform <id>
# YouTube Settings
title (2-100 chars), type
(public/unlisted/private),
selfDeclaredMadeForKids,
thumbnail, tagsAlso Works with Claude Code
Postiz Agent works as a CLI tool with any AI agent that can execute shell commands — including Anthropic's Claude Code.
Claude Code
by Anthropic
Claude reads the SKILL.md file to learn all available Postiz commands, then autonomously discovers your YouTube integration, uploads your video and thumbnail, applies tags and visibility settings, and schedules the upload.
Claude Code
> Upload my tutorial video to YouTube
as public with tags "coding" and
"tutorial", schedule for tomorrow
Claude will automatically run:
postiz integrations:list
postiz upload ./tutorial.mp4
postiz upload ./thumbnail.jpg
postiz posts:create \
-c "Full tutorial description" \
-m "uploaded-video-url" \
-s "2025-03-02T09:00:00Z" \
--settings '{"title":
"My Tutorial Video",
"type":"public",
"selfDeclaredMadeForKids":"no",
"tags":[{"value":"coding",
"label":"Coding"},
{"value":"tutorial",
"label":"Tutorial"}]}' \
-i "youtube-id"YouTube + Other Platforms
Schedule the same video to YouTube and other platforms in a single command. Each platform gets its own settings.
Terminal
# Post a video to YouTube and TikTok simultaneously
postiz posts:create \
-c "New tutorial is live! #coding #tutorial" \
-m "$VIDEO_URL" \
-s "2025-03-01T09:00:00Z" \
--settings '{
"title": "Build a REST API in 10 Minutes",
"type": "public",
"selfDeclaredMadeForKids": "no",
"tags": [
{"value": "tutorial", "label": "Tutorial"},
{"value": "api", "label": "API"}
]
}' \
-i "youtube-id,tiktok-id"
# Batch schedule a week of YouTube uploads
for day in 1 2 3 4 5; do
postiz posts:create \
-c "Episode $day of our coding series" \
-m "episode${day}-video-url" \
-s "2025-03-0${day}T15:00:00Z" \
--settings '{"title":"Coding Series Ep '$day'","type":"public","selfDeclaredMadeForKids":"no"}' \
-i "youtube-id"
doneStart posting to YouTube
Install Postiz Agent and automate your YouTube content strategy with AI-powered scheduling and publishing.
Ready to get started?
Grow your social media presence with Postiz.
Schedule, analyze, and engage with your audience.
Open-source social media scheduling tool