Nodes/Protoface/Protoface GPT Image 2 · Edit Image
ComfyUI Node

Protoface GPT Image 2 · Edit Image

Multi-image in, no seed, argue with it in English

By protoface-ai·Created 22 days ago·Updated 13 days ago· 0
Protoface GPT Image 2 · Edit Image
    • image
    • mask
    • files
    • run id
    ◄prompt►
    ◄images▾►
    ◄qualitymedium►
    ◄resolution1k►
    ◄aspect_ratio▾►
    ◄output_formatpng►
    ◄generation_id0►
    ◄request_scope►

    Why this one and not an inpaint graph

    GPT Image's reputation is instruction-following and text rendering - it reads a sentence and does the sentence, which is why it's the model people use when the edit involves words in the picture (a sign, a label, a t-shirt graphic, a UI screenshot) or a compositional change that's easier to describe than to mask. You could build that locally with an inpaint mask and a text encoder, and you'd get a different, more controllable, less obedient result.

    Notice the plural: images. This edit node takes a list of inputs, so the edit can be "put the object from the second image into the first" or "make these two product shots match" - multi-image reference, not a single source frame. Several siblings in the pack take a single image (the MAI edit node, for one); this is the one built for a set.

    And notice what's absent: no seed, no negative prompt, no steps. GPT Image 2 decides. Your iteration lever is the sentence you typed.

    The inputs

    prompt is the instruction. Write it as one clear directive plus a preservation clause - "replace the background with a plain white sweep, keep the product, its shadow and its label exactly as they are" - because these models will happily redesign things you liked if you don't tell them not to.

    images takes one or more assets: public URLs, data URIs, or asset ids, and the socket grows as you connect. Order matters when your prompt says "the second image."

    quality defaults to medium, and its tooltip is refreshingly blunt: higher quality costs more. Start at medium, only climb when the output is going in front of somebody.

    resolution defaults to 1k.

    aspect_ratio has no default and its tooltip says it's auto-detected from the input image if not specified - so leaving it alone means "match my source," which is usually what you want for an edit. Setting it explicitly is how you ask for a re-frame, and the model will happily refill the new area.

    output_format defaults to png.

    generation_id is the paid-job identity: fixed to reuse or resume, incremented for a fresh, freshly-billed generation. Since there's no seed, this is the only thing in the node that resembles reproducibility - and what it actually gives you is the same picture back, not a new roll of the same prompt. request_scope is assigned per node by the frontend; headless callers must supply a stable value or submission is refused.

    Outputs

    image (IMAGE, list), mask (MASK, list, inverted-alpha convention), files (PROTOFACE_FILE originals for Protoface Save File), and run id. The mask is a nice bonus on an API node - it means a downstream masked composite or refine doesn't need a separate segmentation step.

    Install

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

    ComfyUI 0.41.0+, Python 3.10+, deps httpx, jsonschema, Pillow, av>=14. Or Manager → search Protoface → protoface-nodes → restart → reload the tab. Then Protoface, bottom-right, key. Remember the key is memory-only; a restart clears it.

    Do note the billing distinction the README makes: this extension bills your Protoface account directly and is independent of Comfy's Partner Nodes and credits. Having Com credits buys you nothing here.

    Where people get bitten

    Cost per attempt. Quality medium at 1k is the sane loop; running high-res, high-quality passes while you're still figuring out the wording is how a quick asset turns into a surprising invoice.

    Batching. images is a list reference input, not a batch-in/one-out operation - connect three images and they're three references to one edit, not three edits. For three separate edits, three nodes.

    Recovery. A timeout or a killed tab leaves the job alive: keep generation_id and requeue, or use Protoface Resume Run with the run id. Incrementing the ID to retry is a new charge, not a retry. And don't clear ~/.cache/protoface-comfyui while you're debugging - that's the journal that proves you already submitted this exact request.

    CategoryProtoface/Image/openai

    Inputs (8)

    NameTypeDefaultDescription
    promptSTRINGThe positive prompt for the generation.
    imagesCOMBOPublic URLs, data URIs, or asset ids.
    qualityCOMBOmediumThe quality of the generated image. Higher quality costs more.
    resolutionCOMBO1kThe resolution of the output image.
    aspect_ratioCOMBOThe aspect ratio of the generated image. Auto-detected from input image if not specified.
    output_formatCOMBOpngThe format of the output image.
    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—