Agent skill
youtube
Manages YouTube channels and videos using the YouTube Data API v3. Handles OAuth2 authentication, video uploads with resumable transfer, metadata updates, thumbnail setting, playlist management, comment moderation, channel-wide search, and bulk CSV workflows. Use when the user wants to upload a video, manage their YouTube channel, update video titles or descriptions, create or manage playlists, list channel videos, search their content, export a video catalogue, or bulk-edit metadata. Trigger phrases include "youtube", "upload video", "channel manager", "my videos", "YouTube playlist", "YouTube API", "update metadata".
Install this agent skill to your Project
npx add-skill https://github.com/majiayu000/claude-skill-registry/tree/main/skills/other/other/youtube-dortort-skills
SKILL.md
YouTube — Creator & Channel Manager
Manages YouTube channels and videos via the YouTube Data API v3, using the scripts/yt.py helper and the official google-api-python-client SDK. All operations are authenticated with OAuth2 and credentials are cached after the first authorisation.
User request: $ARGUMENTS
Step 1 — Check prerequisites
Run this first and act on the result:
python3 scripts/yt.py whoami 2>&1
- Channel name printed → authenticated, go to Step 2
- "Missing dependencies" → run
bash scripts/setup.sh, then re-check - "No OAuth credentials found" → guide the user through one-time setup below
One-time setup (only when needed)
Install Python dependencies:
bash scripts/setup.sh
Create Google Cloud credentials (manual — guide the user):
- Go to https://console.cloud.google.com and create or select a project
- APIs & Services → Library → search for YouTube Data API v3 → Enable
- APIs & Services → Credentials → Create Credentials → OAuth 2.0 Client ID → Desktop app
- Download JSON → save as
~/.youtube-skill/client_secrets.json
Authorise (opens a browser window):
python3 scripts/yt.py auth
Credentials are cached at ~/.youtube-skill/credentials.json and silently refreshed on all subsequent runs. To force a fresh login: rm ~/.youtube-skill/credentials.json && python3 scripts/yt.py auth.
Step 2 — Parse $ARGUMENTS and run the right command
Interpret the user's intent and run the matching yt.py command. See reference.md for the full flag reference.
| User intent | Command |
|---|---|
| Show channel / who am I | python3 scripts/yt.py whoami |
| List videos | python3 scripts/yt.py videos list [--limit N] [--status public|private|unlisted] |
| Get video details | python3 scripts/yt.py videos get <VIDEO_ID> |
| Upload a video | python3 scripts/yt.py videos upload <FILE> --title "..." --privacy private |
| Update title / description / tags / category | python3 scripts/yt.py videos update <VIDEO_ID> --title "..." [--description "..."] [--tags "a,b"] |
| Change privacy / publish now | python3 scripts/yt.py videos update <VIDEO_ID> --privacy public |
| Schedule publish | python3 scripts/yt.py videos update <VIDEO_ID> --publish-at "2025-12-31T18:00:00Z" |
| Set thumbnail | python3 scripts/yt.py videos thumbnail <VIDEO_ID> <IMAGE> |
| Delete a video | python3 scripts/yt.py videos delete <VIDEO_ID> |
| List playlists | python3 scripts/yt.py playlists list |
| Create playlist | python3 scripts/yt.py playlists create "Title" [--privacy public] |
| List videos in a playlist | python3 scripts/yt.py playlists items <PLAYLIST_ID> |
| Add video to playlist | python3 scripts/yt.py playlists add <PLAYLIST_ID> <VIDEO_ID> |
| Remove video from playlist | python3 scripts/yt.py playlists remove <PLAYLIST_ID> <VIDEO_ID> |
| Delete playlist | python3 scripts/yt.py playlists delete <PLAYLIST_ID> |
| List comments | python3 scripts/yt.py comments list <VIDEO_ID> [--limit N] [--order relevance|time] |
| Reply to a comment | python3 scripts/yt.py comments reply <COMMENT_THREAD_ID> "reply text" |
| Search channel content | python3 scripts/yt.py search "query" [--type video|playlist] |
| Export full catalogue | python3 scripts/yt.py export > channel.csv |
| Bulk-update from CSV | python3 scripts/yt.py bulk-update updates.csv |
Safety defaults — always apply:
- Uploads default to
--privacy private. Never upload as public unless the user explicitly asks. - Do not add
--yesto delete commands. Always let the script prompt for confirmation. - For
comments reply, confirm the reply text with the user before posting.
Step 3 — Report results and suggest next steps
After each command:
- Show the output (video ID, URL, status).
- Offer logical next steps. Examples:
- After upload → set thumbnail, add to playlist, schedule or publish
- After export → offer to open in spreadsheet or run bulk-update
- After creating a playlist → offer to add videos
- If an API error occurs, explain it and suggest the fix. See the error table in reference.md.
Recommended Agent Skills
Expand your agent's capabilities with these related and highly-rated skills.
agent-ops-spec
Manage specification documents in .agent/specs/. Use when user provides requirements, acceptance criteria, or feature descriptions that need to be tracked and validated against implementation.
agent-ops-state
Maintain .agent state files. Use at session start, after meaningful steps, and before concluding: read/update constitution/memory/focus/issues/baseline consistently.
agent-ops-spec
Manage specification documents in .agent/specs/. Use when user provides requirements, acceptance criteria, or feature descriptions that need to be tracked and validated against implementation.
agent-ops-testing
Test strategy, execution, and coverage analysis. Use when designing tests, running test suites, or analyzing test results beyond baseline checks.
agent-ops-testing
Test strategy, execution, and coverage analysis. Use when designing tests, running test suites, or analyzing test results beyond baseline checks.
agent-ops-state
Maintain .agent state files. Use at session start, after meaningful steps, and before concluding: read/update constitution/memory/focus/issues/baseline consistently.
Didn't find tool you were looking for?