bilibili-hub
使用 Python + UV 读写哔哩哔哩(B 站)数据的技能,依赖 bilibili-api-python + aiohttp, 通过 browser_use get_cookies 自动获取 Cookie 完成认证,无需手动复制。 支持视频详情/字幕/AI总结/评论、用户主页、搜索、热门/排行榜、关注动态 Feed、 收藏夹、稍后再看、观看历史、互动操作(点赞/投币/三连)、动态发布与删除等。 当用户提到"B站"、"哔哩哔哩"、"bilibili"、"B站视频"、"B站热门"、"bilibili-hub"、 "获取B站数据"、"B站字幕"、"B站评论"、"B站收藏"、"B站动态", 或任何需要以编程方式读写 B 站内容的场景,必须触发本技能。 --- # bilibili-hub > **改造来源**:[jackwener/bilibili-cli](https://github.com/jackwener/bilibili-cli)(Apache-2.0) > > 本技能在原仓库基础上做了以下简化与改造: > - 移除 `browser-cookie3` / `click` / `rich` / `PyYAML` / `qrcode` 依赖 > - Cookie 认证改为直接传入 `dict` 或从环境变量读取,不做浏览器自动提取 > - 移除 CLI 层(commands/)、QR 登录、formatter 等 > - 保留全部 API 方法,统一封装为同步接口(`asyncio.run`) > - 核心依赖 `bilibili-api-python`(逆向工程 B 站 API 的第三方 SDK) > - 在 Minis 环境中,Cookie 通过 `browser_use get_cookies` 自动获取 --- ## 文件结构 ``` /var/minis/skills/bilibili-hub/ ├── SKILL.md ├── pyproject.toml # bilibili-api-python + aiohttp └── scripts/ ├── __init__.py ├── exceptions.py # 6 种结构化异常 ├── payloads.py # 数据结构规范化(normalize_* 函数) └── client.py # BiliClient 核心类(全部 API 方法) ``` --- ## 认证方式 B 站 Web API 使用三个关键 Cookie: | Cookie | 说明 | |--------|------| | `SESSDATA` | 用户 Session(必填,读操作) | | `bili_jct` | CSRF Token(写操作必填:点赞/投币/发动态等) | | `DedeUserID` | 用户 ID(建议填写) | | `buvid3` | 设备 ID(建议填写,降低风控概率) | ### 方法一:browser_use 自动获取(Minis 环境首选) 1. `browser_use navigate` 打开 `https://www.bilibili.com`,确认已登录 2. `browser_use get_cookies` 获取 Cookie(原始值不出现在对话中) 3. 加载 offload env 文件: ```bash . /var/minis/offloads/env_cookies_www_bilibili_com_xxx.sh export BILI_SESSDATA="$COOKIE_SESSDATA" export BILI_JCT="$COOKIE_BILI_JCT" export BILI_USERID="$COOKIE_DEDEUSERID" export BILI_BUVID3="$COOKIE_BUVID3" ``` > **注意**:`get_cookies` 仅对当前页面域名生效,需先 navigate 到 `https://www.bilibili.com` 再调用。 ### 方法二:手动从浏览器 DevTools 获取 1. 登录 B 站,打开 DevTools → Application → Cookies → `https://www.bilibili.com` 2. 找到 `SESSDATA`、`bili_jct`、`DedeUserID` 的值 3. 存入 Minis 环境变量:`BILI_SESSDATA` / `BILI_JCT` / `BILI_USERID` ### Cookie 传入方式(三种) ```python # 方式一:
Changelog: Source: GitHub https://github.com/OpenMinis/MinisSkills
No comments yet. Be the first one!