{
  "schemaVersion": "1.0",
  "item": {
    "slug": "youtube-video-transcript",
    "name": "YouTube Video Transcript",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/ivangdavila/youtube-video-transcript",
    "canonicalUrl": "https://clawhub.ai/ivangdavila/youtube-video-transcript",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/youtube-video-transcript",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=youtube-video-transcript",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md",
      "memory-template.md",
      "patterns.md",
      "setup.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-video-transcript"
    },
    "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-video-transcript",
    "agentPageUrl": "https://openagent3.xyz/skills/youtube-video-transcript/agent",
    "manifestUrl": "https://openagent3.xyz/skills/youtube-video-transcript/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/youtube-video-transcript/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": "When to Use",
        "body": "User shares a YouTube link and wants to read instead of watch. User asks what someone says about a topic at a specific moment. User needs to extract quotes with timestamps for research or content creation. User wants to summarize a video or search within its content."
      },
      {
        "title": "How It Works",
        "body": "┌──────────────────────────────────────────────┐\n         │           YOUTUBE TRANSCRIPT FLOW            │\n         └──────────────────────────────────────────────┘\n                              │\n         ┌────────────────────┼────────────────────┐\n         ▼                    ▼                    ▼\n    ┌─────────┐         ┌──────────┐         ┌─────────┐\n    │  VIDEO  │         │ METADATA │         │SUBTITLES│\n    │   URL   │         │  FETCH   │         │  CHECK  │\n    └────┬────┘         └────┬─────┘         └────┬────┘\n         │                   │                    │\n         │  youtube.com/     │  Title, duration,  │  Manual first,\n         │  watch?v=...      │  chapters, lang    │  auto fallback\n         │                   │                    │\n         └───────────────────┴────────────────────┘\n                              │\n                              ▼\n                    ┌─────────────────┐\n                    │ EXTRACT + CLEAN │\n                    │ VTT → Markdown  │\n                    │ with timestamps │\n                    └────────┬────────┘\n                              │\n              ┌───────────────┼───────────────┐\n              ▼               ▼               ▼\n        ┌──────────┐   ┌───────────┐   ┌──────────┐\n        │ CHAPTERS │   │  SEARCH   │   │  EXPORT  │\n        │ detected │   │ by topic  │   │ MD/SRT/  │\n        │ or smart │   │ timestamp │   │ TXT/JSON │\n        └──────────┘   └───────────┘   └──────────┘"
      },
      {
        "title": "1. 📋 Get Metadata First",
        "body": "Always fetch video info before extracting subtitles:\n\nyt-dlp -j \"VIDEO_URL\"\n\nThis gives you title, duration, official chapters, and available languages. Use it to confirm the right video and check what subtitles exist."
      },
      {
        "title": "2. 📝 Prefer Manual Subtitles",
        "body": "Manual (uploaded) subtitles are higher quality than auto-generated:\n\n# Try manual first\nyt-dlp --write-sub --sub-lang en --skip-download \"VIDEO_URL\"\n\n# Fall back to auto-generated if manual unavailable\nyt-dlp --write-auto-sub --sub-lang en --skip-download \"VIDEO_URL\"\n\nAuto-generated transcripts often have errors, missing punctuation, and wrong word boundaries. Manual subtitles are human-verified."
      },
      {
        "title": "3. 🕐 Preserve Timestamps Always",
        "body": "Every segment must include timestamps. Format: [HH:MM:SS] or [MM:SS] for videos under 1 hour.\n\nWhy this matters: Users need to jump to specific moments. \"Take me to where they discuss pricing\" requires knowing the timestamp.\n\nOutput format:\n\n[00:00] Welcome to this video about machine learning\n[00:15] Today we'll cover three main topics\n[00:30] First, let's talk about neural networks"
      },
      {
        "title": "From Video Markers",
        "body": "Many videos have chapter markers embedded. Extract from metadata:\n\nyt-dlp -j \"VIDEO_URL\" | jq '.chapters'"
      },
      {
        "title": "Smart Detection (No Markers)",
        "body": "When video lacks chapters, detect natural breaks from transcript:\n\nTopic changes (semantic shift in content)\nSpeaker changes (different voice patterns)\nExplicit transitions (\"Now let's talk about...\", \"Moving on...\")\nLong pauses between segments"
      },
      {
        "title": "Search Within Transcripts",
        "body": "When user asks \"where do they talk about X\":\n\nSearch transcript for keywords and semantic matches\nReturn segments with timestamps\nInclude surrounding context (10-15 seconds before/after)\n\nResponse format:\n\nFound 3 mentions of \"machine learning\":\n\n[05:23] \"...this is where machine learning really shines...\"\nContext: Discussing data processing approaches\n\n[12:45] \"...traditional methods vs machine learning...\"\nContext: Comparison section\n\nGenerate clickable links: https://youtube.com/watch?v=VIDEO_ID&t=323"
      },
      {
        "title": "Architecture",
        "body": "Memory lives in ~/youtube-video-transcript/. See memory-template.md for structure.\n\n~/youtube-video-transcript/\n├── memory.md          # Preferences + recent videos\n├── videos/            # Cached transcripts (with consent)\n│   └── {video_id}.md  # Individual video data\n└── exports/           # Exported files"
      },
      {
        "title": "Quick Reference",
        "body": "TopicFileSetup processsetup.mdMemory templatememory-template.mdAdvanced patternspatterns.md"
      },
      {
        "title": "1. Metadata Before Extraction",
        "body": "Always run yt-dlp -j URL first. This confirms the video, shows available languages, and reveals official chapters. Never extract blind."
      },
      {
        "title": "2. Manual Over Auto",
        "body": "Subtitle TypeQualityWhen to UseManualHighAlways try firstAuto-generatedMediumFallback only\n\nCheck with yt-dlp --list-subs URL for unfamiliar channels."
      },
      {
        "title": "3. Timestamps Are Sacred",
        "body": "Never strip timestamps during any operation. They enable navigation, citation, and deep linking into the video."
      },
      {
        "title": "4. Cache With Consent",
        "body": "User ResponseAction\"Yes, save it\"Cache to ~/youtube-video-transcript/videos/\"No thanks\"Don't cache, show onceNot asked yetAsk after first extraction\n\nAlways tell user where files are saved and offer to show or delete them."
      },
      {
        "title": "5. Handle Multiple Languages",
        "body": "If user doesn't specify:\n\nCheck available languages\nPrefer manual over auto\nDefault to English\nReport which language was used\n\nyt-dlp --list-subs \"VIDEO_URL\""
      },
      {
        "title": "6. Quote Extraction Includes Context",
        "body": "When extracting quotes for research:\n\n10-15 seconds before/after for context\nExact timestamp for the quote start\nSpeaker identification if multiple speakers"
      },
      {
        "title": "7. Transparency on Quality",
        "body": "Subtitle TypeTell UserManual\"Using official subtitles\"Auto-generated\"Using auto-generated (may have errors)\"None available\"No subtitles found for this video\""
      },
      {
        "title": "Export Formats",
        "body": "FormatUse CaseCommandMarkdownReading, notesDefaultSRTVideo editors--sub-format srtPlain textSearch, grepStrip timestampsJSONProgrammatic--write-info-json"
      },
      {
        "title": "Common Traps",
        "body": "TrapConsequencePreventionNot checking subtitles firstWasted time on unavailable videoAlways --list-subs firstIgnoring auto-generated qualityGarbage text with errorsPrefer manual, warn about autoLosing timestampsCan't navigate videoNever strip in any operationExtracting without metadataMissing title, chaptersAlways fetch -j firstCaching without consentPrivacy violationAsk before saving"
      },
      {
        "title": "Quick Commands",
        "body": "User SaysAction\"Transcribe this video\"Extract + display\"What do they say about X?\"Search + timestamps\"Save this transcript\"Cache with confirmation\"Export as SRT\"Convert format\"Show saved videos\"List ~/youtube-video-transcript/videos/\"Delete video X\"Remove from cache"
      },
      {
        "title": "Security & Privacy",
        "body": "Data that stays local (with your consent):\n\nTranscripts cached in ~/youtube-video-transcript/ (only if you agree)\nPreferences stored locally (only after confirmation)\nNo external API calls beyond YouTube's public subtitle endpoints\n\nTransparency guarantees:\n\nAlways asks before saving transcripts locally\nTells you where files are saved\nOffers to show or delete saved data anytime\n\nThis skill does NOT:\n\nUse proxy services or third-party APIs\nSend your queries to external services\nStore credentials or authentication\nSave anything without your explicit consent"
      },
      {
        "title": "Related Skills",
        "body": "Install with clawhub install <slug> if user confirms:\n\nsummarizer — create summaries from any content\nvideo-captions — generate and edit video subtitles\nffmpeg — advanced video and audio processing"
      },
      {
        "title": "Feedback",
        "body": "If useful: clawhub star youtube-video-transcript\nStay updated: clawhub sync"
      }
    ],
    "body": "Most YouTube transcript tools either require paid APIs, use suspicious proxies, or just dump raw text without structure. This skill extracts transcripts locally using yt-dlp, preserves timestamps for navigation, detects chapters automatically, and exports to any format you need.\n\nWhen to Use\n\nUser shares a YouTube link and wants to read instead of watch. User asks what someone says about a topic at a specific moment. User needs to extract quotes with timestamps for research or content creation. User wants to summarize a video or search within its content.\n\nHow It Works\n         ┌──────────────────────────────────────────────┐\n         │           YOUTUBE TRANSCRIPT FLOW            │\n         └──────────────────────────────────────────────┘\n                              │\n         ┌────────────────────┼────────────────────┐\n         ▼                    ▼                    ▼\n    ┌─────────┐         ┌──────────┐         ┌─────────┐\n    │  VIDEO  │         │ METADATA │         │SUBTITLES│\n    │   URL   │         │  FETCH   │         │  CHECK  │\n    └────┬────┘         └────┬─────┘         └────┬────┘\n         │                   │                    │\n         │  youtube.com/     │  Title, duration,  │  Manual first,\n         │  watch?v=...      │  chapters, lang    │  auto fallback\n         │                   │                    │\n         └───────────────────┴────────────────────┘\n                              │\n                              ▼\n                    ┌─────────────────┐\n                    │ EXTRACT + CLEAN │\n                    │ VTT → Markdown  │\n                    │ with timestamps │\n                    └────────┬────────┘\n                              │\n              ┌───────────────┼───────────────┐\n              ▼               ▼               ▼\n        ┌──────────┐   ┌───────────┐   ┌──────────┐\n        │ CHAPTERS │   │  SEARCH   │   │  EXPORT  │\n        │ detected │   │ by topic  │   │ MD/SRT/  │\n        │ or smart │   │ timestamp │   │ TXT/JSON │\n        └──────────┘   └───────────┘   └──────────┘\n\nThe Extraction Process\n1. 📋 Get Metadata First\n\nAlways fetch video info before extracting subtitles:\n\nyt-dlp -j \"VIDEO_URL\"\n\n\nThis gives you title, duration, official chapters, and available languages. Use it to confirm the right video and check what subtitles exist.\n\n2. 📝 Prefer Manual Subtitles\n\nManual (uploaded) subtitles are higher quality than auto-generated:\n\n# Try manual first\nyt-dlp --write-sub --sub-lang en --skip-download \"VIDEO_URL\"\n\n# Fall back to auto-generated if manual unavailable\nyt-dlp --write-auto-sub --sub-lang en --skip-download \"VIDEO_URL\"\n\n\nAuto-generated transcripts often have errors, missing punctuation, and wrong word boundaries. Manual subtitles are human-verified.\n\n3. 🕐 Preserve Timestamps Always\n\nEvery segment must include timestamps. Format: [HH:MM:SS] or [MM:SS] for videos under 1 hour.\n\nWhy this matters: Users need to jump to specific moments. \"Take me to where they discuss pricing\" requires knowing the timestamp.\n\nOutput format:\n\n[00:00] Welcome to this video about machine learning\n[00:15] Today we'll cover three main topics\n[00:30] First, let's talk about neural networks\n\nChapter Detection\nFrom Video Markers\n\nMany videos have chapter markers embedded. Extract from metadata:\n\nyt-dlp -j \"VIDEO_URL\" | jq '.chapters'\n\nSmart Detection (No Markers)\n\nWhen video lacks chapters, detect natural breaks from transcript:\n\nTopic changes (semantic shift in content)\nSpeaker changes (different voice patterns)\nExplicit transitions (\"Now let's talk about...\", \"Moving on...\")\nLong pauses between segments\nSearch Within Transcripts\n\nWhen user asks \"where do they talk about X\":\n\nSearch transcript for keywords and semantic matches\nReturn segments with timestamps\nInclude surrounding context (10-15 seconds before/after)\n\nResponse format:\n\nFound 3 mentions of \"machine learning\":\n\n[05:23] \"...this is where machine learning really shines...\"\nContext: Discussing data processing approaches\n\n[12:45] \"...traditional methods vs machine learning...\"\nContext: Comparison section\n\n\nGenerate clickable links: https://youtube.com/watch?v=VIDEO_ID&t=323\n\nArchitecture\n\nMemory lives in ~/youtube-video-transcript/. See memory-template.md for structure.\n\n~/youtube-video-transcript/\n├── memory.md          # Preferences + recent videos\n├── videos/            # Cached transcripts (with consent)\n│   └── {video_id}.md  # Individual video data\n└── exports/           # Exported files\n\nQuick Reference\nTopic\tFile\nSetup process\tsetup.md\nMemory template\tmemory-template.md\nAdvanced patterns\tpatterns.md\nCore Rules\n1. Metadata Before Extraction\n\nAlways run yt-dlp -j URL first. This confirms the video, shows available languages, and reveals official chapters. Never extract blind.\n\n2. Manual Over Auto\nSubtitle Type\tQuality\tWhen to Use\nManual\tHigh\tAlways try first\nAuto-generated\tMedium\tFallback only\n\nCheck with yt-dlp --list-subs URL for unfamiliar channels.\n\n3. Timestamps Are Sacred\n\nNever strip timestamps during any operation. They enable navigation, citation, and deep linking into the video.\n\n4. Cache With Consent\nUser Response\tAction\n\"Yes, save it\"\tCache to ~/youtube-video-transcript/videos/\n\"No thanks\"\tDon't cache, show once\nNot asked yet\tAsk after first extraction\n\nAlways tell user where files are saved and offer to show or delete them.\n\n5. Handle Multiple Languages\n\nIf user doesn't specify:\n\nCheck available languages\nPrefer manual over auto\nDefault to English\nReport which language was used\nyt-dlp --list-subs \"VIDEO_URL\"\n\n6. Quote Extraction Includes Context\n\nWhen extracting quotes for research:\n\n10-15 seconds before/after for context\nExact timestamp for the quote start\nSpeaker identification if multiple speakers\n7. Transparency on Quality\nSubtitle Type\tTell User\nManual\t\"Using official subtitles\"\nAuto-generated\t\"Using auto-generated (may have errors)\"\nNone available\t\"No subtitles found for this video\"\nExport Formats\nFormat\tUse Case\tCommand\nMarkdown\tReading, notes\tDefault\nSRT\tVideo editors\t--sub-format srt\nPlain text\tSearch, grep\tStrip timestamps\nJSON\tProgrammatic\t--write-info-json\nCommon Traps\nTrap\tConsequence\tPrevention\nNot checking subtitles first\tWasted time on unavailable video\tAlways --list-subs first\nIgnoring auto-generated quality\tGarbage text with errors\tPrefer manual, warn about auto\nLosing timestamps\tCan't navigate video\tNever strip in any operation\nExtracting without metadata\tMissing title, chapters\tAlways fetch -j first\nCaching without consent\tPrivacy violation\tAsk before saving\nQuick Commands\nUser Says\tAction\n\"Transcribe this video\"\tExtract + display\n\"What do they say about X?\"\tSearch + timestamps\n\"Save this transcript\"\tCache with confirmation\n\"Export as SRT\"\tConvert format\n\"Show saved videos\"\tList ~/youtube-video-transcript/videos/\n\"Delete video X\"\tRemove from cache\nSecurity & Privacy\n\nData that stays local (with your consent):\n\nTranscripts cached in ~/youtube-video-transcript/ (only if you agree)\nPreferences stored locally (only after confirmation)\nNo external API calls beyond YouTube's public subtitle endpoints\n\nTransparency guarantees:\n\nAlways asks before saving transcripts locally\nTells you where files are saved\nOffers to show or delete saved data anytime\n\nThis skill does NOT:\n\nUse proxy services or third-party APIs\nSend your queries to external services\nStore credentials or authentication\nSave anything without your explicit consent\nRelated Skills\n\nInstall with clawhub install <slug> if user confirms:\n\nsummarizer — create summaries from any content\nvideo-captions — generate and edit video subtitles\nffmpeg — advanced video and audio processing\nFeedback\nIf useful: clawhub star youtube-video-transcript\nStay updated: clawhub sync"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/ivangdavila/youtube-video-transcript",
    "publisherUrl": "https://clawhub.ai/ivangdavila/youtube-video-transcript",
    "owner": "ivangdavila",
    "version": "1.0.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/youtube-video-transcript",
    "downloadUrl": "https://openagent3.xyz/downloads/youtube-video-transcript",
    "agentUrl": "https://openagent3.xyz/skills/youtube-video-transcript/agent",
    "manifestUrl": "https://openagent3.xyz/skills/youtube-video-transcript/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/youtube-video-transcript/agent.md"
  }
}