Install
openclaw skills install @thcjp/bilibili-toolkitopenclaw skills install @thcjp/bilibili-toolkitimport asyncio
from main import BilibiliAllInOne
# 使用凭证初始化
app = BilibiliAllInOne(
sessdata="your_sessdata",
bili_jct="your_bili_jct",
buvid3="your_buvid3"
)
async def publish_video():
# 上传并发布视频
result = await app.execute("publisher", "upload",
file_path="./video.mp4",
title="我的专业视频",
description="使用B站工具箱专业版上传",
tags=["python", "bilibili", "教程"],
category="122", # 开源软件分类
no_reprint=1, # 原创内容
open_elec=1 # 开启充电
)
print(f"发布结果: {result}")
asyncio.run(publish_video())
# 命令行发布
python main.py publisher upload '{
"file_path": "./video.mp4",
"title": "我的专业视频",
"description": "专业版上传测试",
"tags": ["教程", "python"],
"category": "122"
}'
# 保存为草稿
python main.py publisher draft '{
"file_path": "./video.mp4",
"title": "草稿视频"
}'
# 定时发布
python main.py publisher schedule '{
"file_path": "./video.mp4",
"title": "定时发布视频",
"schedule_time": "2026-12-31T20:00:00+08:00"
}'
# 编辑已发布视频
python main.py publisher edit '{
"bvid": "BV1xx411c7mD",
"title": "新标题",
"tags": ["更新", "标签"]
}'
执行数据追踪与对比分析操作,处理输入数据并返回结果
验证执行结果,确认输出符合预期格式
参考数据追踪与对比分析相关配置参数进行设置
执行批量下载与队列管理操作,处理输入数据并返回结果
验证执行结果,确认输出符合预期格式
参考批量下载与队列管理相关配置参数进行设置
执行视频发布管理操作,处理输入数据并返回结果
验证执行结果,确认输出符合预期格式
参考视频发布管理相关配置参数进行设置
async def batch_download():
# 批量下载多个视频
urls = [
"BV1xx411c7mD",
"BV1yy411c8nE",
"BV1zz411c9oF"
]
result = await app.execute("downloader", "batch_download",
urls=urls,
quality="1080p+", # 专业版支持高清
format="mp4",
output_dir="./downloads"
)
print(f"批量下载完成: {result}")
asyncio.run(batch_download())
输入: 用户提供批量下载与队列管理所需的指令和必要参数。
批量下载与队列管理操作,处理输入数据并返回结果批量下载与队列管理 选项async def track_and_compare():
# 追踪视频数据(每30分钟采集一次,持续12小时)
track_result = await app.execute("watcher", "track",
url="BV1xx411c7mD",
interval=30, # 30分钟间隔
duration=12 # 持续12小时
)
print(f"追踪完成: {track_result}")
# 多视频数据对比
compare_result = await app.execute("watcher", "compare",
urls=["BV1xx411c7mD", "BV1yy411c8nE", "BV1zz411c9oF"]
)
print(f"对比结果: {compare_result}")
asyncio.run(track_and_compare())
输入: 用户提供数据追踪与对比分析所需的指令和必要参数。
数据追踪与对比分析操作,处理输入数据并返回结果数据追踪与对比分析 选项# 方式一:环境变量(推荐)
import os
os.environ["BILIBILI_SESSDATA"] = "your_sessdata"
os.environ["BILIBILI_BILI_JCT"] = "your_bili_jct"
os.environ["BILIBILI_BUVID3"] = "your_buvid3"
app = BilibiliAllInOne() # 自动从环境变量读取
# 方式二:凭证文件
app = BilibiliAllInOne(
sessdata="your_sessdata",
bili_jct="your_bili_jct",
buvid3="your_buvid3",
persist=True # 启用持久化存储(0600权限)
)
# 方式三:运行时管理
app.auth.persist = True # 启用持久化
app.auth.clear_persisted() # 清除持久化文件
输入: 用户提供凭证安全管理所需的指令和必要参数。 输出: 返回凭证安全管理的执行结果,包含操作状态和输出数据。
凭证安全管理操作,处理输入数据并返回结果凭证安全管理 选项本skill还覆盖以下能力场景: 企业级、站运营工具、支持高清下载、批量操作、数据追踪与凭证安、面向专业、主与企业运营的全、核心能力、高清视频下载、超清画质下载、草稿管理、视频编辑、批量下载与处理、数据追踪监控、定时追踪视频播放、点赞等指标变化、视频对比分析。这些能力在上述核心功能中均有对应处理逻辑。
专业UP主批量管理视频发布,包括上传、定时发布与草稿管理。
async def up_master_workflow():
# 1. 上传并保存为草稿
draft_result = await app.execute("publisher", "draft",
file_path="./videos/episode01.mp4",
title="系列教程优秀期",
description="Python基础教程",
tags=["Python", "教程", "编程"],
category="122"
)
# 2. 定时发布第二期
schedule_result = await app.execute("publisher", "schedule",
file_path="./videos/episode02.mp4",
title="系列教程第二期",
schedule_time="2026-01-20T19:00:00+08:00",
tags=["Python", "教程", "编程"],
category="122"
)
# 3. 编辑已发布视频信息
edit_result = await app.execute("publisher", "edit",
bvid="BV1xx411c7mD",
title="更新后的标题",
tags=["更新标签", "Python"]
)
print(f"草稿: {draft_result}")
print(f"定时: {schedule_result}")
print(f"编辑: {edit_result}")
asyncio.run(up_master_workflow())
运营团队追踪竞品视频数据变化,进行对比分析。
async def competitor_analysis():
# 追踪竞品视频数据
competitor_videos = [
"BV1xx411c7mD", # 竞品A
"BV1yy411c8nE", # 竞品B
"BV1zz411c9oF" # 竞品C
]
# 获取当前数据
for bv in competitor_videos:
stats = await app.execute("watcher", "get_stats", url=bv)
print(f"视频{bv}: 播放{stats['data']['view']} 点赞{stats['data']['like']}")
# 多视频对比
comparison = await app.execute("watcher", "compare", urls=competitor_videos)
print(f"对比分析: {comparison}")
# 长期追踪(每小时采集,持续24小时)
track = await app.execute("watcher", "track",
url="BV1xx411c7mD",
interval=60,
duration=24
)
asyncio.run(competitor_analysis())
企业批量下载高清视频用于内容归档。
async def batch_archive():
# 批量下载4K高清视频
video_list = [
"BV1xx411c7mD",
"BV1yy411c8nE",
"BV1zz411c9oF",
"BV1aa411c0pG"
]
result = await app.execute("downloader", "batch_download",
urls=video_list,
quality="4k", # 4K超清
format="mp4",
output_dir="./archive/4k_videos"
)
# 批量获取字幕
for bv in video_list:
await app.execute("subtitle", "download",
url=bv,
language="zh-CN",
format="srt",
output_dir="./archive/subtitles"
)
print(f"归档完成: {result}")
asyncio.run(batch_archive())
| 依赖项 | 类型 | 是否必需 | 获取方式 |
|---|---|---|---|
| LLM API | API | 必需 | 由Agent内置LLM提供 |
| Python 3 | 运行时 | 必需 | python.org 下载安装 |
| httpx | Python库 | 必需 | pip install httpx |
| aiohttp | Python库 | 必需 | pip install aiohttp |
| beautifulsoup4 | Python库 | 必需 | pip install beautifulsoup4 |
| lxml | Python库 | 必需 | pip install lxml |
| requests | Python库 | 必需 | pip install requests |
| faster-whisper | Python库 | 可选 | pip install faster-whisper |
| ffmpeg | 系统工具 | 可选 | 系统包管理器安装 |
BILIBILI_SESSDATA:B站会话凭证(发布与高清下载必需)BILIBILI_BILI_JCT:B站CSRF Token(写操作必需)BILIBILI_BUVID3:B站设备标识(辅助验证)BILIBILI_PERSIST:是否启用凭证持久化(设为1启用)API Key配置方式:
export API_KEY="your_api_key_here"
配置后需重启会话或开启新终端生效。API Key应妥善保管,避免泄露到版本控制系统。
-CN: 命令参数,用于指定操作选项-CN: 命令参数,用于指定操作选项-CN: 命令参数,用于指定操作选项-CN: 命令参数,用于指定操作选项-CN: 命令参数,用于指定操作选项-CN: 命令参数,用于指定操作选项-CN: 命令参数,用于指定操作选项-CN: 命令参数,用于指定操作选项-CN: 命令参数,用于指定操作选项| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| content | string | 是 | 相关说明 |
| content | string | 否 | 相关说明, 默认: 全部维度 |
| strict_level | string | 否 | 审查严格度, 可选: strict/normal/loose, 默认: normal |
{
"success": true,
"data": {
"overall_grade": "A",
"total_score": 92,
"max_score": 100,
"summary": "处理完成",
"details": [
{
"item": "代码风格",
"status": "pass",
"score": 95,
"comment": "符合规范"
},
{
"item": "安全合规",
"status": "warn",
"score": 80,
"comment": "符合规范"
}
],
"improvements": [
{
"priority": "high",
"suggestion": "建议优化",
"expected_gain": "+5分"
},
{
"priority": "medium",
"suggestion": "建议优化",
"expected_gain": "+3分"
}
]
},
"error": null
}
| 错误场景 | 原因 | 处理方式 |
|---|---|---|
| 配置错误 | 参数缺失或格式错误 | 检查依赖说明中的配置要求 |
| 运行时错误 | 运行环境不满足 | 确认运行环境符合依赖说明 |
| 网络错误 | 连接超时或不可达 | 执行ping命令测试网络连通性,检查防火墙和代理设置连接后执行ping命令测试网络连通性,检查防火墙和代理设置连接后重新执行命令,参考国内替代方案 |
| 依赖项 | 类型 | 必需 | 说明 |
|---|---|---|---|
| LLM | 模型 | 是 | 需要LLM进行智能审查, 推荐GPT-4/智谱GLM-4/DeepSeek |
references/checklist.md | 文件 | 是 | 相关说明 |
references/scoring.md | 文件 | 否 | 相关说明 |
| API Key | 凭证 | 否 | 使用云端LLM时需要 |
国内替代方案:
登录bilibili.com,打开浏览器开发者工具(F12)→ Application → Cookies,复制以下值:
| 凭证 | 说明 | 用途 |
|---|---|---|
SESSDATA | 会话凭证 | 登录验证 |
bili_jct | CSRF Token | 写操作(发布/编辑) |
buvid3 | 设备标识 | 辅助验证 |
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
file_path | string | 必填 | 视频文件路径 |
title | string | 必填 | 标题(最多80字) |
description | string | 空 | 简介(最多2000字) |
tags | string[] | ["bilibili"] | 标签(最多12个,每个最多20字) |
category | string | "171" | 分区TID |
cover_path | string | null | 封面图片路径 |
no_reprint | int | 1 | 1=原创,0=转载 |
open_elec | int | 0 | 1=开启充电,0=关闭 |
| 关注点 | 说明 |
|---|---|
| 凭证类型 | 完整浏览器会话Cookie,非受限API Key |
| 存储方式 | 默认内存存储,不落盘 |
| 持久化 | 可选启用,0600权限保护 |
| 网络传输 | 仅发送至B站官方域名,HTTPS加密 |
| 第三方共享 | 不发送至任何第三方服务 |
检查SESSDATA和bili_jct是否正确且未过期。发布操作必须同时提供这两个凭证。
4K下载需要登录凭证。确认已正确配置SESSDATA,且账号有4K观看权限。
持久化文件使用0600权限(仅所有者可读写)。建议仅在需要跨会话使用时启用,用完及时清除。
使用ISO 8601格式,如 2026-12-31T20:00:00+08:00(北京时间20:00)。
完全兼容。专业版包含免费版所有功能,免费版的无登录功能在专业版中同样可用。
| 错误场景 | 原因 | 处理方式 |
|---|---|---|
| LLM响应超时或无响应 | 网络延迟或模型负载过高 | 执行ping命令测试网络连通性,检查防火墙和代理设置连接,执行ping命令测试网络连通性,检查防火墙和代理设置连接后重新执行命令请求;确认Agent平台LLM服务正常 |
| 输入内容格式不正确 | 用户输入不符合skill预期格式 | 检查输入是否符合skill使用说明中的格式要求,参考示例章节 |
| 执行结果与预期不符 | 指令描述不够明确或上下文不足 | 提供更详细的指令描述,补充必要的上下文信息 |
| 命令执行失败 | 运行环境不满足要求或权限不足 | 确认运行环境符合依赖说明中的要求;检查命令权限设置 |