Track bundled vendor runtime sources
Some checks failed
CI / main (push) Has been cancelled
CI / release-e2e (push) Has been cancelled

This commit is contained in:
2026-07-07 10:05:50 +08:00
parent fbe179ab53
commit 52636c91ae
2111 changed files with 1850012 additions and 14 deletions

View File

@@ -0,0 +1,54 @@
---
name: bilibili-upload
description: 当 agent 需要通过已安装的 `sau` CLI 完成 Bilibili 登录、账号校验或视频上传时使用这个 skill。优先使用 `sau bilibili ...`,程序会自动准备 `biliup`,不要求用户手动安装。
---
# Bilibili 上传 Skill
优先把 `sau` 作为主接口。
不要一开始就让用户自己找 `biliup` 或手动下载 release。
程序会在运行时自动检查、自动下载、自动更新 `biliup`
## 功能概览
| 功能 | 命令入口 | 说明 |
| --- | --- | --- |
| 登录 | `sau bilibili login --account <name>` | 需要用户自己在本地真实终端里执行,用于生成或刷新登录信息 |
| 校验 | `sau bilibili check --account <name>` | 检查指定账号当前是否有效 |
| 视频上传 | `sau bilibili upload-video ...` | 上传一条 Bilibili 视频 |
## 默认工作流
1. 先确认 `references/runtime-requirements.md`
2. 再确认 `references/cli-contract.md`
3. 执行匹配的 `sau bilibili ...` 命令
4. 如果命令失败,再看 `references/troubleshooting.md`
## 命令选择建议
- 用户没有登录信息,先让用户自己在本地终端执行 `login`
- 用户只想确认账号状态,先用 `check`
- 用户要发视频,用 `upload-video`
## 执行前检查
- 优先确认当前环境能运行 `sau`
- 如果 `sau` 不在 PATH 中,可以用仓库里的 `sau_cli.py`
- 不要要求用户手动下载 `biliup`
- 第一次运行 Bilibili 命令时,程序可能会自动联网准备 `biliup`
- 对 agent 来说,不要在非交互环境里硬跑 `sau bilibili login`
- 正确做法是让用户自己在本地终端执行 `sau bilibili login --account <name>`
- 如果终端里的二维码显示不完整,提醒用户直接打开当前目录下的 `qrcode.png` 扫码
## 模板文件
- `scripts/examples/bilibili_commands.ps1`
- `scripts/examples/bilibili_commands.sh`
- `scripts/examples/bilibili_cli_template.py`
## 参考文档
- 运行前提:`references/runtime-requirements.md`
- CLI 契约:`references/cli-contract.md`
- 故障排查:`references/troubleshooting.md`

View File

@@ -0,0 +1,66 @@
# Bilibili CLI 契约
这个 skill 默认假设当前环境已经安装并可调用 `sau` 命令。
## 命令列表
### 登录
```bash
sau bilibili login --account <account>
```
- 必填参数:
- `--account`
- 作用:
- 自动准备 `biliup`
- 触发 Bilibili 登录流程
- 账号说明:
- `--account` 传的是用户自定义的 `account_name`,不是固定只能叫 `creator`
- 一个 `account_name` 对应一个账号文件,可用于多账号隔离和并发任务
- 登录方式说明:
- 这个命令应该由用户自己在本地真实终端里运行
- 如果终端二维码显示不完整,可直接打开当前目录下的 `qrcode.png` 扫码
- agent 不应该在非交互环境里硬跑这个命令
### 校验账号
```bash
sau bilibili check --account <account>
```
- 必填参数:
- `--account`
- 预期输出:
- `valid`
- `invalid`
### 上传视频
```bash
sau bilibili upload-video \
--account <account> \
--file <video-path> \
--title "<title>" \
--desc "<desc>" \
--tid <category-id> \
[--tags tag1,tag2] \
[--schedule "YYYY-MM-DD HH:MM"]
```
- 必填参数:
- `--account`
- `--file`
- `--title`
- `--desc`
- `--tid`
- 可选参数:
- `--tags`
- `--schedule`
## 额外说明
- `--tid` 第一版必须传
- `--tags` 使用逗号分隔
- `--schedule``sau` 统一时间格式
- 程序会自动准备和更新 `biliup`

View File

