豆包图片/视频一键无水印下载

Created at 11 hours ago
Updated at 11 hours ago
豆包图片/视频一键无水印下载(按钮右上角版)
Total Installs
43
Today's New
+30
User Rating
- / 5.0 (0)
Current Version
2.3
Script Details
Applicable Sites

豆包图片/视频一键无水印下载

原脚本地址:https://scriptcat.org/zh-CN/script-show-page/6329

📖 项目简介

这是一个针对豆包(Doubao)平台的Tampermonkey用户脚本,主要功能是一键下载无水印的图片和视频。当你在豆包中生成图片或视频后,脚本会在媒体卡片右上角自动添加下载按钮,点击即可获取无水印原文件。

✨ 主要功能

功能模块 说明
图片下载 识别豆包生成的图片,提取无水印原图URL,在图片卡片右上角添加“原图”下载按钮
视频下载 识别视频消息,通过豆包内部API获取无水印视频链接,并提供“视频”下载按钮
资源发现面板 悬浮面板显示已发现的图片/视频数量,支持拖拽、最小化、关闭
网络嗅探 自动拦截XHR/Fetch请求,从SSE流和JSON响应中提取媒体信息

🎯 使用场景

  • 使用豆包AI生成图片后,需要保存无水印原图
  • 使用豆包生成视频后,想要下载不带水印的版本
  • 需要批量管理豆包生成的媒体资源

🛠️ 技术实现

核心工作流程

flowchart TD
    A[打开豆包聊天页] --> B[拦截XHR/Fetch请求]
    B --> C[提取messages/patch_op数据]
    C --> D[解析出图片/视频URL]
    D --> E[存入缓存Map]
    E --> F[DOM观察器扫描页面]
    F --> G[为媒体卡片添加下载按钮]
    G --> H[点击按钮获取无水印链接]
    H --> I[开始下载]

关键技术点

  1. 网络拦截

    • 拦截 chain/single 接口的XHR请求
    • 拦截 chat/completion 接口的Fetch请求
    • 处理SSE(Server-Sent Events)流式响应,实时解析 patch_op 中的媒体数据
  2. 视频无水印获取(三重后备策略)

    • 方法一:调用 /samantha/media/get_play_info 接口,将URL参数 lr=video_gen_watermark 替换为 lr=video_gen_no_watermark
    • 方法二:通过 doubaoShareSave 消息获取分享ID,再调用 /creativity/share/get_video_share_info 接口获取无水印地址
    • 方法三:失败时提示重试
  3. 图片无水印提取

    • creation_block.creations[].image.image_ori_raw.url 获取原图地址
    • 使用文件key(rc_gen_image/{key})作为缓存索引
    • 将无水印URL与DOM中的 <img> 元素关联
  4. UI注入

    • 找到图片/视频的父容器,设置为相对定位
    • 在卡片右上角添加半透明下载按钮(不遮挡原有底部按钮)
    • 使用 MutationObserver 监听动态加载的新内容
  5. 资源管理

    • processedUrls:已处理的请求URL去重(Set,最多100条)
    • videoCache:messageId → videoId 映射
    • imageDataMap:文件key → 图片元数据

📦 安装方法

  1. 首先安装Tampermonkey或Violentmonkey浏览器扩展
  2. 点击原脚本地址页面的 “安装脚本” 按钮
  3. 在脚本管理页面确认安装
  4. 访问 https://www.doubao.com/* 即可自动生效

🖱️ 使用说明

图片下载

  • 当豆包生成图片后,鼠标移动到图片卡片上
  • 卡片右上角会出现 “原图” 按钮
  • 点击即可下载无水印PNG图片

视频下载

  • 当豆包生成视频后,鼠标移动到视频卡片上
  • 卡片右上角会出现 “视频” 按钮
  • 点击后脚本自动获取无水印链接并开始下载

悬浮面板

  • 页面左下角有一个 “发现资源” 悬浮面板
  • 显示当前页面已检测到的无水印图片和可下载视频数量
  • 可以拖拽面板位置,点击 最小化,点击 关闭
  • 点击 “刷新” 按钮可重新扫描页面资源

⚠️ 注意事项

  1. 仅限豆包平台:脚本仅在 https://www.doubao.com/* 域名下生效
  2. 登录状态:需要保持豆包账号登录状态才能调用API
  3. API变化:豆包平台更新可能导致接口失效,请关注脚本更新
  4. 下载限制:部分视频可能因平台限制无法获取无水印版本,会提示重试

🔧 脚本配置

脚本开头的元数据可以修改:

// @name         豆包图片/视频一键无水印下载
// @match        https://www.doubao.com/*   // 匹配的网站
// @grant        GM_download                 // 授权API
// @run-at       document-start              // 运行时机(尽早拦截)

📊 版本历史

版本 更新内容
1.0 初始发布,支持图片/视频无水印下载,按钮位于右下角
2.x 优化代码结构,增强数据提取,按钮移至右上角

🐛 常见问题

Q:点击下载按钮没有反应?
A:请检查是否保持豆包登录状态,刷新页面后重试。

Q:刷新按钮检测不到图片?
A:脚本会自动拦截网络请求,如果仍无法检测,请尝试刷新整个页面。

Q:视频下载失败?
A:脚本会自动尝试三种获取方式,如果全部失败,可能是平台限制了该视频,可稍后重试。

Q:按钮遮挡了原有功能?
A:最新版本已将按钮移至右上角,不会遮挡原有的底部操作按钮。

📝 开发说明

如果你想修改或二次开发这个脚本,主要文件结构如下:

  • 网络拦截层setupNetworkInterceptors() 函数
  • 数据提取层extractImagesFromObject()extractFromMessages()
  • API调用层callGetPlayInfo()callDoubaoShareSave()
  • UI注入层injectImageButton()injectVideoButton()
  • 面板组件createFloatPanel() 悬浮面板

脚本内部使用 window.postMessage 在不同模块间通信,便于调试和扩展。


原脚本地址https://scriptcat.org/zh-CN/script-show-page/6329