ComfyUI-Manager 工作流分享 API 集成指南
【免费下载链接】ComfyUI-ManagerComfyUI-Manager is an extension designed to enhance the usability of ComfyUI. It offers management functions to install, remove, disable, and enable various custom nodes of ComfyUI. Furthermore, this extension provides a hub feature and convenience functions to access a wide range of information within ComfyUI.项目地址: https://gitcode.com/gh_mirrors/co/ComfyUI-Manager
从"发链接靠截图"到"一键发布":你的工作流分享困局
做 ComfyUI 的开发者或资深用户,几乎都遇到过这样的窘境:精心调好的工作流想分享给朋友,要么截图一堆节点图、要么把 workflow JSON 复制到聊天框里让人家手动导入,既费时又容易丢信息。其实 ComfyUI-Manager 内置了一套完整的工作流分享 API 集成方案,它把"工作流 + 生成结果 + 元数据"打包成一条可直接发布的内容,对接 OpenArt、YouML、Copus、Matrix、eSheep、ComfyWorkflows 等多个平台。下面这篇文章就带你从零跑通这套集成,约 15 分钟即可见效。
最短路径快速上手:3 步完成接入
先看效果、再讲原理。这套 API 的调用链非常短,你只需要在 ComfyUI 的前端环境里做三件事:
第 1 步:引入分享模块
// 在 comfyui-manager.js 同目录下导入公共分享入口 import { showOpenArtShareDialog, showCopusShareDialog, showYouMLShareDialog, ShareDialogChooser } from "./comfyui-share-common.js";第 2 步:绑定一个触发按钮
<button onclick="handleShare()">把当前工作流分享出去</button>第 3 步:调用统一入口
async function handleShare() { // 弹出平台选择器,让用户挑选目标站点 if (!ShareDialogChooser.instance) { ShareDialogChooser.instance = new ShareDialogChooser(); } ShareDialogChooser.instance.show(); }到这里,你的页面上已经拥有了一个可用的"分享"入口,用户点开后能自由选择六个目标平台。如果只想要单平台直达,直接调用showOpenArtShareDialog()这类函数即可。
核心能力拆解:这套 API 到底能做什么
能力一:把工作流"翻译"成可传输的 JSON
app.graphToPrompt()是 ComfyUI 官方提供的方法,返回的对象里workflow字段就是可导入、可复用的工作流定义,output字段则是本次执行的完整提示词数据。所有分享逻辑都以此为数据源,你可以把它理解成把"图纸"(workflow)和"施工记录"(prompt)一起打包带走。
能力二:自动识别输出节点与产物
画布上的节点五花八门,API 不会盲目全部打包。getPotentialOutputsAndOutputNodes(nodes)会遍历所有节点,只认SUPPORTED_OUTPUT_NODE_TYPES里登记的六类"出口":
export const SUPPORTED_OUTPUT_NODE_TYPES = [ "PreviewImage", "SaveImage", "VHS_VideoCombine", "ADE_AnimateDiffCombine", "SaveAnimatedWEBP", "CR Image Output" ];对于视频类节点(如VHS_VideoCombine),还会通过parseURLPath()解析预览 widget 中的 URL 参数,过滤出format以image开头的产物,避免把不支持格式塞进请求。这一步的结果是一个结构清晰的数组:
{ type: "output", // 产物类型:image 或 output title: "我的预览图", // 节点标题 node_id: 12, // 节点 id output: { // 具体的文件定位信息 filename: "abc.png", subfolder: "outputs", format: "image/png" } }能力三:按平台分发,一套逻辑多处复用
不同平台的能力差异,统一收敛在两个层面:前端各自实现一个继承自ComfyDialog的对话框类(如OpenArtShareDialog、CopusShareDialog),后端则通过glob/share_3rdparty.py里的若干/manager/*路由提供服务。下表可帮你快速对齐:
| 平台 | 前端入口 | 认证方式 | 特色能力 |
|---|---|---|---|
| OpenArt | showOpenArtShareDialog() | API Key(存.openart_key) | 发布 + 开发者管理模式 |
| YouML | showYouMLShareDialog() | .youml配置文件 | 工作流转交互式应用 |
| Copus | showCopusShareDialog() | 平台账号 | 元数据丰富,支持区块链存储 |
| Matrix | showShareDialog('matrix') | 账号密码(存matrix_auth) | 发图 + 发 workflow 文件到聊天室 |
| ComfyWorkflows | showShareDialog('comfyworkflows') | shareKey | 附带模型 SHA256 与快照信息 |
| eSheep | shareToEsheep() | 无需认证 | 弹窗跳转到平台网页上传 |
完整实战案例:把工作流发布到 OpenArt
下面以 OpenArt 为例,走一遍从"读配置"到"发布成功"的完整链路。
环境准备
确保你的 ComfyUI 已安装 ComfyUI-Manager,并在前端环境中能看到window.app与window.api(这两个对象由 ComfyUI 注入)。
第一步:读取/保存 API Key
// 保存密钥:POST 到 /manager/set_openart_auth await api.fetchApi(`/manager/set_openart_auth`, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ openart_key: '你的密钥' }) }); // 读取密钥:GET /manager/get_openart_auth,未配置时后端返回 404 const key = await api.fetchApi(`/manager/get_openart_auth`) .then(r => r.ok ? r.json() : { openart_key: '' }) .then(d => d.openart_key);第二步:组装发布数据
const prompt = await app.graphToPrompt(); const workflowJSON = prompt["workflow"]; // 工作流定义 const nodes = app.graph._nodes; const { potential_outputs } = getPotentialOutputsAndOutputNodes(nodes); const payload = { workflow: workflowJSON, images: potential_outputs, // 用户勾选的产物 title: "人像重绘工作流", description: "一键完成人脸修复与风格迁移", credits: "作者名", is_nsfw: false };第三步:调用后端路由完成发布
const resp = await api.fetchApi(`/manager/share`, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ ...payload, matrix_auth: { homeserver: "", username: "", password: "" }, cw_auth: { cw_sharekey: "" }, share_destinations: ["openart"] }) });发布成功后,前端对话框里会渲染出"已发布,点击查看"的跳转链接,整个流程即告完成。
进阶技巧与避坑指南
常见报错对照表
| 现象 | 根因 | 处理建议 |
|---|---|---|
| 提示找不到输出节点 | 画布上没有六类受支持节点,或未跑过一次生成 | 先添加 PreviewImage/SaveImage 并执行一次 |
| 产物列表为空 | 节点存在但images数组为空 | 先跑通一次生成再点分享 |
| 读取 API Key 返回 404 | 密钥从未保存 | 先 POST 保存,再 GET 读取 |
| OpenArt 校验失败 | 密钥错误或网络不通 | 检查密钥、确认能访问 openart.ai |
| 分享对话框打不开 | 缺少配套 CSS | 确认custom-nodes-manager.css等样式已引入 |
安全与认证建议
- 🔑 密钥写在后端文件(如
.openart_key),前端只读不回显,避免把密钥硬编码进源码。 - 📌 区分环境:
comfyui-share-copus.js里用env变量切换 prod/test 的 API 地址,联调时记得切到测试环境。 - ⚠️ 若你的应用走 HTTPS,跳转外站时注意混入内容警告;eSheep 流程依赖前端构造
window.location地址并window.open,请确保域名与端口拼接正确。
个性化定制
- 想改默认分享站点?读写
/manager/share_option路由即可持久化用户偏好,前端comfyui-manager.js中的分享按钮会据此决定直达还是弹出选择器。 - 想扩展输出节点类型?把新节点名加进
SUPPORTED_OUTPUT_NODE_TYPES,并在getPotentialOutputsAndOutputNodes里补充对应的产物解析分支。
总结与延伸资源
回顾一下这次集成:入口在js/comfyui-share-common.js,分发逻辑在各平台的分享对话框类里,后端路由集中在glob/share_3rdparty.py。你只需要掌握app.graphToPrompt()取数据、getPotentialOutputsAndOutputNodes()筛产物、api.fetchApi()走接口这三板斧,就能在自己的应用里复刻一套完整的工作流分享能力。
想继续深入,推荐按这份清单延展阅读:
- 统一入口与工具函数:js/comfyui-share-common.js
- 各平台对话框实现:js/comfyui-share-openart.js、js/comfyui-share-copus.js、js/comfyui-share-youml.js
- 后端路由与认证存取:glob/share_3rdparty.py
- 前端接线示例:js/comfyui-manager.js
动手跑一遍上面的示例,再对照源码逐行读,你很快就能在 ComfyUI-Manager 的分享体系上搭建出自己的发布管道。如果你对某个平台的细节(比如 YouML 的交互式应用转换、Copus 的区块链存储)感兴趣,欢迎带着问题再去翻对应的对话框源码,那里有更完整的答案。
【免费下载链接】ComfyUI-ManagerComfyUI-Manager is an extension designed to enhance the usability of ComfyUI. It offers management functions to install, remove, disable, and enable various custom nodes of ComfyUI. Furthermore, this extension provides a hub feature and convenience functions to access a wide range of information within ComfyUI.项目地址: https://gitcode.com/gh_mirrors/co/ComfyUI-Manager
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考