Nodes/Protoface/Protoface Pika 2.2 · Image Transitions
ComfyUI Node

Protoface Pika 2.2 · Image Transitions

Chaining stills into a moving sequence

By protoface-ai·Created 22 days ago·Updated 13 days ago· 0
Protoface Pika 2.2 · Image Transitions
    • video
    • files
    • run id
    ◄prompt▾►
    ◄images▾►
    ◄resolution720p►
    ◄seed▾►
    ◄transitions▾►
    ◄generation_id0►
    ◄request_scope►

    Actually interesting, which is rare in this batch

    Most image-to-video nodes do one still. This one takes a list of stills and animates the transitions between them - so three images become a two-segment sequence, each gap its own generated transition. That's a genuinely different tool: it's how you build a shape-shifting montage, a product morph, a "before/during/after" beat, or a storyboard that actually moves, from frames you already made locally.

    It's also the fiddliest node in the pack, and the fiddliness is structural, not a bug. The transitions field has to line up with the image list: one config per gap, len(images) - 1 of them, total duration capped at 25 seconds. Get the arithmetic wrong and you don't get a nice error, you get a rejection.

    The inputs, in the order they'll annoy you

    images is the list. Connect two stills and you're making one transition; four stills and you're making three. If you're pulling from a batch, remember the adapter's maxItems check counts batch items too, and will refuse with "too many references, including items in input batches" rather than silently truncating.

    transitions is the per-gap configuration, and this is where the pack's UI helper matters. The README is specific: Kling multi-shot and Pika transition controls use generated typed item nodes - search the model name plus Transition in Add Node, connect one helper per item, and set the list control to Set. So it's the node named something like Pika Transition, one per gap, not a JSON blob you type. Use the helper. Fighting the raw field is a waste of an afternoon.

    If you omit transitions entirely - the dynamic combo's Default mode does exactly that, it omits the parameter - the API falls back to a default 5-second transition with the global prompt for every gap. That's the fast path and it's a legitimate one.

    prompt is the global description, used where a transition doesn't override it. resolution defaults to 720p. seed is here, unlike most of this pack's newer nodes, and it's a dynamic combo: -1 means random, otherwise a specific value for a reproducible attempt.

    generation_id / request_scope behave as everywhere: fixed ID resumes the same paid job, incremented buys a new one, and the scope is auto-assigned unless you're headless.

    Outputs

    video (VIDEO, list) - the assembled sequence, ready for Save Video or Video Combine. files (PROTOFACE_FILE, list) gives you the original container, and run id is the recovery handle for Protoface Resume Run.

    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. Manager: search Protoface, install protoface-nodes, restart, reload. Then Protoface → key (memory-only, gone on restart, so PROTOFACE_API_KEY_FILE for headless boxes).

    Where people get bitten

    The count mismatch is the headline. Two images and two transition helpers fails; you wanted one helper for two images. Count gaps, not images.

    The 25-second ceiling across all transitions is easy to blow through on a long sequence - and since each transition's length is chosen per item, it's on you to keep the sum under the cap.

    And the arithmetic of cost: a four-image sequence is one job, but it isn't one second of generation, so check the price before you queue a ten-frame storyboard. If the run times out, keep the generation_id and requeue or resume with the run id - don't increment it, and don't wipe ~/.cache/protoface-comfyui mid-recovery.

    CategoryProtoface/Video/pika

    Inputs (7)

    NameTypeDefaultDescription
    promptCOMBOThe positive prompt for the generation.
    imagesCOMBOPublic URLs, data URIs, or asset ids.
    resolutionCOMBO720pThe resolution of the generated video.
    seedCOMBOThe random seed to use for the generation. -1 means a random seed will be used.
    transitionsCOMBOConfiguration for each transition. Length must be len(images) - 1. Total duration of all transitions must not exceed 25 seconds. If not provided, uses default 5-second transitions with the global prompt
    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 (3)

    NameTypeDescription
    videoVIDEO—
    filesPROTOFACE_FILE—
    run idSTRING—