{
  "schemaVersion": "1.0",
  "item": {
    "slug": "video-downloader",
    "name": "Video Downloader",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/ivangdavila/video-downloader",
    "canonicalUrl": "https://clawhub.ai/ivangdavila/video-downloader",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/video-downloader",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=video-downloader",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md",
      "commands.md",
      "download_video.py",
      "memory-template.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/video-downloader"
    },
    "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/video-downloader",
    "agentPageUrl": "https://openagent3.xyz/skills/video-downloader/agent",
    "manifestUrl": "https://openagent3.xyz/skills/video-downloader/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/video-downloader/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": "Video Downloader",
        "body": "Download single videos from user-provided URLs with predictable quality, format, and output paths."
      },
      {
        "title": "Setup",
        "body": "On first use, read setup.md for integration guidelines."
      },
      {
        "title": "When to Use",
        "body": "Use this skill when the user asks to download a video or extract audio from a video URL.\nIt is optimized for one-off downloads with explicit quality and format requirements."
      },
      {
        "title": "Architecture",
        "body": "Memory lives in ~/video-downloader/. See memory-template.md for structure.\n\n~/video-downloader/\n├── memory.md             # Status + user preferences\n├── downloads-log.md      # Optional history of completed downloads\n└── failed-downloads.md   # Optional retries and failure reasons"
      },
      {
        "title": "Quick Reference",
        "body": "Load only what you need to keep context small during execution.\n\nTopicFileSetup flowsetup.mdMemory templatememory-template.mdCommand recipescommands.mdDownload scriptdownload_video.py"
      },
      {
        "title": "1. Confirm Rights and Target First",
        "body": "Ask for the exact URL and intended use when unclear.\nIf the request implies unauthorized copying, refuse and suggest legal alternatives."
      },
      {
        "title": "2. Inspect Metadata Before Downloading",
        "body": "Run metadata check first to confirm title, duration, and available formats.\nIf metadata fetch fails, stop and report the exact error instead of retrying blindly."
      },
      {
        "title": "3. Match Quality to User Intent",
        "body": "Use best when user says \"highest quality\".\nUse capped quality (1080p, 720p, etc.) for smaller files or device limits.\nUse audio-only mode only when they explicitly want audio extraction."
      },
      {
        "title": "4. Use Deterministic Output Names",
        "body": "Save files as %(title)s [%(id)s].%(ext)s to reduce collisions.\nKeep downloads in a user-approved directory and never write outside it."
      },
      {
        "title": "5. Prefer the Local Wrapper Script",
        "body": "Use python3 download_video.py \"<url>\" ... for consistent behavior.\nFall back to raw yt-dlp commands only if the user asks for custom flags not covered by the script."
      },
      {
        "title": "6. Verify Output Before Declaring Success",
        "body": "Confirm file exists, extension matches request, and size is non-zero.\nFor audio-only downloads, confirm output is .mp3."
      },
      {
        "title": "Common Traps",
        "body": "Downloading playlists accidentally -> use --no-playlist by default.\nChoosing best for limited storage -> oversized files and slow transfers.\nRe-trying blocked URLs repeatedly -> temporary ban risk and no progress.\nSaving with title only -> filename collisions across similar uploads.\nSkipping metadata check -> wrong media downloaded from redirected links."
      },
      {
        "title": "External Endpoints",
        "body": "The downloader only contacts domains implied by the user-provided URL.\n\nEndpointData SentPurposeUser-provided video host URL domains (via yt-dlp)Requested media URL and standard downloader headersFetch metadata and media streams\n\nNo other data is sent externally."
      },
      {
        "title": "Security & Privacy",
        "body": "Data that leaves your machine:\n\nOnly the target media URL and standard downloader request headers sent by yt-dlp.\n\nData that stays local:\n\nDownloaded files in the selected output folder.\nOptional memory notes under ~/video-downloader/.\n\nThis skill does NOT:\n\nStore credentials in plain text.\nAccess files outside user-approved output paths.\nDownload playlists unless the user explicitly asks.\nMake undeclared network requests outside the target media host."
      },
      {
        "title": "Trust",
        "body": "By using this skill, requests are sent to the video host domains behind the provided URL.\nOnly install if you trust those services with your request metadata."
      },
      {
        "title": "Related Skills",
        "body": "Install with clawhub install <slug> if user confirms:\n\nvideo — video processing workflows\nffmpeg — codec conversion tasks\naudio — audio cleanup workflows\nyoutube-video-transcript — transcript extraction"
      },
      {
        "title": "Feedback",
        "body": "If useful: clawhub star video-downloader\nStay updated: clawhub sync"
      }
    ],
    "body": "Video Downloader\n\nDownload single videos from user-provided URLs with predictable quality, format, and output paths.\n\nSetup\n\nOn first use, read setup.md for integration guidelines.\n\nWhen to Use\n\nUse this skill when the user asks to download a video or extract audio from a video URL. It is optimized for one-off downloads with explicit quality and format requirements.\n\nArchitecture\n\nMemory lives in ~/video-downloader/. See memory-template.md for structure.\n\n~/video-downloader/\n├── memory.md             # Status + user preferences\n├── downloads-log.md      # Optional history of completed downloads\n└── failed-downloads.md   # Optional retries and failure reasons\n\nQuick Reference\n\nLoad only what you need to keep context small during execution.\n\nTopic\tFile\nSetup flow\tsetup.md\nMemory template\tmemory-template.md\nCommand recipes\tcommands.md\nDownload script\tdownload_video.py\nCore Rules\n1. Confirm Rights and Target First\nAsk for the exact URL and intended use when unclear.\nIf the request implies unauthorized copying, refuse and suggest legal alternatives.\n2. Inspect Metadata Before Downloading\nRun metadata check first to confirm title, duration, and available formats.\nIf metadata fetch fails, stop and report the exact error instead of retrying blindly.\n3. Match Quality to User Intent\nUse best when user says \"highest quality\".\nUse capped quality (1080p, 720p, etc.) for smaller files or device limits.\nUse audio-only mode only when they explicitly want audio extraction.\n4. Use Deterministic Output Names\nSave files as %(title)s [%(id)s].%(ext)s to reduce collisions.\nKeep downloads in a user-approved directory and never write outside it.\n5. Prefer the Local Wrapper Script\nUse python3 download_video.py \"<url>\" ... for consistent behavior.\nFall back to raw yt-dlp commands only if the user asks for custom flags not covered by the script.\n6. Verify Output Before Declaring Success\nConfirm file exists, extension matches request, and size is non-zero.\nFor audio-only downloads, confirm output is .mp3.\nCommon Traps\nDownloading playlists accidentally -> use --no-playlist by default.\nChoosing best for limited storage -> oversized files and slow transfers.\nRe-trying blocked URLs repeatedly -> temporary ban risk and no progress.\nSaving with title only -> filename collisions across similar uploads.\nSkipping metadata check -> wrong media downloaded from redirected links.\nExternal Endpoints\n\nThe downloader only contacts domains implied by the user-provided URL.\n\nEndpoint\tData Sent\tPurpose\nUser-provided video host URL domains (via yt-dlp)\tRequested media URL and standard downloader headers\tFetch metadata and media streams\n\nNo other data is sent externally.\n\nSecurity & Privacy\n\nData that leaves your machine:\n\nOnly the target media URL and standard downloader request headers sent by yt-dlp.\n\nData that stays local:\n\nDownloaded files in the selected output folder.\nOptional memory notes under ~/video-downloader/.\n\nThis skill does NOT:\n\nStore credentials in plain text.\nAccess files outside user-approved output paths.\nDownload playlists unless the user explicitly asks.\nMake undeclared network requests outside the target media host.\nTrust\n\nBy using this skill, requests are sent to the video host domains behind the provided URL. Only install if you trust those services with your request metadata.\n\nRelated Skills\n\nInstall with clawhub install <slug> if user confirms:\n\nvideo — video processing workflows\nffmpeg — codec conversion tasks\naudio — audio cleanup workflows\nyoutube-video-transcript — transcript extraction\nFeedback\nIf useful: clawhub star video-downloader\nStay updated: clawhub sync"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/ivangdavila/video-downloader",
    "publisherUrl": "https://clawhub.ai/ivangdavila/video-downloader",
    "owner": "ivangdavila",
    "version": "1.0.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/video-downloader",
    "downloadUrl": "https://openagent3.xyz/downloads/video-downloader",
    "agentUrl": "https://openagent3.xyz/skills/video-downloader/agent",
    "manifestUrl": "https://openagent3.xyz/skills/video-downloader/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/video-downloader/agent.md"
  }
}