youtube-publishing-ruleslisted
Install: claude install-skill elrufaiforexfx22-creator/claudecode-video-maker
# YouTube Publishing — Data API v3 完整規則
## 1. ⚠️ Description 字元黑名單(最容易踩)
YT API 會 reject 含特定 ASCII 字元的 description,回傳 `invalidDescription`:
- **`<`** 跟 **`>`**(出於 XSS 防護,connector 字元)
- 影響範圍:不能直接貼 shell 指令裡的 `>>`(redirect)、`<file>`(stdin)、HTML-like syntax
### 解法
- 影片用到的 shell 指令 **不要直接貼 description**,改成「指令到 GitHub README 複製」
- 或用 Unicode 替代字元(`≫` U+226B 看起來像 `>>` 但合法)
- 或用敘述式:「把 export 那行 append 到 ~/.zshrc 並 source 一次」
### 其他字元限制
- 長度上限 **5000 字元**(含換行)
- emoji / Unicode box drawing(`──`)/ 中文標點都 OK
- URL 自動 hyperlink(IG 不會,YT 會)
## 2. Title / Tags 規格
| 欄位 | 上限 | 備註 |
|---|---|---|
| Title | 100 字元 | 過長 API 退稿 |
| Description | 5000 字元 | 見上 |
| Tags(個別) | 30 字元 | API 不擋,但 YT UI 會截 |
| Tags(總長度) | 500 字元(所有 tag 加逗號) | 超過 API 退稿 |
## 3. Shorts 自動歸類
YT **沒有 `isShort` API flag**。Shorts 是自動判定:
**符合三條件 → 自動進 Shorts feed:**
1. **垂直比 9:16**(1080×1920 之類,正方形也勉強算)
2. **長度 ≤ 3 分鐘**(2024 起放寬,以前 60s)
3. (推薦,但非必要)title / description 含 `#Shorts`
實作上**直接用 `videos.insert` 上傳���直短 mp4 就好**,跟一般 video API 路徑完全相同。可加 `--shorts` flag 自動把 `#Shorts` 塞 description 開頭(YT 演算法看 description 前 100 字)。
## 4. Token 生命週期(踩坑警告)
### Testing mode 下 refresh_token 7 天死
- `youtube.upload` scope 是 **restricted scope**,Testing mode 下 refresh_token 只活 7 天
- ⚠️ **用 refresh_token 換 access_token 不會延長 refresh_token 自身的 7 天倒數** — cron 自動 refresh **沒用**
- 拿新 refresh_token 必須重做整套 OAuth(瀏覽器人工同意),不可 headless
### 實務最佳解
- 接受每週手動跑一次 `node scripts/youtube-oauth.mjs`(30 秒)
- 永久不死 → Google verification(送審 4-6 週)或 Workspa