V1 is disabled by default. Use the
wudd_v3branch / ComfyUI-Wudd-V3 package for active nodes. To temporarily load legacy V1 nodes, setWUDD_ENABLE_V1=1before starting ComfyUI.
Custom nodes for ComfyUI, focused on practical image, text, audio/video, path, and API utility workflows.
Clone this repository into ComfyUI/custom_nodes/:
cd ComfyUI/custom_nodes
git clone https://github.com/qwqgong-ui/Comfyui-Wudd.gitInstall dependencies with the Python environment used by ComfyUI:
python -m pip install -r Comfyui-Wudd/requirements.txtFor the ComfyUI Windows portable build, use its embedded Python:
C:\path\to\ComfyUI\python_embeded\python.exe -m pip install -r C:\path\to\ComfyUI\ComfyUI\custom_nodes\Comfyui-Wudd\requirements.txtRestart ComfyUI after installation.
requirements.txt explicitly lists:
numpyPillowscipyavimageio-ffmpegplaywright
imageio-ffmpeg provides an internal ffmpeg executable for the video and audio-video nodes. The nodes resolve ffmpeg automatically and do not require a path widget.
playwright is used only by the ChatGPT browser automation node. The node connects to Chrome/Edge through the local Chrome DevTools Protocol and can use your installed browser, so a separate playwright install browser download is not required for the default workflow.
If you need an offline/local override, place the Windows ffmpeg executables in this repository's bin/ folder:
bin/ffmpeg.exebin/ffprobe.exebin/ffplay.exe
On Linux, place the no-extension executables in the same folder:
bin/ffmpegbin/ffprobebin/ffplay
The node uses the local bin/ ffmpeg set only when all three platform executables exist. The bin/ folder is kept in Git with .gitkeep, while copied executables are ignored by .gitignore and should not be committed. If the local bin/ set is missing or incomplete, the node falls back to imageio-ffmpeg, then to ffmpeg on PATH.
To refresh the local Windows ffmpeg override, run:
powershell -ExecutionPolicy Bypass -File .\scripts\update_ffmpeg.ps1To refresh the local Linux ffmpeg override, run:
bash scripts/update_ffmpeg_linux.shThe scripts download BtbN's latest x64 GPL autobuild by default, extract the three ffmpeg executables, and place them in bin/. The executables remain ignored by Git.
For Linux Jpegli support, run:
bash scripts/update_jpegli_linux.shThis downloads the newest available jxl-linux-x86_64-static release asset from libjxl/libjxl and places cjpegli in bin/. The image save node checks bin/cjpegli, then the bundled Windows Jpegli tools, then cjpegli on PATH.
All nodes are registered under Wudd Nodes.
Batch save one or more IMAGE inputs.
- Dynamic image input ports.
- Save as PNG or Jpegli JPEG.
- Supports append and overwrite naming modes.
- Preserves ComfyUI workflow metadata in PNG output.
- Jpegli uses the bundled
jxl-x64-windows-static/bin/cjpegli.exeon Windows and falls back to PIL JPEG if unavailable. - Saved images are backed up in
temp/image/wudd_save_cachebefore copying to the final output path.
Inputs:
image_1, dynamic extra image inputsfilename_prefixsave_mode:append,overwriteextension:png,jpegliqualityprogressiveenable_xybchroma_subsampling
Save one or more VIDEO inputs to the ComfyUI output directory.
- Dynamic video input ports.
- Encodes video as AV1 or H.265/HEVC through ffmpeg.
- Supports CPU encoding plus NVIDIA NVENC, Intel Quick Sync, and AMD AMF when the resolved ffmpeg build and local hardware support the selected encoder.
- Supports append and overwrite naming modes matching
Wudd Multi Save. - Audio can be copied, re-encoded to AAC with the source sample rate/channels, or removed.
- ffmpeg is resolved internally from a complete local
bin/set,imageio-ffmpeg, or systemPATH.
Inputs:
video_1, dynamic extra video inputsfilename_prefixsave_mode:append,overwritecodec:av1,h265encoder:cpu,nvidia,intel,amdcontainer:mp4,mkvcrfpreset:fast,medium,slowaudio_mode:copy,aac,none
Speed up a VIDEO input and output a new VIDEO.
speed_multipliermode uses a direct playback multiplier such as2.0for 2x speed.target_secondsmode derives the speed from the source duration so the result lasts the requested number of seconds.- Video is written as MP4 for downstream video nodes.
- Audio can be tempo-adjusted with the video and re-encoded as AAC, or removed.
Inputs:
videomode:speed_multiplier,target_secondsspeed_multipliertarget_secondsaudio_mode:keep,none
Concatenate VIDEO inputs in port order and output a new VIDEO.
- Dynamic video input ports.
- Concatenates as
video_1,video_2,video_3, and so on. - Normalizes every segment to the first video's dimensions and frame rate before concatenating.
- Uses FFV1 video and PCM float audio in MKV for lossless internal processing.
- Returns an MP4 video encoded for downstream nodes that require an MP4 container.
fit_to_firstkeeps aspect ratio with padding;stretch_to_firstfills the first video's size.- Audio can be kept with PCM normalization and silence for mute clips, or removed.
- Normalized segments and MP4 outputs are backed up in
temp/video/wudd_concat_cache. - The output stays in ComfyUI temp storage and can be connected to
Wudd Save Video.
Inputs:
video_1,video_2, dynamic extra video inputsresize_mode:fit_to_first,stretch_to_firstaudio_mode:keep,none
Composite transparent image areas over a generated background and return RGB IMAGE.
- Optional
MASKinput where ComfyUI mask value1means transparent. - Background modes: checkerboard or fill color.
- Optional auto crop around non-transparent content.
Inputs:
image- optional
mask mode:checkerboard,fill_colorfill_colortile_sizeauto_croppadding
Expand an image by whole-image blocks in one direction.
- Directions: right, down, left, up.
- Fill modes match
Wudd Drop Alpha: checkerboard or solid color. - Outputs expanded image, width, and height.
Create natural vertical edge padding for panorama or long-image preprocessing.
- Supports up to 16 image inputs.
- Cross-blends neighboring image edges.
- Adds controllable blur and chamfering at pad junctions.
- Returns up to 16 padded image outputs.
Load multiple images from ComfyUI input/.
- File mode: choose individual uploaded/input images.
- Folder mode: load images from a folder path.
- Supports up to 50 outputs.
- Folder paths may be absolute or relative to ComfyUI
input/.
Stitch multiple images linearly.
- Directions: right, down, left, up.
- Supports up to 16 image inputs.
- Fits images to the first image's height or width depending on stitch direction.
- Optional gap between images.
Extract one line from a multiline string.
- Zero-based
index. - Optional
skip_emptyfiltering. - Returns empty string when out of range.
Split multiline text into up to 16 string outputs.
countcontrols how many output slots are intended for use.- Optional
skip_empty. - Unused or missing lines return empty strings.
Join up to 5 path segments with /.
- Ignores blank segments.
- Useful for building portable path-like prompt strings or API inputs.
Submit a prompt and optional IMAGE to chatgpt.com through a local Chrome/Edge browser, then return the latest assistant text and response images to ComfyUI.
- Uses your own browser session; no ChatGPT password or API key is handled by the node.
- Default mode connects to
http://127.0.0.1:9222if a CDP browser is already running, otherwise launches Edge with a persistent profile under ComfyUIuser/wudd_browser_profiles/. - Uploads the first input image as a temporary PNG, fills the ChatGPT composer, submits with Enter by default, and waits for the response text to stabilize.
- Exports images from the latest assistant response as a ComfyUI
IMAGEbatch. When the response contains no images, the node returns one 1x1 black placeholder image andimage_count = 0. - Returns:
textconversation_urlimagesimage_count
Inputs:
prompt- optional
image connection_mode:connect_or_launch_edge,connect_or_launch_chrome,connect_cdp,launch_chrome,launch_edgenew_chatsubmit_action:press_enter,click_send_button- advanced
chatgpt_url,cdp_url,wait_timeout_seconds,stable_seconds,upload_wait_seconds,keep_browser_open,browser_executable,user_data_dir
To connect to an already-running Edge or Chrome profile, start the browser with remote debugging enabled, for example:
msedge.exe --remote-debugging-port=9222 --user-data-dir="$env:USERPROFILE\.wudd-chatgpt-browser"Then set connection_mode to connect_cdp. If ChatGPT asks you to log in, complete the login in the opened browser and run the node again.
Enable or disable all nodes inside a ComfyUI canvas group from one switch node.
- Leave
group_nameempty to automatically add toggles for every canvas group. - Set
group_nametoself,current, orautoto control only the group containing this node. - Or fill
group_namewith an exact group title; the node also has right-click menu helpers for choosing a target group. enabledsets all listed groups on or off whengroup_nameis empty.- Each generated group toggle can independently turn one canvas group on or off.
off_mode:mutesets group nodes to Never so they do not run;bypasssets them to Bypass.- Other
Wudd Group Switchnodes inside the group stay active so a switch placed inside its own group can re-enable it.
Virtual wireless routing nodes for hiding long links while keeping ComfyUI's execution graph connected.
Wudd Wireless Inputhas real input slots and publishes multiple channels from one node.Wudd Wireless Outputhas real output slots and exposes matching channels from one node.- Channels are matched by
namespace + channel name. - Input channel names are auto-renamed with
_1,_2, and so on when another input publisher in the same namespace already uses the name. - Use
Wudd: Create matching outputon an input node to create a receiver with the same namespace and channels. - Use
Wudd: Refresh from inputson an output node to rebuild its channel list from existing input nodes. - The nodes are frontend virtual nodes; they resolve to the original upstream links when ComfyUI builds the prompt.
Extract audio directly from a VIDEO input.
- Connect the output of ComfyUI's built-in
Load Videonode. - No file picker or path input is required.
- Supports
audio_stream_indexfor videos with multiple audio streams. - Outputs:
AUDIOsample_rateduration_seconds
Replace a VIDEO input's audio track with a supplied AUDIO input.
- Video stream is copied with ffmpeg where possible.
- New audio is encoded as AAC.
- Output duration follows the video duration: long audio is trimmed, short audio is padded with silence.
- ffmpeg is resolved internally from a complete local
bin/set,imageio-ffmpeg, or systemPATH. - Outputs a new
VIDEOobject that can be passed to ComfyUI's built-inSave Video.
Inputs:
videoaudiooutput_format:mp4,mkv,movaudio_bitrate:128k,192k,256k,320kend_mode:keep_video_length(shortestis accepted for legacy workflows and behaves the same)
Call an OpenAI-compatible API endpoint using only Python standard HTTP libraries.
- Supports Responses API and Chat Completions API modes.
- Optional image input.
- Supports custom
base_url. - Supports SSL verification toggle.
- Responses mode supports polling by response id.
Inputs include:
promptinstructionsapi_keybase_urlmodelapi_modereasoning_effortverbositymax_output_tokenspoll_intervalmax_wait_seconds- optional
images
Outputs:
textresponse_id
- Added Chinese locale files for ComfyUI node definitions and UI strings.
- Added OpenRouter-compatible GPT, Claude, and Gemini text nodes plus GPT and Gemini image nodes.
- Added
Wudd Video Fast Forwardfor multiplier-based or target-duration video speed changes. - Expanded video output support with AV1/H.265 CPU encoding plus NVIDIA NVENC, Intel Quick Sync, and AMD AMF encoder options.
- Updated
Wudd Concat Videosto return MP4 output for better downstream and Topaz compatibility. - Added backup caching for image saves and concatenated video intermediates/outputs.
- Simplified
Wudd Save Videoaudio handling by removing the separate audio bitrate UI and preserving source audio settings where appropriate.
- PNG image saves include metadata for workflow restoration.
- Jpegli is Windows-bundled in this repository; other platforms fall back to PIL JPEG.
- AV1/H.265 video preview support depends on the browser and operating system codec support.
- Video concatenation normalizes intermediate segments as FFV1/PCM in MKV for lossless internal processing, then downstream save nodes can encode final AV1/H.265 outputs.
- Video audio replacement keeps the output video in ComfyUI's temp directory until it is consumed by downstream nodes.
- ComfyUI itself provides
torch,folder_paths, and theVIDEOobject model used by these nodes.