---
name: cs-video-download
description: 下载用户提供的抖音或其他在线视频链接，统一保存并校验媒体文件。用于“帮我下载视频”、Videdown 下载、视频链接归档；不自动扩展为转写、发布或视频制作。
---

# CS 视频下载

接到明确的视频下载请求直接执行，无需再次确认。默认保存到 `~/Downloads/Videdown`；用户指定目录时遵从用户。文件命名为 `标题-平台视频ID.mp4`，重复文件先验证再复用，不覆盖已有文件。

## 获取媒体

1. 用户指定 Videdown 时先通过可用的原生 UI 工具操作 Videdown。解析完成才点击下载，检查真实保存文件，不把解析中或下载按钮当成完成。
2. Videdown 或 yt-dlp 返回抖音 403 / fresh cookies 时，不循环重试。用浏览器控制工具打开原链接，在可播放页面读取 DOM 中 `video.currentSrc`，同时记录标题、原始页面地址和视频 ID。只读取浏览器当前实际加载的媒体地址，不复用旧的临时地址。
3. 使用下方脚本下载读取到的 HTTP(S) 媒体地址。默认 Referer 是原视频页面。`blob:` 地址不能传给 curl，改用浏览器支持的媒体下载接口；若仍无法获取则报告具体阻碍。
4. 若浏览器要求登录，保留页面请用户完成登录；不绕过验证码、安全提示、付费或访问权限。

```bash
python3 <skill-dir>/scripts/download_media.py --media-url '浏览器读取的媒体地址' --source-url '原始视频页面' --title '视频标题' --video-id '平台视频ID'
```

依赖：Python 3.10+、curl、FFmpeg（含 ffprobe）；缺少时报告具体依赖，不自动安装。将 `<skill-dir>` 替换为当前 Skill 的真实路径。可用 `--output-dir` 指定其他目录，或用 `CS_VIDEO_DOWNLOAD_DIR` 设置默认归档位置。

脚本创建统一目录、下载到临时文件、检查音视频流、完整解码，通过后才生成最终文件和 `.source.json` 来源记录。下载失败不留下伪装成完成的 MP4。来源记录不保存临时签名 URL、Cookie 或凭据。

浏览器交互遵守当前工具文档，脚本仅负责下载已经获取的媒体地址。不要用脚本提取浏览器私有存储。

## 交付

返回可点击的绝对路径、时长、分辨率、文件大小和验证结果。下载与转写分开：此 skill 的完成条件是媒体归档成功，后续内容任务按用户请求和适用限制处理。
