此技能提供从 Bilibili (B站) 下载视频的完整工作流,支持单个视频和合集批量下载,自动选择最高可用画质。
在首次使用前,运行依赖检查脚本确保环境就绪:
python3 {SKILL_DIR}/scripts/ensure_deps.py
该脚本会自动检测并安装 yt-dlp 和 ffmpeg。
在下载前,先获取视频信息以了解是否属于合集及合集结构:
python3 {SKILL_DIR}/scripts/bilibili_download.py info "<BILIBILI_URL>"
输出包含:视频标题、UP主、所属合集名称、合集内所有视频列表(含分类和BV号)。
python3 {SKILL_DIR}/scripts/bilibili_download.py download "<BILIBILI_URL>" -o <输出目录>
python3 {SKILL_DIR}/scripts/bilibili_download.py download "<BILIBILI_URL>" -o <输出目录> --collection
合集内如有多个分类(section),会自动按分类创建子目录。
未登录状态下B站只提供 480P/360P 画质。要获取 1080P 或更高画质,必须使用浏览器 Cookie:
python3 {SKILL_DIR}/scripts/bilibili_download.py download "<BILIBILI_URL>" -o <输出目录> --collection --browser chrome
支持的浏览器:chrome、safari、edge、firefox。
> 重要:使用浏览器 Cookie 涉及用户登录态,必须先征得用户明确同意后才能使用 --browser 参数。
脚本在下载前会自动探测当前能获取的最高画质,并根据结果给出提示:
探测在每次下载任务开始时自动运行一次(对第一个视频探测),不会阻塞下载流程。如果探测失败则静默跳过。
WorkBuddy 在看到画质探测输出低于 720P 的警告时,应主动中断下载并询问用户是否要提供浏览器 Cookie,而不是继续以低画质下载。
bestvideo+bestaudio/best。info 命令查看是否属于合集。--collection 参数。<用户指定目录>/<合集名>/脚本使用 --download-archive 记录已下载视频。如果下载中断,重新运行同一命令会自动跳过已完成的视频。
| 问题 | 解决方案 |
|---|---|
| ------ | --------- |
| 403 Forbidden | yt-dlp 版本过旧,运行 pip install -U yt-dlp 升级 |
| 画质只有 480P | 未使用浏览器 Cookie,建议用户授权后加 --browser |
| ffmpeg 未找到 | 运行 ensure_deps.py 自动安装 |
| 某些视频需要大会员 | 告知用户该视频需要大会员才能下载高码率版本,普通1080P仍可下载 |
下载大量视频时(如 50+ 集合集),建议后台运行并输出日志:
nohup python3 {SKILL_DIR}/scripts/bilibili_download.py download "<URL>" -o <DIR> --collection --browser chrome > download_log.txt 2>&1 &
查看进度:
tail -f download_log.txt
共 1 个版本