Yet Another Workflow : easy t2v + i2v
I've aimed at a user-friendly UI for ComfyUI. There's a balance between complexity and ease of use, and this workflow aims to give you useful controls with clear guidance on what you need to care about. I hope these will be helpful to anyone strugging with quality and the general UI-isms of ComfyUI. I've taken the time to color code and add lots of notes. Please read the notes, I've tried to make them useful!
This is the workflow I use, it's not aimed at a skill level. It's designed to be easy to use and adjust with some UI concessions and labeling to ensure you can pilot it with less experience in a way that is more sophisticated than the official example workflows, which can be easy to break.
The primary goal with this workflow is to give you a strong foundational place to generate either text to video (T2V) or image to video (I2V) outputs without having to fuss too much. Lightx2\ning is on by default. (It's an accelerator that trades variety for generation speed.)
The green controls are the stuff you generally want to mess with.
The secondary goal here is to provide a consistent interface to interact with different samplers.
Versions
The "main" workflows (the one's without parenthetical version labels) support the basic ksampler node, but also includes a toggle to enable the ClownsharKSampler sampler and the TripleKSampler once you have some experience and want to mess around.
I generally recommend the main workflow. It's my daily driver. It offers the most control with the least fuss. Each version has its place tho!
If you are extremely new to Comfy and Wan? Consider using the MoE version. It removes a few nodes and options while providing mostly the same interface with slightly less visual complexity to help you get acclimated. Once you get comfy with this, step up up to the main version for more options.
Want better edge case prompt adherance? I've created a version of the workflow that supports the WanVideo nodes. I don't recommend using this one until you're more comfy with the standard version. It has increased visual complexity. These nodes work completely different to other systems, and I hope to make it more accessible by providing you with the same interface to engage with it. WanVideo tends to produce completely different results, so it can be another intersting thing to explore.
Want more fluid motion and jiggle? I've also created a Smooth Mix version to support the Smooth Mix checkpoint. What is it? Like with Stable Diffusion checkpoints, it merges many LoRA's into the base Wan 2.2 model to create a more opinionated model to create videos with. This version follows the recommendations in their official workflow, while offering you the improved YAW UI experience. I like this checkpoint for it's detail and motion, but it is also more prone to motion artifacts. It also has some built in support for anime styles. A self-forcing LoRA (Lightx\ning) is built-in, so the sampler options are kept simple for this one. Please note that, due to the additional 80gb of size, my RunPod template will only include this as an optional download. Also checkout the LoRA version, which I find much more useful as you can adjust the strength of the effect.
Expect an update of the RunPod template to include the new templates soon after.
As of version v0.38, I'm doing a revision of this article so patchnotes will be removed for clarity. The changes are noted in the file details section (and in the templates themselves).
Like it?
Give it a like! Tag it as a Resource when you use it! Support on Patreon or a tip on Ko-fi are also welcome. Yellow Buzz will go towards promoting awareness here on Civit.
Need help?
I like helping people get going with this stuff, so if you want help message me. If you want extended one-on-one help, there's an option on the Patreon. I'm happy to walk you through the details, answer your questions, and give you some extra tips and tricks, and scripts. I've done this for a few folks, I'll save you money and headaches.
I've also written an article here on getting it going with my Runpod template. The template will vastly expedite and simplify getting things up and running.
General Advice
Make lots of videos! Post your videos! Don't fuss with the tech! Be smart about how you spend your time with this stuff. It's easy to burn out if you spend more time trying to get things to work than making videos you like. That's really why I'm posting this.
Use RunPod. Use the RTX 5090 or the H100 SXM. Use my Wan 2.2 template. If you've not used RunPod before, sign up with my link; we'll both get some free credit. See the article for more.
If you use a service like RunPod, if you're doing I2V, it can be smart to have your images ready in advance to make sure the server stays busy while you are using it.
If you run this outside of Runpod, you'll need to install some custom nodes. To do that, click the "Manager" button at the top of the Comfy interface, and then click the "Install Missing Custom Nodes". Click "Install" on each one - I recommend in order; you'll need to wait till each has installed. Do not bother restarting ComfyUI until they are all installed. The RunPod template has them preinstalled. (There's a manual patch for the LTXFilmGrain node here.)
If the wires bother you, there's a button in the bottom right on the floating UI that will hide them.
What is Lightx2\ning? That's just my short hand for refering to Lightx2 and Lightning (which is just the Wan 2.2 version) self-forcing LoRA's .
I've made it easy to turn off Lightx2\ning as well, if you want to try without, but note that it's much slower! I really only recommend this with the H100 SXM. Do try though, especially with text-to-video! The full Wan 2.2 has some amazing capability.
This workflow is setup for .safetensors models, but you can use GGUF if you want to make the changes node changes.
If the having the Clownshark/TripleK sampler in the UI is distracting, you can delete the group with no negative consequence. (You could also delete the purple mute node for the sampler selection as well.)
Costs?
I'm updating the data here to reflect additional testing: In case you are curious, the example videos take around 4.5 / 3 minutes (720x1280). (I don't normally do that resolution when I'm just making stuff and experimenting.) I can generally make nice looking videos in 1-2 minutes. I'm generally running at either $0.93 or $2.69 per hour with the RTX 5090 or the faster but more expensive H100 SXM; in generally I think between 15 to 68 high quality videos per hour is what I tend to see, so about $0.02 - $0.13 per video, (rounding up). (With a session startup cost for loading the pod, probably adding a cent to so to that.) 1 to 2 minutes is probably my gen sweet spot for time, so it's either great or a bit over my ideal depending on resolution/scene complexity, but that's a cost consideration.
Troubleshooting
If a node is missing (bright thick red outline with a warning when you open the workflow), you can install them by going to Manager > Install Missing Custom Nodes, and pressing Install on any the nodes that show up there.
If you are getting any errors related to a custom node, it's possible something has changed recently in the software. It might be useful to change a version back to the last "stable" build in these situations.
For example, the nightly build of WanVideoWrapper might introduce an error that wasn't there last time. With a workflow open, you can go to Manager > Custom Nodes in Workflow. This will show you all of the custom nodes. If you click, Switch Ver, you can see all of the releases. Consider trying the first numbered on at the top of the list.
If that doesn't work, or there seem to be more significant problems and you are using RunPod, you may have forgotten to select CUDA 12.8. Try restarting the server. If that doesn't work, terminate the pod, and make a new one. This will fix a surprising number of possible issues.
Longer video generation support?
One day. Probably.
I'm always looking for a good solution to this. I've not found a good solution to this problem yet that isn't very complex. To talk through them a bit:
There are some specialized solutions like Wan Animate and Infinite Talk that achieve longer videos by utilizing other technology to specific ends (remapping motion/making a talking head video), and while VACE is promising, it's very complex to setup and use and requires multiple steps. There are also techniques that involve making keyframes for your scene and using first/last frame to fill in the actual animations, and you can use interpolation as a post processing step to blend those clips in a way that can hide seams. Most of this also requires color correction or ipadapter to keey faces consistent.
The SVI LoRA is a newer technique. It stabilizes consistency across videos, but lowers the base quality (everything gets less sharp), and the scenes become volitile to big changes while increasing the overal consistency across multiple videos. It's not perfect, and cannot go infinite, but if you're dead set on longer videos, this is a decent technique. It doesn't meet my quality bar. I find the overall drop in fidelity to be disappointing.
At the end of the day, it's either a ton of work to make a still-short video, or you've introduced a ton of compromise on what's already a compromise. That's not what I'm selling here.
I see this as the biggest problem in the AI video space, whether you do this as a hobby, like most of us, or you're a company trying to figure out how to seriously use this stuff commercially. These problems are also not unique to Wan, though they vary from company to company. There's a technology problem for how to extend video, so I suspect that there's a lot of economic pressure and research effort that will probably lead to better videos that aren't "more VRAM", as that doesn't scale well.
To be clear: You can do this now by using the last frame as the first frame. v0.38 adds that capability. You'll generally get 2 or 3 decent extensions, but you're taking a quality hit each time, but any camera movement or motion may not look consistent between clips. (Using the same seed, sadly, not not ensure consistency.)
Sound?
Once it get's much better. Sora 2 and the other private models can do amazing sound, but the available public models create audio that I really dislike. You can certainly add it yourself, if you like it, but I won't officially support until it improves. LTX-2 can do decent sound and lipsync, but has a lot of issues which I'll cover elsewhere.
Description
Expansion of the Post-Processing section
Added optional support for RIFE-VFI (Read note in Post section!)
Added support for End Frame images
New notes added to The Codex
Additional layout adjustments
FilmGrain moved to custom package
FAQ
Comments (51)
Appreciate the awesome work! My one thing I am trying to determine on the WAN2.2, I see the math function for the length tied to T2V, I have been perusing for awhile determining where you're setting length/frames for I2V, previously I always used 81/5s, etc. If anyone could point me in the right direction, unless I'm missing something silly. Thanks!
The length is the slider here - representing seconds. It's next to the image size ("Width and height from aspect ratio 🪴"). The UI is doing the math for you. Most people don't think in the frames, so it's a practical decision. (The node it's connected to, which makes the latent, is tucked under the image size node.)
@boobkake22 Appreciate the response. Attaching an imgur link, I don't know if the length->mathFunc is appropriately working. My output is in a VLC player using a default 5 second output. Sorry if this is a dumb question, when I set length 10, do I have to do anything further to ensure the value is passed appropriately? https://imgur.com/a/iIFp6I0
@CircuitousClaudette Hmm. Interesting. I had someone else report this to me for an older version. I may have posted a version with the issue here as well. (I post this in a few places.) Can you confirm which version this is?
@CircuitousClaudette I've also pushed an updated version this evening, so do give that a shot as well. It may address the issue more directly.
@boobkake22 Appreciate it, unfortunately something is going on with the YAW_2.2_T2V+I2V_v0_38b_WanVideo, applied the same settings, Loras and models and it appears when it gets to: https://imgur.com/a/TVbwTPX
It's hung in some capacity. I let it run for ~30 minutes just to ensure it wasn't an issue on my end, the YAW_2.2_T2V+I2V_v0_38_WanVideo runs in ~15m with current configuration, just the issue with mathFunc/length.
EDIT: Tried the 38_WanVideo version to cover all potential testing outlets, the T2V output when using a similar variation of settings:
---------- Sampling start ----------
161 frames at 640x896 (Input sequence length: 91840) with 3 steps
It appears the mathFunc is attaching appropriately for T2V, but not I2V.
But, now it's doing the same thing as the YAW_2.2_T2V+I2V_v0_38b_WanVideo, hanging at WanVideoSampler. Interesting.<----RESOLVED. Will try the same resolution on I2V_v0_38b_WanVideo
EDIT 2:
T2V YAW_2.2_T2V+I2V_v0_38_WanVideo generates 10 second video around 2-2.5x time, which is to be expected.
YAW_2.2_T2V+I2V_v0_38b_WanVideo is still encountering the problem below. Did a fresh reboot of the PC to see if that would resolve, it did not.
YAW_2.2_T2V+I2V_v0_38b_WanVideo output:
Transformer weights loaded:
Device: cuda:0 | Memory: 7,739,175.29 MB
Using 1053 LoRA weight patches for WanVideo model
------- Scheduler info -------
Total timesteps: tensor([1000, 962, 881, 739, 504, 187], device='cuda:0')
Using timesteps: tensor([1000, 962, 881], device='cuda:0')
Using sigmas: tensor([1.0000, 0.9622, 0.8811, 0.7394], device='cuda:0')
------------------------------
Received 6 cfg values, but only 3 steps. Slicing cfg list to match steps.
Using per-step cfg list: [2.0, 1.0, 1.0]
Rope function: comfy
---------- Sampling start ----------
81 frames at 640x896 (Input sequence length: 47040) with 3 steps
0%| | 0/3 [00:00<?, ?it/s]
@CircuitousClaudette Huh. Interesting. Can you confirm this is your local machine? What's your GPU?
And just to restate, because there's a lot of info. The problem you're running into is that the workflow seems to hang during the high noise generation process with v0.38b (WanVideo)? Does it always pause at 0%?
@boobkake22 Hey, I try to be thorough, everything else is working great, so I appreciate the assist.
GPU: Nvidia RTX 3060, 12GB
CPU: i7-14700k
RAM: 64GB
Running:
Local PC Anaconda ENV, Python/CUDA. I have tried 2-3 times during debugging, it hangs at this step: https://imgur.com/a/2PNDYd5. I've let it run for 15-1hr, it does not pass this.
@CircuitousClaudette Testing now. I'm getting similar behavior in my Rodpod instance. I'll report back when I figure out what's happening.
I was able to get it to work, but I needed to rollback WanVideoWrapper to version 1.3.9. So you helped me find a bug on my end at least. 🤪 (Still a bit slow to get going, but working.)
It's possible that the nodes have changed in some way in 1.4.0 that my workflow isn't accounting for? I'll have to investigate further to know for sure.
I don't keep parity with newest Comfy because it seems like stuff breaks and gets slow pretty often, so I'm more cautious in my upgrades, since everything already works for Wan 2.2 purposes.
I plan to do a big upgrade to everything at some stage to get everything Nodes 2.0 compatible, but that's a bigger project.
@boobkake22 If you don't mind pinging me when it's updated? I appreciate it! Happy to find bugs. :)
@CircuitousClaudette If you like the workflow, it will tell you when updates are published. (I might remember, but it's an easy thing to lose track of.)
While I don't want to push this as a major update, I've performed a minor update to all v0.38 workflows:
- FilmGrain moved to custom package that removes the dependancy on the LTXVideo custom node package. I've moved the useful node to its own package so it's a super tiny install. The node name has been changed from LTXVFilmGrain to FilmGrainLTXV to prevent potential conflicts if you have both packages installed. The node should now be available in the ComfyUI-Manager.
-ClipMerge removed from the standard version to reduce errors on local installations (this change was already made on MoE and SmoothMix and doesn't apply to WanVideo).
Put a link in your workflow for your film grain node (which is pretty good, btw). WHat's up with the sampler se;lecetors? Does it get around the incompatability issue where the other ones don't work?
I also won't outbid you on workflows. Excellent job all around 👍
@lonecatone23 It's not my film grain node! I've just extracted the LTXV one and removed the dependency on their naming script, and I've left the original author credit in place. The node is very simple. It's a shame it "trapped" in the LTXV package, considering how much active development is going on for it.
"WHat's up with the sampler se;lecetors? Does it get around the incompatability issue where the other ones don't work?"
Say more?
@boobkake22 when you plug a schedule selector into a detailer or Ksampler, sometimes it rejects it. I had to use somethign called an SD any converter node, which naturally doesn't automaticlaly download. Leave it to my overly compllicated ass to make things...well... complicated. I've found no workaround.
I'd still put a link to your repo.
@lonecatone23 Oh interesting. I've not run into that problem. My alternate samplers haven't errored for me, though I don't use them very often. And the SmoothMix version doesn't seem to have issue. I'll keep it in mind tho, as I plug away on iteration.
@boobkake22 I just plugged one into your workflow. It doesn't work. Your selectors do> i'll probably just try those out.
How are the sample images doing such nice jumpcuts? I copied the prompts into comfy and none of my results are jumpcuts. Are they using first and last frame?
The samples don't have jump cuts, do you mean my other videos that use the workflow? There are a few ways. Check out Cinematic Hard Cut. Many also use the iGoon LoRA's which are not on the site, so cannot be tagged as resources.
@boobkake22 https://civitai.com/images/119797860 something like this. I'm assuming it uses something that can't be tagged
@ceelogreen855 That one is specifically an iGoon LoRA, but I've been super impressed with how capable Cinematic Hard Cut has been recently.
This workflow is god-tier D':. One stupid question though. You said the Lightning lora is imbedded in here but I don't see it anywhere on my workflow. I can tell it's here from the movements I am seeing in my generations, but for that life of me I don't see it. I'd like to experiment with it.
EDIT: I am using the 38B smoothmix workflow btw
Glad you're having a good experience with it. So Smooth Mix is what we call a "checkpoint", it's a merge of many LoRA's with a base model. So one of the LoRA's merged in was lightx2. That changed with i2v v2 model which makes things messy, so that one is weird and presents some problems I'm still considering. (You can technically use it with the standard workflow, but it's a bit more complicated.)
@boobkake22 Ah okay I'll keep experimenting then. Great workflow though, its very accessible and has all the knobs and buttons to play with thanks, great work dude.
Good day. I can't install custom node "Comfyui-ergouzi-Nodes". Say "import failed". How to do with this problem? And can i work with this workflow with rtx 4070 super 12b?
Traceback (most recent call last):
File "C:\Users\Mad Batman\Downloads\SwarmUI\dlbackend\comfy\ComfyUI\custom_nodes\Comfyui-ergouzi-Nodes\nodes\egtxwhlj.py", line 8, in <module>
import pilgram
ModuleNotFoundError: No module named 'pilgram'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\Users\Mad Batman\Downloads\SwarmUI\dlbackend\comfy\ComfyUI\nodes.py", line 2216, in load_custom_node
module_spec.loader.exec_module(module)
File "<frozen importlib._bootstrap_external>", line 999, in exec_module
File "<frozen importlib._bootstrap>", line 488, in callwith_frames_removed
File "C:\Users\Mad Batman\Downloads\SwarmUI\dlbackend\comfy\ComfyUI\custom_nodes\Comfyui-ergouzi-Nodes\__init__.py", line 38, in <module>
from .nodes.egtxwhlj import EGWHLJ
File "C:\Users\Mad Batman\Downloads\SwarmUI\dlbackend\comfy\ComfyUI\custom_nodes\Comfyui-ergouzi-Nodes\nodes\egtxwhlj.py", line 10, in <module>
subprocess.check_call(['pip', 'install', 'pilgram'])
File "subprocess.py", line 413, in check_call
subprocess.CalledProcessError: Command '['pip', 'install', 'pilgram']' returned non-zero exit status 1.
That node pack is one of the more problematic ones, but the routing node it uses is core to how the template works. I might extract the node sometime, because it can be fussy into install.
I'd recommend trying to install the node pack a few times. It will eventually install. Because comfyui is built on python, there can be a number of dependancies that come into comflict, depending on what you've already installed.
@boobkake22 i press "Try to fix" multiple times, try to uninstall it, just nothing happened. I can uninstall only manually, but then try to install, again, all same error all the time. I done that 18 times what i count, and some i don't count. No changes, unfortunately.
@cheesek When I've run into it before it tends to fix, so my apology. Have you tried installing pilgram? pip install pilgram
I'm curious what error it's giving since it seems like that's the part of the install that's failing but also not revealing in the log as shared.
@boobkake22 i don't really get it how. I find in custom node manager "pilgram" something, install and it didn't help. I install latest version of python, but this command didn't recognize. maybe need to try older version.
@cheesek Ah I see, sorry. I didn't mean to assume knowledge. Pilgram is a Python package. You can install it using pip, which manages installed Python packages. It's a bit hard to advise local installs, because things can be quirky, but Python is standardized, so if you can access the version your Comfy is using, you should be able to do the install. pip is installed with Python in modern versions, so you may be running the command in the wrong place. (Python can run both system wide and bundled with software as a unique version.)
Hello, I can't seem to find the GIMM Node or the Film Grain node in the Post Processing Group. Comfy's "Install Missing Nodes" doesn't pull anything up because it's missing in cache. Do you have an alternative way to install these nodes?
They're both definitely in the registry, but here are the URL's:
https://github.com/kijai/ComfyUI-GIMM-VFI
https://github.com/boobkake22/ComfyUI-FilmGrainLTXV
Thanks! I was running a really old Comfy version which explains my issue.
@azn_yumashev891 Yah, my Wan Runpod template is using a slightly older version still that definitely works well. Comfy is in such a rapid state of development it's a bit tricky to ensure an update doesn't make performance for something older worse.
The problem I have with this workflow now is these Sampler Select Helper and Scheduler Select nodes. They are supposed to come from comfyui essentials. But i have that on the latest version
I dug thru the essentials node listing and nothing remotely close to these nodes exist inside, very curious. Then i look up the github repo for this custom node package and it is right there in the code. so something is wonky about how manager wants to install it
I did resolve this by removing that custom node dir and manually git cloning it rather than let comfy manager install it to 1.1.0
@unphased Workflow is definitely not optimized for the latest Comfy. (Which is not to say it won't work.) They made things weird, so it will take some doing to get there and ensure things remain performant. Glad to hear your got it working. (There will be an official move to a more recent version eventually, but not sure when yet.)
I was excited to try this workflow today, so I set up a fresh install of ComfyUI. Unfortunately, I ran into a few missing nodes that don’t seem to be available through the “Install Missing Custom Nodes” option:
- SwitchStrategySimple
- SwitchStrategyAdvanced
- TripleKSamplerWan22LightningAdvanced
- LTXVFilmGrain
It looks really promising, so I was a bit disappointed I couldn’t get it running right away. Still, I really appreciate the work you’ve put into this — thank you for sharing it with the community!
whichones work with the gguff versions?
You can swap in gguff loaders, but it's not specifically optimized for low memory.
Finally got it working (latest comfyui portable):
ergouzi nodes refused to install, the solution was manually installing pilgram with pip.
scheduler and sampler select nodes from comfyui essentials are for some reason broken/not available when installing through the manager. solution is uninstalling then manually cloning the whole repo from github. no idea why.
overall, great job. definitely worth the fuss to get it running. works a treat, simple to use, very fast, clean results.
I appreciate you reporting your trouble. Motivates me to make improvements: Next update will remove the ergouzi dependency. (Same node, but I've pulled it into its own install to ensure it works for everyone.)
Does not install:
[ComfyUI-Manager] Installation failed:
Failed to clone repo: https://github.com/ClownsharkBatwing/RES4LYF
Just run it again. It should eventually work. Your particular local install is tricky to diagnose, as python has a ton of cross dependencies. Generally you can get them all to jimmy into to place, but it's not always one-and-done.
I used your pod template on run pod. When I am in the application (ComfyUI), I am not seeing any preloaded workflows to choose from. So I downloaded this one and uploaded it. That worked. When I hit "Run", I am getting this type of error: "Error while deserializing header: invalid JSON in header: EOF while parsing a value at line 1 column 0"
It looks like you may have created a Network Volume? I believe that's why people are running into the missing workflows. (Runpod changed the UI, and it's more confusing now. You want "Volume Disk" selected when you deploy.) And if you did, delete that volume. (They charge for them as persistent storage.)
To be clear, the code should work for network volumes, but it appears it doesn't. (I don't use them actively, so that's under tested.) I'm intending to address this in the v0.39 update that's coming soon, but as I node in the guide, I don't recommend people use Network Volumes for video anyway.
As for the JSON error, that's new to me. I haven't had anyone report that one before. It's hard to guess without more info. It appears something in the file formatting has been messed up? If you just start a new pod with Volume Disk, you should be right as rain.
Your 38b workflow is my favourite workflow as of now. I wanted to add some of my vids as examples, but I don't know how to add them once posted. Perhaps they need to be posted here first?
Thanks, chief. I appreciate the kind words. Your videos should show up if you tag the workflow. Annoyingly you have to tag it first. Civit's resource tagging system is very particular about how and when you add resources - which can then block out other resources from selection. I do not fully understand it.