kevinbadi/ai-os-skills · Archived

youtube-upload

Upload videos to YouTube via Studio browser automation. Use when publishing video content to YouTube, setting title/description/visibility, or automating YouTube publishing as part of a content pipeline.

First seen Apr 8, 2026

Installation

$ npx skills add kevinbadi/ai-os-skills --skill youtube-upload

Stronger alternatives

This repository is archived — consider an actively maintained alternative.

Similar popular skills

Related neighbors and high-traction skills in the same topics — useful to compare before installing.

Also in this package

Other skills from kevinbadi/ai-os-skills · top by installs.

npx skills add kevinbadi/ai-os-skills

Browse all from kevinbadi/ai-os-skills

More details

Agent compatibility

Declared targets from SKILL.md / docs. Unmarked agents are not listed — the skill may still install via the CLI.

Claude Code Not declared
Cursor Not declared
Codex Not declared
GitHub Copilot Not declared
Windsurf Not declared
Gemini CLI Not declared
Cline Not declared
OpenCode Not declared

Repository health

Stars 55
License MIT
Default branch main
Open issues 0
Status Archived

Package contents

Files included with this skill beyond the listing page.

  • skill md SKILL.md 3,111 B
  • docs SUMMARY.md 225 B

History

  1. First seen on skills.sh
  2. First recorded snapshot · 4 installs

SKILL.md

YouTube Upload

Upload video files to YouTube via Studio browser automation against a logged-in Chrome session.

Prerequisites

  • Clawdbot installed (script auto-starts browser if needed)
  • Logged into YouTube Studio in the browser session
  • ws npm package available

Quick Usage

Public upload with title and description

node skills/youtube-upload/scripts/youtube-upload.js \
  --video /path/to/video.mp4 \
  --title "My Video Title" \
  --description "Video description here"

Unlisted upload

node skills/youtube-upload/scripts/youtube-upload.js \
  --video /path/to/video.mp4 \
  --title "Draft Video" \
  --visibility unlisted

Private upload

node skills/youtube-upload/scripts/youtube-upload.js \
  --video /path/to/video.mp4 \
  --title "Private Draft" \
  --visibility private

Options

Flag Required Default Description
--video Yes Path to video file
--title Yes Video title (max 100 chars)
--description No empty Video description (supports newlines)
--visibility No public public, unlisted, or private
--cdp-port No 18800 Chrome CDP port

Output

  • stdout: YouTube URL (e.g. https://youtu.be/abc123) or UPLOADSUCCESSNO_URL
  • stderr: Progress messages
  • Exit 0: Success
  • Exit 1: Error

How It Works

  1. Connects to Chrome via CDP, navigates to YouTube Studio
  2. Clicks "Upload videos" to open the upload dialog
  3. Uploads video via DOM.setFileInputFiles
  4. Sets title via focus + Input.insertText
  5. Sets description via focus + Input.insertText
  6. Selects "Not made for kids"
  7. Clicks Next 3 times (Details → Video elements → Checks → Visibility)
  8. Selects visibility (Public/Unlisted/Private)
  9. Clicks Publish (or Save for Private)
  10. Extracts and returns the YouTube URL

Pipeline Example: Veo + YouTube

Generate a video and upload it in one pipeline:

VIDEO=$(node skills/veo-video/scripts/veo-generate.js \
  --prompt "Kev's Assistant coding at a desk" \
  --image-prompt "20yo guy, brown wavy hair, dark grey tee, at a modern desk with monitors" \
  --output kevs-clip.mp4)

node skills/youtube-upload/scripts/youtube-upload.js \
  --video "$VIDEO" \
  --title "Kev's Assistant Vibe Coding" \
  --description "AI-generated content by Kev's Assistant at CreatorOS"

Troubleshooting

  • Upload dialog not opening: YouTube Studio may have popups or banners blocking — dismiss them first
  • Title not set: The title input selector may change — check for [aria-label*="title"]
  • Video URL not found: The youtu.be link appears in the publish confirmation dialog — timing may vary
  • "Not made for kids" not clicking: Radio button selectors differ across YouTube Studio versions