YouTube Shorts Agent

io.github.davidmosiah由 GitHub 帳號 davidmosiah 發布v0.1.6更新於 Oct 24, 2026

Agent-first YouTube Shorts uploader: dry-run validation, OAuth checks, synthetic-media metadata.

已驗證STDIO僅桌面效率與工作流媒體與設計

概覽

AI 產生的概覽

本機 MCP 伺服器,讓助理透過官方 YouTube Data API 準備、驗證 Shorts 上傳,並在設定 OAuth 後實際發布。

可以做什麼
檢查 OAuth 與 dry-run 就緒狀態,並取得 MCP 用戶端安裝指引,不揭露權杖值(manifest、連線狀態)。稽核上傳範圍、合成媒體標記與本機檔案界線。產生搭配本機會話儲存的 PKCE 授權連結。以 dry-run 或正式模式上傳 Short,預設標記含合成媒體。列出頻道近期影片,供上傳後簡單核對。
適用情境
適合在發布前讓助理準備並驗證 Shorts 上傳內容(標題、文案、標籤、合成媒體中繼資料),或透過官方 API 而非 YouTube Studio 介面發布。dry-run 模式不需憑證即可安全試用。
執行需求
以 npm 套件形式在本機透過 stdio 執行(需要 Node.js),另有僅限本機回環的選用 HTTP 模式。正式上傳需要 Google OAuth 用戶端與權杖:YOUTUBE_CLIENT_ID、YOUTUBE_CLIENT_SECRET,以及寫入本機 .env 的存取權杖與更新權杖。正式呼叫需要連線 YouTube Data API 的網路;dry-run 不需憑證。
安裝前請注意
正式上傳會向 YouTube 頻道公開發布內容,需要設定 YOUTUBE_DRY_RUN=false;預設為 dry-run。YOUTUBE_CLIENT_SECRET 與 OAuth 權杖屬敏感資訊,應只保存在本機且不進入 Git,README 建議永不列印權杖值。PKCE 工作階段資料存放在本機 .agent-data/。上傳預設標記為含合成媒體。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 YouTube Shorts Agent,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

YouTube Shorts Agent

Agent-first YouTube Shorts uploader for the YouTube Data API.
Dry-run safe, OAuth readiness checks, MCP-ready for Codex / Claude / Cursor / Hermes.

[npm version] [npm downloads] [License MIT] [Built for MCP]

[GitHub stars] [CI status] [Part of the Delx agent stack] [Category]

⭐ If this agent-first tool helps your workflow, please star the repo. Stars make this tooling easier for other builders to discover and help Delx keep shipping open infrastructure.
🧱 Part of the Delx agent stack — 15 open-source MCP servers across body, reach and coordination.


Agent-first YouTube Shorts uploader for the YouTube Data API. It is designed for Codex, Claude, Cursor, Hermes, OpenClaw and any MCP client that needs a predictable upload workflow with dry-run safety, OAuth readiness checks and structured output.

Use it when an agent needs to prepare, validate or upload Shorts through the official API without touching YouTube Studio UI.

What Agents Get

  • youtube_agent_manifest for install/runtime guidance
  • youtube_connection_status before upload attempts
  • youtube_privacy_audit for local token and media boundaries
  • youtube_oauth_authorize_url with local PKCE session storage
  • youtube_upload_short with containsSyntheticMedia support
  • youtube_list_recent_videos for lightweight post-upload checks

Install

bash
npm install -g youtube-shorts-agent

Or run directly:

bash
npm exec --yes --package=youtube-shorts-agent -- youtube-shorts-agent doctor

CLI

bash
youtube-shorts-agent manifest --client codexyoutube-shorts-agent doctoryoutube-shorts-agent privacy-audityoutube-shorts-agent auth-url --redirect-uri http://localhost:8787/callbackyoutube-shorts-agent upload-short --video ./short.mp4 --title "Launch title" --caption-file copy.txtyoutube-shorts-agent list-recent --max-results 10

Dry-run is enabled by default. Set YOUTUBE_DRY_RUN=false only when doctor reports a complete OAuth setup and you intend to call the live API.

First Upload (dry-run walkthrough)

This is the full first-run path. Every step here is dry-run safe — no credentials are required and nothing is sent to YouTube. The output below is captured verbatim from a real run.

1. Check readiness. With no OAuth configured, doctor confirms you are in dry-run mode:

bash
youtube-shorts-agent doctor
json
{  "ok": true,  "dry_run": true,  "configured": {    "client_credentials": "missing",    "access_token": "missing",    "refresh_token": "missing"  },  "missing_count": 3,  "ready_for_live_upload": false,  "next_steps": [    "Current mode is dry-run. Validate metadata and agent flow before live uploads."  ]}

