diff --git a/docs/superpowers/specs/2026-03-25-browser-cli-unification-design.md b/docs/superpowers/specs/2026-03-25-browser-cli-unification-design.md index 3a46c34..e6cc157 100644 --- a/docs/superpowers/specs/2026-03-25-browser-cli-unification-design.md +++ b/docs/superpowers/specs/2026-03-25-browser-cli-unification-design.md @@ -15,7 +15,7 @@ 这次设计同时解决两个现实问题: 1. 小红书虽然已经有可用的浏览器 uploader,但还没有接入 `sau` CLI,也没有对应 skill。 -2. 抖音、快手当前的 CLI 契约还带着历史字段,比如图文使用 `--note`,视频没有单独 `--desc`,这和当前小红书 uploader 已经支持的 `title + desc + tags` 形态不一致。 +2. 抖音、快手当前的 CLI 契约还带着历史字段,比如视频没有单独 `--desc`,而图文正文命名和视频描述语义混杂,不利于三家浏览器平台形成稳定统一的主线接口。 这次统一后的对外入口固定为: @@ -23,7 +23,10 @@ - `sau kuaishou ...` - `sau xiaohongshu ...` -并让三家浏览器平台的视频、图文上传都遵循同一套元数据参数模型。 +并让三家浏览器平台的视频、图文上传都遵循统一的主线参数模型: + +- 视频:`title + desc + tags` +- 图文:`title + note + tags` ## 目标 @@ -70,7 +73,10 @@ - 快手图文 CLI:`--note`、`--tags` - 小红书还没有 CLI/skill 接口 -也就是说,当前三家浏览器平台的主线能力并不统一,特别是“图文正文”和“视频描述”字段暴露方式不一致。 +也就是说,当前三家浏览器平台的主线能力并不统一,尤其是: + +- 视频描述没有统一暴露为 `desc` +- 图文正文是否应该沿用 `note` 语义没有统一 ## 统一后的 CLI 设计 @@ -129,7 +135,7 @@ sau upload-note \ --account \ --images [image-2 ...] \ --title "" \ - [--desc "<description>"] \ + [--note "<content>"] \ [--tags tag1,tag2] \ [--schedule "YYYY-MM-DD HH:MM"] ``` @@ -138,14 +144,17 @@ sau <platform> upload-note \ - `--images` 必填 - `--title` 必填 -- `--desc` 选填 +- `--note` 选填 - `--tags` 选填 - `--schedule` 选填 明确决定: -- 公开 CLI 契约中不再保留 `--note` -- 文档、skill、示例统一使用 `--title + --desc + --tags` +- 图文主线正文统一叫 `note` +- 视频主线描述统一叫 `desc` +- 文档、skill、示例统一使用: + - 视频:`--title + --desc + --tags` + - 图文:`--title + --note + --tags` ## 数据模型设计 @@ -183,14 +192,14 @@ sau <platform> upload-note \ - `account_name` - `image_files` - `title` -- `description` +- `note` - `tags` - `publish_date` - `publish_strategy` - `debug` - `headless` -不再让图文 request 只存一个模糊的 `note` 字段。 +这里明确保留 `note`,因为它更符合图文正文语义,不应强行复用视频里的 `description / desc` 命名。 ## 与现有 uploader 的映射 @@ -198,27 +207,25 @@ sau <platform> upload-note \ - 视频上传继续复用 `DouYinVideo` - 给抖音视频补齐 `desc` 输入映射 -- 图文上传改为显式接收 `title + desc + tags` -- 原来的 `note` 语义拆开: - - `title` 用于标题 - - `desc` 用于正文 +- 图文上传改为显式接收 `title + note + tags` +- `note` 在 CLI 层映射到抖音图文正文输入区 ### 快手 - 视频上传继续复用 `KSVideo` - 给快手视频补齐 `desc` 输入映射 -- 图文上传改为显式接收 `title + desc + tags` +- 图文上传改为显式接收 `title + note + tags` ### 小红书 - 登录、校验直接接 `xiaohongshu_setup` / `cookie_auth` - 视频上传复用 `XiaoHongShuVideo` - 图文上传复用 `XiaoHongShuNote` -- 因为小红书 uploader 已经支持 `title + desc + tags`,CLI 只需要做稳定映射 +- 因为小红书 uploader 已经支持 `title + desc + tags`,CLI 层把 `note` 稳定映射到图文正文即可 ## 兼容与迁移策略 -这次采用“直接统一,不保留公开旧契约”的策略。 +这次采用“直接统一,不保留旧的模糊公开契约”的策略。 具体表现: @@ -233,10 +240,13 @@ sau <platform> upload-note \ 都会在同一轮里切换到新契约,避免出现: -- 一部分文档写 `--note` -- 一部分文档写 `--title --desc` +- 一部分文档把图文正文写成 `--note` +- 一部分文档把图文正文写成 `--desc` -这样做的代价是旧示例命令会失效,但换来的是主线契约彻底统一。 +这样做的代价是旧示例命令会失效,但换来的是主线契约彻底统一: + +- 视频永远是 `desc` +- 图文永远是 `note` ## Skill 设计 @@ -277,10 +287,14 @@ skill 原则继续保持: - 三家浏览器平台都已经接入 CLI - 三家浏览器平台都已经接入 skill -- 图文和视频上传都遵循统一字段: +- 视频上传统一字段: - `title` - `desc` - `tags` +- 图文上传统一字段: + - `title` + - `note` + - `tags` - `account_name` 是用户自定义账号名,不是固定只能叫 `creator` - 一个 `account_name` 对应一个账号文件,可多账号隔离并发 @@ -337,7 +351,7 @@ README 和 docs 中要明确说明: - parser 能识别 `xiaohongshu` - 三个平台新契约能正确解析: - `upload-video --title --desc --tags` - - `upload-note --images --title --desc --tags` + - `upload-note --images --title --note --tags` - dispatch 能正确把参数转成对应 request - 小红书 `login/check/upload-video/upload-note` 分支能被正确路由 @@ -386,9 +400,8 @@ README 和 docs 中要明确说明: - `upload-video` - `upload-note` - 三家浏览器平台统一成同一套主线元数据模型: - - `title` - - `desc` - - `tags` + - 视频:`title + desc + tags` + - 图文:`title + note + tags` - 小红书补齐 CLI 与 skill -- 抖音、快手补齐 `desc` 能力,移除公开的 `--note` 主契约 +- 抖音、快手补齐 `desc` 能力,并统一图文正文字段为 `note` - 实现保持轻量,不做过度封装