zhenzhen-topaz-upscale-fal
Topaz-grade upscaling and video enhancement, inside ComfyUI
- image
- video
- image
- video
- response
- url
The upscaling story in ComfyUI is usually "download an ESRGAN model and run it locally," and for stills that's still the right move. But the moment you want video enhancement - or the kind of heavy model-based restoration Topaz is known for - local gets expensive fast, and that's exactly what Comfly_topaz_upscale_fal is for. It's the pack's FAL route to the full Topaz model lineup: a bunch of image models (Standard V2, High Fidelity V2, Recovery, Redefine, Wonder…) and a wall of video models (Proteus, Artemis, Nyx, Gaia, Starlight…), all pay-per-call through the fal queue.
Think of it as the API answer to the upscaling doc's three-way split: it covers "more pixels," "more detail," and "more pixels over time" - but the video half is where this node has no realistic local competitor for most people. It returns both IMAGE and VIDEO tensors, so it drops into any workflow.
The inputs that matter
mode-imageorvideo. Picks which model list applies.image/video(orimage_url/video_url) - the source. Wire a tensor in or paste a hosted URL.image_model- defaults toStandard V2, the safe general-purpose pick.High Fidelity V2for photos,Recovery/Recovery V2for restoring old or damaged shots,Redefinefor generative upscaling (it takesprompt,strength,creativity,texture).video_model-Proteus(default) is the all-rounder;Nyxline for fast clean-ups,Artemisfor quality,Gaiafor animation/CGI,Starlightfor sharpening.upscale_factor- 1.0–8.0, 2.0 default. This drives the bill as much as the quality.face_enhancement- on by default; paired withface_enhancement_creativityandface_enhancement_strength. Great for portraits, and easy to overshoot - start mild.sharpen/denoise/fix_compression/recover_detail/halo/grain- the fine-tuning sliders. They default to-1, which means "let the API decide" - and honestly that's the right default for most jobs. Only reach for these when a specific artifact bothers you.target_fps- 0 = unset; setting it enables frame interpolation (the "make 24fps feel like 60fps" trick).prompt- only used by the Redefine models, which generate new detail.h264_output- off by default; turn on if you need an H.264 delivery file.
Outputs: image, video, url, and response. Only the output for your mode is meaningful - the other comes back empty.
Installing it
cd ComfyUI/custom_nodes
git clone https://github.com/T8mars/Comfyui-zhenzhen
or ComfyUI Manager (search "Comfyui-zhenzhen"), restart. Paste a zhenzhen token (overseas https://ai.t8star.org) into api_key. No models to download - this is a pure API node, though a serious video upscale job will put a dent in your credits.
Common issues
- The one output you need is empty - you're reading the wrong output for your
mode. Image mode fillsimage; video mode fillsvideo. - Video upscale is slow and pricey - a 1080p→4K video job is the most expensive thing in this pack. It's queue-based and can take a while; raise
max_poll_attemptsand don't re-run out of impatience. - Faces look plastic -
face_enhancementovershot. Dialface_enhancement_strengthdown or turn it off entirely for non-portraits.
The honest framing: for a single still image, a free local ESRGAN is probably the better call. But for video, or for the heavy Redefine-style restoration, this node is where "just make it look better" actually gets solved - and it's the only upscaler in this pack that does video at all.
Inputs (36)
| Name | Type | Default | Description |
|---|---|---|---|
| mode | COMBO | image | 2 options: image, video |
| imageopt | IMAGE | — | |
| videoopt | VIDEO | — | |
| image_urlopt | STRING | — | |
| video_urlopt | STRING | — | |
| api_keyopt | STRING | — | |
| image_modelopt | COMBO | Standard V2 | 10 options: Low Resolution V2, Standard V2, CGI, High Fidelity V2, Text Refine, Recovery, +4 |
| video_modelopt | COMBO | Proteus | 19 options: Proteus, Artemis HQ, Artemis MQ, Artemis LQ, Nyx, Nyx Fast, +13 |
| upscale_factoropt | FLOAT | 2.01–8 | — |
| output_formatopt | COMBO | jpeg | 2 options: jpeg, png |
| subject_detectionopt | COMBO | All | 3 options: All, Foreground, Background |
| crop_to_fillopt | BOOLEAN | false | — |
| face_enhancementopt | BOOLEAN | true | — |
| face_enhancement_creativityopt | FLOAT | -1.00-1–1 | -1 leaves API default/unset. |
| face_enhancement_strengthopt | FLOAT | 0.80-1–1 | -1 leaves API default/unset. |
| sharpenopt | FLOAT | -1.00-1–1 | -1 leaves API default/unset. |
| denoiseopt | FLOAT | -1.00-1–1 | -1 leaves API default/unset. |
| fix_compressionopt | FLOAT | -1.00-1–1 | -1 leaves API default/unset. |
| strengthopt | FLOAT | -1.00-1–1 | Text Refine only; -1 leaves unset. |
| creativityopt | INT | 00–6 | Redefine only; 0 leaves unset. |
| textureopt | INT | 00–5 | Redefine only; 0 leaves unset. |
| promptopt | STRING | Redefine prompt. | |
| autopromptopt | BOOLEAN | false | — |
| detailopt | FLOAT | -1.00-1–1 | Recovery V2 only; -1 leaves unset. |
| target_fpsopt | INT | 00–120 | 0 leaves unset. Setting FPS enables frame interpolation. |
| compressionopt | FLOAT | -1.00-1–1 | -1 leaves API default/unset. |
| noiseopt | FLOAT | -1.00-1–1 | -1 leaves API default/unset. |
| haloopt | FLOAT | -1.00-1–1 | -1 leaves API default/unset. |
| grainopt | FLOAT | -1.00-1–0.1 | -1 leaves API default/unset. |
| recover_detailopt | FLOAT | -1.00-1–1 | -1 leaves API default/unset. |
| h264_outputopt | BOOLEAN | false | — |
| image_wayopt | COMBO | base64 | 2 options: base64, image_url |
| video_wayopt | COMBO | upload | 2 options: upload, video_url |
| poll_intervalopt | INT | 61–60 | — |
| max_poll_attemptsopt | INT | 60010–3600 | Default 600*6s = 3600s timeout. |
| skip_erroropt | BOOLEAN | false | — |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |
| video | VIDEO | — |
| response | STRING | — |
| url | STRING | — |