豆包(Doubao)AI 助手 OpenCLI 技能包。通过 opencli browser 桥接复用 Edge 浏览器登录态, 提供豆包对话、AI 播客生成(文字/网页链接/PDF 三种输入方式,自动裁剪广告)、 PPT 生成、图像生成(文生图)、会议摘要、批量提问、对话备份等功能。 使用场景:(1) 需要通过...
通过 opencli 浏览器桥接复用 Edge 中已登录的豆包会话,提供 CLI 自动化操作。
功能脚本说明✅ 提问doubao_toolkit.ps1 ask向豆包提问✅ 对话doubao_toolkit.ps1 chat交互式对话✅ 图像生成doubao_image_gen.ps1文生图 + 自动下载✅ AI 播客doubao_podcast_gen.ps1播客生成 + 自动下载🆕 PPT 生成doubao_ppt_gen.ps1PPT 生成 + 自动下载⚠️ 会议doubao_toolkit.ps1 meetings依赖 history,新版UI可能不可用⚠️ 备份doubao_toolkit.ps1 backup依赖 history,新版UI可能不可用✅ 批量doubao_toolkit.ps1 batch批量提问
npm install -g @jackwener/opencli)⚠️ 用户默认浏览器是 Microsoft Edge(非 Chrome),记录在
TOOLS.md。
doubao_toolkit.ps1 — 工具箱#多功能 CLI 工具箱,包装 opencli doubao 命令:
powershell
# 检查连接状态
.\scripts\doubao_toolkit.ps1 status
# 向豆包提问
.\scripts\doubao_toolkit.ps1 ask "你的问题"
# 交互式对话
.\scripts\doubao_toolkit.ps1 chat
# 图像生成(自动下载到 output/doubao_images/)
.\scripts\doubao_toolkit.ps1 image "一只橘猫,水彩风格"
# 会议相关
.\scripts\doubao_toolkit.ps1 meetings # 查看会议列表
.\scripts\doubao_toolkit.ps1 summary <id> # 获取会议摘要
# 备份 / 批量
.\scripts\doubao_toolkit.ps1 backup # 备份所有对话
.\scripts\doubao_toolkit.ps1 batch <file.txt> # 批量提问
注意: history 命令在豆包新版 UI 下可能不可用,会影响 meetings、 summary、 backup 等依赖 history 的功能。
doubao_image_gen.ps1 — 图像生成#独立的图像生成脚本,通过 opencli browser 自动化豆包 AI 创作页面的文生图流程:
powershell
.\scripts\doubao_image_gen.ps1 "提示词" # 仅生成,显示链接
.\scripts\doubao_image_gen.ps1 "提示词" -download # 生成并下载到本地
工作流程:
https://www.doubao.com/chat/create-image#flow-end-msg-send 发送按钮Invoke-WebRequest 下载到 output/doubao_images/输出文件:
output/doubao_images/doubao_YYYYMMDD_HHmmss_N.jpg — 下载的图片output/doubao_images/gen_log_YYYYMMDD_HHmmss.md — 生成记录(含图片链接)doubao_podcast_gen.ps1 — AI 播客生成#独立的 AI 播客生成脚本,通过 opencli browser 自动化豆包 AI 播客的生成和下载, 自动裁剪开头广告:
powershell
# 📝 文字模式(主题/文章/大纲/脚本)
.\scripts\doubao_podcast_gen.ps1 -Text "介绍人工智能的发展历史"
.\scripts\doubao_podcast_gen.ps1 -Text "IaaS PaaS SaaS 三种云计算服务模式的区别和应用场景"
# 🔗 网页模式(输入链接,豆包自动抓取)
.\scripts\doubao_podcast_gen.ps1 -Url "https://example.com/article"
# 📄 文件模式(上传 PDF,仅支持 .pdf)
.\scripts\doubao_podcast_gen.ps1 -File "C:\docs\我的文章.pdf"
# 自定义参数
.\scripts\doubao_podcast_gen.ps1 -Text "你的主题" -WaitPlay 30 -TrimSeconds 0
输入方式(三选一):
-Text:文字输入,支持主题、完整文章、大纲、脚本-Url:网页链接输入,豆包自动抓取网页内容生成播客-File:PDF 文件上传(仅 .pdf),豆包根据文档内容生成播客工作流程:
https://www.doubao.com/chat#flow-end-msg-sendoutput/doubao_podcasts/重要发现:
downloadBtn-Iyn2FU,通过 span[role=img] 的父 div[tabindex] 定位AI新闻播客_20260511_173500.wav),避免覆盖旧文件output/doubao_podcasts/云计算服务模式的差异与场景.wav(28MB,9分51秒)自动裁剪广告:
-TrimSeconds 参数自定义裁剪秒数,设为 0 则跳过裁剪输出文件:
output/doubao_podcasts/<播客标题>.wav — 下载的播客音频文件(已自动裁剪开头广告)doubao_ppt_gen.ps1 — PPT 生成(实测验证 ✅)#AI PPT 生成脚本,通过 opencli browser 自动化豆包 PPT 生成与下载流程。
powershell
# 按主题生成(推荐)
.\scripts\doubao_ppt_gen.ps1 -Topic "人工智能发展史"
# 按大纲生成
.\scripts\doubao_ppt_gen.ps1 -Outline "1. 引言`n2. 技术原理`n3. 应用场景`n4. 未来展望"
# 按草稿文档生成
.\scripts\doubao_ppt_gen.ps1 -DraftFile "C:\docs\my_draft.md"
# 通过工具箱
.\scripts\doubao_toolkit.ps1 ppt "人工智能发展史"
实测数据(2026-05-11):
PPT 工作流程(实测验证):
打开 https://www.doubao.com/chat
不要点击 PPT 快捷按钮 — 直接在普通聊天模式的 textarea 中输入提示词
点击发送按钮 #flow-end-msg-send( 只在普通聊天模式存在,PPT 快捷模式无发送按钮)
5 阶段进度监控(每 15 秒检查一次):
生成完成后, 点击 PPT 卡片(封面图或标题区域)→ 打开左右分栏编辑器
点击工具栏"下载"按钮 → 弹出菜单(PPTX / PDF)
选择 PPTX → 文件自动保存到系统 Downloads 目录
搬运到 output/doubao_ppt/ 目录
关键发现(实测):
#flow-end-msg-send(普通聊天模式)/partner/ccm-slides-v3/),但 下载按钮在主页面的 DOM 中,不在 iframe 内data-dbx-name="button",文本"下载", aria-haspopup="menu"role="menuitem",文本"PPTX"Downloads 目录参数说明:
参数说明默认值-TopicPPT 主题—-OutlinePPT 大纲文本—-DraftFile草稿文档路径(.txt/.md)—-WaitTimeout总等待超时(秒)1200(20 分钟)-MonitorInterval监控间隔(秒)15-OutputDir输出目录output/doubao_ppt/
播客脚本 doubao_podcast_gen.ps1 参数说明:
参数说明默认值-Text播客文字内容(主题/文章/大纲/脚本),与 -Url、 -File 三选一—-Url网页链接,豆包自动抓取生成播客,与 -Text、 -File 三选一—-FilePDF 文件路径(仅 .pdf),与 -Text、 -Url 三选一—-OutputDir输出目录output/doubao_podcasts/``-WaitPlay播放等待秒数(下载按钮需播放后才可用)40-TrimSeconds裁剪音频开头N秒(去广告,设为0则不裁剪)4
阶段日志示例:
text
[11:15:30] [PHASE] [1/5] 打开豆包聊天页...
[11:15:35] [PHASE] [2/5] 触发 PPT 生成...
[11:15:40] [PHASE] [3/5] 监控生成进度...
[11:15:55] ┌─ 进入阶段1: 思考状态 + 素材收集 [11:15:55]
[11:17:30] └─ 阶段1完成,耗时 95s
[11:17:30] ┌─ 进入阶段2: 思考优化 + 补充收集 [11:17:30]
[11:18:45] └─ 阶段2完成,耗时 75s
[11:18:45] ┌─ 进入阶段3: 生成原创图片 [11:18:45]
[11:22:10] └─ 阶段3完成,耗时 205s
[11:22:10] ┌─ 进入阶段4: PPT合成与渲染 [11:22:10]
[11:28:30] ✅ PPT 生成完成!总耗时 765s
[11:28:33] [4/5] 下载 PPT...
[11:28:36] -> 点击 PPT 标题打开编辑器...
[11:28:41] -> 找下载按钮...
[11:28:41] -> 点击下载按钮...
[11:28:43] -> 选择 PPTX 格式...
[11:28:46] ✅ 下载成功: C:\Users\xxx\Downloads\xxx.pptx
[11:28:46] [5/5] 搬运到输出目录...
[11:28:46] ✅ 已搬运到: output/doubao_ppt/ppt_20260511_112846.pptx
输出文件:
output/doubao_ppt/ppt_YYYYMMDD_HHmmss.pptx — 下载的 PPT 文件output/doubao_ppt/logs/ppt_log_YYYYMMDD_HHmmss.md — 详细阶段日志history 命令不可用:豆包新版 UI 下 opencli doubao history 返回空,导致 meetings、 summary、 backup 等功能受限。#flow-end-msg-send,在页面重新加载后输入框 ref 号会变化,脚本使用正则动态匹配。ask 命令的 JSON 输出: opencli doubao ask -f json 的输出可能包含更新提示等非 JSON 文本,已使用 2>$null 过滤。完整经验文档见
knowledge/doubao-podcast-bug-fix.md
opencli browser 的 ref 号是 动态分配 的,每次页面加载都不同。永远用 class/文本/位置定位元素,而非硬编码 ref。
clicked: true 不代表操作生效了。对于复杂 UI(如下载按钮),用 JS 原生事件更可靠:
javascript
el.dispatchEvent(new MouseEvent('mousedown', {bubbles: true}));
el.dispatchEvent(new MouseEvent('mouseup', {bubbles: true}));
el.dispatchEvent(new MouseEvent('click', {bubbles: true}));
el.dispatchEvent(new PointerEvent('pointerdown', {bubbles: true}));
避免同名文件覆盖导致内容混淆。格式: AI新闻播客_20260511_173500.wav
仅靠文件名不够,要同时检查大小和修改时间。记录下载前的快照,对比真正的变化。
opencli browser eval 直接操作真实 DOM,不受 ref 号变化影响。
豆包页面在窗口不够大时部分按钮(如 AI 播客)可能不显示。用 JS 最大化:
javascript
window.moveTo(0,0); window.resizeTo(window.screen.availWidth, window.screen.availHeight);