CMK Save Project Video
Saving video without another ffmpeg command you'll have to remember
- video
- video
- filename
- foldername
- full_path
CMK Save Project Video takes a modern ComfyUI VIDEO object, drops it in a dated folder under output/, and gives you back the filename, the folder and the full path as strings. It also lets you attach a caption, which sounds trivial until you've tried to remember what prompt produced a 40-second clip three weeks ago.
What it is, and the thing to know first
This is a V3-schema node - written against ComfyUI's newer backend authoring API (io.ComfyNode, io.Schema, io.Video.Input) rather than the classic NODE_CLASS_MAPPINGS style. That's not a red flag; it's what "new" looks like now, and ComfyUI's own core primitives are written the same way. But it does mean two practical requirements. It needs a ComfyUI build recent enough to ship comfy_api.latest and the video types - CMK 2.5.5 was verified against ComfyUI 0.38.2, and on an older install this node may simply fail to register while the rest of the pack loads fine. And it consumes a VIDEO object, not an IMAGE batch, so it belongs downstream of ComfyUI's video nodes rather than after your frame loader.
Inputs and outputs
video- theVIDEOto save.save_enabled(default true),filename_prefix(video),output_folder(blank),use_date_folder(true). The path isoutput / output_folder / YYYY-MM-DD / video_00001_.mp4.caption(multiline) - if non-empty, it's written as a.txtnext to the video. Same idea as the image save node's sidecar, but here it's your text rather than the log pipe.formatandcodec, both combos defaulting toauto, populated from ComfyUI's own container and codec type lists. Leave them alone unless you have a reason:autofollows whatever the incoming video already is.
Outputs: video, filename, foldername, full_path. The three strings are the point - they're what you feed into another save node, a manifest, or this pack's own text saver. It's also an output node with a built-in player preview, so you see the result on the node instead of hunting through the folder.
Notice what's missing compared to CMK Save Project Image: no PROCESS input, no automatic Text2Image/Inpaint/Detailer folder stacking, no log sidecar. Video in this pack lives in its own world - segments in output/video/segments/<video_name>/, merges in output/video/merged/<video_name>/ - and this node is the plain, general-purpose saver for whatever video object you hand it.
Installing
Manager: search CMK Flow, install the CMKFlow entry, restart. Manual:
cd ComfyUI/custom_nodes
git clone https://github.com/CMKFlow/cmk_nodes.git cmk_nodes
python3 cmk_nodes/scripts/install_cmk_requirements.py
Video work pulls in imageio-ffmpeg, which is in the pack's requirements - a bundled FFmpeg binary, so you don't need a system ffmpeg for the pack's own segmenting and merging nodes. Restart ComfyUI after the dependency step; a manual git clone never runs pip by itself, and a half-installed CMK can look like a broken node rather than a missing package. Enable Vue Nodes / Nodes 2.0 while you're in settings, which CMK requires.
Gotchas
save_enabled = false returns empty strings for filename, foldername and full_path and writes nothing - so if a downstream node is parsing full_path, it gets an empty string, not an error. That's the honest bypass, but check for it rather than assuming a path exists.
The generated filename has a slightly odd shape: {prefix}_{counter:05d}_.{ext} - note the trailing underscore before the extension. Harmless, and it's stable, but if you're globbing for files with your own script it will look like a typo rather than the format.
And the boring one that catches everybody: output_folder is joined straight onto ComfyUI's output directory with no cleaning step, so keep it a simple relative folder name. Nested paths and filesystem-unsafe characters are your problem here, unlike the image saver which sanitises its parts.
Inputs (8)
| Name | Type | Default | Description |
|---|---|---|---|
| video | VIDEO | — | |
| save_enabled | BOOLEAN | true | — |
| filename_prefix | STRING | video | — |
| output_folder | STRING | — | |
| use_date_folder | BOOLEAN | true | — |
| caption | STRING | — | |
| format | COMBO | auto | 2 options: auto, mp4 |
| codec | COMBO | auto | 2 options: auto, h264 |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| video | VIDEO | — |
| filename | STRING | — |
| foldername | STRING | — |
| full_path | STRING | — |