[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6FK16BFGS5GCKF3Q3ANSWKB":3,"skill-same:01M6FK16BFGS5GCKF3Q3ANSWKB":48},{"skillNo":4,"name":5,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":17,"publishedAt":21,"linkOnly":22,"markdownContent":23,"markdownBody":23,"frontMatter":24,"refName":25,"commitSha":26,"skillDirectory":27,"forksCount":28,"repositoryHtmlUrl":29,"repositoryHomepageUrl":30,"ownerHtmlUrl":31,"ownerBlogUrl":6,"ownerDescription":32,"updatedAt":33,"install":34,"resources":47},"01M6FK16BFGS5GCKF3Q3ANSWKB","youtube-publisher",null,"ComeOnOliver\u002Fskillshub","ComeOnOliver","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F43215937?v=4","01M6E5JNFECJAAVFE0W7SMWWD2","Haoran Shu","01M6E5JNNDQS7AJZDYFQ8TPZCK",66,"MIT","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fwlzh\u002Fskills\u002Fyoutube-publisher\u002FSKILL.md",[],[18,19,20],"youtube","publisher","youtube publisher","2026-11-10 10:12:30",false,"# YouTube Publisher\n\n> **First time?** If `setup_complete: false` above, run `.\u002FSETUP.md` first, then set `setup_complete: true`.\n\nUpload videos to YouTube with full metadata control.\n\n## Quick Start\n\n```bash\ncd ~\u002F.claude\u002Fskills\u002Fyoutube-publisher\u002Fscripts\n\n# First time: authenticate\nnpx ts-node youtube-upload.ts --auth\n\n# Upload video\nnpx ts-node youtube-upload.ts \\\n  --video \u002Fpath\u002Fto\u002Fvideo.mp4 \\\n  --title \"My Awesome Video\" \\\n  --description \"Check out this amazing content!\" \\\n  --tags \"tech,ai,tutorial\" \\\n  --privacy unlisted\n\n# Upload as YouTube Short (vertical video)\nnpx ts-node youtube-upload.ts \\\n  --video \u002Fpath\u002Fto\u002Fshort.mp4 \\\n  --title \"Quick Tip #Shorts\" \\\n  --description \"A quick tip for you!\" \\\n  --privacy public \\\n  --short\n```\n\n## Options\n\n| Option | Short | Description |\n|--------|-------|-------------|\n| `--video` | `-v` | Video file path (required) |\n| `--title` | `-t` | Video title (required) |\n| `--description` | `-d` | Video description |\n| `--tags` | | Comma-separated tags |\n| `--privacy` | `-p` | Privacy: public, unlisted, private (default: unlisted) |\n| `--category` | `-c` | Category ID (default: 22 = People & Blogs) |\n| `--thumbnail` | | Custom thumbnail image (local path or URL) |\n| `--subtitles` | | Subtitle file path (SRT\u002FVTT) |\n| `--subtitle-lang` | | Subtitle language code (default: zh) |\n| `--subtitle-name` | | Subtitle display name (default: 中文) |\n| `--playlist` | | Add to playlist ID |\n| `--short` | | Mark as YouTube Short |\n| `--auth` | | Run OAuth2 authentication flow |\n| `--dry-run` | | Preview without uploading |\n\n## Category IDs\n\n| ID | Category |\n|----|----------|\n| 1 | Film & Animation |\n| 2 | Autos & Vehicles |\n| 10 | Music |\n| 15 | Pets & Animals |\n| 17 | Sports |\n| 19 | Travel & Events |\n| 20 | Gaming |\n| 22 | People & Blogs |\n| 23 | Comedy |\n| 24 | Entertainment |\n| 25 | News & Politics |\n| 26 | Howto & Style |\n| 27 | Education |\n| 28 | Science & Technology |\n\n## Authentication\n\nFirst-time setup requires OAuth2 authentication:\n\n1. Run `npx ts-node youtube-upload.ts --auth`\n2. Browser opens Google login\n3. Grant permissions to upload videos\n4. Token is saved to `.youtube-token.json`\n\nToken refreshes automatically. Re-run `--auth` if expired.\n\n## Environment\n\nCreate `scripts\u002F.env`:\n\n```env\nYOUTUBE_CLIENT_ID=your_client_id\nYOUTUBE_CLIENT_SECRET=your_client_secret\n```\n\nGet credentials from Google Cloud Console:\n1. Create project at console.cloud.google.com\n2. Enable YouTube Data API v3\n3. Create OAuth2 credentials (Desktop app)\n4. Download and extract client_id & client_secret\n\n## Examples\n\n### Upload Tutorial Video\n\n```bash\nnpx ts-node youtube-upload.ts \\\n  -v tutorial.mp4 \\\n  -t \"How to Use Claude Code - Complete Guide\" \\\n  -d \"Learn everything about Claude Code in this comprehensive tutorial.\n\nTimestamps:\n00:00 Introduction\n02:30 Getting Started\n05:00 Advanced Features\n\n#ClaudeCode #AI #Tutorial\" \\\n  --tags \"claude code,ai,tutorial,anthropic,coding\" \\\n  --category 28 \\\n  --privacy public\n```\n\n### Upload YouTube Short\n\n```bash\nnpx ts-node youtube-upload.ts \\\n  -v short_video.mp4 \\\n  -t \"Mind-blowing AI trick! #Shorts\" \\\n  -d \"This will change how you work! #AI #Tech\" \\\n  --privacy public \\\n  --short\n```\n\n### Upload to Playlist\n\n```bash\nnpx ts-node youtube-upload.ts \\\n  -v episode5.mp4 \\\n  -t \"Podcast Episode 5\" \\\n  --playlist PLxxxxxxxxxxxxxx \\\n  --privacy unlisted\n```\n\n### Upload with Thumbnail and Subtitles\n\n```bash\nnpx ts-node youtube-upload.ts \\\n  -v tutorial.mp4 \\\n  -t \"Tutorial with Subtitles\" \\\n  -d \"Learn step by step with subtitles\" \\\n  --thumbnail \u002Fpath\u002Fto\u002Fcover.jpg \\\n  --subtitles \u002Fpath\u002Fto\u002Fsubtitles.srt \\\n  --subtitle-lang zh \\\n  --subtitle-name \"中文\" \\\n  --privacy public\n```\n\n### Upload with Local Thumbnail\n\n```bash\nnpx ts-node youtube-upload.ts \\\n  -v video.mp4 \\\n  -t \"My Video Title\" \\\n  --thumbnail \"\u002FUsers\u002Fm\u002FDownloads\u002Fshell\u002Fwork\u002Fcover.jpg\" \\\n  --privacy public\n```\n\n## Output\n\nOn success, returns:\n- Video ID\n- Video URL (https:\u002F\u002Fyoutu.be\u002FVIDEO_ID)\n- Status\n\n## Limitations\n\n- Max file size: 256GB (YouTube limit)\n- Supported formats: MP4, MOV, AVI, WMV, FLV, 3GP, MPEG\n- Supported subtitle formats: SRT, VTT\n- Daily upload quota: 10,000 units (typically ~6 videos\u002Fday)\n- Title max: 100 characters\n- Description max: 5,000 characters\n- Tags max: 500 characters total\n",{},"main","def8531e65114c0fca8fb8551c1871ee0eed705c","skills\u002Fwlzh\u002Fskills\u002Fyoutube-publisher",24,"https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub","https:\u002F\u002Fskillshub.wtf","https:\u002F\u002Fgithub.com\u002FComeOnOliver","AI & Blockchain Engineer\r\n","2026-06-24 22:07:19",{"source":7,"skillName":5,"commands":35,"prompt":45,"zipAvailable":46},[36,39,42],{"tool":37,"command":38},"npx","npx skills add ComeOnOliver\u002Fskillshub --skill youtube-publisher",{"tool":40,"command":41},"bunx","bunx skills add ComeOnOliver\u002Fskillshub --skill youtube-publisher",{"tool":43,"command":44},"pnpm","pnpm dlx skills add ComeOnOliver\u002Fskillshub --skill youtube-publisher","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fwlzh\u002Fskills\u002Fyoutube-publisher\u002FSKILL.md",true,[],[49,63,73,82,88,95],{"skillNo":50,"name":51,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":52,"categories":53,"keywords":59,"publishedAt":21},"01M6FKJN13GMG4KY57J3QD8GY5","model-hierarchy-skill","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzscole\u002Fmodel-hierarchy-skill\u002Fmodel-hierarchy-skill\u002FSKILL.md",[54],{"categoryNo":55,"categoryName":56,"taxonomyType":57,"taxonomyTypeDesc":58},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[60,61,62],"model","model hierarchy","model hierarchy skill",{"skillNo":64,"name":65,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":66,"categories":67,"keywords":69,"publishedAt":21},"01M6FKJJJ6GCAMR4PPPRD12M5X","zoom-mcp","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fzoom-mcp\u002FSKILL.md",[68],{"categoryNo":55,"categoryName":56,"taxonomyType":57,"taxonomyTypeDesc":58},[70,71,72],"MCP","zoom","zoom mcp",{"skillNo":74,"name":75,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":76,"categories":77,"keywords":78,"publishedAt":21},"01M6FKJE3KYT3KPEZMEEHYKA6K","zoom-apps-sdk","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fzoom-apps-sdk\u002FSKILL.md",[],[79,80,81,71],"sdk","zoom apps sdk","apps",{"skillNo":83,"name":84,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":85,"categories":86,"keywords":87,"publishedAt":21},"01M6FKJ9EDH9Q5VWDF8HAJRSP0","windows","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwindows\u002FSKILL.md",[],[84],{"skillNo":89,"name":90,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":91,"categories":92,"keywords":94,"publishedAt":21},"01M6FKJ666BEEFC3AE9GJ72Q93","whiteboard","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwhiteboard\u002FSKILL.md",[93],{"categoryNo":55,"categoryName":56,"taxonomyType":57,"taxonomyTypeDesc":58},[90],{"skillNo":96,"name":97,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":98,"categories":99,"keywords":100,"publishedAt":21},"01M6FKJ21WFCDGTJQ2Q91T9DVW","websockets","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwebsockets\u002FSKILL.md",[],[97]]