youtube-upload
Skill0 starsChanged 3 months agoMITView on GitHub
Upload videos to YouTube via the API. Supports single uploads, batch uploads, scheduled publishing, Shorts, thumbnails, and descriptions. Use when the user wants to upload, schedule, or publish videos to YouTube.
- Reads credentials
7 other projects use a version of this.
Adopted by
Most recently taken up by
- eschota/AIGenttheir own version, first seen Nov 15, 2026
- venetanji/creative-skillstheir own version, first seen Nov 1, 2026
- dreammis/social-auto-uploadtheir own version, first seen Oct 25, 2026
- Perufitlife/postwire-skillstheir own version, first seen Oct 15, 2026
- thapar25/claude-skillstheir own version, first seen Aug 12, 2026
- kevinbadi/ai-os-skillstheir own version, first seen Mar 28, 2026
Other versions7 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 7
- dreammis/social-auto-upload★ 16ksame name
- kevinbadi/ai-os-skills★ 69same name
- venetanji/creative-skills★ 5same name
- eschota/AIGent★ 2same name
- BlackLotus1974/claude-skills★ 0same name
- Perufitlife/postwire-skills★ 0same name
- thapar25/claude-skills★ 0same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository23 other files it gives its agents.
- CLAUDE.mdCLAUDE.md
- remotion-best-practicesSkill
- add-inspirationSkill
- brandSkill
- craft-contentSkill
- draft-articleSkill
- draft-carouselSkill
- draft-diagramSkill
- draft-imagesSkill
- draft-videoSkill
- heygen-avatarSkill
- heygen-videoSkill
- humanizerSkill
- ingestSkill
- initSkill
- linkedin-postSkill
- lintSkill
- listenSkill
- meetingSkill
- voiceSkill
- wikiSkill
- youtube-descriptionSkill
- youtube-shortSkill
The file
We split this skill into the rules it gives an agent
12 rules. 0 are common, 7 are distinctive, and 5 are very specific to this project.
0
Common
Most of the 5 edited versions we read keep these.
7
Distinctive
This author's own choices. Worth a look.
5
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 14
If YOUTUBE_REFRESH_TOKEN is missing, run: npx tsx scripts/youtube-auth.ts
- Distinctive: line 18
Ask the user or infer from context:
- Very specific: line 32
Is Short?: Add #Shorts to title if yes
- Very specific: line 38
Use createYouTubeClient from src/studio/youtube.ts:
- Distinctive: line 75
Read the channel from the authorized credentials rather than assuming one.
- Distinctive: line 76
If the user has both a personal account and a brand account, confirm which one holds the OAuth grant before uploading — they map to …
- Distinctive: line 82
Default schedule time: 9am PT (16:00 UTC)
- Very specific: line 90
Add #Shorts to the title
- Distinctive: line 95
Don't upload to a brand account unless that is where the OAuth grant was made — it creates a separate channel
- Very specific: line 96
Don't set madeForKids to true — this disables comments and notifications
- Distinctive: line 97
Don't upload more than 6 videos per day — quota is 10,000 units, each upload costs 1,600
- Distinctive: line 98
Don't make videos public without the user reviewing them first — always default to private
“Common” is measured: kept by at least 6 in 10 of the 5 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
YouTube Upload
Instructions
Step 0: Load Config
Load .env for YOUTUBE_REFRESH_TOKEN. Credentials file is at youtube-credentials.json in the amplify project root.
If YOUTUBE_REFRESH_TOKEN is missing, run: npx tsx scripts/youtube-auth.ts
Step 1: Determine Upload Type
Ask the user or infer from context:
- Single video: one file, one upload
- Batch: multiple files (e.g., 7 Shorts from a series)
- Scheduled: spread uploads over time (e.g., one per day)
Step 2: Gather Metadata
For each video, collect:
- File path (required)
- Title (required, under 100 chars)
- Description (include article link, hashtags)
- Tags (comma-separated)
- Privacy:
public,unlisted, orprivate(default:private) - Is Short?: Add
#Shortsto title if yes - Thumbnail: Optional image path
- Schedule date: Optional ISO date for scheduled publishing
Step 3: Upload
Use createYouTubeClient from src/studio/youtube.ts:
import { createYouTubeClient } from "../src/studio/youtube.js";
const client = createYouTubeClient("youtube-credentials.json", process.env.YOUTUBE_REFRESH_TOKEN);
const { videoId, url } = await client.upload({
filePath: "path/to/video.mp4",
title: "Video Title",
description: "Description",
tags: ["tag1", "tag2"],
privacy: "private",
isShort: true,
thumbnailPath: "path/to/thumb.png",
});For scheduled publishing, use the googleapis library directly with publishAt:
status: {
privacyStatus: "private",
publishAt: "2026-04-26T16:00:00Z", // 9am PT
selfDeclaredMadeForKids: false,
}Step 4: Report
Show the user:
- Video ID and URL for each upload
- Schedule dates if applicable
- Remind them to check YouTube Studio to verify
Channel Info
Read the channel from the authorized credentials rather than assuming one. If the user has both a personal account and a brand account, confirm which one holds the OAuth grant before uploading — they map to different channels.
Scheduling Best Practices
- One video per day for Shorts — YouTube algorithm rewards consistency
- Default schedule time: 9am PT (16:00 UTC)
- Upload as private with
publishAt— lets the user review before it goes live - Category ID
28= Science & Technology
Shorts Requirements
- Resolution: 1080x1920 (9:16)
- Max duration: 60 seconds
- Add
#Shortsto the title - YouTube auto-detects Shorts by aspect ratio, but the hashtag helps
What NOT to do
- Don't upload to a brand account unless that is where the OAuth grant was made — it creates a separate channel
- Don't set
madeForKidsto true — this disables comments and notifications - Don't upload more than 6 videos per day — quota is 10,000 units, each upload costs 1,600
- Don't make videos public without the user reviewing them first — always default to private
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

