{
  "schemaVersion": "1.0",
  "item": {
    "slug": "tl-dw",
    "name": "tl;dw - YouTube Video Summarizer",
    "source": "tencent",
    "type": "skill",
    "category": "内容创作",
    "sourceUrl": "https://clawhub.ai/vovavvk/tl-dw",
    "canonicalUrl": "https://clawhub.ai/vovavvk/tl-dw",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/tl-dw",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=tl-dw",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "LICENSE.txt",
      "ATTRIBUTION.md",
      "SKILL.md",
      "scripts/extract_transcript.py"
    ],
    "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/tl-dw"
    },
    "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/tl-dw",
    "agentPageUrl": "https://openagent3.xyz/skills/tl-dw/agent",
    "manifestUrl": "https://openagent3.xyz/skills/tl-dw/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/tl-dw/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": "tldw - YouTube Video Summarizer",
        "body": "too long; didn't watch\n\nExtract and summarize YouTube video transcripts quickly and efficiently."
      },
      {
        "title": "Overview",
        "body": "The tldw skill takes a YouTube URL, extracts the video transcript, and provides a comprehensive summary of the content. This allows you to quickly understand video content without watching the entire video."
      },
      {
        "title": "Purpose",
        "body": "This skill solves the problem of information overload from video content. Instead of spending 10-60 minutes watching a video, you can get the key points, main arguments, and conclusions in a concise summary within seconds."
      },
      {
        "title": "When to Use",
        "body": "Use this skill when:\n\nA user provides a YouTube video URL and asks for a summary\nYou need to quickly understand video content without watching it\nYou want to analyze or reference specific video content\nYou need to extract information from educational, news, or documentary videos"
      },
      {
        "title": "How It Works",
        "body": "Extraction: Uses yt-dlp to download video transcripts (captions/subtitles)\nCleaning: Applies deduplication to remove artifacts from auto-generated captions\nProcessing: Analyzes the cleaned transcript directly in the main agent session\nSummary: Returns a structured summary with main points, key arguments, and conclusions"
      },
      {
        "title": "Key Features",
        "body": "Caching: Downloaded transcripts are cached locally to avoid re-downloading\nDeduplication: Removes duplicate lines common in auto-generated captions\nMulti-format support: Works with VTT, SRT, and JSON caption formats\nCookie support: Can access age-restricted content with a cookie file\nComprehensive summaries: Provides thesis, key examples, comparisons, and conclusions\nFast processing: Typical videos summarized in seconds"
      },
      {
        "title": "Attribution",
        "body": "This skill is based on the tldw project by stong. Full attribution and licensing details are available in ATTRIBUTION.md."
      },
      {
        "title": "System Requirements",
        "body": "Python: 3.8 or higher\nDisk space: ~60MB for virtual environment and dependencies, plus additional space for transcript cache"
      },
      {
        "title": "Required Dependencies",
        "body": "The skill uses a Python virtual environment with the following dependencies:\n\nyt-dlp: Video transcript downloader (installed via pip)\nPython standard library: json, re, argparse (built-in)\n\nAll dependencies are installed in the local virtual environment at venv/."
      },
      {
        "title": "Optional Dependencies",
        "body": "Cookie file: For accessing age-restricted or members-only content\n\nFormat: Netscape cookie format (can be exported from browser)\nPlace in skill directory and reference with --cookies flag"
      },
      {
        "title": "Directory Structure",
        "body": "tldw/\n├── SKILL.md              # This documentation\n├── ATTRIBUTION.md        # Credit to original project\n├── LICENSE               # AGPL-3.0 license\n├── scripts/\n│   └── extract_transcript.py   # Main extraction script\n├── cache/                # Cached transcripts (auto-created)\n└── venv/                 # Python virtual environment\n    ├── bin/\n    │   └── yt-dlp        # Video transcript downloader\n    └── lib/              # Python packages"
      },
      {
        "title": "Setup",
        "body": "Follow these steps to set up the tldw skill:\n\nNavigate to the skill directory:\ncd tldw/\n\n\n\nCreate a Python virtual environment:\npython3 -m venv venv\n\n\n\nInstall dependencies:\nvenv/bin/pip install yt-dlp webvtt-py\n\n\n\nVerify installation:\nvenv/bin/yt-dlp --version\n\n\n\nThe cache directory will be created automatically on first use\n\nThe skill is now ready to use!"
      },
      {
        "title": "Basic Usage",
        "body": "When a user provides a YouTube URL and requests a summary, use the following workflow:\n\nExtract the transcript using the extraction script\nParse the JSON output to get the cleaned transcript\nSummarize the transcript directly (do not use sub-agents for large transcripts)\nReturn a structured summary to the user"
      },
      {
        "title": "Command Syntax",
        "body": "cd tldw/ && \\\nvenv/bin/python scripts/extract_transcript.py \\\n  --json --cache-dir cache \"YOUTUBE_URL\""
      },
      {
        "title": "Processing the Output",
        "body": "The script returns JSON with the following structure:\n\n{\n  \"transcript\": \"Full cleaned transcript text...\",\n  \"video_id\": \"video_id_here\",\n  \"title\": \"Video Title\",\n  \"description\": \"Video description...\",\n  \"duration\": 1234,\n  \"uploader\": \"Channel Name\",\n  \"upload_date\": \"20260101\",\n  \"view_count\": 12345,\n  \"webpage_url\": \"https://www.youtube.com/watch?v=...\"\n}\n\nExtract the transcript field and process it directly to create a comprehensive summary."
      },
      {
        "title": "Command Options",
        "body": "--json: Output in JSON format (recommended for parsing)\n--cache-dir <path>: Specify cache directory (default: cache/)\n--cookies <file>: Path to Netscape-format cookie file for age-restricted content"
      },
      {
        "title": "Example Workflow",
        "body": "# 1. Extract transcript\ncd tldw/ && \\\nvenv/bin/python scripts/extract_transcript.py \\\n  --json --cache-dir cache \"https://www.youtube.com/watch?v=VIDEO_ID\"\n\n# 2. Parse the JSON output and extract the transcript field\n\n# 3. Summarize the transcript directly (include main points, key arguments, conclusions)\n\n# 4. Return formatted summary to user"
      },
      {
        "title": "Accessing Age-Restricted Content",
        "body": "For age-restricted or members-only videos, export cookies from your browser:\n\nInstall a browser extension like \"Get cookies.txt LOCALLY\"\nNavigate to YouTube while logged in\nExport cookies in Netscape format\nSave to the tldw directory (e.g., youtube_cookies.txt)\nUse with: --cookies youtube_cookies.txt"
      },
      {
        "title": "No Captions Available",
        "body": "Error message: \"No subtitles/captions found\"\n\nWhat it means: The video has no auto-generated or manual captions available.\n\nSolution: Inform the user that the video cannot be transcribed because it lacks captions."
      },
      {
        "title": "Invalid URL",
        "body": "Error message: \"ERROR: unable to download video data\"\n\nWhat it means: The URL is malformed, the video doesn't exist, or it's private/deleted.\n\nSolution: Verify the URL is correct and check if the video is publicly accessible."
      },
      {
        "title": "Age-Restricted Content",
        "body": "Error message: \"Sign in to confirm your age\" or similar authentication errors\n\nWhat it means: The video requires age verification or YouTube login.\n\nSolution: Use the --cookies flag with exported browser cookies (see \"Accessing Age-Restricted Content\" above)."
      },
      {
        "title": "Network/Connection Errors",
        "body": "Error messages: \"Unable to download\", \"Connection timeout\", extraction failures\n\nWhat it means: Network issues, YouTube blocking the request, or outdated yt-dlp that's incompatible with current YouTube.\n\nSolution:\n\nFirst, update yt-dlp:\ncd tldw/ && \\\nvenv/bin/pip install --upgrade yt-dlp\n\n\nRetry the extraction\nIf still failing: check internet connection or wait and try later\n\nYouTube frequently changes their API, so keeping yt-dlp updated is essential."
      },
      {
        "title": "Cache Issues",
        "body": "Symptoms: Permission errors, disk full errors\n\nWhat it means: The cache directory has permission problems or insufficient disk space.\n\nSolution: Check available disk space with df -h and verify write permissions on the cache/ directory."
      },
      {
        "title": "Large Transcript Handling",
        "body": "Note: Transcripts over 50,000 characters may take longer to process.\n\nBest practice: Process large transcripts directly in the main agent session. Do not delegate to sub-agents, as they have been found unreliable with large payloads."
      },
      {
        "title": "Debugging",
        "body": "To see full error output (not just the last 100 lines):\n\ncd tldw/ && \\\nvenv/bin/python scripts/extract_transcript.py \\\n  --json --cache-dir cache \"YOUTUBE_URL\"\n\nTo inspect cached transcripts:\n\nls -lh tldw/cache/"
      },
      {
        "title": "Caption Dependency",
        "body": "The skill only works with videos that have captions/subtitles available\nCannot transcribe videos with only audio (no built-in speech-to-text capability)\nAuto-generated captions may contain errors, typos, or timing artifacts\nDeduplication helps clean up auto-generated caption issues but isn't perfect"
      },
      {
        "title": "Language Support",
        "body": "Depends on available caption languages provided by YouTube\nThe script extracts whatever captions are available (auto-generated or manual)\nNon-English captions work, but summarization quality depends on the language model's capabilities\nEnglish captions typically provide the best results"
      },
      {
        "title": "Video Length",
        "body": "Very long videos (2+ hours) may produce extremely large transcripts (100k+ characters)\nProcessing time increases proportionally with transcript length\nNo hard limit, but practical considerations for context window and processing time apply"
      },
      {
        "title": "YouTube-Only",
        "body": "Currently only supports YouTube URLs\nDoes not work with other video platforms (Vimeo, Dailymotion, TikTok, etc.)\nWhile yt-dlp supports many platforms, this script is optimized specifically for YouTube"
      },
      {
        "title": "Private/Restricted Content",
        "body": "Cannot access truly private videos (not shared publicly)\nMembers-only or channel membership content requires cookies from an authenticated session\nLive streams may not have captions available until after the stream has ended\nSome geographic restrictions cannot be bypassed even with cookies"
      },
      {
        "title": "Deduplication Limitations",
        "body": "The deduplication logic removes consecutive duplicate lines\nMay occasionally remove legitimate repeated phrases or refrains\nDesigned primarily for auto-generated caption artifacts, not all repetition scenarios\nManual captions typically don't need deduplication"
      },
      {
        "title": "No Audio Extraction",
        "body": "This skill extracts text transcripts only, not audio files\nFor audio extraction or processing, other tools (like yt-dlp directly with audio flags) would be needed\nFocus is on text-based content analysis, not media files"
      }
    ],
    "body": "tldw - YouTube Video Summarizer\n\ntoo long; didn't watch\n\nExtract and summarize YouTube video transcripts quickly and efficiently.\n\nOverview\n\nThe tldw skill takes a YouTube URL, extracts the video transcript, and provides a comprehensive summary of the content. This allows you to quickly understand video content without watching the entire video.\n\nPurpose\n\nThis skill solves the problem of information overload from video content. Instead of spending 10-60 minutes watching a video, you can get the key points, main arguments, and conclusions in a concise summary within seconds.\n\nWhen to Use\n\nUse this skill when:\n\nA user provides a YouTube video URL and asks for a summary\nYou need to quickly understand video content without watching it\nYou want to analyze or reference specific video content\nYou need to extract information from educational, news, or documentary videos\nHow It Works\nExtraction: Uses yt-dlp to download video transcripts (captions/subtitles)\nCleaning: Applies deduplication to remove artifacts from auto-generated captions\nProcessing: Analyzes the cleaned transcript directly in the main agent session\nSummary: Returns a structured summary with main points, key arguments, and conclusions\nKey Features\nCaching: Downloaded transcripts are cached locally to avoid re-downloading\nDeduplication: Removes duplicate lines common in auto-generated captions\nMulti-format support: Works with VTT, SRT, and JSON caption formats\nCookie support: Can access age-restricted content with a cookie file\nComprehensive summaries: Provides thesis, key examples, comparisons, and conclusions\nFast processing: Typical videos summarized in seconds\nAttribution\n\nThis skill is based on the tldw project by stong. Full attribution and licensing details are available in ATTRIBUTION.md.\n\nRequirements\nSystem Requirements\nPython: 3.8 or higher\nDisk space: ~60MB for virtual environment and dependencies, plus additional space for transcript cache\nRequired Dependencies\n\nThe skill uses a Python virtual environment with the following dependencies:\n\nyt-dlp: Video transcript downloader (installed via pip)\nPython standard library: json, re, argparse (built-in)\n\nAll dependencies are installed in the local virtual environment at venv/.\n\nOptional Dependencies\nCookie file: For accessing age-restricted or members-only content\nFormat: Netscape cookie format (can be exported from browser)\nPlace in skill directory and reference with --cookies flag\nDirectory Structure\ntldw/\n├── SKILL.md              # This documentation\n├── ATTRIBUTION.md        # Credit to original project\n├── LICENSE               # AGPL-3.0 license\n├── scripts/\n│   └── extract_transcript.py   # Main extraction script\n├── cache/                # Cached transcripts (auto-created)\n└── venv/                 # Python virtual environment\n    ├── bin/\n    │   └── yt-dlp        # Video transcript downloader\n    └── lib/              # Python packages\n\nSetup\n\nFollow these steps to set up the tldw skill:\n\nNavigate to the skill directory:\n\ncd tldw/\n\n\nCreate a Python virtual environment:\n\npython3 -m venv venv\n\n\nInstall dependencies:\n\nvenv/bin/pip install yt-dlp webvtt-py\n\n\nVerify installation:\n\nvenv/bin/yt-dlp --version\n\n\nThe cache directory will be created automatically on first use\n\nThe skill is now ready to use!\n\nUsage Instructions\nBasic Usage\n\nWhen a user provides a YouTube URL and requests a summary, use the following workflow:\n\nExtract the transcript using the extraction script\nParse the JSON output to get the cleaned transcript\nSummarize the transcript directly (do not use sub-agents for large transcripts)\nReturn a structured summary to the user\nCommand Syntax\ncd tldw/ && \\\nvenv/bin/python scripts/extract_transcript.py \\\n  --json --cache-dir cache \"YOUTUBE_URL\"\n\nProcessing the Output\n\nThe script returns JSON with the following structure:\n\n{\n  \"transcript\": \"Full cleaned transcript text...\",\n  \"video_id\": \"video_id_here\",\n  \"title\": \"Video Title\",\n  \"description\": \"Video description...\",\n  \"duration\": 1234,\n  \"uploader\": \"Channel Name\",\n  \"upload_date\": \"20260101\",\n  \"view_count\": 12345,\n  \"webpage_url\": \"https://www.youtube.com/watch?v=...\"\n}\n\n\nExtract the transcript field and process it directly to create a comprehensive summary.\n\nCommand Options\n--json: Output in JSON format (recommended for parsing)\n--cache-dir <path>: Specify cache directory (default: cache/)\n--cookies <file>: Path to Netscape-format cookie file for age-restricted content\nExample Workflow\n# 1. Extract transcript\ncd tldw/ && \\\nvenv/bin/python scripts/extract_transcript.py \\\n  --json --cache-dir cache \"https://www.youtube.com/watch?v=VIDEO_ID\"\n\n# 2. Parse the JSON output and extract the transcript field\n\n# 3. Summarize the transcript directly (include main points, key arguments, conclusions)\n\n# 4. Return formatted summary to user\n\nAccessing Age-Restricted Content\n\nFor age-restricted or members-only videos, export cookies from your browser:\n\nInstall a browser extension like \"Get cookies.txt LOCALLY\"\nNavigate to YouTube while logged in\nExport cookies in Netscape format\nSave to the tldw directory (e.g., youtube_cookies.txt)\nUse with: --cookies youtube_cookies.txt\nError Handling\nNo Captions Available\n\nError message: \"No subtitles/captions found\"\n\nWhat it means: The video has no auto-generated or manual captions available.\n\nSolution: Inform the user that the video cannot be transcribed because it lacks captions.\n\nInvalid URL\n\nError message: \"ERROR: unable to download video data\"\n\nWhat it means: The URL is malformed, the video doesn't exist, or it's private/deleted.\n\nSolution: Verify the URL is correct and check if the video is publicly accessible.\n\nAge-Restricted Content\n\nError message: \"Sign in to confirm your age\" or similar authentication errors\n\nWhat it means: The video requires age verification or YouTube login.\n\nSolution: Use the --cookies flag with exported browser cookies (see \"Accessing Age-Restricted Content\" above).\n\nNetwork/Connection Errors\n\nError messages: \"Unable to download\", \"Connection timeout\", extraction failures\n\nWhat it means: Network issues, YouTube blocking the request, or outdated yt-dlp that's incompatible with current YouTube.\n\nSolution:\n\nFirst, update yt-dlp:\ncd tldw/ && \\\nvenv/bin/pip install --upgrade yt-dlp\n\nRetry the extraction\nIf still failing: check internet connection or wait and try later\n\nYouTube frequently changes their API, so keeping yt-dlp updated is essential.\n\nCache Issues\n\nSymptoms: Permission errors, disk full errors\n\nWhat it means: The cache directory has permission problems or insufficient disk space.\n\nSolution: Check available disk space with df -h and verify write permissions on the cache/ directory.\n\nLarge Transcript Handling\n\nNote: Transcripts over 50,000 characters may take longer to process.\n\nBest practice: Process large transcripts directly in the main agent session. Do not delegate to sub-agents, as they have been found unreliable with large payloads.\n\nDebugging\n\nTo see full error output (not just the last 100 lines):\n\ncd tldw/ && \\\nvenv/bin/python scripts/extract_transcript.py \\\n  --json --cache-dir cache \"YOUTUBE_URL\"\n\n\nTo inspect cached transcripts:\n\nls -lh tldw/cache/\n\nLimitations\nCaption Dependency\nThe skill only works with videos that have captions/subtitles available\nCannot transcribe videos with only audio (no built-in speech-to-text capability)\nAuto-generated captions may contain errors, typos, or timing artifacts\nDeduplication helps clean up auto-generated caption issues but isn't perfect\nLanguage Support\nDepends on available caption languages provided by YouTube\nThe script extracts whatever captions are available (auto-generated or manual)\nNon-English captions work, but summarization quality depends on the language model's capabilities\nEnglish captions typically provide the best results\nVideo Length\nVery long videos (2+ hours) may produce extremely large transcripts (100k+ characters)\nProcessing time increases proportionally with transcript length\nNo hard limit, but practical considerations for context window and processing time apply\nYouTube-Only\nCurrently only supports YouTube URLs\nDoes not work with other video platforms (Vimeo, Dailymotion, TikTok, etc.)\nWhile yt-dlp supports many platforms, this script is optimized specifically for YouTube\nPrivate/Restricted Content\nCannot access truly private videos (not shared publicly)\nMembers-only or channel membership content requires cookies from an authenticated session\nLive streams may not have captions available until after the stream has ended\nSome geographic restrictions cannot be bypassed even with cookies\nDeduplication Limitations\nThe deduplication logic removes consecutive duplicate lines\nMay occasionally remove legitimate repeated phrases or refrains\nDesigned primarily for auto-generated caption artifacts, not all repetition scenarios\nManual captions typically don't need deduplication\nNo Audio Extraction\nThis skill extracts text transcripts only, not audio files\nFor audio extraction or processing, other tools (like yt-dlp directly with audio flags) would be needed\nFocus is on text-based content analysis, not media files"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/vovavvk/tl-dw",
    "publisherUrl": "https://clawhub.ai/vovavvk/tl-dw",
    "owner": "vovavvk",
    "version": "1.0.2",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/tl-dw",
    "downloadUrl": "https://openagent3.xyz/downloads/tl-dw",
    "agentUrl": "https://openagent3.xyz/skills/tl-dw/agent",
    "manifestUrl": "https://openagent3.xyz/skills/tl-dw/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/tl-dw/agent.md"
  }
}