Googly Eyes
LTX 2.3 LoRA that makes anyone in the input video have Googly Eyes. This workflow utilizes the Googlyeyes LTX 2.3 LoRA by TheBurgstall
About
This ComfyUI workflow applies TheBurgstall’s Googlyeyes LoRA for LTX-Video 2.3 to any input clip, turning ordinary footage into a playful googly‑eyes edit. It ingests your video with VHS_LoadVideo, trims the timeline using skip_first_frames and frame_count, and then routes the frames through the LTX 2.3 inference group (node id: 2e37ecc9-770a-4ac2-972c-e953901f49d3), where the Googlyeyes LoRA is loaded over the LTX‑Video 2.3 base model. Finally, VHS_VideoCombine reassembles the processed frames back into a video at the original frame rate.
Technically, the pipeline is video‑to‑video: frames decoded by VHS_LoadVideo are processed in sequence by the LTX 2.3 node that applies the LoRA to emphasize and transform eye regions while preserving overall scene structure. Because it runs through a video‑aware model pipeline, the effect tends to remain consistent across adjacent frames. The simple set of controls—especially skip_first_frames and frame_count—makes it practical to target only the part of the timeline you want, saving VRAM and time on longer clips.
What you provide
- Reading the workflow
Runs in ComfyUI. This workflow can't run on this page. Open it in Comfy Cloud with everything loaded, or download it for your own ComfyUI.
Try in CloudInside the workflow
A read-only preview of the node graph. Open it in Comfy Cloud or download it to edit the nodes.
Loading the graph
Open full-size workflow preview- Author
- Purz
Requires custom nodes
- Reading the workflow
Use this workflow from code
Generated from the workflow graph and inputs when possible; stored examples are shown otherwise. Review credentials and endpoints before running code, which may incur charges.
What you need
- Runs on
- Comfy Cloud
- Key
- COMFY_API_KEY
Needs a paid Cloud plan and credits.
# Python 3.10+: pip install comfy-sdk==0.4.0
import os
from comfy_sdk import Comfy
api_key = os.environ.get("COMFY_API_KEY", "").strip()
if not api_key: raise RuntimeError("Set COMFY_API_KEY")
os.environ.setdefault("COMFY_BASE_URL", "https://cloud.comfy.org")
client = Comfy(api_key=api_key)
workflow = client.workflows.from_json({
"5060": {
"class_type": "VHS_LoadVideo",
"inputs": {
"custom_height": 0,
"custom_width": 0,
"force_rate": 0,
"format": "AnimateDiff",
"frame_load_cap": 0,
"select_every_nth": 1,
"skip_first_frames": 0,
"video": "c0873338ef37397d5e883d902af4496d4bf87515681c312710e53f0a85d99d76.mp4"
},
"_meta": {
"title": "Load Video (Upload) 🎥🅥🅗🅢"
}
},
"5069": {
"class_type": "VHS_VideoCombine",
"inputs": {
"audio": [
"5060",
2
],
"crf": 13,
"filename_prefix": "iclora_comparison",
"format": "video/h264-mp4",
"frame_rate": [
"5151:5137",
5
],
"images": [
"5151:5125",
0
],
"loop_count": 0,
"pingpong": False,
"pix_fmt": "yuv420p",
"save_metadata": True,
"save_output": True,
"trim_to_audio": False
},
"_meta": {
"title": "video_compare"
}
},
"5152": {
"class_type": "VHS_VideoCombine",
"inputs": {
"audio": [
"5060",
2
],
"crf": 13,
"filename_prefix": "iclora_output",
"format": "video/h264-mp4",
"frame_rate": [
"5151:5137",
5
],
"images": [
"5151:5143",
0
],
"loop_count": 0,
"pingpong": False,
"pix_fmt": "yuv420p",
"save_metadata": True,
"save_output": True,
"trim_to_audio": False
},
"_meta": {
"title": "video_output"
}
},
"5160": {
"class_type": "VHS_VideoCombine",
"inputs": {
"crf": 13,
"filename_prefix": "iclora_input_resized",
"format": "video/h264-mp4",
"frame_rate": [
"5151:5137",
5
],
"images": [
"5151:5156",
0
],
"loop_count": 0,
"pingpong": False,
"pix_fmt": "yuv420p",
"save_metadata": True,
"save_output": True,
"trim_to_audio": False
},
"_meta": {
"title": "resized_input"
}
},
"5151:5097": {
"class_type": "PrimitiveInt",
"inputs": {
"value": 1280
},
"_meta": {
"title": "target_resolution_w"
}
},
"5151:5098": {
"class_type": "PrimitiveInt",
"inputs": {
"value": 1280
},
"_meta": {
"title": "target_resolution_h"
}
},
"5151:5110": {
"class_type": "LTXVConditioning",
"inputs": {
"frame_rate": [
"5151:5137",
5
],
"negative": [
"5151:5131",
0
],
"positive": [
"5151:5138",
0
]
},
"_meta": {
"title": "LTXVConditioning"
}
},
"5151:5111": {
"class_type": "LTXVConcatAVLatent",
"inputs": {
"audio_latent": [
"5151:5121",
0
],
"video_latent": [
"5151:5142",
2
]
},
"_meta": {
"title": "Concat AV Latent"
}
},
"5151:5112": {
"class_type": "EmptyLTXVLatentVideo",
"inputs": {
"batch_size": 1,
"height": [
"5151:5098",
0
],
"length": [
"5151:5126",
2
],
"width": [
"5151:5097",
0
]
},
"_meta": {
"title": "Empty LTXV Latent Video"
}
},
"5151:5113": {
"class_type": "LTXVCropGuides",
"inputs": {
"latent": [
"5151:5114",
0
],
"negative": [
"5151:5142",
1
],
"positive": [
"5151:5142",
0
]
},
"_meta": {
"title": "LTXVCropGuides"
}
},
"5151:5114": {
"class_type": "LTXVSeparateAVLatent",
"inputs": {
"av_latent": [
"5151:5122",
0
]
},
"_meta": {
"title": "Separate AV Latent"
}
},
"5151:5115": {
"class_type": "CM_FloatToInt",
"inputs": {
"a": [
"5151:5137",
5
]
},
"_meta": {
"title": "FloatToInt"
}
},
"5151:5116": {
"class_type": "CFGGuider",
"inputs": {
"cfg": 1,
"model": [
"5151:5146",
0
],
"negative": [
"5151:5142",
1
],
"positive": [
"5151:5142",
0
]
},
"_meta": {
"title": "CFG Guider"
}
},
"5151:5117": {
"class_type": "RandomNoise",
"inputs": {
"noise_seed": 711017647339860
},
"_meta": {
"title": "RandomNoise"
}
},
"5151:5118": {
"class_type": "ManualSigmas",
"inputs": {
"sigmas": "1.0, 0.99375, 0.9875, 0.98125, 0.975, 0.909375, 0.725, 0.421875, 0.0"
},
"_meta": {
"title": "ManualSigmas"
}
},
"5151:5119": {
"class_type": "KSamplerSelect",
"inputs": {
"sampler_name": "euler_ancestral"
},
"_meta": {
"title": "KSamplerSelect"
}
},
"5151:5120": {
"class_type": "LTXVPreprocess",
"inputs": {
"image": [
"5151:5136",
0
],
"img_compression": 18
},
"_meta": {
"title": "LTXV Preprocess"
}
},
"5151:5121": {
"class_type": "LTXVEmptyLatentAudio",
"inputs": {
"audio_vae": [
"5151:5132",
0
],
"batch_size": 1,
"frame_rate": [
"5151:5115",
0
],
"frames_number": [
"5060",
1
]
},
"_meta": {
"title": "Empty LTXV Latent Audio"
}
},
"5151:5122": {
"class_type": "SamplerCustomAdvanced",
"inputs": {
"guider": [
"5151:5116",
0
],
"latent_image": [
"5151:5111",
0
],
"noise": [
"5151:5117",
0
],
"sampler": [
"5151:5119",
0
],
"sigmas": [
"5151:5118",
0
]
},
"_meta": {
"title": "SamplerCustomAdvanced"
}
},
"5151:5124": {
"class_type": "LTXVAudioVAEDecode",
"inputs": {
"audio_vae": [
"5151:5132",
0
],
"samples": [
"5151:5114",
1
]
},
"_meta": {
"title": "LTXV Audio VAE Decode"
}
},
"5151:5125": {
"class_type": "ImageConcanate",
"inputs": {
"direction": "left",
"image1": [
"5151:5143",
0
],
"image2": [
"5151:5130",
0
],
"match_image_size": True
},
"_meta": {
"title": "ImageConcanate"
}
},
"5151:5126": {
"class_type": "GetImageSize",
"inputs": {
"image": [
"5151:5130",
0
]
},
"_meta": {
"title": "Get Image Size"
}
},
"5151:5127": {
"class_type": "PrimitiveBoolean",
"inputs": {
"value": True
},
"_meta": {
"title": "bypass_i2v"
}
},
"5151:5128": {
"class_type": "VAEDecodeTiled",
"inputs": {
"overlap": 64,
"temporal_overlap": 4,
"temporal_size": 512,
"tile_size": 512
},
"_meta": {
"title": "VAE Decode (Tiled)"
}
},
"5151:5129": {
"class_type": "ResizeImageMaskNode",
"inputs": {
"input": [
"5151:5139",
0
],
"resize_type": "scale by multiplier",
"resize_type.multiplier": 0.5,
"scale_method": "lanczos"
},
"_meta": {
"title": "Resize Image/Mask"
}
},
"5151:5130": {
"class_type": "ResizeImageMaskNode",
"inputs": {
"input": [
"5151:5129",
0
],
"resize_type": "scale to multiple",
"resize_type.multiple": 32,
"scale_method": "area"
},
"_meta": {
"title": "Resize Image/Mask"
}
},
"5151:5131": {
"class_type": "CLIPTextEncode",
"inputs": {
"clip": [
"5151:5135",
0
],
"text": "pc game, console game, video game, ugly, 3d render, photo, still, static, slow"
},
"_meta": {
"title": "CLIP Text Encode (Negative Prompt)"
}
},
"5151:5132": {
"class_type": "LTXVAudioVAELoader",
"inputs": {
"ckpt_name": "ltx-2.3-22b-dev-fp8.safetensors"
},
"_meta": {
"title": "Load LTXV Audio VAE"
}
},
"5151:5133": {
"class_type": "CheckpointLoaderSimple",
"inputs": {
"ckpt_name": "ltx-2.3-22b-dev-fp8.safetensors"
},
"_meta": {
"title": "Load Checkpoint"
}
},
"5151:5134": {
"class_type": "LoraLoaderModelOnly",
"inputs": {
"lora_name": "ltx-2.3-22b-distilled-lora-384.safetensors",
"model": [
"5151:5133",
0
],
"strength_model": 0.5
},
"_meta": {
"title": "Load LoRA"
}
},
"5151:5135": {
"class_type": "LTXAVTextEncoderLoader",
"inputs": {
"ckpt_name": "ltx-2.3-22b-dev-fp8.safetensors",
"device": "default",
"text_encoder": "gemma_3_12B_it.safetensors"
},
"_meta": {
"title": "Load LTXV Audio Text Encoder"
}
},
"5151:5136": {
"class_type": "ResizeImageMaskNode",
"inputs": {
"input": [
"5151:5145",
0
],
"resize_type": "match size",
"resize_type.crop": "center",
"resize_type.match": [
"5151:5130",
0
],
"scale_method": "area"
},
"_meta": {
"title": "Resize Image/Mask"
}
},
"5151:5137": {
"class_type": "VHS_VideoInfo",
"inputs": {
"video_info": [
"5060",
3
]
},
"_meta": {
"title": "Video Info 🎥🅥🅗🅢"
}
},
"5151:5138": {
"class_type": "CLIPTextEncode",
"inputs": {
"clip": [
"5151:5135",
0
],
"text": "googlyeyes"
},
"_meta": {
"title": "CLIP Text Encode (Positive Prompt)"
}
},
"5151:5139": {
"class_type": "ImagePadKJ",
"inputs": {
"bottom": 0,
"color": "0, 0, 0",
"extra_padding": 0,
"image": [
"5060",
0
],
"left": 0,
"pad_mode": "color",
"right": 0,
"target_height": [
"5151:5150",
1
],
"target_width": [
"5151:5149",
1
],
"top": 0
},
"_meta": {
"title": "ImagePad KJ"
}
},
"5151:5140": {
"class_type": "VHS_VideoCombine",
"inputs": {
"audio": [
"5060",
2
],
"crf": 12,
"filename_prefix": "AnimateDiff",
"format": "video/h264-mp4",
"frame_rate": [
"5151:5137",
5
],
"images": [
"5151:5144",
0
],
"loop_count": 0,
"pingpong": False,
"pix_fmt": "yuv420p",
"save_metadata": True,
"save_output": False,
"trim_to_audio": False
},
"_meta": {
"title": "Video Combine 🎥🅥🅗🅢"
}
},
"5151:5141": {
"class_type": "LTXVImgToVideoConditionOnly",
"inputs": {
"bypass": [
"5151:5127",
0
],
"image": [
"5151:5120",
0
],
"latent": [
"5151:5112",
0
],
"strength": 0.7,
"vae": [
"5151:5133",
2
]
},
"_meta": {
"title": "🅛🅣🅧 LTXV Img To Video Condition Only"
}
},
"5151:5142": {
"class_type": "LTXAddVideoICLoRAGuide",
"inputs": {
"crop": "disabled",
"frame_idx": 0,
"image": [
"5151:5144",
0
],
"latent": [
"5151:5141",
0
],
"latent_downscale_factor": 1,
"negative": [
"5151:5110",
1
],
"positive": [
"5151:5110",
0
],
"strength": 1,
"tile_frames": 97,
"tile_overlap": 64,
"tile_size": 256,
"use_streaming": False,
"use_tiled_encode": False,
"vae": [
"5151:5133",
2
]
},
"_meta": {
"title": "🅛🅣🅧 Add Video IC-LoRA Guide"
}
},
"5151:5143": {
"class_type": "Float32ColorCorrect",
"inputs": {
"brightness": 0,
"clamp_output": False,
"contrast": 1,
"exposure": 0,
"gain_b": 1,
"gain_g": 1,
"gain_r": 1,
"gamma": 0.5,
"image": [
"5151:5154",
0
],
"lift_b": 0,
"lift_g": 0,
"lift_r": 0,
"luma_space": "Rec.709 / sRGB",
"saturation": 1
},
"_meta": {
"title": "◎ Radiance Float32 Color Correct"
}
},
"5151:5144": {
"class_type": "Float32ColorCorrect",
"inputs": {
"brightness": 0,
"clamp_output": False,
"contrast": 1,
"exposure": 0,
"gain_b": 1,
"gain_g": 1,
"gain_r": 1,
"gamma": 2,
"image": [
"5151:5156",
0
],
"lift_b": 0,
"lift_g": 0,
"lift_r": 0,
"luma_space": "Rec.709 / sRGB",
"saturation": 1
},
"_meta": {
"title": "◎ Radiance Float32 Color Correct"
}
},
"5151:5145": {
"class_type": "LoadImage",
"inputs": {
"image": "642ef66b933861a25a7a8ad3b46f3a7005c783d53c3971392a84595ae4dd4b04.png"
},
"_meta": {
"title": "Load Image"
}
},
"5151:5146": {
"class_type": "LoraLoaderModelOnly",
"inputs": {
"lora_name": "ltx-2.3-googlyeyes.safetensors",
"model": [
"5151:5134",
0
],
"strength_model": 1
},
"_meta": {
"title": "Load LoRA"
}
},
"5151:5148": {
"class_type": "ComfyMathExpression",
"inputs": {
"expression": "a / b",
"values.a": [
"5151:5097",
0
],
"values.b": [
"5151:5098",
0
]
},
"_meta": {
"title": "ratio"
}
},
"5151:5149": {
"class_type": "ComfyMathExpression",
"inputs": {
"expression": "max(a, b * c)",
"values.a": [
"5151:5137",
3
],
"values.b": [
"5151:5137",
4
],
"values.c": [
"5151:5148",
0
]
},
"_meta": {
"title": "target_w"
}
},
"5151:5150": {
"class_type": "ComfyMathExpression",
"inputs": {
"expression": "max(b, a / c)",
"values.a": [
"5151:5137",
3
],
"values.b": [
"5151:5137",
4
],
"values.c": [
"5151:5148",
0
]
},
"_meta": {
"title": "target_h"
}
},
"5151:5154": {
"class_type": "VAEDecode",
"inputs": {
"samples": [
"5151:5113",
2
],
"vae": [
"5151:5133",
2
]
},
"_meta": {
"title": "VAE Decode"
}
},
"5151:5156": {
"class_type": "ImageResizeKJv2",
"inputs": {
"crop_position": "center",
"device": "cpu",
"divisible_by": 2,
"height": [
"5151:5098",
0
],
"image": [
"5060",
0
],
"keep_proportion": "crop",
"pad_color": "0, 0, 0",
"upscale_method": "lanczos",
"width": [
"5151:5097",
0
]
},
"_meta": {
"title": "Resize Image v2"
}
}
})
# run() also passes api_key to the partner nodes in this workflow.
job = client.run(workflow, api_key=api_key)Questions & answers
You need the LTX‑Video 2.3 base model and TheBurgstall’s Googlyeyes LoRA. Make sure both are installed and selectable in the LTX 2.3 node/group (id: 2e37ecc9-770a-4ac2-972c-e953901f49d3).
Yes. It can work on both. Best results come from clips with clear, front‑facing eyes and minimal motion blur. Very dark, low‑contrast, or profile shots may reduce the effect’s consistency.
Process shorter segments first by lowering frame_count, trim with skip_first_frames, and keep your input resolution modest. Scale up or extend the timeline only after confirming quality and performance.
This workflow focuses on visual processing. If your VHS_VideoCombine version doesn’t mux audio, export audio from your editor and remux it with the processed video in a video editor or command‑line tool.