Back to skills
extension
Category: Data & AnalyticsNo API key required

B站/视频网站下载器(yt-dlp)

下载/提取 Bilibili(B站)及主流视频网站的视频到本地目录(基于 yt-dlp)。 当用户要求下载、提取、保存、归档在线视频到本地,或给出 bilibili.com 的 BV/av 链接、 以及 YouTube、抖音等 yt-dlp 支持的站点链接并希望把视频文件保存到本机时使用本技能。

personAuthor: user_3ff3c268hubcommunity

Bilibili 视频下载器

Overview

一键将 B 站(及 yt-dlp 支持的其他视频站点)的视频下载并合并为单个 mp4 文件,保存到用户指定目录。 核心下载逻辑封装在 scripts/download_video.py,自动处理 yt-dlp 安装、画质选择、音视频合并。

When to use

  • 用户给出 B 站链接并说「下载 / 提取 / 存到 / 保存到 / 帮我拿这个视频」。
  • 用户提供了 https://www.bilibili.com/video/BV...b23.tv 短链。
  • 用户希望把任意在线视频(YouTube、抖音、微博、知乎等 yt-dlp 支持站点)保存到本地。

Prerequisites

  • Python 3.10+:脚本以当前 Python 运行;首次运行会自动 pip install yt-dlp,无需手动准备。
  • ffmpeg:用于分离音视频流的合并。绝大多数环境下已自带;若缺失,脚本会在合并阶段报错, 届时按平台安装即可(Windows: winget install ffmpeg;macOS: brew install ffmpeg; Linux: apt install ffmpeg)。

Workflow

  1. 确认保存目录:若用户未指定,直接询问「保存到哪个文件夹?」。目录不存在时脚本会自动创建。

  2. 确认画质(可选):默认 best(最高可用)。可选项:1080 / 720 / 480 / audio(仅音频)。

  3. 执行下载脚本

    python <skill_dir>/scripts/download_video.py "<视频URL>" "<保存目录>" [画质] [cookies文件]
    
    • <skill_dir> 为本技能所在目录(即包含此 SKILL.md 的文件夹)。
    • 画质省略时取 bestcookies文件 仅在需要大会员/高码率画质时传入(见下)。
  4. 校验结果:下载完成后在保存目录确认生成了以视频标题命名的 .mp4 文件,并告知用户完整路径。

关键说明

  • URL 中的时间戳忽略:B 站链接常带 ?t=1145.2 之类的播放进度参数,这只是播放位置, 不影响视频本身,直接把整条 URL 传给脚本即可,无需截取。
  • 大会员 / 1080P 高码率:未登录时 yt-dlp 只能取到 1080P 普通画质。如需更高画质,从浏览器导出 cookies 后作为第 4 个参数传入(如 cookies.txt),或用 --cookies-from-browser(在脚本外手动加参)。 脚本已内置 cookies 参数支持 cookiefile 路径。
  • 分 P 视频:默认 noplaylist,只下载当前单个视频。若用户要整组分 P,去掉脚本中的 "noplaylist": True 或改为 False 后重跑。
  • 短链 / 番剧 / 会员专享b23.tv 短链会被 yt-dlp 自动展开;番剧与会员专享内容受版权/鉴权限制, 可能无法下载,遇到时如实告知用户。

Resources

scripts/download_video.py

核心下载脚本。职责:

  • 自动检测并安装 yt-dlp(当前 Python 环境)。
  • 按画质预设选择格式,下载后合并为 mp4。
  • 支持可选 cookies 文件路径以解锁高码率/大会员内容。
  • 文件名采用视频原始标题(%(title)s.%(ext)s),并启用 windowsfilenames 兼容 Windows 非法字符。

直接运行 python download_video.py 可查看参数说明。