Upload Video
youtube_upload_videoUpload local video files to YouTube. Handles large files, sets title, description, tags, privacy, and kid-friendly settings.
Instructions
Upload a local video file to YouTube.
Calls videos.insert with a resumable media upload. The file is streamed from disk via fs.createReadStream so large files are handled without loading them fully into memory.
Note: This operation costs approximately 1600 quota units.
Args
filePath (string, required): absolute path to the local video file
title (string, required): video title (shown on YouTube)
description (string, optional): video description
tags (string[], optional): tags / keywords
categoryId (string, optional): numeric category ID, default "22" (People & Blogs)
privacyStatus ("public"|"unlisted"|"private", optional, default "private")
madeForKids (boolean, optional, default false)
Returns
Short confirmation markdown + the new video resource as structuredContent
(includes the new video ID at structured.video.id).
Examples
Upload privately:
{ "filePath": "/tmp/myvideo.mp4", "title": "Test" }Upload publicly:
{ "filePath": "/tmp/myvideo.mp4", "title": "Launch", "privacyStatus": "public" }
Errors
400: file not found or unreadable, or required title missing
403: upload scope missing — re-run
npm run auth429: quota exceeded (upload costs ~1600 units)
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| filePath | Yes | Absolute path to the local video file to upload. | |
| title | Yes | Video title (required by YouTube). | |
| description | No | Video description. | |
| tags | No | Tags / keywords for the video. | |
| categoryId | No | Numeric category ID (default "22" = People & Blogs). | 22 |
| privacyStatus | No | Privacy status (default "private"). | private |
| madeForKids | No | Declare video as made for kids (default false). |