Bilibili All In One
哔哩哔哩全能助手
一个集成了热门趋势监控、视频下载、视频观看/播放、字幕下载和视频发布功能于一体的综合性哔哩哔哩工具套件。
⚠️ 必需的环境变量:
BILIBILI_SESSDATA、BILIBILI_BILI_JCT(必需)、BILIBILI_BUVID3(可选) 这些是用于认证操作(发布、高质量下载)所需的敏感哔哩哔哩会话 Cookie。 无需认证的功能:热门监控、标准质量下载、字幕列表、弹幕、统计数据查看。📦 安装:
pip install -r requirements.txt(所有标准 PyPI 包:httpx, bilibili-api-python, aiohttp, beautifulsoup4, lxml, requests)
何时激活
当用户说出或暗示以下内容时,本 Skill 会被激活:
| 触发场景 | 匹配的模块 | 典型触发词 |
|---|---|---|
| 查看B站热门、热搜、排行榜、必看榜 | 🔥 热门监控器 | "热门"、"热搜"、"排行"、"趋势"、"必看"、"流行"、"榜单" |
| 下载B站视频、提取音频、批量下载 | ⬇️ 下载器 | "下载"、"保存视频"、"提取音频"、"导出MP4"、"批量下载" |
| 查看视频播放量、点赞数、数据追踪、对比 | 👀 观察器 | "播放量"、"点赞"、"数据"、"统计"、"对比"、"监控"、"追踪"、"观看量" |
| 下载字幕、转换字幕格式、合并字幕 | 📝 字幕工具 | "字幕"、"CC"、"SRT"、"ASS"、"字幕下载"、"字幕转换"、"翻译" |
| 播放视频、获取弹幕、播放列表 | ▶️ 播放器 | "播放"、"弹幕"、"播放地址"、"分P"、"播放列表"、"danmaku" |
| 上传视频、发布、定时发布、草稿、编辑、删除 | 📤 发布器 | "上传"、"发布"、"投稿"、"定时发布"、"草稿"、"编辑视频"、"删除视频" |
| 涉及YouTube视频数据查询 | 👀 观察器 | "YouTube"、"油管"、"YTB"、"YouTube观看量" |
| 提及B站链接或BV号 | 自动识别 | BV*、bilibili.com/video/*、b23.tv/* |
💡提示:只要用户消息中包含 B站/Bilibili 相关操作意图,或包含 BV 号、bilibili 链接,本 Skill 即会被自动激活。无需显式声明调用。
功能
| 模块 | 描述 |
|---|---|
| 🔥热门监控 | 实时监控 Bilibili 热门/趋势视频和话题 |
| ⬇️下载器 | 提供多种质量和格式选项下载 Bilibili 视频 |
| 👀观察器 | 观看和追踪视频互动指标(支持 Bilibili 和 YouTube) |
| 📝字幕 | 下载和处理多种格式和语言的字幕 |
| ▶️播放器 | 获取播放链接、弹幕与播放列表信息 |
| 📤发布器 | 在Bilibili上传、定时发布、编辑与管理视频 |
安装
环境要求
- Python >= 3.8
- ffmpeg(可选,用于合并视频/音频流)
安装依赖
pip install -r requirements.txt
依赖项
httpx >= 0.24.0bilibili-api-python >= 16.0.0aiohttp >= 3.8.0beautifulsoup4 >= 4.12.0lxml >= 4.9.0requests >= 2.31.0
配置
部分功能(下载高清视频、发布等)需要Bilibili身份验证。可通过以下三种方式提供凭据:
1. 环境变量
export BILIBILI_SESSDATA="your_sessdata"
export BILIBILI_BILI_JCT="your_bili_jct"
export BILIBILI_BUVID3="your_buvid3"
2. 凭据文件
创建JSON文件(例如:credentials.json)3. 直接参数
{
"sessdata": "your_sessdata",
"bili_jct": "your_bili_jct",
"buvid3": "your_buvid3"
}
初始化时直接传递凭证:
如何获取 cookies:
from main import BilibiliAllInOne
app = BilibiliAllInOne(
sessdata="your_sessdata",
bili_jct="your_bili_jct",
buvid3="your_buvid3",
)
登录bilibili.com,打开浏览器开发者工具(F12)→ 应用程序 → Cookies,复制SESSDATA
、bili_jct和buvid3的值。⚠️ 安全与隐私
凭证处理
此技能处理
敏感的 Bilibili 会话 cookies。请仔细阅读以下内容:关注点
| 详情 | 需要哪些凭证? |
|---|---|
| SESSDATA | 、bili_jct,,buvid3— Bilibili 浏览器 Cookies |
| 哪些功能需要认证? | 发布(上传/编辑/删除/定时发布/草稿)、下载 1080p+/4K 画质视频 |
| 哪些功能无需凭证即可使用? | 热门监控、标准画质下载、字幕列表获取、弹幕抓取、数据查看 |
| 凭证发送到哪里? | 发送到官方的 Bilibili API 端点 (api.bilibili.com,member.bilibili.com),通过 HTTPS 传输。YouTube 元数据使用www.youtube.com/oembed(不发送凭证) |
| 凭证会持久化存储到磁盘吗? | 不会— 除非你显式调用auth.save_to_file()。默认情况下,凭证仅保留在内存中 |
| 已保存凭证的文件权限 | 0600(仅所有者读写)—— 默认限制严格 |
最佳实践
- 🧪使用测试账户—— 请勿为评估/测试目的提供您的主Bilibili账户cookies。
- 🔒优先使用内存凭据—— 通过环境变量或直接参数传递凭据,而非保存到文件。
- 📁如果必须保存凭据—— 使用
auth.save_to_file()该函数会创建权限为0600的文件。不再需要时请删除该文件。 - 🐳在隔离环境中运行—— 尽可能在隔离的容器/环境中运行此技能,并检查网络流量。
- 🌐验证网络流量— 所有HTTP请求仅发送至Bilibili官方域名及YouTube oEmbed API。您可通过监控出站连接进行验证。
- ❌无数据外泄— 本技能不会向任何第三方服务、分析终端或遥测服务器发送凭据。
使用的网络终端
| 域名 | 用途 |
|---|---|
api.bilibili.com | 视频信息、统计数据、热门榜单、字幕、弹幕、播放地址 |
member.bilibili.com | 视频发布(上传、编辑、删除) |
upos-sz-upcdnbda2.bilivideo.com | 视频文件上传CDN |
www.bilibili.com | 网页抓取备用方案 |
www.youtube.com | 通过oEmbed API获取YouTube视频元数据(无需身份验证) |
各模块的凭据要求
| 模块 | 需要身份验证? | 备注 |
|---|---|---|
| 🔥 热门监控 | ❌ 否 | 所有公共API |
| ⬇️ 下载器 | ⚠️ 可选 | 仅需用于1080p+ / 4K画质 |
| 👀 观看器 | ❌ 否 | 公共统计API |
| 📝 字幕 | ❌ 否 | 公共字幕API |
| ▶️ 播放器 | ⚠️ 可选 | 需要用于获取高质量播放URL |
| 📤 发布器 | ✅ 是必需 | 所有操作都需要SESSDATA+bili_jct |
使用方法
命令行界面
python main.py <skill_name> <action> [params_json]
Python API
import asyncio
from main import BilibiliAllInOne
app = BilibiliAllInOne()
async def demo():
result = await app.execute("hot_monitor", "get_hot", limit=5)
print(result)
asyncio.run(demo())
技能参考
1. 🔥 热门监控 (bilibili_hot_monitor)
实时监控B站热门/趋势视频和话题。支持按分类筛选、追踪排名变化。
操作
| 操作 | 描述 | 参数 |
|---|---|---|
get_hot | 获取热门视频 | page,page_size |
get_trending | 获取趋势系列/话题 | limit |
get_weekly | 获取每周必看列表 | number(周数,可选) |
get_rank | 获取分类排行视频 | category,limit |
支持类别
全部,动漫,音乐,舞蹈,游戏,科技,生活,美食,汽车,时尚,娱乐,电影,电视
示例
# Get top 10 hot videos
python main.py hot_monitor get_hot '{"page_size": 10}'
# Get trending topics
python main.py hot_monitor get_trending '{"limit": 5}'
# Get this week's must-watch
python main.py hot_monitor get_weekly
# Get game category rankings
python main.py hot_monitor get_rank '{"category": "game", "limit": 10}'
# Python API
result = await app.execute("hot_monitor", "get_hot", page_size=10)
result = await app.execute("hot_monitor", "get_rank", category="game", limit=10)
2. ⬇️ 下载器 (bilibili_downloader)
下载Bilibili视频,支持多种画质选项、批量下载及格式选择。
操作
| 操作 | 描述 | 参数 |
|---|---|---|
获取信息 | 获取视频信息 | 网址 |
获取格式 | 列出可用画质/格式 | 网址 |
下载 | 下载单个视频 | 网址,画质,输出目录,格式,页码 |
批量下载 | 下载多个视频 | 网址列表,质量,输出目录,格式 |
质量选项
360p,480p,720p,1080p(默认),1080p+,4k
格式选项
mp4(默认),flv,mp3(仅音频)
示例
# Get video info
python main.py downloader get_info '{"url": "BV1xx411c7mD"}'
# List available formats
python main.py downloader get_formats '{"url": "BV1xx411c7mD"}'
# Download in 1080p MP4
python main.py downloader download '{"url": "BV1xx411c7mD", "quality": "1080p", "format": "mp4"}'
# Extract audio only
python main.py downloader download '{"url": "BV1xx411c7mD", "format": "mp3"}'
# Batch download
python main.py downloader batch_download '{"urls": ["BV1xx411c7mD", "BV1yy411c8nE"], "quality": "720p"}'
# Python API
info = await app.execute("downloader", "get_info", url="BV1xx411c7mD")
result = await app.execute("downloader", "download", url="BV1xx411c7mD", quality="1080p")
3. 👀 观察者(bilibili_watcher)
监控Bilibili(和YouTube)视频。随时间追踪观看次数、评论、点赞数和其他互动指标。
操作
| 操作 | 描述 | 参数 |
|---|---|---|
watch | 获取详细视频信息 | url |
get_stats | 获取当前互动统计数据 | url |
track | 随时间追踪指标 | url,interval(分钟),duration(小时) |
compare | 比较多个视频 | urls |
支持的平台
- Bilibili:
https://www.bilibili.com/video/BVxxxxxx或BVxxxxxx - YouTube:
https://www.youtube.com/watch?v=xxxxx或https://youtu.be/xxxxx
示例
# Get video details
python main.py watcher watch '{"url": "BV1xx411c7mD"}'
# Get current stats
python main.py watcher get_stats '{"url": "BV1xx411c7mD"}'
# Track views every 30 minutes for 12 hours
python main.py watcher track '{"url": "BV1xx411c7mD", "interval": 30, "duration": 12}'
# Compare multiple videos
python main.py watcher compare '{"urls": ["BV1xx411c7mD", "BV1yy411c8nE"]}'
# Python API
details = await app.execute("watcher", "watch", url="https://www.youtube.com/watch?v=dQw4w9WgXcQ")
comparison = await app.execute("watcher", "compare", urls=["BV1xx411c7mD", "BV1yy411c8nE"])
4. 📝 字幕 (bilibili_subtitle)
从Bilibili视频下载并处理字幕/CC。支持多种字幕格式和语言。
操作
| 操作 | 描述 | 参数 |
|---|---|---|
list | 列出可用字幕 | url |
download | 下载字幕 | url,语言,格式,输出目录 |
转换 | 转换字幕格式 | 输入路径,输出格式,输出目录 |
合并 | 合并多个字幕文件 | 输入路径列表,输出路径,输出格式 |
支持的格式
srt(默认),ass,vtt,txt,json
支持的语言
zh-CN(默认)en、ja,以及视频中可用的其他语言代码。
示例
# List available subtitles
python main.py subtitle list '{"url": "BV1xx411c7mD"}'
# Download Chinese subtitles in SRT format
python main.py subtitle download '{"url": "BV1xx411c7mD", "language": "zh-CN", "format": "srt"}'
# Download English subtitles in ASS format
python main.py subtitle download '{"url": "BV1xx411c7mD", "language": "en", "format": "ass"}'
# Convert SRT to VTT
python main.py subtitle convert '{"input_path": "./subtitles/video.srt", "output_format": "vtt"}'
# Merge subtitle files
python main.py subtitle merge '{"input_paths": ["part1.srt", "part2.srt"], "output_path": "merged.srt"}'
# Python API
subs = await app.execute("subtitle", "list", url="BV1xx411c7mD")
result = await app.execute("subtitle", "download", url="BV1xx411c7mD", language="zh-CN", format="srt")
5. ▶️ 播放器 (bilibili_player)
播放Bilibili视频,支持播放控制、播放列表管理和弹幕显示。
操作
| 操作 | 描述 | 参数 |
|---|---|---|
play | 获取完整的播放信息 | url、quality、page |
get_playurl | 获取直接播放链接 | 网址,画质,分页 |
获取弹幕 | 获取弹幕/评论 | 网址,分页,分段 |
获取播放列表 | 获取播放列表/多集信息 | 网址 |
弹幕模式
| 模式 | 描述 |
|---|---|
| 1 | 滚动(从右向左) |
| 4 | 底部固定 |
| 5 | 顶部固定 |
示例
# Get playback info
python main.py player play '{"url": "BV1xx411c7mD", "quality": "1080p"}'
# Get direct play URLs
python main.py player get_playurl '{"url": "BV1xx411c7mD", "quality": "720p"}'
# Get danmaku
python main.py player get_danmaku '{"url": "BV1xx411c7mD"}'
# Get playlist for multi-part video
python main.py player get_playlist '{"url": "BV1xx411c7mD"}'
# Get page 3 of a multi-part video
python main.py player play '{"url": "BV1xx411c7mD", "quality": "1080p", "page": 3}'
# Python API
play_info = await app.execute("player", "play", url="BV1xx411c7mD", quality="1080p")
danmaku = await app.execute("player", "get_danmaku", url="BV1xx411c7mD")
playlist = await app.execute("player", "get_playlist", url="BV1xx411c7mD")
6. 📤 发布者 (bilibili_publisher)
发布视频到Bilibili。支持上传视频、设置元数据、定时发布和管理草稿。
⚠️需要认证:所有发布操作都需要有效的Bilibili凭据。
操作
| 操作 | 描述 | 参数 |
|---|---|---|
上传 | 上传并发布一个视频 | 文件路径,标题,描述,标签,分类,封面路径,动态,禁止转载,打开电子文件 |
草稿 | 保存为草稿 | 文件路径,标题,描述,标签,分类,封面路径 |
计划 | 安排未来发布 | 文件路径,标题,计划时间,描述,标签,类别,封面路径 |
编辑 | 编辑现有视频元数据 | bvid,标题,描述,标签,封面路径 |
删除 | 删除视频 | bvid |
上传参数
| 参数 | 类型 | 默认值 | 描述 |
|---|---|---|---|
文件路径 | 字符串 | 必需 | 视频文件路径 |
标题 | 字符串 | 必需 | 视频标题(最多80个字符) |
描述 | 字符串 | "" | 视频描述(最多2000个字符) |
标签 | 字符串数组 | ["bilibili"] | 标签(最多12个,每个最多20个字符) |
分类 | 字符串 | "171" | 分类TID |
封面路径 | 字符串 | 空值 | 封面图片路径(JPG/PNG格式) |
禁止转载 | 整数 | 1 | 1 = 原创内容,0 = 转载 |
开启充电 | 整数 | 0 | 1 = 开启充电,0 = 关闭充电 |
示例
# Upload and publish
python main.py publisher upload '{"file_path": "./video.mp4", "title": "My Video", "description": "Hello World", "tags": ["test", "demo"], "category": "171"}'
# Save as draft
python main.py publisher draft '{"file_path": "./video.mp4", "title": "Draft Video"}'
# Schedule publication
python main.py publisher schedule '{"file_path": "./video.mp4", "title": "Scheduled Video", "schedule_time": "2025-12-31T20:00:00+08:00"}'
# Edit video metadata
python main.py publisher edit '{"bvid": "BV1xx411c7mD", "title": "New Title", "tags": ["updated"]}'
# Delete a video
python main.py publisher delete '{"bvid": "BV1xx411c7mD"}'
# Python API (authentication required)
app = BilibiliAllInOne(sessdata="xxx", bili_jct="xxx", buvid3="xxx")
result = await app.execute("publisher", "upload",
file_path="./video.mp4",
title="My Video",
description="Published via bilibili-all-in-one",
tags=["python", "bilibili"],
)
项目结构
bilibili-all-in-one/
├── skill.json # Skill configuration & parameter schema
├── skill.md # This documentation file
├── README.md # Project README (Chinese)
├── LICENSE # MIT License
├── requirements.txt # Python dependencies
├── .gitignore # Git ignore rules
├── main.py # Entry point & unified BilibiliAllInOne class
├── src/
│ ├── __init__.py # Package exports
│ ├── auth.py # Authentication & credential management
│ ├── utils.py # Shared utilities, API constants, helpers
│ ├── hot_monitor.py # Hot/trending video monitoring
│ ├── downloader.py # Video downloading
│ ├── watcher.py # Video watching & stats tracking
│ ├── subtitle.py # Subtitle downloading & processing
│ ├── player.py # Video playback & danmaku
│ └── publisher.py # Video uploading & publishing
└── tests/
├── __init__.py
└── test_all_skill_examples.py # Comprehensive unit tests
技能来源
本技能将以下独立技能的功能整合为一个统一的工具包:
| 原始技能 | 来源 | 整合模块 |
|---|---|---|
| bilibili热榜监控 | Jacobzwj/bilibili-hot-monitor | 热榜监控模块 |
| 哔哩哔哩下载器 | caiyundc880518/bililidownloader | 下载器模块 |
| 哔哩哔哩-YouTube 观察器 | donnycui/bilibili-youtube-watcher | 观察器模块 |
| 哔哩哔哩字幕下载技能 | DavinciEvans/bilibili-subtitle-download-skill | 字幕模块 |
| 哔哩哔哩播放器 | e421083458/bilibili-player | 播放器模块 |
| 哔哩哔哩视频发布 | Johnnyxu820/bilibili-video-publish | 发布器 |
响应格式
所有技能操作均返回一个结构统一的JSON对象:
{
"success": true,
"...": "action-specific fields"
}
出错时:
{
"success": false,
"message": "Error description"
}
许可证
MIT


微信扫一扫,打赏作者吧~