{
  "schemaVersion": "1.0",
  "item": {
    "slug": "youtube-transcribe-skill",
    "name": "Youtube Transcribe Skill",
    "source": "tencent",
    "type": "skill",
    "category": "AI 智能",
    "sourceUrl": "https://clawhub.ai/feiskyer/youtube-transcribe-skill",
    "canonicalUrl": "https://clawhub.ai/feiskyer/youtube-transcribe-skill",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/youtube-transcribe-skill",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=youtube-transcribe-skill",
    "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-04-30T16:55:25.780Z",
      "expiresAt": "2026-05-07T16:55:25.780Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
        "contentDisposition": "attachment; filename=\"network-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/youtube-transcribe-skill"
    },
    "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/youtube-transcribe-skill",
    "agentPageUrl": "https://openagent3.xyz/skills/youtube-transcribe-skill/agent",
    "manifestUrl": "https://openagent3.xyz/skills/youtube-transcribe-skill/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/youtube-transcribe-skill/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": "YouTube Transcript Extraction",
        "body": "Extract subtitles/transcripts from a YouTube video URL and save them as a local file.\n\nInput YouTube URL: $ARGUMENTS"
      },
      {
        "title": "Step 1: Verify URL and Get Video Information",
        "body": "Verify URL Format: Confirm the input is a valid YouTube URL (supports youtube.com/watch?v= or youtu.be/ formats).\n\n\nGet Video Information: Use WebFetch or firecrawl to fetch the page and extract the video title for subsequent file naming."
      },
      {
        "title": "Step 2: CLI Quick Extraction (Priority Attempt)",
        "body": "Use command-line tools to quickly extract subtitles.\n\nCheck Tool Availability:\nExecute which yt-dlp.\n\nIf yt-dlp is found, proceed to subtitle download.\nIf yt-dlp is NOT found, skip immediately to Step 3.\n\n\n\nExecute Subtitle Download (Only if yt-dlp is found):\n\nTip: Always add --cookies-from-browser to avoid sign-in restrictions. Default to chrome.\nRetry Logic: If yt-dlp fails with a browser error (e.g., \"Could not open Chrome\"), ask the user to specify their available browser (e.g., firefox, safari, edge) and retry.\n\n# Get the title first (try chrome first)\nyt-dlp --cookies-from-browser=chrome --get-title \"[VIDEO_URL]\"\n\n# Download subtitles\nyt-dlp --cookies-from-browser=chrome --write-auto-sub --write-sub --sub-lang zh-Hans,zh-Hant,en --skip-download --output \"<Video Title>.%(ext)s\" \"[VIDEO_URL]\"\n\n\n\nVerify Results:\n\nCheck the command exit code.\nExit code 0 (Success): Subtitles have been saved locally, task complete.\nExit code non-0 (Failure):\n\nIf error is related to browser/cookies, ask user for correct browser and retry Step 2.\nIf other errors (e.g., video unavailable), proceed to Step 3."
      },
      {
        "title": "Step 3: Browser Automation (Fallback)",
        "body": "When the CLI method fails or yt-dlp is missing, use browser UI automation to extract subtitles.\n\nCheck Tool Availability:\n\nCheck if chrome-devtools-mcp tools (specifically mcp__plugin_claude-code-settings_chrome__new_page) are available.\nCRITICAL CHECK: If chrome-devtools-mcp is NOT available AND yt-dlp was NOT found in Step 2:\n\nSTOP execution.\nNotify the User: \"Unable to proceed. Please either install yt-dlp (for fast CLI extraction) OR configure chrome-devtools-mcp (for browser automation).\"\n\n\n\n\n\nInitialize Browser Session (If tools are available):\nCall mcp__plugin_claude-code-settings_chrome__new_page to open the video URL."
      },
      {
        "title": "3.2 Analyze Page State",
        "body": "Call mcp__plugin_claude-code-settings_chrome__take_snapshot to read the page accessibility tree."
      },
      {
        "title": "3.3 Expand Video Description",
        "body": "Reason: The \"Show transcript\" button is usually hidden within the collapsed description area.\n\nSearch the snapshot for a button labeled \"...more\", \"...更多\", or \"Show more\" (usually located in the description block below the video title).\nCall mcp__plugin_claude-code-settings_chrome__click to click that button."
      },
      {
        "title": "3.4 Open Transcript Panel",
        "body": "Call mcp__plugin_claude-code-settings_chrome__take_snapshot to get the updated UI snapshot.\nSearch for a button labeled \"Show transcript\", \"显示转录稿\", or \"内容转文字\".\nCall mcp__plugin_claude-code-settings_chrome__click to click that button."
      },
      {
        "title": "3.5 Extract Content via DOM",
        "body": "Reason: Directly reading the accessibility tree for long lists is slow and consumes many tokens; DOM injection is more efficient.\n\nCall mcp__plugin_claude-code-settings_chrome__evaluate_script to execute the following JavaScript:\n\n() => {\n  // Select all transcript segment containers\n  const segments = document.querySelectorAll(\"ytd-transcript-segment-renderer\");\n  if (!segments.length) return \"BUFFERING\"; // Retry if empty\n\n  // Iterate and format as \"timestamp text\"\n  return Array.from(segments)\n    .map((seg) => {\n      const time = seg.querySelector(\".segment-timestamp\")?.innerText.trim();\n      const text = seg.querySelector(\".segment-text\")?.innerText.trim();\n      return `${time} ${text}`;\n    })\n    .join(\"\\n\");\n};\n\nIf it returns \"BUFFERING\", wait a few seconds and retry."
      },
      {
        "title": "3.6 Save and Cleanup",
        "body": "Use the Write tool to save the extracted text as a local file (e.g., <Video Title>.txt).\nCall mcp__plugin_claude-code-settings_chrome__close_page to release resources."
      },
      {
        "title": "Output Requirements",
        "body": "Save the subtitle file to the current working directory.\nFilename format: <Video Title>.txt\nFile content format: Each line should be Timestamp Subtitle Text.\nReport upon completion: File path, subtitle language, total number of lines."
      }
    ],
    "body": "YouTube Transcript Extraction\n\nExtract subtitles/transcripts from a YouTube video URL and save them as a local file.\n\nInput YouTube URL: $ARGUMENTS\n\nStep 1: Verify URL and Get Video Information\n\nVerify URL Format: Confirm the input is a valid YouTube URL (supports youtube.com/watch?v= or youtu.be/ formats).\n\nGet Video Information: Use WebFetch or firecrawl to fetch the page and extract the video title for subsequent file naming.\n\nStep 2: CLI Quick Extraction (Priority Attempt)\n\nUse command-line tools to quickly extract subtitles.\n\nCheck Tool Availability: Execute which yt-dlp.\n\nIf yt-dlp is found, proceed to subtitle download.\nIf yt-dlp is NOT found, skip immediately to Step 3.\n\nExecute Subtitle Download (Only if yt-dlp is found):\n\nTip: Always add --cookies-from-browser to avoid sign-in restrictions. Default to chrome.\nRetry Logic: If yt-dlp fails with a browser error (e.g., \"Could not open Chrome\"), ask the user to specify their available browser (e.g., firefox, safari, edge) and retry.\n# Get the title first (try chrome first)\nyt-dlp --cookies-from-browser=chrome --get-title \"[VIDEO_URL]\"\n\n# Download subtitles\nyt-dlp --cookies-from-browser=chrome --write-auto-sub --write-sub --sub-lang zh-Hans,zh-Hant,en --skip-download --output \"<Video Title>.%(ext)s\" \"[VIDEO_URL]\"\n\n\nVerify Results:\n\nCheck the command exit code.\nExit code 0 (Success): Subtitles have been saved locally, task complete.\nExit code non-0 (Failure):\nIf error is related to browser/cookies, ask user for correct browser and retry Step 2.\nIf other errors (e.g., video unavailable), proceed to Step 3.\nStep 3: Browser Automation (Fallback)\n\nWhen the CLI method fails or yt-dlp is missing, use browser UI automation to extract subtitles.\n\nCheck Tool Availability:\n\nCheck if chrome-devtools-mcp tools (specifically mcp__plugin_claude-code-settings_chrome__new_page) are available.\nCRITICAL CHECK: If chrome-devtools-mcp is NOT available AND yt-dlp was NOT found in Step 2:\nSTOP execution.\nNotify the User: \"Unable to proceed. Please either install yt-dlp (for fast CLI extraction) OR configure chrome-devtools-mcp (for browser automation).\"\n\nInitialize Browser Session (If tools are available):\n\nCall mcp__plugin_claude-code-settings_chrome__new_page to open the video URL.\n\n3.2 Analyze Page State\n\nCall mcp__plugin_claude-code-settings_chrome__take_snapshot to read the page accessibility tree.\n\n3.3 Expand Video Description\n\nReason: The \"Show transcript\" button is usually hidden within the collapsed description area.\n\nSearch the snapshot for a button labeled \"...more\", \"...更多\", or \"Show more\" (usually located in the description block below the video title).\nCall mcp__plugin_claude-code-settings_chrome__click to click that button.\n3.4 Open Transcript Panel\nCall mcp__plugin_claude-code-settings_chrome__take_snapshot to get the updated UI snapshot.\nSearch for a button labeled \"Show transcript\", \"显示转录稿\", or \"内容转文字\".\nCall mcp__plugin_claude-code-settings_chrome__click to click that button.\n3.5 Extract Content via DOM\n\nReason: Directly reading the accessibility tree for long lists is slow and consumes many tokens; DOM injection is more efficient.\n\nCall mcp__plugin_claude-code-settings_chrome__evaluate_script to execute the following JavaScript:\n\n() => {\n  // Select all transcript segment containers\n  const segments = document.querySelectorAll(\"ytd-transcript-segment-renderer\");\n  if (!segments.length) return \"BUFFERING\"; // Retry if empty\n\n  // Iterate and format as \"timestamp text\"\n  return Array.from(segments)\n    .map((seg) => {\n      const time = seg.querySelector(\".segment-timestamp\")?.innerText.trim();\n      const text = seg.querySelector(\".segment-text\")?.innerText.trim();\n      return `${time} ${text}`;\n    })\n    .join(\"\\n\");\n};\n\n\nIf it returns \"BUFFERING\", wait a few seconds and retry.\n\n3.6 Save and Cleanup\nUse the Write tool to save the extracted text as a local file (e.g., <Video Title>.txt).\nCall mcp__plugin_claude-code-settings_chrome__close_page to release resources.\nOutput Requirements\nSave the subtitle file to the current working directory.\nFilename format: <Video Title>.txt\nFile content format: Each line should be Timestamp Subtitle Text.\nReport upon completion: File path, subtitle language, total number of lines."
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/feiskyer/youtube-transcribe-skill",
    "publisherUrl": "https://clawhub.ai/feiskyer/youtube-transcribe-skill",
    "owner": "feiskyer",
    "version": "0.1.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/youtube-transcribe-skill",
    "downloadUrl": "https://openagent3.xyz/downloads/youtube-transcribe-skill",
    "agentUrl": "https://openagent3.xyz/skills/youtube-transcribe-skill/agent",
    "manifestUrl": "https://openagent3.xyz/skills/youtube-transcribe-skill/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/youtube-transcribe-skill/agent.md"
  }
}