# 豆包 **Repository Path**: zsping1989/doubao ## Basic Information - **Project Name**: 豆包 - **Description**: 豆包批量写作,用于标书方案写作 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-03-27 - **Last Updated**: 2026-03-27 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 豆包批量写作助手(Chrome Extension) 一个基于 Manifest V3 的 Chrome 扩展:在豆包(https://www.doubao.com/)中批量执行“帮我写作”,支持提示词模板、批量内容、参考附件,并自动汇总生成 `.docx` 下载。 ## 功能概览 - 批量写作:批量内容每行一条,逐条新对话执行 - 模板占位符:模板中使用 `{{内容}}` 替换为当前行内容 - 参考附件:可在第一轮对话上传参考资料,后续轮次自动提示“参考资料请使用第一轮对话中上传的附件资料内容” - 登录/验证码处理:遇到登录或验证码时自动暂停等待用户处理,处理完成后自动继续 - 进度与状态:显示 `1/总数` 这种“当前处理条目”进度,并有上传附件 loading 提示 - 自动下载 `.docx`:全部任务完成后自动生成并下载(不弹“另存为”确认) - 自动关闭豆包页签:完成后延迟 5 秒关闭;用户点“停止”时延迟 500ms 关闭 ## 目录结构 - [extension/](extension) - [manifest.json](extension/manifest.json):扩展清单(MV3) - [popup.html](extension/popup.html):插件弹窗 UI - [popup.css](extension/popup.css):弹窗样式(含主题变量) - [popup.js](extension/popup.js):弹窗逻辑(草稿/状态/校验/禁用输入等) - [content_script.js](extension/content_script.js):豆包页面自动化逻辑(点击、粘贴、上传、等待完成、提取内容) - [service_worker.js](extension/service_worker.js):后台服务(任务调度、下载 docx、页签管理) - [dom/](dom):页面 DOM 样例,用于更新选择器与自动化逻辑 ## 安装与使用 ### 安装(加载未打包扩展) 1. 打开 `chrome://extensions/` 2. 开启右上角「开发者模式」 3. 点击「加载已解压的扩展程序」 4. 选择本项目目录下的 [extension/](extension) 文件夹 ### 使用流程 1. 打开扩展弹窗 2. 填写: - 批量内容(必填,每行一条) - 提示词模板(可选,支持 `{{内容}}`) - 参考附件(可选) 3. 点击「执行」 4. 扩展会自动打开/复用豆包页面并执行: - 新对话 → 帮我写作 →(如有附件)参考资料 → 上传文件 → 发送提示词 → 等待写作完成 5. 全部完成后自动生成 `.docx` 并下载 ## 运行时行为(重要) ### 表单草稿 - 关闭/重开弹窗会自动还原「批量内容 / 模板 / 附件信息(文件名)」。 - 受浏览器限制,无法把文件真实回填到 ``,但扩展会保存附件内容并在执行时继续使用。 - 仅在任务全部完成后会清理草稿(模板/批量内容/附件)。 ### 执行中禁用输入 任务状态为 running 时,会禁用: - 批量内容输入框 - 模板输入框 - 附件选择 input - 清除附件按钮 ### 附件上传策略 - 仅在第 1 条任务上传附件 - 从第 2 条任务开始,提示词末尾自动追加: ``` **要求** 参考资料请使用第一轮对话中上传的附件资料内容 ``` ### 登录/验证码 当页面检测到登录或验证码弹窗时: - 状态会变为等待登录/等待验证码 - 扩展暂停执行,等待你在豆包页面完成登录/验证 - 完成后自动继续执行,无需在插件里点“继续” ### 停止行为 用户点「停止」时: - 若豆包还在生成中,会自动点击页面的“停止生成”按钮 - 删除本地存储里的 `job` key - 500ms 后关闭豆包 tab - 停止后不会自动下载 `.docx` ## 下载 `.docx` ### 文件名规则 自动下载生成的 `.docx` 文件名格式: `自动完成方案/YYYY年MM月DD日HH时mm分ss秒.docx` 如遇到浏览器/系统对文件名字符的限制,会进行清洗与降级;弹窗状态里会显示实际保存的完整路径(`下载:...`),用于排查文件名是否被浏览器回退。 ### 格式与内容来源 - `.docx` 内容来自豆包“完成页面”的正文区域(与“复制”按钮对应的内容一致) - 会过滤掉类似 `评论 (0)` 的侧栏文字 - 支持基础结构化样式:H1/H2/H3 标题与正文段落(按豆包 docx 预览 DOM 解析) ## 权限说明 见 [manifest.json](extension/manifest.json): - `storage`:保存草稿/任务状态/结果 - `tabs`:创建/切换/关闭豆包页签 - `downloads`:生成并下载 `.docx` - `scripting`:在 MAIN world 执行粘贴注入(绕过豆包 CSP 限制) - `host_permissions: https://www.doubao.com/*`:仅在豆包域名下注入/运行内容脚本 ## 常见问题 ### 1)为什么文件名还是“下载.docx”? 通常与以下因素有关: - 浏览器“下载前询问保存位置”等全局设置影响 - 文件名包含系统不允许字符导致被回退 - 浏览器策略或扩展未刷新导致 service worker 仍是旧版本 建议先在弹窗状态中查看 `下载:...` 的实际保存路径,用于确认 filename 是否生效。 ### 2)豆包页面 DOM 变化导致点不到按钮/找不到输入框 豆包前端更新频繁,自动化依赖选择器。项目中保存了多份 DOM 样例用于快速适配: - [dom/writing.html](dom/writing.html) - [dom/select_file.html](dom/select_file.html) - [dom/complete.html](dom/complete.html) - [dom/iframe.html](dom/iframe.html) ## 开发与调试 - 修改代码后:到 `chrome://extensions/` 刷新扩展(MV3 的 service worker 需要重载) - 调试 content script:在豆包页面打开 DevTools Console 查看日志输出 - 调试下载:弹窗状态会显示 `下载:...`(实际保存路径)以及 `错误:...`(如下载失败)