{
  "schemaVersion": "1.0",
  "item": {
    "slug": "youtube-summary",
    "name": "YouTube Summary",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/sunghyo/youtube-summary",
    "canonicalUrl": "https://clawhub.ai/sunghyo/youtube-summary",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/youtube-summary",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=youtube-summary",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md",
      "prepare.py",
      "references/output-format.md",
      "references/security.md",
      "references/summarization-behavior.md",
      "references/troubleshooting.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/youtube-summary"
    },
    "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-summary",
    "agentPageUrl": "https://openagent3.xyz/skills/youtube-summary/agent",
    "manifestUrl": "https://openagent3.xyz/skills/youtube-summary/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/youtube-summary/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 Summary (youtube2md)",
        "body": "Use the official youtube2md CLI behavior from the repository."
      },
      {
        "title": "Runtime + security prerequisites",
        "body": "Require Node.js 18+.\nRequire preinstalled youtube2md on PATH.\n\nRecommended pinned install: npm i -g youtube2md@1.0.1\n\n\nRequire python3 for transcript text preparation (prepare.py) in extract mode.\nDefault runner uses local youtube2md executable only.\nRuntime npm execution (npx) is intentionally not supported in this skill.\nThe YOUTUBE2MD_BIN environment variable override is rejected by the runner.\nOPENAI_API_KEY enables full summarization mode; transcript/content may be sent to OpenAI through youtube2md’s workflow.\n\nFor sensitive content, omit OPENAI_API_KEY and use extract mode.\n\n\nIn sensitive environments, audit the upstream youtube2md package and dependencies before installation or version bumps.\n\nSee references/security.md before first-time install/enable."
      },
      {
        "title": "Workflow",
        "body": "Validate input\n\nAccept youtube.com and youtu.be URLs.\nIf URLs are missing, ask for one URL per line.\n\n\n\nChoose mode\n\nFull mode: generates Markdown.\n\nUse when OPENAI_API_KEY is available and external API use is acceptable.\n\n\nExtract mode (--extract-only): outputs transcript JSON and prepares transcript text (.txt).\n\nUse when API key is unavailable or when transcript-only output is requested.\n\n\nPrefer a no-error path: check key first and run extract directly when key is missing.\n\n\n\nRun converter\n\nPreferred runner script:\n\nscripts/run_youtube2md.sh <url> full [output_md_path] [language] [model]\n\nIf OPENAI_API_KEY is missing, runner auto-falls back to extract mode by default.\n\n\nscripts/run_youtube2md.sh <url> extract [output_json_path]\n\n\nOptional machine-readable CLI output:\n\nYOUTUBE2MD_JSON=1 scripts/run_youtube2md.sh <url> full\nYOUTUBE2MD_JSON=1 scripts/run_youtube2md.sh <url> extract\n\n\nRuntime controls:\n\nUse only locally installed youtube2md executable.\nDo not use runtime npm execution (npx) for this skill.\n\n\nDirect CLI equivalent:\n\nyoutube2md --url <url> [--out <path>] [--lang <language>] [--model <model>]\nAdd --extract-only for transcript-only mode.\n\n\n\n\n\nVerify output\n\nFull mode: Markdown file exists and is non-empty.\nExtract mode: JSON file exists and is non-empty.\nExtract mode: prepared TXT file exists and is non-empty.\nIf using --json, parse ok: true/false and handle error code.\n\n\n\nRespond to the user\n\nFollow references/output-format.md as the default response shape.\nFollow references/summarization-behavior.md for source policy and chapter/takeaway density.\nDo not include generated local file path(s) in normal user-facing replies.\nShare file paths only when explicitly requested by the user (e.g., debugging/export workflows).\nSummary source policy:\n\nFull mode succeeded → use youtube2md Markdown output as the summary source.\nNon-full mode (extract) → use prepared .txt transcript text as the summary source.\n\n\nKeep user-facing flow smooth: if key is missing, use extract output and summarize from .txt without surfacing avoidable tool-error noise."
      },
      {
        "title": "Multi-video requests",
        "body": "Process URLs sequentially.\nReturn per-video summary results (omit local file paths unless requested).\nIf any fail, report successful items first, then failures with fixes."
      },
      {
        "title": "Built-in behavior to trust",
        "body": "Default output paths:\n\nFull mode: ./summaries/<video_id>.md\nExtract mode: ./summaries/<video_id>.json\nLocal runner post-process (extract): ./summaries/<video_id>.txt via prepare.py"
      },
      {
        "title": "Packaging hygiene",
        "body": "Do not publish generated outputs (e.g., summaries/*.json, summaries/*.txt) inside the skill folder.\nKeep only source files (SKILL.md, scripts/, references/, helpers) in release artifacts."
      },
      {
        "title": "Resources",
        "body": "CLI runner: scripts/run_youtube2md.sh\nTranscript text prep: prepare.py\nOutput guidance: references/output-format.md\nBehavior reference: references/summarization-behavior.md\nSecurity/install notes: references/security.md\nTroubleshooting and error codes: references/troubleshooting.md"
      }
    ],
    "body": "YouTube Summary (youtube2md)\n\nUse the official youtube2md CLI behavior from the repository.\n\nRuntime + security prerequisites\nRequire Node.js 18+.\nRequire preinstalled youtube2md on PATH.\nRecommended pinned install: npm i -g youtube2md@1.0.1\nRequire python3 for transcript text preparation (prepare.py) in extract mode.\nDefault runner uses local youtube2md executable only.\nRuntime npm execution (npx) is intentionally not supported in this skill.\nThe YOUTUBE2MD_BIN environment variable override is rejected by the runner.\nOPENAI_API_KEY enables full summarization mode; transcript/content may be sent to OpenAI through youtube2md’s workflow.\nFor sensitive content, omit OPENAI_API_KEY and use extract mode.\nIn sensitive environments, audit the upstream youtube2md package and dependencies before installation or version bumps.\n\nSee references/security.md before first-time install/enable.\n\nWorkflow\n\nValidate input\n\nAccept youtube.com and youtu.be URLs.\nIf URLs are missing, ask for one URL per line.\n\nChoose mode\n\nFull mode: generates Markdown.\nUse when OPENAI_API_KEY is available and external API use is acceptable.\nExtract mode (--extract-only): outputs transcript JSON and prepares transcript text (.txt).\nUse when API key is unavailable or when transcript-only output is requested.\nPrefer a no-error path: check key first and run extract directly when key is missing.\n\nRun converter\n\nPreferred runner script:\nscripts/run_youtube2md.sh <url> full [output_md_path] [language] [model]\nIf OPENAI_API_KEY is missing, runner auto-falls back to extract mode by default.\nscripts/run_youtube2md.sh <url> extract [output_json_path]\nOptional machine-readable CLI output:\nYOUTUBE2MD_JSON=1 scripts/run_youtube2md.sh <url> full\nYOUTUBE2MD_JSON=1 scripts/run_youtube2md.sh <url> extract\nRuntime controls:\nUse only locally installed youtube2md executable.\nDo not use runtime npm execution (npx) for this skill.\nDirect CLI equivalent:\nyoutube2md --url <url> [--out <path>] [--lang <language>] [--model <model>]\nAdd --extract-only for transcript-only mode.\n\nVerify output\n\nFull mode: Markdown file exists and is non-empty.\nExtract mode: JSON file exists and is non-empty.\nExtract mode: prepared TXT file exists and is non-empty.\nIf using --json, parse ok: true/false and handle error code.\n\nRespond to the user\n\nFollow references/output-format.md as the default response shape.\nFollow references/summarization-behavior.md for source policy and chapter/takeaway density.\nDo not include generated local file path(s) in normal user-facing replies.\nShare file paths only when explicitly requested by the user (e.g., debugging/export workflows).\nSummary source policy:\nFull mode succeeded → use youtube2md Markdown output as the summary source.\nNon-full mode (extract) → use prepared .txt transcript text as the summary source.\nKeep user-facing flow smooth: if key is missing, use extract output and summarize from .txt without surfacing avoidable tool-error noise.\nMulti-video requests\nProcess URLs sequentially.\nReturn per-video summary results (omit local file paths unless requested).\nIf any fail, report successful items first, then failures with fixes.\nBuilt-in behavior to trust\nDefault output paths:\nFull mode: ./summaries/<video_id>.md\nExtract mode: ./summaries/<video_id>.json\nLocal runner post-process (extract): ./summaries/<video_id>.txt via prepare.py\nPackaging hygiene\nDo not publish generated outputs (e.g., summaries/*.json, summaries/*.txt) inside the skill folder.\nKeep only source files (SKILL.md, scripts/, references/, helpers) in release artifacts.\nResources\nCLI runner: scripts/run_youtube2md.sh\nTranscript text prep: prepare.py\nOutput guidance: references/output-format.md\nBehavior reference: references/summarization-behavior.md\nSecurity/install notes: references/security.md\nTroubleshooting and error codes: references/troubleshooting.md"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/sunghyo/youtube-summary",
    "publisherUrl": "https://clawhub.ai/sunghyo/youtube-summary",
    "owner": "sunghyo",
    "version": "1.0.3",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/youtube-summary",
    "downloadUrl": "https://openagent3.xyz/downloads/youtube-summary",
    "agentUrl": "https://openagent3.xyz/skills/youtube-summary/agent",
    "manifestUrl": "https://openagent3.xyz/skills/youtube-summary/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/youtube-summary/agent.md"
  }
}