Nodes/Protoface/Protoface Seedream 5.0 Pro · Edit Image
ComfyUI Node

Protoface Seedream 5.0 Pro · Edit Image

Multi-reference editing for four and a half cents

By protoface-ai·Created 22 days ago·Updated 13 days ago· 0
Protoface Seedream 5.0 Pro · Edit Image
    • image
    • mask
    • files
    • run id
    ◄prompt►
    ◄images▾►
    ◄resolution1k►
    ◄aspect_ratio▾►
    ◄output_formatjpeg►
    ◄prompt_optimization_modestandard►
    ◄generation_id0►
    ◄request_scope►

    What it's for

    Instruction-based image editing, at a price that makes it hard to argue with. The pack's catalog prices a Seedream 5.0 Pro edit job at 5 credits at 1k or 1.5k and 9 credits at 2k - and since the same grid lists 5 credits as $0.045, you're looking at under five cents an edit. That's the number to hold on to, because it changes how you'd use the node: not as a precious final step, but as an iteration tool you can afford to be wrong with.

    Seedream is a closed ByteDance product, sold but never released, so this isn't competing with your local inpaint workflow on price-per-VRAM - it's a different thing. You send an image and an instruction, you get a new image.

    Mechanism

    Every node in the Protoface pack is a thin client over one shared implementation, with per-model controls generated from the provider's public request schema. This one uploads your reference images, submits the edit, polls, downloads, and returns native ComfyUI IMAGE and MASK lists. Your pictures go to their servers. Same trade you're already making with any closed model.

    The inputs

    images is plural and it's a dynamic list - connect more than one and they all go as references. That's the feature worth the trip: a product shot plus a style reference, or an outfit plus a model, with the prompt explaining the relationship. Uploads are cached against the assets on the API side and re-uploaded if you deleted them, so repeatedly editing the same source isn't punished.

    prompt is the instruction. "Make the fabric matte black, keep the lighting and the folds" is the register.

    resolution - 1k, 1.5k, 2k - and the tooltip says what it is plainly: the output tier used for billing. 2k nearly doubles the cost.

    aspect_ratio is optional, with a genuinely good tooltip: leave it empty and the node uses the closest supported ratio to your first input image. That's almost always what you want - the full enum runs 1:1, 1:2/2:1, 1:3/3:1, 2:3/3:2, 3:4/4:3, 4:5/5:4, 9:16/16:9 and 9:21/21:9.

    output_format is jpeg or png. Use png if you're going to mask or composite downstream; jpeg is fine for delivery.

    prompt_optimization_mode is standard or fast. The tooltip is the best-written one in the pack: standard does the full rewrite; fast is a lighter rewrite that generates several times quicker but follows long or intricate prompts less closely, and is served only by providers that honour it, so it has less failover depth. Translation: use fast when you're iterating and your prompt is simple, standard when the phrasing actually matters.

    generation_id: fixed ID with identical inputs resumes the paid job instead of buying another; increment for a new generation. request_scope: auto-assigned, non-secret, headless-only concern.

    Outputs: image (list), mask (list, inverted alpha), files (originals), run id.

    Install

    ComfyUI 0.41.0+ and Python 3.10+.

    cd ComfyUI
    git clone --branch v0.1.0 --depth 1 https://github.com/protoface-ai/protoface-comfyui.git custom_nodes/protoface
    python -m pip install -r custom_nodes/protoface/requirements.txt
    

    Or via Manager: search Protoface, install protoface-nodes, restart, reload the browser. Pip with ComfyUI's own interpreter. Then click Protoface in the lower-right and paste your key - headless setups use PROTOFACE_API_KEY or PROTOFACE_API_KEY_FILE. Requirements: httpx, jsonschema, Pillow, PyAV.

    Where it goes wrong

    Forgetting the ratio field exists. Empty means "match the first input image," which is right most of the time. Force a ratio and you may get a crop or a re-composition you didn't ask for.

    2k by habit. Twice the credits for a tier you might not need. Edit at 1k, upscale the keeper locally - you already have the upscaler.

    Multi-image confusion. The model can't tell which reference is "the subject" and which is "the style" unless you say so in the prompt. Ambiguous references produce a blend of both.

    Expecting mask-perfect edges. The mask output is a bonus, not a segmentation guarantee. If you need precise mattes, do that part locally.

    Retry-by-increment. A poll timeout is a recoverable job; bumping generation_id is a fresh charge. Requeue unchanged, or use run id with Resume Run.

    Verdict

    The value pick of the pack. Under five cents an edit at 1k, multiple references, an honest billing-tier tooltip and an aspect ratio default that respects your input. If you're going to experiment with a closed image model inside ComfyUI, start here rather than with the video nodes - you can afford to learn the node's dialect.

    CategoryProtoface/Image/bytedance

    Inputs (8)

    NameTypeDefaultDescription
    promptSTRINGThe positive prompt for the generation.
    imagesCOMBOPublic URLs, data URIs, or asset ids.
    resolutionCOMBO1kThe output resolution tier used for billing. 1k is the lower-cost tier; 2k is the higher-cost tier.
    aspect_ratioCOMBOThe aspect ratio of the generated image. Leave empty to automatically use the closest supported aspect ratio based on the first input image.
    output_formatCOMBOjpegThe format of the output image.
    prompt_optimization_modeCOMBOstandardPrompt optimization mode. The model rewrites your prompt before generating. 'standard' uses the full rewrite; 'fast' uses a lighter one that generates several times quicker but follows long or intricate prompts less closely, and is served only by the upstream providers that honour it, so it has less failover depth.
    generation_idINT00–9007199254740991Keep fixed to reuse/resume this paid job. Increment for a fresh paid generation; independent of the model seed.
    request_scopeSTRINGAutomatically assigned per node. Headless clients must supply a stable unique workflow/node ID. This is not a secret.

    Outputs (4)

    NameTypeDescription
    imageIMAGE—
    maskMASK—
    filesPROTOFACE_FILE—
    run idSTRING—