Bilibili-Down Skill
作用范围
- 仅处理基于 Bilibili BV 号的对话式下载流程。
- 复用
core/与scripts/下的本地 Python 运行模块。 - 多P能力在
core实现,Skill 仅负责状态编排与接口封装。
登录态与清晰度说明
- 本 Skill 不接收完整 Cookie,也不负责写入
config/cookies.config。 - 登录态能力由宿主环境初始化的
BiliDownloader决定;Skill 仅按当前可用能力执行下载。 - 下载说明:
- 未登录态:最高下载
720p视频,hires音频。 - 登录态:最高下载
8K视频,hires音频。 - 最终可用画质/音质以视频本身、账号权限与接口实时返回为准。
- 未登录态:最高下载
触发规则(L0 严格)
- 触发关键词:
下载B站视频下载B站音频保存BVbilibili下载
- 在
IDLE状态下若未命中触发词,返回未触发提示。
资源映射
scripts/bilibili_download_skill.py- 有状态对话编排器(
IDLE / WAIT_CONFIRM / DOWNLOADING)。
- 有状态对话编排器(
core/bili_downloader.py- 下载器核心(WBI 签名、信息查询、单P/多P媒体下载、ffmpeg 合并)。
core/exceptions.py- 下载异常分类定义。
reference/python-usage-order.md- 面向 Agent 的唯一首读说明(入口、调用链、边界)。
- 登录态配置
- 由宿主环境或上层应用自行准备;Skill 不会接收、保存或创建本地 Cookie 配置文件。
输入解析
- 使用正则提取 BV:
BV[0-9A-Za-z]+(大小写不敏感)。 - 将 BV 前缀标准化为大写
BV。 - 若缺少 BV,返回引导提示。
状态机
IDLE- 解析 BV -> 查询视频信息与清晰度。
- 通过接口参数直接启动下载任务(单P或多P)。
WAIT_CONFIRM- 仅保留兼容占位,当前默认流程不依赖确认态。
DOWNLOADING- 收到任何新消息:回复“正在下载中,请稍候…”。
- 工作线程完成后:发送最终结果消息并重置为
IDLE。
下载规则
- 若调用
download_bilibili_media(bvid, media_type):直接下载首P媒体。 - 若调用
download_bilibili_multi_p(bvid, media_type, pages):pages=None:下载全部分P。pages=[1,3]:下载指定分P。
- 触发词包含
下载B站音频时优先输出音频文件(.m4a,无损抽取)。 - 若当前 ffmpeg/源流不支持 m4a 抽取,则自动回退输出
.mp3(优先libmp3lame,再退化到mp3编码器)。 - 其余触发词默认输出视频文件(
.mp4)。 - 多P下载入口:
download_bilibili_multi_p(bvid, media_type, pages=None)。 - Agent 侧应直接通过
pages参数控制下载范围,不依赖自然语言确认输入。
错误映射
- BV 无效
- 匹配:
invalid bvid/empty pagelist/未识别 - 输出:
BV号无效或不存在,请检查后重试。
- FFmpeg 缺失/失败
- 匹配:
cannot run program/createprocess error=2/ffmpeg failed/ffmpeg.exe - 输出:
FFmpeg 未找到或执行失败,请确认 \release/ffmpeg.exe` 存在,或在 BiliDownloader 构造时指定 ffmpeg 路径。`
- 网络错误
- 匹配:
timed out/unknownhost/http - 输出:
网络请求失败,请检查网络连接后重试。详细错误:{msg}
- 兜底
- 输出:
发生错误:{msg}
反模式
- 不要在同一个 skill 实例中启动并发下载。
- 在完成/取消/报错后,不要保留过期的 pending 状态。
Scan to join WeChat group