Kling Image Omni
Generate With a Reference Image, by Mentioning It in the Prompt
- auth
- image_1
- image
- url
- task_id
Kling Image Omni is the pack's image-conditioned generation node: you hand it a reference image plus a prompt, and you get a new image that incorporates both - subject reimagined, style transferred, composition edited - all driven by how you reference the image inside the prompt. It's Kling's omni-image model (the kling-image-o1 engine) exposed in one node, and it's the closest thing in this pack to the "put my character in this scene" pattern people actually want from reference-based generation.
The mechanism is what makes it interesting: the reference isn't a separate strength slider, it's referenced by name. You write your prompt using @image1 to point at your input image - "the woman from @image1, now standing in a neon-lit Tokyo alley at night." The model reads the prompt, pulls the reference, and generates accordingly. It's a different mental model than ControlNet-style reference handling, and once you've got it, it's actually quite flexible.
How it works
Inputs:
auth- the KLING_AUTH object.prompt- multiline. Use@image1to reference the input image. This is the key skill; the tooltip spells it out: "Use @image1 to reference input."image_1- the reference image (an IMAGE tensor). One reference slot in this version; the pack's video-side Omni node uses the same@image1,@video1referencing syntax for its multi-input version.aspect_ratio- one of the seven Kling ratios, default1:1.resolution-1kor2k.
Outputs: image (IMAGE), url, and task_id - the standard image trio.
How to actually prompt it
- Always reference the image. If your prompt doesn't mention
@image1, you're basically doing plain text-to-image with an unused input sitting there. The reference is invoked by naming it. - Describe the transformation, not the whole scene. "The character from @image1 in a cyberpunk market, rain-slicked streets, cinematic lighting" tells the model what changes (setting, mood) while the reference anchors what stays (the character).
- Keep the reference clean. A focused subject on a simple background transfers far better than a cluttered group shot. Garbage in, garbage out - the reference constrains identity, and a messy one constrains it messily.
- It's one reference, not a collage. For multi-image consistency, Kling's Multi-Shot node is the better tool; Image Omni is about transforming a single input.
Where it fits
This is your identity-preservation-ish node in the pack's image line: keep a character's look while changing everything around them. It pairs naturally with Image Gen (generate the character, then Omni it into scenes) and feeds Image-to-Video for the animated follow-through. If you're building "consistent character, many settings" work, this is the node you'll reach for before the more specialist ones.
Common issues
- "Image ignored / result looks like plain T2I" - you forgot
@image1in the prompt. It's the single most common miss, and the fix is one token. - Weak resemblance - the reference is a cluttered or heavily filtered photo. Clean it up, or accept that strong style-transfer prompts will push the identity further away.
- One-reference limit surprises you - that's this node; the multi-reference omni workflows (with
@image1,@image2,@video1) live on the video side of the pack.
Install
Part of ComfyUI-Kling-Direct:
cd ComfyUI/custom_nodes
git clone https://github.com/IxMxAMAR/ComfyUI-Kling-Direct
or ComfyUI Manager → search "Kling Direct" → install → restart. No models, no GPU, no extra dependencies. The learning curve is one sentence long - remember the @image1 - and then it's a very capable reference node.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| auth | KLING_AUTH | — | |
| prompt | STRING | Text prompt for omni image generation. Use @image1 to reference input. | |
| image_1 | IMAGE | — | |
| aspect_ratio | COMBO | 1:1 | Output aspect ratio. |
| resolution | COMBO | 1k | Output resolution. |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |
| url | STRING | — |
| task_id | STRING | — |