drama-cli
v0.1.3
Published
Drama Studio AIGC CLI for login and image/video generation
Readme
drama CLI
Drama Studio 官方 AIGC 命令行工具:登录、文生图/参考图生图、Seedance 全能参考生视频。
独立于主项目的小包(非 pnpm workspace),依赖单独安装,对主项目零侵入。
安装与构建
cd cli
pnpm install
pnpm build # 产出 dist/index.js(可执行)
pnpm link --global # 可选:全局注册 `drama` 命令开发期直接跑源码:pnpm dev -- <command>(等价于 tsx src/index.ts <command>)。
快速开始
# 1. 登录(Device Flow:自动打开浏览器,在已登录的页面里点 Approve)
drama login # 默认连线上 https://www.kvread.com
drama login --base_url http://localhost:3000 # 本地联调
# 2. 文生图 / 参考图生图(提交后打印 task_id 即退出)
drama generate_image --prompt "a cat portrait" --ratio 1:1
drama generate_image --prompt "same cat, cyberpunk style" --ref ./cat.png
# 3. Seedance 全能参考生视频(文生视频 / 图片视频音频参考)
drama generate_video --prompt "the cat walks in the rain" --duration 8
drama generate_video --prompt "animate this" --ref ./cat.png --ref ./bgm.mp3 --ratio 9:16
# 4. 查询结果 / 下载产物(唯一取结果入口)
drama query_result --task_id <id>
drama query_result --task_id <id> --wait --download_path ./out
# 5. 退出登录
drama logout命令
| 命令 | 说明 |
| --- | --- |
| login [--base_url <url>] [--headless] | OAuth Device Flow 登录,凭证存 ~/.drama-cli/credentials.json |
| logout | 清除本地登录态 |
| generate_image | 提交后打印 task_id 即退出;--prompt(必填)--ref <file_or_url...> --model(默认 seedream-5-lite)--ratio --resolution |
| generate_video | 提交后打印 task_id 即退出;--prompt(必填)--ref <file_or_url...> --model seedance\|seedance-fast --ratio --resolution --duration 4\|8\|12(强制生成音频) |
| query_result | 查结果的唯一入口;--task_id <id>(必填)--wait 轮询到终态 --download_path <dir> 完成时下载产物到该目录 |
服务地址优先级:--base_url > 环境变量 DRAMA_BASE_URL > 登录时保存的地址 > 线上 https://www.kvread.com。
登录原理
- CLI 调
POST /api/cli/device-code拿device_code/user_code,打印并自动打开verification_uri。 - 用户在已登录的浏览器打开
/cli-auth?user_code=...页面点击 Approve,服务端把该用户 token 绑定到设备码(不依赖 Java 后端可达)。 - CLI 轮询
POST /api/cli/token兑换 token,落盘本地后所有请求带Authorization头。
生成链路
与 web 生成页完全同一条链路,任务会进入 /generate/image、/generate/video 的历史列表:
- 参考素材(本地文件或 URL)经 Java
GET /server/oss/getSignatureByUser签名后 PostObject 直传用户 OSS 空间,content 里传ossPath对象键。 POST /server/ai-gen/submit提交任务(taskType 1=视频 2=图片),拿taskId。POST /server/ai-gen/status轮询到终态(1=pending 2=running 3=completed 4=failed 5=timeout),从result.imageList/result.videoList取产物 URL 下载。
