ai-toolkit-trainer
Train custom LoRAs with ostris AI-Toolkit. Covers WAN 2.2/2.1 (people, styles, video motion) and Z-Image (Turbo & Base, low-VRAM…
Build WAN 2.2 Text-to-Video workflows. Dual hi-lo models, lightning LoRAs, VACE modules, and KSamplerAdvanced two-pass
Claude Code
$ npx -y skills add artokun/comfyui-mcp --skill wan-t2v-video --agent claude-code
Codex
$ npx skills add artokun/comfyui-mcp --skill wan-t2v-video -a codex -y
Cursor
$ npx skills add artokun/comfyui-mcp --skill wan-t2v-video -a cursor -y
Gemini CLI
$ npx skills add artokun/comfyui-mcp --skill wan-t2v-video -a gemini-cli -y
GitHub Copilot
$ npx skills add artokun/comfyui-mcp --skill wan-t2v-video -a github-copilot -y
OpenCode
$ npx skills add artokun/comfyui-mcp --skill wan-t2v-video -a opencode -y
Windsurf
$ npx skills add artokun/comfyui-mcp --skill wan-t2v-video -a windsurf -y
name: wan-t2v-video description: Build WAN 2.2 Text-to-Video workflows. Dual hi-lo models, lightning LoRAs, VACE modules, and KSamplerAdvanced two-pass globs: - "**/*.json"
WAN 2.2 T2V generates videos from text prompts using a 14B parameter MoE (Mixture of Experts) architecture split across two specialized models:
This dual-model technique is the same as FLF/I2V (see wan-flf-video skill) but without image conditioning nodes.
Key difference from I2V/FLF: T2V does NOT use `CLIPVisionEncode`, `WanFirstLastFrameToVideo`, or any image input. It uses `EmptyHunyuanLatentVideo` for latent initialization and text-only conditioning.
| Model | Loader | Notes | |-------|--------|-------| | `Wan2_2-T2V-A14B_HIGH_fp8_e4m3fn_scaled_KJ.safetensors` | `UNETLoader` | HighNoise expert, 14.3GB FP8 | | `Wan2_2-T2V-A14B-LOW_fp8_e4m3fn_scaled_KJ.safetensors` | `UNETLoader` | LowNoise expert, 14.3GB FP8 |
| Component | Node | Model | Notes | |-----------|------|-------|-------| | **CLIP (T5)** | `CLIPLoader` (type=`wan`) | `umt5_xxl_fp8_e4m3fn_scaled.safetensors` | UMT5-XXL fp8, in clip/ |
| Component | Node | Model | |-----------|------|-------| | **VAE** | `VAELoader` | `wan_2.1_vae.safetensors` |
| Model | Size | Notes | |-------|------|-------| | `Wan2_2_Fun_VACE_module_A14B_HIGH_bf16.safetensors` | 5.8GB | HighNoise VACE module | | `Wan2_2_Fun_VACE_module_A14B_LOW_bf16.safetensors` | 5.8GB | LowNoise VACE module |
VACE modules add reference image / pose / depth conditioning to T2V. See WanVideoWrapper section below.
| LoRA | Applies To | Path | |------|-----------|------| | `wan2.2_t2v_lightx2v_4steps_lora_v1.1_high_noise` | HighNoise UNET | `Unknown/no tags/` | | `wan2.2_t2v_lightx2v_4steps_lora_v1.1_low_noise` | LowNoise UNET | `Unknown/no tags/` |
| LoRA | Path | |------|------| | `Wan2.2_HN_T2V_Lightning_4steps-lora-rank64-Seko_V2.0_HIGH` | Root loras/ | | `Wan2.2_HN_T2V_Lightning_4steps-lora-rank64-Seko_V2.0_LOW` | Root loras/ |
| LoRA | Path | Notes | |------|------|-------| | `lightx2v_T2V_14B_cfg_step_distill_v2_lora_rank128_bf16` | Root loras/ | CFG+step distilled, use with more steps |
| Parameter | Pass 1 (Hi) | Pass 2 (Lo) | |-----------|-------------|-------------| | model | Hi + Hi Lightning LoRA | Lo + Lo Lightning LoRA | | add_noise | enable | disable | | steps | 4 | 4 | | cfg | 1.0 | 1.0 | | sampler_name | euler | euler | | scheduler | simple | simple | | start_at_step | 0 | 2 | | end_at_step | 2 | 4 | | return_with_leftover_noise | enable | disable |
| Parameter | Pass 1 (Hi) | Pass 2 (Lo) | |-----------|-------------|-------------| | model | Hi + ModelSamplingSD3 (shift=8) | Lo + ModelSamplingSD3 (shift=8) | | add_noise | enable | disable | | steps | 20 | 20 | | cfg | 3.5 | 3.5 | | sampler_name | euler | euler | | scheduler | simple | simple | | start_at_step | 0 | 10 | | end_at_step | 10 | 20 | | return_with_leftover_noise | enable | disable |
Required for WAN 2.2 flow matching. Apply to BOTH models:
{
"class_type": "ModelSamplingSD3",
"inputs": { "model": ["<unet>", 0], "shift": 8 }
}T2V shift values:
Creates the initial video latent for T2V (no image input):
{
"class_type": "EmptyHunyuanLatentVideo",
"inputs": {
"width": 832,
"height": 480,
"length": 81,
"batch_size": 1
}
}This replaces `WanFirstLastFrameToVideo` (which is for FLF/I2V only). The latent goes directly to KSamplerAdvanced Pass 1.
The tones are vibrant, overexposed, static, details are unclear, subtitles, style, work, painting, image, still, overall grayish, worst quality, low quality, JPEG compression artifacts, ugly, incomplete, extra fingers, poorly drawn hands, poorly drawn faces, deformed, disfigured, distorted limbs, merged fingers, motionless image, cluttered background, three legs, many people in the background, walking backwards
UNETLoader (HIGH T2V) → ModelSamplingSD3 (shift) → LoraLoaderModelOnly (Hi Lightning) → MODEL_HI UNETLoader (LOW T2V) → ModelSamplingSD3 (shift) → LoraLoaderModelOnly (Lo Lightning) → MODEL_LO CLIPLoader (wan) → CLIP ├─ CLIPTextEncode (positive) → CONDITIONING └─ CLIPTextEncode (negative) → CONDITIONING VAELoader → VAE EmptyHunyuanLatentVideo (832x480, 81 frames) → LATENT KSamplerAdvanced (Hi: MODEL_HI, steps 0-2, add_noise=enable, return_leftover=enable) → noisy LATENT KSamplerAdvanced (Lo: MODEL_LO, steps 2-4, add_noise=disable, return_leftover=disable) → final LATENT VAEDecode → IMAGE → VHS_VideoCombine → MP4
{
"1": { "class_type": "UNETLoader", "inputs": { "unet_name": "Wan2_2-T2V-A14B_HIGH_fp8_e4m3fn_scaled_KJ.safetensors", "weight_dtype": "default" }, "_meta": { "title": "UNET HighNoise T2V" }},
"2": { "class_type": "UNETLoader", "inputs": { "unet_name": "Wan2_2-T2V-A14B-LOW_fp8_e4m3fn_scaled_KJ.safetensors", "weight_dtype": "default" }, "_meta": { "title": "UNET LowNoise T2V" }},
"3": { "class_type": "ModelSamplingSD3", "inputs": { "model": ["1", 0], "shift": 5 }, "_meta": { "title": "Hi Shift" }},
"4": { "class_type": "ModelSamplingSD3", "inputs": {<img src="docs/images/demo-poster.jpg" width="760" alt="The Agent panel driving ComfyUI end to end. Click to watch the demo"> The Agent panel driving ComfyUI end to end. It reads what is installed locally, wires the graph, frees VRAM, and runs the render.
Train custom LoRAs with ostris AI-Toolkit. Covers WAN 2.2/2.1 (people, styles, video motion) and Z-Image (Turbo & Base, low-VRAM…
Anime/illustration text-to-image (ANIMA 1.0, ~2B Cosmos DiT). Use for anime, manga, illustrated characters; accepts Danbooru tags…
Train a custom anime LoRA on the ANIMA base model with Citron's local Gradio trainer (kohya sd-scripts), <6GB VRAM,…
Discover Civitai models with the BUILT-IN download_model action:"search_civitai" and install/generate them locally. Find a…
Diagnose and fix video/image color OBJECTIVELY with the get_image (action:"analyze_color") tool (scopes/stats such as black/white…
Core ComfyUI knowledge covering workflow format, node types, pipeline patterns, and MCP tool usage
Direct browser control via CDP for web interaction: automation, scraping, testing, screenshots, and site/app work. Also covers…
Browser automation CLI for AI agents. Use when the user needs to interact with websites, including navigating pages, filling…