Nodes/YK-ComfyUI-HybridI2I-OSS/YK-ComfyUI-HybridI2I-OSS
ComfyUI Node

YK-ComfyUI-HybridI2I-OSS

Three cloud image APIs behind one node, with failover that actually earns its keep

By ds-fae·Created 5 months ago·Updated 4 months ago· 0
YK-ComfyUI-HybridI2I-OSS
  • image_A_a
  • image_A_b
  • image_A_c
  • image_B_a
  • image_B_b
  • image_B_c
  • image_C_a
  • image_C_b
  • image_C_c
  • image_D_a
  • image_D_b
  • image_D_c
  • image_E_a
  • image_E_b
  • image_E_c
  • image_F_a
  • image_F_b
  • image_F_c
  • image_G_a
  • image_G_b
  • image_G_c
  • image_H_a
  • image_H_b
  • image_H_c
  • image_I_a
  • image_I_b
  • image_I_c
  • image_J_a
  • image_J_b
  • image_J_c
  • 输出_1
  • 输出_2
  • 输出_3
  • 输出_4
  • 输出_5
  • 输出_6
  • 输出_7
  • 输出_8
  • 输出_9
  • 输出_10
  • 所有成功图像
  • 上传图片URLs
社区版_最大尝试次数2
全能Xinbao_最大尝试次数1
官方PRO版_最大尝试次数1
runninghub_api_key
全能Xinbao_api_key
image_hostingImgBB
imgbb_api_key
oss_access_key_id
oss_access_key_secret
oss_bucket_name
oss_endpointoss-cn-beijing.aliyuncs.com
resolution1K
aspect_ratio自动
seed0
global_concurrent_tasks3
max_wait_time120
max_prompt_lines_global-1
callback_url
prompt_1
batch_count_11
prompt_2
batch_count_21
prompt_3
batch_count_31
prompt_4
batch_count_41
prompt_5
batch_count_51
prompt_6
batch_count_61
prompt_7
batch_count_71
prompt_8
batch_count_81
prompt_9
batch_count_91
prompt_10
batch_count_101

Here's the first thing to know about YK_HybridI2I_OSS: the name is mostly true, but it's not a "node that generates images" in the way you're used to. It doesn't load a checkpoint, it doesn't sample anything, and it needs zero VRAM. It's an API-wrapper node - a dispatcher that uploads your reference images, fires them at up to three paid cloud backends, and hands the returned image back to your graph like a local sampler made it. If you've used a ComfyUI API node for Nano Banana or Veo, the shape is familiar; the batch plumbing and failover logic are the whole point here.

What it actually does

This is a batch img2img node built for a production pipeline, not for playing around. The README's framing is unambiguous: up to 10 groups of jobs (A–J), each with up to 3 reference images and its own prompt, sent through a fixed fallback strategy - 社区版 (RunningHub community) → 全能Xinbao (a reseller proxying gemini-3-pro-image-preview) → 官方PRO版 (RunningHub official PRO). Each mode has its own attempt count; set one to 0 and it's skipped. First success wins, and the surviving image is uploaded to Aliyun OSS, where a callback_url POST eventually tells your backend "the batch is done, here are the paths." The sample callback URL in the README points at the author's own service - this is a tool written for one specific Chinese workflow that happens to be public.

The three backends, in plain terms

  • Community + Official PRO both use your runninghub_api_key against runninghub.cn's open API (/openapi/v2/rhart-image-n-pro/edit and the -official variant). The node submits a task, polls /task/openapi/status every 3 seconds up to max_wait_time (30–600s), then pulls the result URL. RunningHub is a real, current cloud GPU/ComfyUI platform - the English community knows it as a cheaper, China-side alternative to Runpod.
  • 全能Xinbao is a one-shot generateContent POST to xinbaoapi.dpdns.org with its own Bearer key - a Gemini-image reseller. ("Xinbao" ≈ "all-in-one treasure chest.") Resellers exist for cost, region, and billing friction, and the vendor's moderation follows the model, not the node.

You need at least one mode with attempts ≥ 1, or it refuses to run. And here's the gotcha most people will trip on: the seed input does nothing. The source draws a fresh random.randint for every attempt and never forwards your widget seed. Set it, ignore it, whatever - you're paying per call, and reproducibility isn't what this node sells.

Inputs and outputs that matter

The required inputs that actually run the show: the three attempt-count ints (this is the failover strategy), the two API keys, image_hosting (ImgBB or 阿里云 OSS) plus its key/OSS credentials, resolution (1K–8K), aspect_ratio, max_wait_time, global_concurrent_tasks (1–10 groups in parallel), and callback_url.

The optional inputs are per-group: image_A_a/b/c, prompt_1, batch_count_1, and so on through J. Multi-line prompts are the sneaky one - each line becomes a variant, and once you have more than one line, batch_count is ignored entirely.

