Continuity Screen Replace
Put your real screenshot on the phone in the render
- image
- IMAGE
Every video model worth running draws a smartphone beautifully and the app on its screen as soup. That's not a prompt problem - it's the same reason signage comes out garbled in AI images. The model never saw your screenshot, and a latent has no pixels to spend on small text in the corner of a frame. Stop asking it.
Continuity Screen Replace does the asking instead. The model is shown a flat green tracker where the screen is, cited in the prompt like any other reference (@phone-1). After decode this node finds that green, solves the screen's four corners, and warps your real picture or clip onto it - your file's text, pixel for pixel, even on a fast low-res render.
In normal use you never place it - the Creator writes it into the graph after the decode, and after ReDetail and the DLSS refiner, because both would soften text that's meant to be your file's own. It's still in the node search under Continuity, loads no model, and works on any IMAGE with one of the pack's trackers in it.
How the replacement actually works
The pass keys the tracker by hue (±35° around green at 120°), with the saturation floor measured relative to the most saturated pixels in the band.
Where the screen is comes from its markers, not its outline: a hand crossing an edge drags the outline with it, but a marker is a point on the screen's own plane and a missing one is just a missing point. The clearest frame gives a four-sided fit as a first guess, then corners are solved per frame, forwards and backwards, which keeps that hand in front instead of dragging the screen along. The device's turn is read off them too, so a phone on its side shows its content on its side.
Then it composites: the keyed region clipped to the fitted quad so the rim the model leaves at the bezel is covered, your content shaded by the light around the screen (one in a dim room comes out dim), given glow and grain (that's seed) and despilled so the key's light doesn't stay on the hand holding the phone. A finger, or H3's dynamic island, stays on top.
The inputs that matter
- image - the render, as a normal IMAGE. Batches are fine.
- screens_data - the JSON the Creator writes: a list of screen dicts. Hand-wiring it yourself: the flat shape the Creator emits, all keys present:
[{"handle": "phone-1", "device": "phone", "width": 1080, "height": 2340,
"filename": "app-screen.png", "kind": "image", "fit": "fill", "offset_s": 0.0,
"when_short": "hold", "cuts": "continue", "pattern": "none", "colour": "green"}]
filename is a file in ComfyUI's input/ folder, device the tracker's shape (phone / tablet / laptop / monitor / tv / custom), width/height that tracker in pixels, fit is fill, fit or stretch; for clip content, offset_s is where it starts and when_short (hold / loop / first) is what happens when it runs out.
- seed - only the grain generator; nudge it if a seam of noise looks wrong.
- report_to - the node id whose face a warning appears on. The Creator fills in the card's id; wiring by hand, leave it empty and read the console.
One output, an IMAGE - into SaveImage, or whatever used to follow your decode.
Install
Manager, search Continuity. Or by hand:
cd ComfyUI/custom_nodes
git clone https://github.com/roadmaus/ComfyUI-Continuity
Restart ComfyUI. No requirements.txt, nothing to pip install (numpy, scipy, torch and Pillow are ComfyUI's own) and no weights - this node loads no checkpoint. The one install trap is the rename: if you already have a ComfyUI-MiniMax-Creator folder, git pull inside it. Do not clone this one beside it - the node ids survived the rename so old workflows keep loading, so two folders are two packs registering the same ids and the node disappears from the search under both names. Delete one and restart.
Where people get burned
- Nothing happens. No tracker colour in the picture means it finds the screen in 0 of 1 frames, warns, and returns the image unchanged. Correct behaviour, not a silent failure - read the console.
- Another green wins. The key is a hue band, so a green wall or lawn can out-area your phone. Switch the screen's key colour (magenta, blue, white) - a changed tracker is a different reference picture, so the render is made again.
- Text still soft. Put this node last, after any upscaler or refiner - both re-draw frames, and both will smear text meant to be your file's own.
- It's not 4K, and strict about paths. Content is resampled to about twice the size the screen reaches in the frame, never past the tracker's own size - a phone tracker is 1080×2340, so a 4K phone screen gets 1080p's worth of pixels.
width/heightmust be within 2–4096, content must live underComfyUI/input/, and a shot carries at most two screens.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | — | |
| screens_data | STRING | [screen, ...] as the Creator writes it. | |
| seed | INT | 00–2147483647 | — |
| report_to | STRING | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | — |