volcano image edit
Text-prompt image edits via ByteDance's SeedEdit API
- image
- edited_image
This one isn't running anything on your GPU. VolcanoImageEditNode sends your image and a text prompt off to ByteDance's cloud - Volcano Engine - and gets back an edited image a few seconds later, courtesy of SeedEdit, ByteDance's instruction-editing model. If that name is unfamiliar, ByteDance is the company behind the Seedream/Seedance/SeedEdit line, and true to form, all of those stay API-only while the company quietly ships a stack of open components (Depth Anything, PuLID, SDXL-Lightning) under other names. SeedEdit is one of the models it never open-weights, which is exactly why a node like this exists - it's the only way to reach it from ComfyUI.
It sits in a growing corner of zhangp365's utils pack that's really a grab-bag of cloud API wrappers - FAL, Replicate, Novita, Gemini, and this Volcano trio - bolted onto what started as a set of small local-node quality-of-life fixes. Reach for it when you want "change the jacket to leather" or "make it winter" style edits without spinning up a local Kontext/Qwen-Edit workflow, and you're fine paying per call for the convenience.
How it works
You feed it an image and a prompt describing the change. The node authenticates against Volcano Engine using an access key/secret key pair - not a single API token like you'd get from FAL or Gemini, but a signed AWS-style key pair, because Volcano Engine is ByteDance's general cloud platform (think Alibaba Cloud, not a single-purpose AI API). It packages the request, calls the SeedEdit endpoint, and hands back the result as an edited_image you can drop straight into a Preview Image or Save Image node, or chain into more editing.
The inputs and outputs that matter
image- what you're editing.prompt(multiline string) - describe the change you want in plain language. This is an instruction-editing model, not inpainting - there's no mask, so it looks at the whole frame and can shift things you didn't ask about.access_key/secret_key- your Volcano Engine credentials. Get them free: go to console.volcengine.com, log in, open "访问控制" (Access Control) or go straight to the key management page, and create a key. Both strings go into the node.scale(0.1–1, default 0.5) - the pack doesn't spell out exactly what this maps to server-side, but by name and range it reads as an edit-strength dial: push it up for a bigger departure from the original, keep it low to stay conservative and close to the source image.seed- for reproducibility between runs with the same prompt.version(optional, defaultseededit_v3.0) - the other choice isbyteedit_v2.0, an older ByteDance edit model. Leave it on the default unless you have a specific reason to fall back.
Output: edited_image (IMAGE), wired to whatever you'd normally put after a generation - save, preview, or another edit pass.
How to install it
Through ComfyUI Manager: search "ComfyUI-utils-nodes" (or "utils-nodes" by zhangp365), install, restart. Or manually:
cd ComfyUI/custom_nodes
git clone https://github.com/zhangp365/ComfyUI-utils-nodes
then restart ComfyUI. This particular node is lightweight to install - it's an HTTP call out to Volcano's API, not a local model. The pack does carry heavier dependencies (TensorFlow 2.17 for the face-detection nodes), but the README is explicit that those aren't installed by default anymore precisely because they're outdated and troublesome - you won't hit them just for this node.
Common issues & troubleshooting
"It doesn't work at all" is almost always the keys. This node needs both access_key and secret_key filled in - if you only paste one, or paste a Gemini/FAL-style single token into either field, the call fails. Double-check you copied both values from Volcano's IAM key page, not a project API key from somewhere else.
Signing up for Volcano Engine is a bigger lift than the README's four bullet points suggest. It's a full Chinese cloud console, not a lightweight AI-API signup page like FAL or Google AI Studio - expect real-name/account verification during registration. Budget a few extra minutes the first time versus the other cloud nodes in this same pack.
Prompt does something, but not what you asked. SeedEdit edits the whole image in context - it's not masked, so unrelated regions can drift a little even on a "small" edit. If you need surgical, unmasked-region-untouched precision, that's a job for a masked inpaint node instead, not this one.
Weird or unexpected errors on seededit_v3.0. ByteDance iterates this line fast - Seedream/Seedream 4.5 Edit exist alongside SeedEdit now, and older API versions occasionally get flaky as providers shift traffic to newer ones. If you're stuck on errors that aren't obviously a credentials problem, try the byteedit_v2.0 fallback to isolate whether it's version-specific before assuming your setup is broken.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | — | |
| prompt | STRING | — | |
| access_key | STRING | — | |
| secret_key | STRING | — | |
| seed | INT | 420–18446744073709550000 | — |
| scale | FLOAT | 0.500.1–1 | — |
| versionopt | COMBO | seededit_v3.0 | 2 options: byteedit_v2.0, seededit_v3.0 |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| edited_image | IMAGE | — |