doubao-skills:通过Chrome CDP让AI自动调用豆包图片视频生成能力安装与使用指南
豆包的文生图和文生视频能力非常强大,但官方并没有开放公共API。如果你想在自己的AI Agent或自动化工作流中调用豆包的生成能力,doubao-skills 就是你需要的工具——它通过Playwright连接已登录的Chrome浏览器,以CDP协议操控豆包网页端,实现图片和视频的自动化生成,一次登录永久复用。
| 项目名称 | doubao-skills |
|---|---|
| 仓库地址 | https://github.com/ai-fzx/doubao-skills |
| 官方网站 | 豆包官网(使用对象) |
| 最新更新时间 | 2026-04-15 |
| 项目定位 | 通过Playwright+Chrome CDP桥接豆包网页端,实现图片/视频生成自动化调用 |
| 开源协议 | MIT |
项目背景
随着AI大模型和Agent技术的发展,越来越多的开发者希望将各种AI能力整合到自己的工作流中。豆包作为字节跳动推出的AI助手,其内置的Seedream文生图模型和Seedance文生视频模型在国内属于第一梯队,生成质量高、速度快、免费额度充足。然而,豆包官方目前只在网页端和App端开放了这些功能,并没有提供对应的API接口,这使得开发者难以将豆包的生成能力集成到自动化流程中。
doubao-skills 由开发者"风之馨"创建,它巧妙地利用了Chrome的远程调试协议(CDP),通过Playwright框架连接到一个已经登录豆包的Chrome浏览器实例。这样一来,脚本就可以模拟用户操作,在豆包网页中自动输入提示词、等待生成完成、然后提取生成结果的URL。整个过程对用户透明,只需要在首次使用时登录一次豆包账号,之后登录状态会持久化保存。
这个项目的定位是一个"中间人"桥接程序——它本身不生成图片或视频,而是作为下游AI Agent与上游豆包网页之间的桥梁。输出格式为纯JSON,非常方便其他程序解析和集成。无论是想批量生成图片素材,还是在自己的AI工作流中加入豆包的视频生成能力,doubao-skills都能提供稳定可靠的自动化通道。
核心特性
- 🎨 图片生成自动化 — 支持文生图,可指定多种比例(1:1、16:9、9:16、4:3、3:4)和数量(1-4张),返回图片URL列表。
- 🎬 视频生成自动化 — 支持文生视频,可选横屏16:9或竖屏9:16,时长5秒或10秒,自动轮询等待生成完成。
- 🔐 一次登录永久复用 — 利用Chrome的用户数据目录持久化登录状态,登录一次后后续无需重复操作。
- 📦 纯JSON输出 — 所有结果通过stdout以JSON格式输出,方便AI Agent和其他程序直接解析集成。
- 🔧 自动重试机制 — 生成失败时自动重试,默认最多3次,提高自动化任务的成功率。
- ⏱️ 自动等待轮询 — 视频生成通常需要1-5分钟,脚本会自动轮询直到生成完成,无需人工干预。
- 🌐 跨平台支持 — Windows、macOS、Linux全平台通用,只要能运行Chrome和Node.js即可。
- 🩺 环境自检脚本 — 内置 ensure_chrome.js 脚本,一键检查Chrome连接和豆包登录状态。
环境要求
| 项目 | 要求 |
|---|---|
| Node.js | ≥ 18.0.0(建议LTS版本) |
| Google Chrome | 最新稳定版,必须安装在本地 |
| 操作系统 | Windows 10+ / macOS 10.15+ / Linux(Ubuntu 20.04+推荐) |
| 豆包账号 | 已注册的豆包账号(doubao.com) |
| 网络 | 能够正常访问 doubao.com |
详细部署步骤
第一步:安装 Node.js
如果你还没有安装Node.js 18或更高版本,请先安装:
# Windows(使用winget)
winget install OpenJS.NodeJS.LTS
# macOS(使用Homebrew)
brew install node@18
# Ubuntu/Debian
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
sudo apt install -y nodejs
# 验证安装
node --version
# 应输出 v18.x.x 或更高版本第二步:下载项目代码
# 克隆仓库
git clone https://github.com/ai-fzx/doubao-skills.git
cd doubao-skills/scripts
# 安装npm依赖
npm install依赖主要是Playwright,用于控制浏览器。安装过程会自动下载所需的浏览器驱动。
第三步:以调试模式启动Chrome
这是最关键的一步——Chrome必须以远程调试模式启动,开放9222端口,脚本才能通过CDP连接。
Windows(PowerShell):
Start-Process -FilePath "C:\Program Files\Google\Chrome\Application\chrome.exe" `
-ArgumentList "--remote-debugging-port=9222", `
"--user-data-dir=C:\Users\$env:USERNAME\AppData\Local\Google\Chrome\User Data", `
"--profile-directory=Default" `
-PassThru -WindowStyle NormalmacOS(Terminal):
"/Applications/Google Chrome.app/Contents/MacOS/Google Chrome" \
--remote-debugging-port=9222 \
--user-data-dir="$HOME/.config/google-chrome-doubao" \
--profile-directory=Default &Linux:
google-chrome \
--remote-debugging-port=9222 \
--user-data-dir="$HOME/.config/google-chrome-doubao" \
--profile-directory=Default &参数说明:
--remote-debugging-port=9222:开启CDP调试端口,默认9222--user-data-dir:指定Chrome用户数据目录,用于持久化登录状态--profile-directory=Default:使用默认配置文件
注意:建议使用独立的user-data-dir,避免与日常使用的Chrome配置冲突。
第四步:登录豆包账号
在刚刚打开的Chrome窗口中,访问 doubao.com,登录你的豆包账号。
登录一次后,由于使用了自定义的user-data-dir,登录状态会被持久化保存,后续使用无需重复登录。
第五步:验证环境配置
cd doubao-skills/scripts
node ensure_chrome.js如果看到以下输出,说明环境配置成功:
✅ Chrome连接成功
✅ 豆包已登录,一切就绪!如果提示 NOT_LOGGED_IN,请回到Chrome窗口确认豆包是否已登录。如果提示 CDP connection failed,请检查Chrome是否以调试模式启动,9222端口是否被占用。
常见坑与解决办法
问题1:提示CDP connection failed
Chrome没有以调试模式运行。请完全关闭所有Chrome窗口,然后按照第三步的命令重新启动。注意必须先完全退出Chrome(包括后台进程),再用调试模式启动。
问题2:提示NOT_LOGGED_IN
Chrome中没有登录豆包。请在调试模式打开的Chrome窗口中手动访问doubao.com并登录,登录成功后重新运行验证脚本。
问题3:9222端口被占用
如果9222端口已被其他程序占用,可以换用其他端口(如9223):
# 启动Chrome时使用其他端口
--remote-debugging-port=9223
# 然后设置环境变量
export DOUBAO_CDP_URL=http://127.0.0.1:9223问题4:图片或视频URL为空
这通常是因为豆包网页结构发生了变化,导致页面选择器(selector)失效。可以尝试刷新豆包页面后重试,或到GitHub Issues反馈问题,等待作者更新选择器。
使用方法示例
生成图片
# 基础用法 - 生成1张1:1比例的图片
node scripts/image.js "一只在竹林里喝茶的熊猫,水彩风格"
# 指定16:9横屏比例
node scripts/image.js "赛博朋克城市夜景,霓虹灯光,电影感" --ratio=16:9
# 一次生成4张图片(最多4张)
node scripts/image.js "古风仕女,工笔画风格" --count=4
# 竖屏9:16 + 4张(适合手机壁纸)
node scripts/image.js "森林精灵,奇幻风格" --ratio=9:16 --count=4输出示例(JSON格式):
{
"success": true,
"prompt": "一只在竹林里喝茶的熊猫,水彩风格",
"options": { "ratio": "1:1", "count": 1 },
"imageUrls": [
"https://p9-flow-imagex-sign.byteimg.com/xxxxx~tplv-obj.image"
],
"imageCount": 1,
"timestamp": "2026-03-27T13:45:00.000Z",
"meta": { "generationDone": true, "doneReason": "stable", "attempt": 1 }
}生成视频
# 基础用法(默认16:9横屏,5秒时长)
node scripts/video.js "一只熊猫在竹林中漫步,镜头缓慢推进,治愈风格"
# 竖屏短视频(抖音/小红书格式)
node scripts/video.js "都市女孩走在街头,傍晚金光,慢动作" --ratio=9:16
# 指定10秒时长
node scripts/video.js "星空延时摄影,银河流动,壮美" --duration=10
# 完整参数 - 横屏16:9 + 5秒
node scripts/video.js "赛博朋克城市雨夜,飞行汽车穿梭" --ratio=16:9 --duration=5输出示例:
{
"success": true,
"prompt": "一只熊猫在竹林中漫步",
"options": { "ratio": "16:9", "duration": 5 },
"videoUrl": "https://v3-web.douyinvod.com/xxxxx.mp4",
"thumbnailUrl": "https://p9-flow-imagex-sign.byteimg.com/xxxxx.jpg",
"downloadUrl": "https://xxxxx",
"timestamp": "2026-03-27T13:50:00.000Z",
"meta": { "generationDone": true, "doneReason": "stable", "attempt": 1 }
}注意:视频生成通常需要1-5分钟,请耐心等待。脚本会自动轮询直到完成。
参数速查表
| 脚本 | 参数 | 默认值 | 可选值 |
|---|---|---|---|
| image.js | prompt(位置参数) | 必填 | 任意描述文本 |
| --ratio | 1:1 | 1:1 / 16:9 / 9:16 / 4:3 / 3:4 | |
| --count | 1 | 1 / 2 / 3 / 4 | |
| video.js | prompt(位置参数) | 必填 | 任意描述文本 |
| --ratio | 16:9 | 16:9 / 9:16 / 1:1 | |
| --duration | 5 | 5 / 10(秒) |
常见问题FAQ
Q:为什么要用Chrome CDP而不是直接调用豆包API?
A:豆包图片和视频生成功能目前没有开放公共API。通过CDP操控已登录的浏览器是目前最稳定、最可靠的自动化方案,不需要申请API Key,也不产生额外费用。
Q:视频生成需要多长时间?
A:通常1-5分钟,取决于豆包服务器的负载情况。脚本默认最多等待6分钟,如果超时会返回错误。
Q:生成的图片URL有有效期吗?
A:有的。豆包返回的图片URL通常是带签名的CDN临时链接,有过期时间。建议生成后尽快下载保存到本地。
Q:支持图生图或参考图生成吗?
A:当前版本只支持文生图和文生视频,图生图功能预计在后续版本中支持。
Q:可以批量生成多条提示词吗?
A:目前不支持批量模式,需要逐条调用。每次调用会新建一个对话,互不干扰。
跳转链接
- 🔥 GitHub仓库:https://github.com/ai-fzx/doubao-skills
- 📖 项目文档:官方README
- 🐛 问题反馈:GitHub Issues
- 🌐 豆包官网:https://www.doubao.com
- 📚 Playwright文档:https://playwright.dev