diff --git a/README.md b/README.md index 8f171cc..b840680 100644 --- a/README.md +++ b/README.md @@ -96,23 +96,25 @@ Web 端相关代码仍然保留,但已经不是当前主线,不保证可直 当前抖音、快手、Bilibili 已经接入 CLI: ```bash -sau douyin login --account creator -sau douyin check --account creator -sau douyin upload-video --account creator --file videos/demo.mp4 --title "示例标题" -sau douyin upload-note --account creator --images videos/1.png videos/2.png --note "图文示例" +sau douyin login --account +sau douyin check --account +sau douyin upload-video --account --file videos/demo.mp4 --title "示例标题" +sau douyin upload-note --account --images videos/1.png videos/2.png --note "图文示例" -sau kuaishou login --account creator -sau kuaishou check --account creator -sau kuaishou upload-video --account creator --file videos/demo.mp4 --title "示例标题" -sau kuaishou upload-note --account creator --images videos/1.png videos/2.png videos/3.png --note "图文示例" +sau kuaishou login --account +sau kuaishou check --account +sau kuaishou upload-video --account --file videos/demo.mp4 --title "示例标题" +sau kuaishou upload-note --account --images videos/1.png videos/2.png videos/3.png --note "图文示例" -sau bilibili login --account creator -sau bilibili check --account creator -sau bilibili upload-video --account creator --file videos/demo.mp4 --title "示例标题" --desc "示例简介" --tid 249 +sau bilibili login --account +sau bilibili check --account +sau bilibili upload-video --account --file videos/demo.mp4 --title "示例标题" --desc "示例简介" --tid 249 ``` 补充说明: +- `creator` 之类的名字只是示例值,真正含义是 `account_name` +- 一个 `account_name` 对应一个账号文件,可以准备多个账号,也可以按账号名并发执行任务 - Bilibili CLI 不要求用户手动安装 `biliup` - 首次运行相关命令时,程序会自动下载 `biliup` - 后续运行会自动检查上游 release 并更新 diff --git a/docs/CLI.md b/docs/CLI.md index 78ce58a..8fa1734 100644 --- a/docs/CLI.md +++ b/docs/CLI.md @@ -42,32 +42,34 @@ $env:PLAYWRIGHT_DOWNLOAD_HOST="https://npmmirror.com/mirrors/playwright"; patchr ## 抖音 CLI 子命令 ```bash -sau douyin login --account creator -sau douyin login --account creator --headless -sau douyin check --account creator -sau douyin upload-video --account creator --file videos/demo.mp4 --title "示例标题" --tags 运动,训练 -sau douyin upload-note --account creator --images videos/1.png videos/2.png --note "图文示例" --tags 图文,测试 +sau douyin login --account +sau douyin login --account --headless +sau douyin check --account +sau douyin upload-video --account --file videos/demo.mp4 --title "示例标题" --tags 运动,训练 +sau douyin upload-note --account --images videos/1.png videos/2.png --note "图文示例" --tags 图文,测试 ``` ## 快手 CLI 子命令 ```bash -sau kuaishou login --account creator -sau kuaishou check --account creator -sau kuaishou upload-video --account creator --file videos/demo.mp4 --title "示例标题" --tags 运动,训练 -sau kuaishou upload-note --account creator --images videos/1.png videos/2.png videos/3.png --note "图文示例" --tags 图文,测试 +sau kuaishou login --account +sau kuaishou check --account +sau kuaishou upload-video --account --file videos/demo.mp4 --title "示例标题" --tags 运动,训练 +sau kuaishou upload-note --account --images videos/1.png videos/2.png videos/3.png --note "图文示例" --tags 图文,测试 ``` ## Bilibili CLI 子命令 ```bash -sau bilibili login --account creator -sau bilibili check --account creator -sau bilibili upload-video --account creator --file videos/demo.mp4 --title "示例标题" --desc "示例简介" --tid 249 --tags 足球,测试 +sau bilibili login --account +sau bilibili check --account +sau bilibili upload-video --account --file videos/demo.mp4 --title "示例标题" --desc "示例简介" --tid 249 --tags 足球,测试 ``` 补充说明: +- `creator` 之类的名字只是示例值,真正传的是用户自定义的 `account_name` +- 一个 `account_name` 对应一个账号文件,可以准备多个账号并发使用 - `sau bilibili ...` 会自动准备 `biliup` - 如果本地没有 `biliup`,第一次运行会自动下载 - 如果上游 GitHub Release 有更新,运行时会先自动更新 @@ -86,11 +88,11 @@ sau bilibili upload-video --account creator --file videos/demo.mp4 --title "示 抖音、快手、Bilibili 的视频上传都支持 `--schedule`。只要传了 `--schedule`,CLI 就会自动切换到对应平台的定时发布策略;不传则默认立即发布。 ```bash -sau douyin upload-video --account creator --file videos/demo.mp4 --title "示例标题" --schedule "2026-03-24 21:30" -sau douyin upload-note --account creator --images videos/1.png videos/2.png --note "图文示例" --schedule "2026-03-24 21:30" -sau kuaishou upload-video --account creator --file videos/demo.mp4 --title "示例标题" --schedule "2026-03-24 21:30" -sau kuaishou upload-note --account creator --images videos/1.png videos/2.png videos/3.png --note "图文示例" --schedule "2026-03-24 21:30" -sau bilibili upload-video --account creator --file videos/demo.mp4 --title "示例标题" --desc "示例简介" --tid 249 --schedule "2026-03-24 21:30" +sau douyin upload-video --account --file videos/demo.mp4 --title "示例标题" --schedule "2026-03-24 21:30" +sau douyin upload-note --account --images videos/1.png videos/2.png --note "图文示例" --schedule "2026-03-24 21:30" +sau kuaishou upload-video --account --file videos/demo.mp4 --title "示例标题" --schedule "2026-03-24 21:30" +sau kuaishou upload-note --account --images videos/1.png videos/2.png videos/3.png --note "图文示例" --schedule "2026-03-24 21:30" +sau bilibili upload-video --account --file videos/demo.mp4 --title "示例标题" --desc "示例简介" --tid 249 --schedule "2026-03-24 21:30" ``` ## 运行时参数 diff --git a/docs/install.md b/docs/install.md index 4dc36b8..9858786 100644 --- a/docs/install.md +++ b/docs/install.md @@ -95,30 +95,32 @@ sau bilibili --help ### 7. 抖音主线示例 ```bash -sau douyin login --account creator -sau douyin check --account creator -sau douyin upload-video --account creator --file videos/demo.mp4 --title "示例标题" +sau douyin login --account +sau douyin check --account +sau douyin upload-video --account --file videos/demo.mp4 --title "示例标题" ``` ### 8. 快手主线示例 ```bash -sau kuaishou login --account creator -sau kuaishou check --account creator -sau kuaishou upload-video --account creator --file videos/demo.mp4 --title "示例标题" -sau kuaishou upload-note --account creator --images videos/1.png videos/2.png videos/3.png --note "图文示例" +sau kuaishou login --account +sau kuaishou check --account +sau kuaishou upload-video --account --file videos/demo.mp4 --title "示例标题" +sau kuaishou upload-note --account --images videos/1.png videos/2.png videos/3.png --note "图文示例" ``` ### 9. Bilibili 主线示例 ```bash -sau bilibili login --account creator -sau bilibili check --account creator -sau bilibili upload-video --account creator --file videos/demo.mp4 --title "示例标题" --desc "示例简介" --tid 249 +sau bilibili login --account +sau bilibili check --account +sau bilibili upload-video --account --file videos/demo.mp4 --title "示例标题" --desc "示例简介" --tid 249 ``` 补充说明: +- `creator` 之类的名字只是示例值,真正传的是用户自定义的 `account_name` +- 一个 `account_name` 对应一个账号文件,可以准备多个账号并发使用 - 用户不需要手动安装 `biliup` - 首次运行 Bilibili 相关命令时,程序会自动下载 `biliup` - 后续运行会自动检查上游 release 并自动更新 diff --git a/sau_cli.py b/sau_cli.py index 4c31886..6bf18be 100644 --- a/sau_cli.py +++ b/sau_cli.py @@ -342,12 +342,12 @@ def build_parser() -> argparse.ArgumentParser: for action_name in ("login", "check"): action_parser = douyin_actions.add_parser(action_name, help=f"Douyin {action_name}") - action_parser.add_argument("--account", required=True, help="Douyin account alias") + action_parser.add_argument("--account", required=True, help="Douyin user-defined account_name") if action_name == "login": add_runtime_flags(action_parser) upload_video_parser = douyin_actions.add_parser("upload-video", help="Upload one video to Douyin") - upload_video_parser.add_argument("--account", required=True, help="Douyin account alias") + upload_video_parser.add_argument("--account", required=True, help="Douyin user-defined account_name") upload_video_parser.add_argument("--file", required=True, type=existing_file_path, help="Video file path") upload_video_parser.add_argument("--title", required=True, help="Video title") upload_video_parser.add_argument("--tags", default="", help="Comma-separated tags, such as tag1,tag2") @@ -358,7 +358,7 @@ def build_parser() -> argparse.ArgumentParser: add_runtime_flags(upload_video_parser) upload_note_parser = douyin_actions.add_parser("upload-note", help="Upload one note to Douyin") - upload_note_parser.add_argument("--account", required=True, help="Douyin account alias") + upload_note_parser.add_argument("--account", required=True, help="Douyin user-defined account_name") upload_note_parser.add_argument("--images", required=True, nargs="+", type=existing_file_path, help="Image file paths") upload_note_parser.add_argument("--note", required=True, help="Note content") upload_note_parser.add_argument("--tags", default="", help="Comma-separated tags, such as tag1,tag2") @@ -370,12 +370,12 @@ def build_parser() -> argparse.ArgumentParser: for action_name in ("login", "check"): action_parser = kuaishou_actions.add_parser(action_name, help=f"Kuaishou {action_name}") - action_parser.add_argument("--account", required=True, help="Kuaishou account alias") + action_parser.add_argument("--account", required=True, help="Kuaishou user-defined account_name") if action_name == "login": add_runtime_flags(action_parser) kuaishou_upload_video_parser = kuaishou_actions.add_parser("upload-video", help="Upload one video to Kuaishou") - kuaishou_upload_video_parser.add_argument("--account", required=True, help="Kuaishou account alias") + kuaishou_upload_video_parser.add_argument("--account", required=True, help="Kuaishou user-defined account_name") kuaishou_upload_video_parser.add_argument("--file", required=True, type=existing_file_path, help="Video file path") kuaishou_upload_video_parser.add_argument("--title", required=True, help="Video title") kuaishou_upload_video_parser.add_argument("--tags", default="", help="Comma-separated tags, such as tag1,tag2") @@ -384,7 +384,7 @@ def build_parser() -> argparse.ArgumentParser: add_runtime_flags(kuaishou_upload_video_parser) kuaishou_upload_note_parser = kuaishou_actions.add_parser("upload-note", help="Upload one note to Kuaishou") - kuaishou_upload_note_parser.add_argument("--account", required=True, help="Kuaishou account alias") + kuaishou_upload_note_parser.add_argument("--account", required=True, help="Kuaishou user-defined account_name") kuaishou_upload_note_parser.add_argument("--images", required=True, nargs="+", type=existing_file_path, help="Image file paths") kuaishou_upload_note_parser.add_argument("--note", required=True, help="Note content") kuaishou_upload_note_parser.add_argument("--tags", default="", help="Comma-separated tags, such as tag1,tag2") @@ -396,10 +396,10 @@ def build_parser() -> argparse.ArgumentParser: for action_name in ("login", "check"): action_parser = bilibili_actions.add_parser(action_name, help=f"Bilibili {action_name}") - action_parser.add_argument("--account", required=True, help="Bilibili account alias") + action_parser.add_argument("--account", required=True, help="Bilibili user-defined account_name") bilibili_upload_video_parser = bilibili_actions.add_parser("upload-video", help="Upload one video to Bilibili") - bilibili_upload_video_parser.add_argument("--account", required=True, help="Bilibili account alias") + bilibili_upload_video_parser.add_argument("--account", required=True, help="Bilibili user-defined account_name") bilibili_upload_video_parser.add_argument("--file", required=True, type=existing_file_path, help="Video file path") bilibili_upload_video_parser.add_argument("--title", required=True, help="Video title") bilibili_upload_video_parser.add_argument("--desc", required=True, help="Video description") diff --git a/skills/bilibili-upload/references/cli-contract.md b/skills/bilibili-upload/references/cli-contract.md index b60dd4a..c010571 100644 --- a/skills/bilibili-upload/references/cli-contract.md +++ b/skills/bilibili-upload/references/cli-contract.md @@ -15,6 +15,9 @@ sau bilibili login --account - 作用: - 自动准备 `biliup` - 触发 Bilibili 登录流程 +- 账号说明: + - `--account` 传的是用户自定义的 `account_name`,不是固定只能叫 `creator` + - 一个 `account_name` 对应一个账号文件,可用于多账号隔离和并发任务 - 登录方式说明: - 这个命令应该由用户自己在本地真实终端里运行 - 如果终端二维码显示不完整,可直接打开当前目录下的 `qrcode.png` 扫码 diff --git a/skills/bilibili-upload/scripts/examples/bilibili_cli_template.py b/skills/bilibili-upload/scripts/examples/bilibili_cli_template.py index fcdaf23..76d5d23 100644 --- a/skills/bilibili-upload/scripts/examples/bilibili_cli_template.py +++ b/skills/bilibili-upload/scripts/examples/bilibili_cli_template.py @@ -9,6 +9,9 @@ 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, @@ -16,7 +19,7 @@ def main() -> None: "bilibili", "upload-video", "--account", - "creator", + account, "--file", str(Path(BASE_DIR) / "videos" / "demo.mp4"), "--title", diff --git a/skills/bilibili-upload/scripts/examples/bilibili_commands.ps1 b/skills/bilibili-upload/scripts/examples/bilibili_commands.ps1 index cc6d5f2..347c6fa 100644 --- a/skills/bilibili-upload/scripts/examples/bilibili_commands.ps1 +++ b/skills/bilibili-upload/scripts/examples/bilibili_commands.ps1 @@ -1,14 +1,18 @@ # 登录 # 建议由用户自己在本地真实终端里执行。 # 如果终端二维码显示不完整,可以打开当前目录下的 qrcode.png 扫码。 -sau bilibili login --account creator +$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 creator +sau bilibili check --account $account # 上传视频 sau bilibili upload-video ` - --account creator ` + --account $account ` --file .\videos\demo.mp4 ` --title "Bilibili CLI Demo" ` --desc "Bilibili CLI Demo" ` diff --git a/skills/bilibili-upload/scripts/examples/bilibili_commands.sh b/skills/bilibili-upload/scripts/examples/bilibili_commands.sh index d6edfaa..446abe2 100644 --- a/skills/bilibili-upload/scripts/examples/bilibili_commands.sh +++ b/skills/bilibili-upload/scripts/examples/bilibili_commands.sh @@ -1,14 +1,18 @@ # login # Run this in a local interactive terminal. # If the terminal QR code is incomplete, open ./qrcode.png and scan that image. -sau bilibili login --account creator +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 creator +sau bilibili check --account "$account" # upload video sau bilibili upload-video \ - --account creator \ + --account "$account" \ --file ./videos/demo.mp4 \ --title "Bilibili CLI Demo" \ --desc "Bilibili CLI Demo" \ diff --git a/skills/douyin-upload/references/cli-contract.md b/skills/douyin-upload/references/cli-contract.md index 4cb2c0f..46bd07d 100644 --- a/skills/douyin-upload/references/cli-contract.md +++ b/skills/douyin-upload/references/cli-contract.md @@ -15,6 +15,9 @@ sau douyin login --account - 作用: - 启动抖音登录流程,为指定账号生成或刷新 cookie 文件 - 如果登录过程中生成本地二维码图片,agent 应优先直接把图片展示/发送给用户扫码,而不是只回传路径 +- 账号说明: + - `--account` 传的是用户自定义的 `account_name`,不是固定只能叫 `creator` + - 一个 `account_name` 对应一个账号文件,可用于多账号隔离和并发任务 ### 校验 cookie diff --git a/skills/douyin-upload/scripts/examples/douyin_cli_template.py b/skills/douyin-upload/scripts/examples/douyin_cli_template.py index 1fc0b53..3c23a41 100644 --- a/skills/douyin-upload/scripts/examples/douyin_cli_template.py +++ b/skills/douyin-upload/scripts/examples/douyin_cli_template.py @@ -10,7 +10,9 @@ def run_command(command: list[str]) -> None: def main() -> None: - account = "creator" + 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. commands = [ ["sau", "douyin", "login", "--account", account, "--headless"], diff --git a/skills/douyin-upload/scripts/examples/douyin_commands.ps1 b/skills/douyin-upload/scripts/examples/douyin_commands.ps1 index 5bf8e69..03743c8 100644 --- a/skills/douyin-upload/scripts/examples/douyin_commands.ps1 +++ b/skills/douyin-upload/scripts/examples/douyin_commands.ps1 @@ -1,6 +1,8 @@ # PowerShell examples for the installed sau CLI. -$account = "creator" +# account_name is user-defined. One account_name maps to one account file. +# You can prepare multiple account names and run them in parallel. +$account = "account_a" $video = "videos/demo.mp4" $thumbnail = "videos/demo.png" $noteImages = @("videos/1.png", "videos/2.png") diff --git a/skills/douyin-upload/scripts/examples/douyin_commands.sh b/skills/douyin-upload/scripts/examples/douyin_commands.sh index f3c66c3..55e01b2 100644 --- a/skills/douyin-upload/scripts/examples/douyin_commands.sh +++ b/skills/douyin-upload/scripts/examples/douyin_commands.sh @@ -2,7 +2,9 @@ set -euo pipefail -account="creator" +# account_name is user-defined. One account_name maps to one account file. +# You can prepare multiple account names and run them in parallel. +account="account_a" video="videos/demo.mp4" thumbnail="videos/demo.png" diff --git a/skills/kuaishou-upload/references/cli-contract.md b/skills/kuaishou-upload/references/cli-contract.md index 7c3da52..2370d45 100644 --- a/skills/kuaishou-upload/references/cli-contract.md +++ b/skills/kuaishou-upload/references/cli-contract.md @@ -15,6 +15,9 @@ sau kuaishou login --account - 作用: - 启动快手登录流程,为指定账号生成或刷新 cookie 文件 - 如果登录过程中生成本地二维码图片,agent 应优先直接把图片展示/发送给用户扫码,而不是只回传路径 +- 账号说明: + - `--account` 传的是用户自定义的 `account_name`,不是固定只能叫 `creator` + - 一个 `account_name` 对应一个账号文件,可用于多账号隔离和并发任务 ### 校验 cookie diff --git a/skills/kuaishou-upload/scripts/examples/kuaishou_cli_template.py b/skills/kuaishou-upload/scripts/examples/kuaishou_cli_template.py index ab6989e..0f3f08a 100644 --- a/skills/kuaishou-upload/scripts/examples/kuaishou_cli_template.py +++ b/skills/kuaishou-upload/scripts/examples/kuaishou_cli_template.py @@ -10,7 +10,9 @@ def run_command(command: list[str]) -> None: def main() -> None: - account = "creator" + 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. commands = [ ["sau", "kuaishou", "login", "--account", account], diff --git a/skills/kuaishou-upload/scripts/examples/kuaishou_commands.ps1 b/skills/kuaishou-upload/scripts/examples/kuaishou_commands.ps1 index e9fc042..a35ee7e 100644 --- a/skills/kuaishou-upload/scripts/examples/kuaishou_commands.ps1 +++ b/skills/kuaishou-upload/scripts/examples/kuaishou_commands.ps1 @@ -1,6 +1,8 @@ # PowerShell examples for the installed sau CLI. -$account = "creator" +# account_name is user-defined. One account_name maps to one account file. +# You can prepare multiple account names and run them in parallel. +$account = "account_a" $video = "videos/demo.mp4" $thumbnail = "videos/demo.png" $noteImages = @("videos/1.png", "videos/2.png", "videos/3.png") diff --git a/skills/kuaishou-upload/scripts/examples/kuaishou_commands.sh b/skills/kuaishou-upload/scripts/examples/kuaishou_commands.sh index c15ab73..eb80253 100644 --- a/skills/kuaishou-upload/scripts/examples/kuaishou_commands.sh +++ b/skills/kuaishou-upload/scripts/examples/kuaishou_commands.sh @@ -2,7 +2,9 @@ set -euo pipefail -account="creator" +# account_name is user-defined. One account_name maps to one account file. +# You can prepare multiple account names and run them in parallel. +account="account_a" video="videos/demo.mp4" thumbnail="videos/demo.png"