← 媒体接入指南ComfyUI Llmer Media
下载节点包(含四个工作流)
版本 0.2.0 · Python 3.10+。已在 ComfyUI 0.34.0 / frontend 1.51.9 验收;使用现有 ComfyUI 依赖,无额外 pip 安装。用户本地 PNG/JPEG 由 ComfyUI 自动获取 Llmer 授权并直传 SvrZs MinIO,无需外部 OSS 账号、链接或 MinIO 密钥。
安装与连接
1. 解压,将 comfyui-llmer-media 文件夹放入 ComfyUI/custom_nodes/。不要把 ZIP 的父目录当成节点目录。
2. 在 ComfyUI 服务进程环境中设置 LLMER_API_KEY 为自己的 Llmer API 密钥;LLMER_BASE_URL=https://ry.live(默认值)。密钥不填进节点,不写入工作流 JSON;浏览器端设置环境变量无效。每个用户的 ComfyUI 实例使用自己的密钥,节点不提供共享实例内的逐浏览器用户凭据隔离。
3. 重启 ComfyUI,刷新浏览器。节点分类为 Llmer/Media。在“模板 → comfyui-llmer-media”打开示例,或将 workflows/*.json 拖入画布。
4. 仅验收时,在服务环境设置 LLMER_DISABLE_GENERATION=1,所有生成节点强制关闭。连接真实服务做流程验收时应使用该设置。
节点包不会下载、加载推理模型或更改服务端调度;H3 仍保持默认 8 步 768P、四路并发和按需清理。1080P 是超分输出。
四个可直接导入的工作流
- first-last.json:在两个上传节点点击“选择要上传的文件”,分别选择首帧、尾帧。点击运行,只上传并显示请求 JSON;只用首帧或尾帧时断开另一个连接。
- multi-reference.json:选择两张参考图,“追加有序参考图”按链条顺序追加。可增加上传和追加节点到 4 张;参考图不必同尺寸,不做隐式缩放。准备节点的 references 接最后一个追加节点。
- download-existing.json:将 REPLACE_EXISTING_TASK_ID 换为本人已有、已完成的任务 ID。视频用 artifact=video, format=mp4;图片的 artifact key 从 GET /v1/tasks/{id}/artifacts 查询,选择对应 png/jpg 格式。
前三个示例都不含生成提交节点;完整流程的提交开关默认关闭。示例图片名只是占位符,下载包不含用户图片或真实任务 ID。
完整流程:full-pipeline.json
本地图片 → MinIO 上传 → 准备 H3 请求 → 提交生成 → 查询进度并等待完成 → 下载结果。
导入后选择本地图片,保持提交节点 enabled=false;点击运行只上传并准备请求,查询和下载自动跳过,不提交生成。完整流程默认使用一张首帧;可连接第二个上传节点作为尾帧,或使用有序参考图链并切换 mode=references。
明确要生成时,填写自己唯一的 request_id,再打开 enabled;服务端的 LLMER_DISABLE_GENERATION=1 仍能强制阻止提交。进度节点默认每 10 秒查询一次、最多等待 120 分钟,显示服务端返回的百分比;仅 completed 才将任务交给下载。失败、取消或查询超时会停止,不转为重新生成。中止本地等待不会取消远端任务。
查询或下载失败后,保留同一 request_id、API 密钥及 ComfyUI user 目录,重新运行即可沿用原 task_id;也可以将任务 ID 填入单独的查询或下载节点。提交结果不确定时停止并人工核对,不自动重发,包括提交返回 429。并发重复运行由排他创建的提交记录挡住。此保护限定于同一服务地址、API 密钥和持久化 user 目录;换实例、换密钥或删除记录不能提供跨实例防重保障。不要为重试修改 request_id,也不要复制此流程并换 ID 自动重跑。
本版本的完整流程通过模拟 API 响应验收,包括默认关闭、正常完成、查询 429、下载中断续传、确认/不确定提交后重跑;没有实际生成视频,也未测试真实生成效果。
上传节点提供 ComfyUI 原生本地文件选择按钮,不接 IMAGE 张量;它上传原始图片文件字节,保持哈希与细节。先传到 ComfyUI 运行机器的 input 目录,再由节点直传 MinIO。已有 IMAGE 流可先保存 PNG 后在上传节点选择该文件。
限制:PNG/JPEG,单张不超过 10 MiB、16 百万像素;总计不超过 20 MiB,参考资产有效期 24 小时。上传节点每次排队重新执行,避免复用过期资产。首尾帧和多参考模式互斥。
下载与重试
成品保存为 ComfyUI/output/llmer/{task_id}-{artifact}.{format},节点显示大小、SHA-256 和“打开 / 下载结果”按钮。按钮从 ComfyUI 本地成品路径读取,不携带 Llmer 密钥。
429 优先遵守 Retry-After(秒数或 HTTP 日期);无提示等待 60 秒,附加少量随机错峰。每个可重试步骤最多尝试 5 次;服务要求等待超过 300 秒则停止并提示稍后继续。
下载网络中断、临时服务器错误或链接到期,只续签并下载同一 task/artifact。保留 .part 和 .part.json;耗尽重试后重新运行同一下载工作流续传,不重新生成。400/401 等参数、权限错误直接报告;未完成任务需先等任务完成再下载。更多边界见 https://ry.live/docs/media.md 。
单独的生成节点
Llmer · 提交 H3(默认关闭) 可手动添加,连接准备节点的 request。只有 enabled=true 且服务未设置 LLMER_DISABLE_GENERATION=1 才会提交计费任务。每次明确的新生成使用唯一 request_id。
重复运行同一 request_id:已确认的任务返回原 task_id,忽略新准备的请求,不再生成;未确认的任务报错并要求核对。包括 429/503/超时在内,生成提交永不自动重试。提交记录保存在 ComfyUI user 目录的 .llmer-receipts;不要删除提交记录或改 request_id 来绕过不确定提交。本次只用离线响应验证该防重行为,没有验收真实生成效果。
实现依据
复用已发布的 Llmer 标准库媒体客户端;custom node 按 ComfyUI 节点契约实现。调研了 ComfyS3,其部署需提供 S3 access/secret;本节点使用 Llmer 用户授权签名,以适配现有用户权限和资产 ID 契约,不向用户分发存储凭据。