SnapOtter Pipelines自动化:把20步工具链成可复用工作流的实战教程
【免费下载链接】SnapOtterOpen-source, self-hosted file-processing tool. Convert, compress, OCR, transcribe & run local AI across image, video, audio, PDF & documents, via UI, REST API & pipelines. Your files never leave your network.项目地址: https://gitcode.com/gh_mirrors/st/SnapOtter
SnapOtter 是一个开源、自托管的文件处理工具,支持转换、压缩、OCR、语音转写和本地 AI 处理。它的 Pipelines(流水线)功能可以把多个工具按顺序串成一条自动化工作流:你只需上传一次文件,SnapOtter 就会在内部依次执行每一步处理,最后直接给你结果文件——图片、音频、PDF 全都适用。
为什么需要 Pipelines 自动化
用单个工具处理文件很简单,但真实场景往往是"组合拳":
- 发布博客前:先裁剪尺寸 → 再转 WebP → 最后压缩
- 分享老照片前:AI 修复划痕 → 自动上色 → 放大 2 倍
- 剪辑播客前:去静音段 → 统一响度 → 加淡入淡出
如果每步都要手动点一遍、下载再上传,20 步下来就是一场折磨。Pipelines 的价值就在于:上传一次,链路全自动,产出一次到位,而且整条链路可以命名保存、随时复用。
9 个内置模板,开箱即用的工作流
SnapOtter 自带了 9 个官方 Pipeline 模板(定义在 pipeline-templates.ts),覆盖图片和文档、音频三大类:
| 模板 | 模态 | 执行步骤 |
|---|---|---|
| 网页优化 | 图片 | 缩至 1920px 宽 → 转 WebP(质量 80) |
| 适合邮件 | 图片 | 缩至 1024px 宽 → 按质量 70 压缩 |
| 隐私清理 | 图片 | 去除全部 EXIF/GPS 元数据 → 压缩 |
| 社交方图 | 图片 | 裁成 1080×1080 → 压缩 |
| 批量水印 | 图片 | 右下角加文字水印(50% 透明)→ 压缩 |
| 为邮件缩小 PDF | 文档 | 拼合 PDF → 质量 50 大力压缩 |
| 播客润色 | 音频 | 去静音(-50dB)→ 响度归一 → 2 秒淡入淡出 |
| 抠出主体 | 图片 | AI 去背景输出透明 WebP → 压缩 |
| 修复老照片 | 图片 | AI 修划痕+人脸增强 → 上色 → 放大 2 倍 |
其中"修复老照片"就是典型的多步 AI 工作流:三步走完,一张破损的黑白老照片直接变成高清彩色图。
三步在界面上搭建你的专属工作流
进入顶栏的Automate页面(前端实现见 automate-page.tsx),即可开始搭建:
第 1 步:拖入文件并添加步骤
把文件拖进上传区后,从工具面板(pipeline-builder.tsx)里点选工具添加为步骤。每一步都是一个toolId + settings的组合,支持任意顺序拖拽调整。
第 2 步:微调每个步骤的参数
点击某个步骤可以展开参数面板(pipeline-step-settings.tsx),比如把"网页优化"模板里的 1920px 改成 1280px,或者把水印文字改成自己的名字。第一步的模态决定输入类型——图片、音频、视频、文档入口都会自动匹配正确的校验逻辑。
第 3 步:保存为可复用工作流
调好后填入名称和描述点保存。之后在 Automate 页面直接点选这条工作流,一键处理新文件。步骤状态由 pipeline-store.ts 维护,执行进度与取消逻辑在 use-pipeline-processor.ts 中实现,界面会实时显示每一步的执行状态。
用 REST API 把工作流接入脚本
除了界面,Pipelines 完全可以通过 REST API 调用(路由实现见 pipeline.ts),核心端点如下:
| 端点 | 方法 | 用途 |
|---|---|---|
/api/v1/pipeline/execute | POST | 上传文件 + 流水线定义 JSON,执行单文件 |
/api/v1/pipeline/batch | POST | 多文件批量执行,结果打包成 ZIP |
/api/v1/pipeline/save | POST | 保存命名的工作流供复用 |
/api/v1/pipeline/list | GET | 列出已保存的工作流 |
/api/v1/pipeline/tools | GET | 查询哪些工具可作为步骤 |
execute的调用方式是 multipart 请求:一个文件 part + 一个pipeline字段,字段内容为步骤数组 JSON,形如{"steps":[{"toolId":"resize","settings":{"width":1920}},{"toolId":"compress","settings":{"quality":80}}]}。服务端会把步骤组织成一条顺序执行的作业链(后端基于 BullMQ Flow 嵌套任务树),全部完成后返回downloadUrl、前后文件大小和每步结果。batch端点则对每个文件各跑一条完整链路,最后汇总为 ZIP 下载。
3 个必须知道的限制
- 需要密码的工具不能入链。
protect-pdf和unlock-pdf因为涉及密码,被明确禁止放入任何 Pipeline,避免敏感信息被持久化到步骤定义中。 - 步骤数量有上限。单条流水线至少 1 步,最多步数由部署方的
MAX_PIPELINE_STEPS配置决定,超长链路会被直接拒绝。 - 权限分离。执行工作流只需普通工具使用权限;而保存、列出、删除工作流需要
pipelines:own或pipelines:all权限,管理员可以看到并删除全团队的共享工作流。
小结
Pipelines 让 SnapOtter 从"一堆好用的单点工具"升级为"一条完整的自托管自动化产线":9 个内置模板解决最常见场景,界面拖拽定制个性化链路,REST API 再把它嵌入你自己的脚本和系统。整个过程中文件始终留在你的内网,这正是自托管工具的核心价值。
【免费下载链接】SnapOtterOpen-source, self-hosted file-processing tool. Convert, compress, OCR, transcribe & run local AI across image, video, audio, PDF & documents, via UI, REST API & pipelines. Your files never leave your network.项目地址: https://gitcode.com/gh_mirrors/st/SnapOtter
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考