Outputs: 输出_1 through 输出_10 (one IMAGE per group), 所有成功图像 (all real successes concatenated into one batch), and 上传图片URLs (a STRING of each group's reference-image URLs). Failed groups come back as a 64×64 black placeholder, which 所有成功图像 filters out - so wire that output if you only want the wins.

Install and the OSS trap

ComfyUI Manager → search YK-ComfyUI-HybridI2I-OSS, or:

cd ComfyUI/custom_nodes
git clone https://github.com/ds-fae/YK-ComfyUI-HybridI2I-OSS.git
pip install oss2 requests Pillow

Then restart. No model files, no heavy deps beyond oss2. The README is honest about the network requirements: your machine must reach runninghub.cn and xinbaoapi.dpdns.org, which rules this out behind some corporate firewalls.

The trap: image_hosting only controls where your reference images go. Result images always upload to Aliyun OSS - the code calls upload_to_aliyun_oss unconditionally on success. So even if you pick ImgBB to dodge OSS, you still need complete AK/SK/bucket/endpoint to get any real output, and the bucket needs public-read. The endpoint auto-completes to .aliyuncs.com, which is a small mercy. Failures log to the ComfyUI console - a 64×64 result means "everything tried and died," so read that console before touching the workflow.

Is it for you?

Honestly? If you're not on the China stack - RunningHub credits, Aliyun OSS, a callback endpoint - this node is a lot of ceremony for images you could get from one reseller directly. It's also new: a single-maintainer, 0-impression pack at version 4.0.2 with no community track record. Two habits to keep: your keys live in the node's widget values, which get saved into workflow JSON - don't commit that; and API-wrapper nodes are the category that already shipped malware once, so glance at the source before trusting it. But if you run batch img2img against cloud APIs for a living, the failover logic is the rare thing that does exactly what its README claims.

CategoryYK-ComfyUI

Inputs (68)

NameTypeDefaultDescription
社区版_最大尝试次数INT20–5设为0则跳过该模式。执行顺序:第1位(最优先)
全能Xinbao_最大尝试次数INT10–5设为0则跳过该模式。执行顺序:第2位
官方PRO版_最大尝试次数INT10–5设为0则跳过该模式。执行顺序:第3位(最后)
runninghub_api_keySTRING
全能Xinbao_api_keySTRING
image_hostingCOMBOImgBB2 options: ImgBB, 阿里云 OSS
imgbb_api_keySTRING
oss_access_key_idSTRING
oss_access_key_secretSTRING
oss_bucket_nameSTRING
oss_endpointSTRINGoss-cn-beijing.aliyuncs.com
resolutionCOMBO1K4 options: 1K, 2K, 4K, 8K
aspect_ratioCOMBO自动11 options: 1:1, 2:3, 3:2, 3:4, 4:3, 4:5, +5
seedINT00–18446744073709550000
global_concurrent_tasksINT31–10全局最大处理组数(仅处理前 N 个有效组,1~10)
max_wait_timeINT12030–600每个子任务最大等待时间(秒),适用于所有API模式
max_prompt_lines_globalINT-1-1–50【全局】每组最多使用多少行提示词(-1 = 不限制)。例如设为5,则即使提示词有10行,每组也只生成前5个变体。此参数位于底部便于批量调试。
callback_urlSTRING
image_A_aoptIMAGE
image_A_boptIMAGE
image_A_coptIMAGE
prompt_1optSTRING
batch_count_1optINT11–10
image_B_aoptIMAGE
image_B_boptIMAGE
image_B_coptIMAGE
prompt_2optSTRING
batch_count_2optINT11–10
image_C_aoptIMAGE
image_C_boptIMAGE
image_C_coptIMAGE
prompt_3optSTRING
batch_count_3optINT11–10
image_D_aoptIMAGE
image_D_boptIMAGE
image_D_coptIMAGE
prompt_4optSTRING
batch_count_4optINT11–10
image_E_aoptIMAGE
image_E_boptIMAGE
image_E_coptIMAGE
prompt_5optSTRING
batch_count_5optINT11–10
image_F_aoptIMAGE
image_F_boptIMAGE
image_F_coptIMAGE
prompt_6optSTRING
batch_count_6optINT11–10
image_G_aoptIMAGE
image_G_boptIMAGE
image_G_coptIMAGE
prompt_7optSTRING
batch_count_7optINT11–10
image_H_aoptIMAGE
image_H_boptIMAGE
image_H_coptIMAGE
prompt_8optSTRING
batch_count_8optINT11–10
image_I_aoptIMAGE
image_I_boptIMAGE
image_I_coptIMAGE
prompt_9optSTRING
batch_count_9optINT11–10
image_J_aoptIMAGE
image_J_boptIMAGE
image_J_coptIMAGE
prompt_10optSTRING
batch_count_10optINT11–10

Outputs (12)

NameTypeDescription
输出_1IMAGE
输出_2IMAGE
输出_3IMAGE
输出_4IMAGE
输出_5IMAGE
输出_6IMAGE
输出_7IMAGE
输出_8IMAGE
输出_9IMAGE
输出_10IMAGE
所有成功图像IMAGE
上传图片URLsSTRING