2. Prepare a Short and its caption.

bash
printf 'Launching the agent-first Shorts uploader.\n#shorts #ai #agents' > copy.txt# short.mp4 is your vertical 9:16 clip

3. Run the upload in dry-run. No network call is made; the tool returns the exact job and result it would publish, so an agent can validate metadata before going live:

bash
youtube-shorts-agent upload-short \  --video ./short.mp4 \  --title "Agent-first Shorts upload" \  --caption-file copy.txt \  --tags ai,agents \  --duration 24
json
{  "ok": true,  "dry_run": true,  "job": {    "id": "youtube_1780082215631",    "platform": "youtube",    "status": "queued",    "createdAt": "2026-05-29T19:16:55.631Z",    "caption": "Launching the agent-first Shorts uploader.\n#shorts #ai #agents",    "targetUrl": "",    "mediaPaths": ["./short.mp4"],    "metadata": {      "title": "Agent-first Shorts upload",      "youtube_title": "Agent-first Shorts upload",      "youtube_tags": ["ai", "agents"],      "youtube_contains_synthetic_media": true,      "video_duration_sec": 24,      "video_aspect_ratio": "9:16"    }  },  "result": {    "provider": "youtube_official",    "platformPostId": "dryrun_1780082215631",    "releaseUrl": "https://www.youtube.com",    "raw": { "dryRun": true, "jobId": "youtube_1780082215631" }  }}

platformPostId is prefixed with dryrun_ and releaseUrl is the YouTube root — both signal that nothing was uploaded. The id, createdAt and dryrun_* values vary per run.

4. Confirm the channel listing path (returns an empty list in dry-run):

bash
youtube-shorts-agent list-recent --max-results 5
json
{ "items": [] }

Going live. Configure OAuth (youtube-shorts-agent auth-url --redirect-uri http://localhost:8787/callback, then exchange the callback code for tokens), set YOUTUBE_CLIENT_ID / YOUTUBE_CLIENT_SECRET / YOUTUBE_ACCESS_TOKEN / YOUTUBE_REFRESH_TOKEN in .env, re-run doctor until ready_for_live_upload is true, then set YOUTUBE_DRY_RUN=false and re-run the same upload-short command.

MCP

bash
youtube-shorts-mcp

HTTP (v2 stateless)

Default is stdio. Optional Streamable HTTP — no session id, JSON responses, loopback only:

bash
npx -y -p youtube-shorts-agent youtube-shorts-mcp --http# GET  http://127.0.0.1:3032/health# POST http://127.0.0.1:3032/mcp   (sessionless)

Env: YOUTUBE_MCP_HOST, YOUTUBE_MCP_PORT, YOUTUBE_MCP_TRANSPORT=http.

Hermes-style config:

yaml
mcp_servers:  youtube_shorts:    command: npx    args: ["-y", "youtube-shorts-agent"]    sampling:      enabled: false

Recommended first calls:

  1. youtube_connection_status
  2. youtube_privacy_audit
  3. youtube_upload_short

Agent Surfaces

ToolPurpose
youtube_agent_manifestInstall/runtime guidance for Codex, Claude, Cursor, Hermes and OpenClaw
youtube_connection_statusOAuth and dry-run readiness without token values
youtube_privacy_auditUpload scope, synthetic media and local file boundaries
youtube_oauth_authorize_urlPKCE authorization URL with local session storage
youtube_upload_shortDry-run or live Shorts upload
youtube_list_recent_videosLightweight channel verification

Copy-Paste Agent Prompt

text
Use youtube-shorts-agent. First call youtube_connection_status and youtube_privacy_audit.If uploading AI-generated media, keep containsSyntheticMedia=true. Never print token values.

Configuration

Copy .env.example to .env. Keep .env and .agent-data/ out of Git.

The upload tool sets containsSyntheticMedia=true by default for AI-generated or AI-edited videos. Override only when that is not true for the asset.

Safety Model

  • OAuth tokens are never returned by CLI or MCP tools.
  • PKCE verifier is stored locally in .agent-data/.
  • Live upload requires YOUTUBE_DRY_RUN=false.
  • The package uses the official YouTube Data API and does not automate Studio UI.

Development

bash
npm installnpm testnpm run check

📧 Contact & Support

來源:README.md,提交 26827b4

工具

0
SourceWeft 尚未在沙箱中啟動過該軟體包,因此其工具未知。

版本歷史

1
  1. v0.1.6最新Sep 16, 2026

評分

已滿足適用檢查項的 50%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分

    請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。

  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分