@@ -0,0 +1,49 @@
# 运行前提
这个 skill 默认假设当前环境已经具备:
- 已安装 `social-auto-upload`
- 可以调用 `sau`,或者至少可以执行 `python sau_cli.py`
- 当前机器首次运行时可以联网访问 GitHub Release
## 关键说明
用户不需要自己安装 `biliup`
当你执行 `sau bilibili ...` 时:
- 如果本地没有 `biliup`,程序会自动下载
- 如果上游 GitHub Release 有更新,程序会自动更新后再继续执行
## 推荐调用方式
### `sau` 已在 PATH 中
```bash
sau bilibili --help
```
### 仓库内直接调用
PowerShell
```powershell
.\.venv\Scripts\python.exe sau_cli.py bilibili --help
```
bash / zsh
```bash
python sau_cli.py bilibili --help
```
## 首次运行注意事项
- 首次运行可能比其他平台更慢,因为要自动准备 `biliup`
- 如果网络无法访问 GitHub ReleaseBilibili 命令会失败
- 一旦本地已经准备好 `biliup`,后续命令会直接复用
- `sau bilibili login --account <name>` 需要用户自己在本地真实终端里执行
- 如果终端二维码显示不完整,通常可以直接打开当前目录下的 `qrcode.png` 扫码
- 如果国内网络访问 GitHub Release 较慢,可先用 `https://gh-proxy.com/``https://gh-proxy.org/` 辅助访问对应 release 地址排障
- 示例:
- `https://gh-proxy.org/https://github.com/biliup/biliup/releases/download/v1.1.29/biliupR-v1.1.29-aarch64-linux.tar.xz`

View File

@@ -0,0 +1,69 @@
# Bilibili 常见问题
## 1. 首次运行很慢
这是正常情况。
原因通常是程序正在自动下载 `biliup`
## 2. 自动下载失败
先检查:
- 当前网络是否能访问 GitHub
- GitHub Release 是否可访问
- 本地目录是否有写权限
- 国内网络较慢时,可先用 `https://gh-proxy.com/``https://gh-proxy.org/` 辅助访问对应 release 地址排障
- 示例:
- `https://gh-proxy.org/https://github.com/biliup/biliup/releases/download/v1.1.29/biliupR-v1.1.29-aarch64-linux.tar.xz`
## 3. `check` 返回 `invalid`
常见原因:
- 账号文件不存在
- 登录信息已失效
- `biliup renew` 失败
建议:
```bash
sau bilibili login --account <account>
```
## 4. 登录时报 `not a terminal`
常见原因:
- 你是在非交互环境里触发了 `sau bilibili login`
- 例如 agent 的命令执行器、管道环境、被接管标准输出的进程
建议:
- 改成由用户自己在本地真实终端里执行:
```bash
sau bilibili login --account <account>
```
- 如果终端里的二维码显示不完整,直接打开当前目录下的 `qrcode.png` 扫码
## 5. 上传失败
优先检查:
- `--tid` 是否正确
- 视频文件是否真实存在
- 标题、简介、标签是否符合平台要求
- 当前登录信息是否仍然有效
## 6. 上游更新后行为变化
当前 Bilibili 集成会自动跟随上游 `biliup` 最新 release。
如果上游命令行为变化,可能会影响本项目的 Bilibili CLI。
排障时请同时确认:
- 当前下载到的 `biliup` 版本
- 上游 release 是否有最近变更

View File

@@ -0,0 +1,40 @@
from __future__ import annotations
import subprocess
import sys
from pathlib import Path
from conf import BASE_DIR
from utils.constant import VideoZoneTypes
def main() -> None:
account = "account_a"
# account_name is user-defined. One account_name maps to one account file.
# You can prepare multiple account names and run them in parallel.
cli_path = Path(BASE_DIR) / "sau_cli.py"
command = [
sys.executable,
str(cli_path),
"bilibili",
"upload-video",
"--account",
account,
"--file",
str(Path(BASE_DIR) / "videos" / "demo.mp4"),
"--title",
"Bilibili CLI Demo",
"--desc",
"Bilibili CLI Demo",
"--tid",
str(VideoZoneTypes.SPORTS_FOOTBALL.value),
"--tags",
"足球,测试",
"--schedule",
"2026-03-26 16:00",
]
subprocess.run(command, check=True)
if __name__ == "__main__":
main()

View File

@@ -0,0 +1,21 @@
# 登录
# 建议由用户自己在本地真实终端里执行。
# 如果终端二维码显示不完整,可以打开当前目录下的 qrcode.png 扫码。
$account = "account_a"
# account_name is user-defined. One account_name maps to one account file.
# You can prepare multiple account names and run them in parallel.
sau bilibili login --account $account
# 校验
sau bilibili check --account $account
# 上传视频
sau bilibili upload-video `
--account $account `
--file .\videos\demo.mp4 `
--title "Bilibili CLI Demo" `
--desc "Bilibili CLI Demo" `
--tid 249 `
--tags 足球,测试 `
--schedule "2026-03-26 16:00"

View File

@@ -0,0 +1,21 @@
# login
# Run this in a local interactive terminal.
# If the terminal QR code is incomplete, open ./qrcode.png and scan that image.
account="account_a"
# account_name is user-defined. One account_name maps to one account file.
# You can prepare multiple account names and run them in parallel.
sau bilibili login --account "$account"
# check
sau bilibili check --account "$account"
# upload video
sau bilibili upload-video \
--account "$account" \
--file ./videos/demo.mp4 \
--title "Bilibili CLI Demo" \
--desc "Bilibili CLI Demo" \
--tid 249 \
--tags 足球,测试 \
--schedule "2026-03-26 16:00"