{
  "schemaVersion": "1.0",
  "item": {
    "slug": "yt-api-cli",
    "name": "YouTube API CLI",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/nerveband/yt-api-cli",
    "canonicalUrl": "https://clawhub.ai/nerveband/yt-api-cli",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/yt-api-cli",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=yt-api-cli",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-05-07T17:22:31.273Z",
      "expiresAt": "2026-05-14T17:22:31.273Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=afrexai-annual-report",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=afrexai-annual-report",
        "contentDisposition": "attachment; filename=\"afrexai-annual-report-1.0.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/yt-api-cli"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/yt-api-cli",
    "agentPageUrl": "https://openagent3.xyz/skills/yt-api-cli/agent",
    "manifestUrl": "https://openagent3.xyz/skills/yt-api-cli/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/yt-api-cli/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "yt-api-cli",
        "body": "Manage your YouTube account from the terminal. A complete CLI for the YouTube Data API v3."
      },
      {
        "title": "Installation",
        "body": "# Using go install\ngo install github.com/nerveband/youtube-api-cli/cmd/yt-api@latest\n\n# Or download from releases\ncurl -L -o yt-api https://github.com/nerveband/youtube-api-cli/releases/latest/download/yt-api-darwin-arm64\nchmod +x yt-api\nsudo mv yt-api /usr/local/bin/"
      },
      {
        "title": "1. Google Cloud Console Setup",
        "body": "Go to Google Cloud Console\nCreate/enable YouTube Data API v3\nCreate OAuth 2.0 credentials (Desktop app)\nDownload client configuration"
      },
      {
        "title": "2. Configure yt-api",
        "body": "mkdir -p ~/.yt-api\ncat > ~/.yt-api/config.yaml << EOF\ndefault_auth: oauth\ndefault_output: json\noauth:\n  client_id: \"YOUR_CLIENT_ID\"\n  client_secret: \"YOUR_CLIENT_SECRET\"\nEOF"
      },
      {
        "title": "3. Authenticate",
        "body": "yt-api auth login  # Opens browser for Google login\nyt-api auth status # Check auth state"
      },
      {
        "title": "List Operations",
        "body": "# List your videos\nyt-api list videos --mine\n\n# List channel videos\nyt-api list videos --channel-id UC_x5XG1OV2P6uZZ5FSM9Ttw\n\n# List playlists\nyt-api list playlists --mine\n\n# List subscriptions\nyt-api list subscriptions --mine"
      },
      {
        "title": "Search",
        "body": "# Basic search\nyt-api search --query \"golang tutorial\"\n\n# With filters\nyt-api search --query \"music\" --type video --duration medium --order viewCount"
      },
      {
        "title": "Upload Operations",
        "body": "# Upload video\nyt-api upload video ./video.mp4 \\\n  --title \"My Video\" \\\n  --description \"Description here\" \\\n  --tags \"tag1,tag2\" \\\n  --privacy public\n\n# Upload thumbnail\nyt-api upload thumbnail ./thumb.jpg --video-id VIDEO_ID"
      },
      {
        "title": "Playlist Management",
        "body": "# Create playlist\nyt-api insert playlist --title \"My Playlist\" --privacy private\n\n# Add video to playlist\nyt-api insert playlist-item --playlist-id PLxxx --video-id VIDxxx"
      },
      {
        "title": "Channel Operations",
        "body": "# Get channel info\nyt-api list channels --id UCxxx --part snippet,statistics\n\n# Update channel description\nyt-api update channel --id UCxxx --description \"New description\""
      },
      {
        "title": "Output Formats",
        "body": "# JSON (default - LLM-friendly)\nyt-api list videos --mine\n\n# Table (human-readable)\nyt-api list videos --mine -o table\n\n# YAML\nyt-api list videos --mine -o yaml\n\n# CSV\nyt-api list videos --mine -o csv > videos.csv"
      },
      {
        "title": "Global Flags",
        "body": "FlagShortDescription--output-oOutput format: json (default), yaml, csv, table--quiet-qSuppress stderr messages--configPath to config file--auth-typeAuth method: oauth (default), service-account"
      },
      {
        "title": "Environment Variables",
        "body": "VariableDescriptionYT_API_AUTH_TYPEAuth method: oauth or service-accountYT_API_OUTPUTDefault output formatYT_API_CLIENT_IDOAuth client IDYT_API_CLIENT_SECRETOAuth client secretYT_API_CREDENTIALSPath to service account JSON"
      },
      {
        "title": "OAuth 2.0 (Default)",
        "body": "Best for interactive use and accessing your own YouTube account.\n\nyt-api auth login  # Opens browser"
      },
      {
        "title": "Service Account",
        "body": "Best for server-side automation.\n\nyt-api --auth-type service-account --credentials ./key.json list videos"
      },
      {
        "title": "Quick Diagnostic Commands",
        "body": "yt-api info                      # Full system state\nyt-api info --test-connectivity  # Verify API access\nyt-api info --test-permissions   # Check credential capabilities\nyt-api auth status               # Authentication details\nyt-api version                   # Version info"
      },
      {
        "title": "Error Handling",
        "body": "Exit codes:\n\n0 - Success\n1 - General error\n2 - Authentication error\n3 - API error (quota, permissions)\n4 - Input error"
      },
      {
        "title": "For LLMs and Automation",
        "body": "JSON output by default\nStructured errors as JSON objects\n--quiet mode for parsing\n--dry-run validates without executing\nStdin support for piping data"
      },
      {
        "title": "Notes",
        "body": "Requires valid Google Cloud credentials with YouTube Data API v3 enabled\nOAuth tokens stored in ~/.yt-api/tokens.json (0600 permissions)\nDefault output is JSON (LLM-optimized)\nSupports all YouTube Data API v3 resources"
      },
      {
        "title": "Source",
        "body": "GitHub: https://github.com/nerveband/youtube-api-cli"
      }
    ],
    "body": "yt-api-cli\n\nManage your YouTube account from the terminal. A complete CLI for the YouTube Data API v3.\n\nInstallation\n# Using go install\ngo install github.com/nerveband/youtube-api-cli/cmd/yt-api@latest\n\n# Or download from releases\ncurl -L -o yt-api https://github.com/nerveband/youtube-api-cli/releases/latest/download/yt-api-darwin-arm64\nchmod +x yt-api\nsudo mv yt-api /usr/local/bin/\n\nSetup\n1. Google Cloud Console Setup\nGo to Google Cloud Console\nCreate/enable YouTube Data API v3\nCreate OAuth 2.0 credentials (Desktop app)\nDownload client configuration\n2. Configure yt-api\nmkdir -p ~/.yt-api\ncat > ~/.yt-api/config.yaml << EOF\ndefault_auth: oauth\ndefault_output: json\noauth:\n  client_id: \"YOUR_CLIENT_ID\"\n  client_secret: \"YOUR_CLIENT_SECRET\"\nEOF\n\n3. Authenticate\nyt-api auth login  # Opens browser for Google login\nyt-api auth status # Check auth state\n\nCommands\nList Operations\n# List your videos\nyt-api list videos --mine\n\n# List channel videos\nyt-api list videos --channel-id UC_x5XG1OV2P6uZZ5FSM9Ttw\n\n# List playlists\nyt-api list playlists --mine\n\n# List subscriptions\nyt-api list subscriptions --mine\n\nSearch\n# Basic search\nyt-api search --query \"golang tutorial\"\n\n# With filters\nyt-api search --query \"music\" --type video --duration medium --order viewCount\n\nUpload Operations\n# Upload video\nyt-api upload video ./video.mp4 \\\n  --title \"My Video\" \\\n  --description \"Description here\" \\\n  --tags \"tag1,tag2\" \\\n  --privacy public\n\n# Upload thumbnail\nyt-api upload thumbnail ./thumb.jpg --video-id VIDEO_ID\n\nPlaylist Management\n# Create playlist\nyt-api insert playlist --title \"My Playlist\" --privacy private\n\n# Add video to playlist\nyt-api insert playlist-item --playlist-id PLxxx --video-id VIDxxx\n\nChannel Operations\n# Get channel info\nyt-api list channels --id UCxxx --part snippet,statistics\n\n# Update channel description\nyt-api update channel --id UCxxx --description \"New description\"\n\nOutput Formats\n# JSON (default - LLM-friendly)\nyt-api list videos --mine\n\n# Table (human-readable)\nyt-api list videos --mine -o table\n\n# YAML\nyt-api list videos --mine -o yaml\n\n# CSV\nyt-api list videos --mine -o csv > videos.csv\n\nGlobal Flags\nFlag\tShort\tDescription\n--output\t-o\tOutput format: json (default), yaml, csv, table\n--quiet\t-q\tSuppress stderr messages\n--config\t\tPath to config file\n--auth-type\t\tAuth method: oauth (default), service-account\nEnvironment Variables\nVariable\tDescription\nYT_API_AUTH_TYPE\tAuth method: oauth or service-account\nYT_API_OUTPUT\tDefault output format\nYT_API_CLIENT_ID\tOAuth client ID\nYT_API_CLIENT_SECRET\tOAuth client secret\nYT_API_CREDENTIALS\tPath to service account JSON\nAuthentication Methods\nOAuth 2.0 (Default)\n\nBest for interactive use and accessing your own YouTube account.\n\nyt-api auth login  # Opens browser\n\nService Account\n\nBest for server-side automation.\n\nyt-api --auth-type service-account --credentials ./key.json list videos\n\nQuick Diagnostic Commands\nyt-api info                      # Full system state\nyt-api info --test-connectivity  # Verify API access\nyt-api info --test-permissions   # Check credential capabilities\nyt-api auth status               # Authentication details\nyt-api version                   # Version info\n\nError Handling\n\nExit codes:\n\n0 - Success\n1 - General error\n2 - Authentication error\n3 - API error (quota, permissions)\n4 - Input error\nFor LLMs and Automation\nJSON output by default\nStructured errors as JSON objects\n--quiet mode for parsing\n--dry-run validates without executing\nStdin support for piping data\nNotes\nRequires valid Google Cloud credentials with YouTube Data API v3 enabled\nOAuth tokens stored in ~/.yt-api/tokens.json (0600 permissions)\nDefault output is JSON (LLM-optimized)\nSupports all YouTube Data API v3 resources\nSource\n\nGitHub: https://github.com/nerveband/youtube-api-cli"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/nerveband/yt-api-cli",
    "publisherUrl": "https://clawhub.ai/nerveband/yt-api-cli",
    "owner": "nerveband",
    "version": "1.0.2",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/yt-api-cli",
    "downloadUrl": "https://openagent3.xyz/downloads/yt-api-cli",
    "agentUrl": "https://openagent3.xyz/skills/yt-api-cli/agent",
    "manifestUrl": "https://openagent3.xyz/skills/yt-api-cli/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/yt-api-cli/agent.md"
  }
}