From d6dfdd72e2a1c69845b5a4dede8da959a867fa1d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20Kr=C3=BCger?= Date: Wed, 26 Nov 2025 09:16:45 +0100 Subject: [PATCH] feat: initial ComfyUI workflow templates extension MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 40 workflow templates (text-to-image, image-to-video, image-to-image, text-to-music, upscaling, advanced, nsfw) - Color-coded placeholder preview images using Pillow - Template-only extension (no custom nodes) - Preview generation script for future workflow additions 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- README.md | 77 + __init__.py | 12 + example_workflows/acestep-m2m-editing-v1.jpg | Bin 0 -> 5870 bytes example_workflows/acestep-m2m-editing-v1.json | 865 ++ example_workflows/acestep-official-t2m-v1.jpg | Bin 0 -> 5725 bytes .../acestep-official-t2m-v1.json | 841 ++ .../animatediff-video-production-v1.jpg | Bin 0 -> 5372 bytes .../animatediff-video-production-v1.json | 248 + .../batch-pipeline-production-v1.jpg | Bin 0 -> 4812 bytes .../batch-pipeline-production-v1.json | 247 + .../cogvideox-i2v-production-v1.jpg | Bin 0 -> 5321 bytes .../cogvideox-i2v-production-v1.json | 420 + .../controlnet-fusion-production-v1.jpg | Bin 0 -> 5177 bytes .../controlnet-fusion-production-v1.json | 399 + .../diffrhythm-full-length-t2m-v1.jpg | Bin 0 -> 6474 bytes .../diffrhythm-full-length-t2m-v1.json | 130 + .../diffrhythm-reference-based-v1.jpg | Bin 0 -> 6800 bytes .../diffrhythm-reference-based-v1.json | 164 + .../diffrhythm-simple-t2m-v1.jpg | Bin 0 -> 6101 bytes .../diffrhythm-simple-t2m-v1.json | 125 + .../face-upscale-production-v1.jpg | Bin 0 -> 4847 bytes .../face-upscale-production-v1.json | 185 + .../flux-dev-t2i-production-v1.jpg | Bin 0 -> 4768 bytes .../flux-dev-t2i-production-v1.json | 362 + .../flux-schnell-t2i-production-v1.jpg | Bin 0 -> 5246 bytes .../flux-schnell-t2i-production-v1.json | 363 + example_workflows/i2v_hunyuan15-i2v-720p.jpg | Bin 0 -> 6870 bytes example_workflows/i2v_hunyuan15-i2v-720p.json | 2528 ++++++ example_workflows/i2v_hunyuan15-t2v-720p.jpg | Bin 0 -> 7017 bytes example_workflows/i2v_hunyuan15-t2v-720p.json | 2269 +++++ example_workflows/i2v_wan22-14b-animate.jpg | Bin 0 -> 6757 bytes example_workflows/i2v_wan22-14b-animate.json | 6182 +++++++++++++ example_workflows/i2v_wan22-14b-flf2v.jpg | Bin 0 -> 6350 bytes example_workflows/i2v_wan22-14b-flf2v.json | 2739 ++++++ .../i2v_wan22-14b-fun-camera.jpg | Bin 0 -> 7179 bytes .../i2v_wan22-14b-fun-camera.json | 2735 ++++++ .../i2v_wan22-14b-fun-control.jpg | Bin 0 -> 7185 bytes .../i2v_wan22-14b-fun-control.json | 2908 ++++++ example_workflows/i2v_wan22-14b-i2v.jpg | Bin 0 -> 6061 bytes example_workflows/i2v_wan22-14b-i2v.json | 2327 +++++ example_workflows/i2v_wan22-14b-s2v.jpg | Bin 0 -> 6308 bytes example_workflows/i2v_wan22-14b-s2v.json | 7988 +++++++++++++++++ example_workflows/i2v_wan22-14b-t2v.jpg | Bin 0 -> 6230 bytes example_workflows/i2v_wan22-14b-t2v.json | 1876 ++++ example_workflows/i2v_wan22-5b-ti2v.jpg | Bin 0 -> 6047 bytes example_workflows/i2v_wan22-5b-ti2v.json | 733 ++ ...padapter-composition-i2i-production-v1.jpg | Bin 0 -> 6468 bytes ...adapter-composition-i2i-production-v1.json | 866 ++ .../ipadapter-face-i2i-production-v1.jpg | Bin 0 -> 5413 bytes .../ipadapter-face-i2i-production-v1.json | 675 ++ .../ipadapter-style-i2i-production-v1.jpg | Bin 0 -> 5590 bytes .../ipadapter-style-i2i-production-v1.json | 723 ++ .../lora-fusion-t2i-production-v1.jpg | Bin 0 -> 5139 bytes .../lora-fusion-t2i-production-v1.json | 408 + .../lustify-realistic-t2i-production-v1.jpg | Bin 0 -> 6282 bytes .../lustify-realistic-t2i-production-v1.json | 256 + .../musicgen-large-t2m-production-v1.jpg | Bin 0 -> 5804 bytes .../musicgen-large-t2m-production-v1.json | 151 + .../musicgen-medium-t2m-production-v1.jpg | Bin 0 -> 6012 bytes .../musicgen-medium-t2m-production-v1.json | 151 + .../musicgen-melody-t2m-production-v1.jpg | Bin 0 -> 6040 bytes .../musicgen-melody-t2m-production-v1.json | 150 + .../musicgen-small-t2m-production-v1.jpg | Bin 0 -> 5643 bytes .../musicgen-small-t2m-production-v1.json | 151 + .../nsfw-ultimate-upscale-production-v1.jpg | Bin 0 -> 6526 bytes .../nsfw-ultimate-upscale-production-v1.json | 300 + .../pony-anime-t2i-production-v1.jpg | Bin 0 -> 5328 bytes .../pony-anime-t2i-production-v1.json | 260 + .../realvisxl-lightning-t2i-production-v1.jpg | Bin 0 -> 6552 bytes ...realvisxl-lightning-t2i-production-v1.json | 263 + .../sd35-large-t2i-production-v1.jpg | Bin 0 -> 5351 bytes .../sd35-large-t2i-production-v1.json | 376 + .../sdxl-refiner-t2i-production-v1.jpg | Bin 0 -> 5313 bytes .../sdxl-refiner-t2i-production-v1.json | 581 ++ .../simple-upscale-production-v1.jpg | Bin 0 -> 5341 bytes .../simple-upscale-production-v1.json | 207 + example_workflows/svd-i2v-production-v1.jpg | Bin 0 -> 4228 bytes example_workflows/svd-i2v-production-v1.json | 416 + .../svd-xt-i2v-production-v1.jpg | Bin 0 -> 4750 bytes .../svd-xt-i2v-production-v1.json | 417 + .../ultimate-sd-upscale-production-v1.jpg | Bin 0 -> 6001 bytes .../ultimate-sd-upscale-production-v1.json | 335 + nodes.py | 4 + pyproject.toml | 15 + requirements.txt | 2 + scripts/generate_previews.py | 120 + 86 files changed, 43550 insertions(+) create mode 100644 README.md create mode 100644 __init__.py create mode 100644 example_workflows/acestep-m2m-editing-v1.jpg create mode 100644 example_workflows/acestep-m2m-editing-v1.json create mode 100644 example_workflows/acestep-official-t2m-v1.jpg create mode 100644 example_workflows/acestep-official-t2m-v1.json create mode 100644 example_workflows/animatediff-video-production-v1.jpg create mode 100644 example_workflows/animatediff-video-production-v1.json create mode 100644 example_workflows/batch-pipeline-production-v1.jpg create mode 100644 example_workflows/batch-pipeline-production-v1.json create mode 100644 example_workflows/cogvideox-i2v-production-v1.jpg create mode 100644 example_workflows/cogvideox-i2v-production-v1.json create mode 100644 example_workflows/controlnet-fusion-production-v1.jpg create mode 100644 example_workflows/controlnet-fusion-production-v1.json create mode 100644 example_workflows/diffrhythm-full-length-t2m-v1.jpg create mode 100644 example_workflows/diffrhythm-full-length-t2m-v1.json create mode 100644 example_workflows/diffrhythm-reference-based-v1.jpg create mode 100644 example_workflows/diffrhythm-reference-based-v1.json create mode 100644 example_workflows/diffrhythm-simple-t2m-v1.jpg create mode 100644 example_workflows/diffrhythm-simple-t2m-v1.json create mode 100644 example_workflows/face-upscale-production-v1.jpg create mode 100644 example_workflows/face-upscale-production-v1.json create mode 100644 example_workflows/flux-dev-t2i-production-v1.jpg create mode 100644 example_workflows/flux-dev-t2i-production-v1.json create mode 100644 example_workflows/flux-schnell-t2i-production-v1.jpg create mode 100644 example_workflows/flux-schnell-t2i-production-v1.json create mode 100644 example_workflows/i2v_hunyuan15-i2v-720p.jpg create mode 100644 example_workflows/i2v_hunyuan15-i2v-720p.json create mode 100644 example_workflows/i2v_hunyuan15-t2v-720p.jpg create mode 100644 example_workflows/i2v_hunyuan15-t2v-720p.json create mode 100644 example_workflows/i2v_wan22-14b-animate.jpg create mode 100644 example_workflows/i2v_wan22-14b-animate.json create mode 100644 example_workflows/i2v_wan22-14b-flf2v.jpg create mode 100644 example_workflows/i2v_wan22-14b-flf2v.json create mode 100644 example_workflows/i2v_wan22-14b-fun-camera.jpg create mode 100644 example_workflows/i2v_wan22-14b-fun-camera.json create mode 100644 example_workflows/i2v_wan22-14b-fun-control.jpg create mode 100644 example_workflows/i2v_wan22-14b-fun-control.json create mode 100644 example_workflows/i2v_wan22-14b-i2v.jpg create mode 100644 example_workflows/i2v_wan22-14b-i2v.json create mode 100644 example_workflows/i2v_wan22-14b-s2v.jpg create mode 100644 example_workflows/i2v_wan22-14b-s2v.json create mode 100644 example_workflows/i2v_wan22-14b-t2v.jpg create mode 100644 example_workflows/i2v_wan22-14b-t2v.json create mode 100644 example_workflows/i2v_wan22-5b-ti2v.jpg create mode 100644 example_workflows/i2v_wan22-5b-ti2v.json create mode 100644 example_workflows/ipadapter-composition-i2i-production-v1.jpg create mode 100644 example_workflows/ipadapter-composition-i2i-production-v1.json create mode 100644 example_workflows/ipadapter-face-i2i-production-v1.jpg create mode 100644 example_workflows/ipadapter-face-i2i-production-v1.json create mode 100644 example_workflows/ipadapter-style-i2i-production-v1.jpg create mode 100644 example_workflows/ipadapter-style-i2i-production-v1.json create mode 100644 example_workflows/lora-fusion-t2i-production-v1.jpg create mode 100644 example_workflows/lora-fusion-t2i-production-v1.json create mode 100644 example_workflows/lustify-realistic-t2i-production-v1.jpg create mode 100644 example_workflows/lustify-realistic-t2i-production-v1.json create mode 100644 example_workflows/musicgen-large-t2m-production-v1.jpg create mode 100644 example_workflows/musicgen-large-t2m-production-v1.json create mode 100644 example_workflows/musicgen-medium-t2m-production-v1.jpg create mode 100644 example_workflows/musicgen-medium-t2m-production-v1.json create mode 100644 example_workflows/musicgen-melody-t2m-production-v1.jpg create mode 100644 example_workflows/musicgen-melody-t2m-production-v1.json create mode 100644 example_workflows/musicgen-small-t2m-production-v1.jpg create mode 100644 example_workflows/musicgen-small-t2m-production-v1.json create mode 100644 example_workflows/nsfw-ultimate-upscale-production-v1.jpg create mode 100644 example_workflows/nsfw-ultimate-upscale-production-v1.json create mode 100644 example_workflows/pony-anime-t2i-production-v1.jpg create mode 100644 example_workflows/pony-anime-t2i-production-v1.json create mode 100644 example_workflows/realvisxl-lightning-t2i-production-v1.jpg create mode 100644 example_workflows/realvisxl-lightning-t2i-production-v1.json create mode 100644 example_workflows/sd35-large-t2i-production-v1.jpg create mode 100644 example_workflows/sd35-large-t2i-production-v1.json create mode 100644 example_workflows/sdxl-refiner-t2i-production-v1.jpg create mode 100644 example_workflows/sdxl-refiner-t2i-production-v1.json create mode 100644 example_workflows/simple-upscale-production-v1.jpg create mode 100644 example_workflows/simple-upscale-production-v1.json create mode 100644 example_workflows/svd-i2v-production-v1.jpg create mode 100644 example_workflows/svd-i2v-production-v1.json create mode 100644 example_workflows/svd-xt-i2v-production-v1.jpg create mode 100644 example_workflows/svd-xt-i2v-production-v1.json create mode 100644 example_workflows/ultimate-sd-upscale-production-v1.jpg create mode 100644 example_workflows/ultimate-sd-upscale-production-v1.json create mode 100644 nodes.py create mode 100644 pyproject.toml create mode 100644 requirements.txt create mode 100644 scripts/generate_previews.py diff --git a/README.md b/README.md new file mode 100644 index 0000000..42b871c --- /dev/null +++ b/README.md @@ -0,0 +1,77 @@ +# ComfyUI Extras + +Curated workflow templates for ComfyUI. + +## Installation + +Clone into your ComfyUI custom_nodes directory: + +```bash +cd /path/to/ComfyUI/custom_nodes +git clone https://github.com/valknar/comfyui-extras.git +``` + +Restart ComfyUI. + +## Usage + +Access workflows via **Workflow > Browse Templates** in ComfyUI. +Look for the "ComfyUI Extras" category. + +## Included Workflows (40 total) + +### Text-to-Image (5 workflows) +- FLUX Dev / Schnell +- SD 3.5 Large +- SDXL with Refiner +- LoRA Fusion + +### Image-to-Video (13 workflows) +- CogVideoX +- SVD / SVD-XT +- Wan 2.2 (multiple variants) +- HunyuanVideo + +### Image-to-Image (3 workflows) +- IPAdapter Style +- IPAdapter Face +- IPAdapter Composition + +### Text-to-Music (9 workflows) +- MusicGen (Small/Medium/Large/Melody) +- AceStep +- DiffRhythm + +### Upscaling (3 workflows) +- Simple Upscale +- Ultimate SD Upscale +- Face Upscale + +### Advanced (3 workflows) +- AnimateDiff +- ControlNet Fusion +- Batch Pipeline + +### NSFW (4 workflows) +- Lustify Realistic +- RealVisXL Lightning +- Pony Anime +- NSFW Ultimate Upscale + +## Requirements + +Each workflow requires specific models to be installed. +Check each workflow for model requirements. + +## Regenerating Preview Images + +If you modify workflows, regenerate previews: + +```bash +pip install Pillow +python scripts/generate_previews.py +``` + +## License + +MIT diff --git a/__init__.py b/__init__.py new file mode 100644 index 0000000..cc1c9f9 --- /dev/null +++ b/__init__.py @@ -0,0 +1,12 @@ +""" +ComfyUI Extras - Workflow Templates + +A collection of production-ready workflow templates for ComfyUI. +Templates are automatically discovered from the example_workflows/ directory. +""" + +from .nodes import NODE_CLASS_MAPPINGS, NODE_DISPLAY_NAME_MAPPINGS + +__all__ = ['NODE_CLASS_MAPPINGS', 'NODE_DISPLAY_NAME_MAPPINGS'] + +__version__ = "0.1.0" diff --git a/example_workflows/acestep-m2m-editing-v1.jpg b/example_workflows/acestep-m2m-editing-v1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..fb48b5e4e40d882d615e6a187558f68503136a42 GIT binary patch literal 5870 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 literal 0 HcmV?d00001 diff --git a/example_workflows/acestep-official-t2m-v1.json b/example_workflows/acestep-official-t2m-v1.json new file mode 100644 index 0000000..8994b58 --- /dev/null +++ b/example_workflows/acestep-official-t2m-v1.json @@ -0,0 +1,841 @@ +{ + "id": "88ac5dad-efd7-40bb-84fe-fbaefdee1fa9", + "revision": 0, + "last_node_id": 73, + "last_link_id": 137, + "nodes": [ + { + "id": 49, + "type": "LatentApplyOperationCFG", + "pos": [ + 940, + -160 + ], + "size": [ + 290, + 50 + ], + "flags": { + "collapsed": false + }, + "order": 9, + "mode": 0, + "inputs": [ + { + "name": "model", + "type": "MODEL", + "link": 113 + }, + { + "name": "operation", + "type": "LATENT_OPERATION", + "link": 114 + } + ], + "outputs": [ + { + "name": "MODEL", + "type": "MODEL", + "links": [ + 121 + ] + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.34", + "Node name for S&R": "LatentApplyOperationCFG" + }, + "widgets_values": [] + }, + { + "id": 64, + "type": "LoadAudio", + "pos": [ + 180, + 340 + ], + "size": [ + 370, + 140 + ], + "flags": {}, + "order": 0, + "mode": 4, + "inputs": [], + "outputs": [ + { + "name": "AUDIO", + "type": "AUDIO", + "links": [ + 136 + ] + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.34", + "Node name for S&R": "LoadAudio" + }, + "widgets_values": [ + "ace_step_example.flac", + null, + null + ], + "color": "#322", + "bgcolor": "#533" + }, + { + "id": 68, + "type": "VAEEncodeAudio", + "pos": [ + 180, + 180 + ], + "size": [ + 370, + 46 + ], + "flags": {}, + "order": 8, + "mode": 4, + "inputs": [ + { + "name": "audio", + "type": "AUDIO", + "link": 136 + }, + { + "name": "vae", + "type": "VAE", + "link": 137 + } + ], + "outputs": [ + { + "name": "LATENT", + "type": "LATENT", + "links": null + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.34", + "Node name for S&R": "VAEEncodeAudio" + }, + "widgets_values": [] + }, + { + "id": 40, + "type": "CheckpointLoaderSimple", + "pos": [ + 180, + -160 + ], + "size": [ + 370, + 98 + ], + "flags": {}, + "order": 1, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "MODEL", + "type": "MODEL", + "links": [ + 115 + ] + }, + { + "name": "CLIP", + "type": "CLIP", + "links": [ + 80 + ] + }, + { + "name": "VAE", + "type": "VAE", + "links": [ + 83, + 137 + ] + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.32", + "Node name for S&R": "CheckpointLoaderSimple", + "models": [ + { + "name": "ace_step_v1_3.5b.safetensors", + "url": "https://huggingface.co/Comfy-Org/ACE-Step_ComfyUI_repackaged/resolve/main/all_in_one/ace_step_v1_3.5b.safetensors?download=true", + "directory": "checkpoints" + } + ] + }, + "widgets_values": [ + "ace_step_v1_3.5b.safetensors" + ], + "color": "#322", + "bgcolor": "#533" + }, + { + "id": 48, + "type": "MarkdownNote", + "pos": [ + -460, + -200 + ], + "size": [ + 610, + 820 + ], + "flags": {}, + "order": 2, + "mode": 0, + "inputs": [], + "outputs": [], + "title": "About ACE Step and Multi-language Input", + "properties": {}, + "widgets_values": [ + "[Tutorial](http://docs.comfy.org/tutorials/audio/ace-step/ace-step-v1) | [教程](http://docs.comfy.org/zh-CN/tutorials/audio/ace-step/ace-step-v1)\n\n\n### Model Download\n\nDownload the following model and save it to the **ComfyUI/models/checkpoints** folder.\n[ace_step_v1_3.5b.safetensors](https://huggingface.co/Comfy-Org/ACE-Step_ComfyUI_repackaged/blob/main/all_in_one/ace_step_v1_3.5b.safetensors)\n\n\n### Multilingual Support\n\nCurrently, the implementation of multi-language support for ACE-Step V1 is achieved by uniformly converting different languages into English characters. At present, in ComfyUI, we haven't implemented the step of converting multi-languages into English. This is because if we need to implement the corresponding conversion, we have to add additional core dependencies of ComfyUI, which may lead to uncertain dependency conflicts.\n\nSo, currently, if you need to input multi-language text, you have to manually convert it into English characters to complete this process. Then, at the beginning of the corresponding `lyrics`, input the abbreviation of the corresponding language code.\n\nFor example, for Chinese, use `[zh]`, for Japanese use `[ja]`, for Korean use `[ko]`, and so on. For specific language input, please check the examples in the instructions. \n\nFor example, Chinese `[zh]`, Japanese `[ja]`, Korean `[ko]`, etc.\n\nExample:\n\n```\n[verse]\n\n[zh]wo3zou3guo4shen1ye4de5jie1dao4\n[zh]leng3feng1chui1luan4si1nian4de5piao4liang4wai4tao4\n[zh]ni3de5wei1xiao4xiang4xing1guang1hen3xuan4yao4\n[zh]zhao4liang4le5wo3gu1du2de5mei3fen1mei3miao3\n\n[chorus]\n\n[verse]​\n[ko]hamkke si-kkeuleo-un sesang-ui sodong-eul pihae​\n[ko]honja ogsang-eseo dalbich-ui eolyeompus-ileul balaboda​\n[ko]niga salang-eun lideum-i ganghan eum-ag gatdago malhaess-eo​\n[ko]han ta han tamada ma-eum-ui ondoga eolmana heojeonhanji ijge hae\n\n[bridge]\n[es]cantar mi anhelo por ti sin ocultar\n[es]como poesía y pintura, lleno de anhelo indescifrable\n[es]tu sombra es tan terca como el viento, inborrable\n[es]persiguiéndote en vuelo, brilla como cruzar una mar de nubes\n\n[chorus]\n[fr]que tu sois le vent qui souffle sur ma main\n[fr]un contact chaud comme la douce pluie printanière\n[fr]que tu sois le vent qui s'entoure de mon corps\n[fr]un amour profond qui ne s'éloignera jamais\n\n```\n\n---\n\n### 模型下载\n\n下载下面的模型并保存到 **ComfyUI/models/checkpoints** 文件夹下\n[ace_step_v1_3.5b.safetensors](https://huggingface.co/Comfy-Org/ACE-Step_ComfyUI_repackaged/blob/main/all_in_one/ace_step_v1_3.5b.safetensors)\n\n\n### 多语言支持\n\n目前 ACE-Step V1 多语言的实现是通过将不同语言统一转换为英文字符来实现的,目前在 ComfyUI 中我们并没有实现多语言转换为英文的这一步骤。因为如果需要实现对应转换,则需要增加额外的 ComfyUI 核心依赖,这将可能带来不确定的依赖冲突。\n\n所以目前如果你需要输入多语言,则需要手动转换为英文字符来实现这一过程,然后在对应 `lyrics` 开头输入对应语言代码的缩写。\n\n比如中文`[zh]` 日语 `[ja]` 韩语 `[ko]` 等,具体语言输入请查看说明中的示例\n\n" + ], + "color": "#432", + "bgcolor": "#653" + }, + { + "id": 18, + "type": "VAEDecodeAudio", + "pos": [ + 1080, + 270 + ], + "size": [ + 150.93612670898438, + 46 + ], + "flags": { + "collapsed": false + }, + "order": 12, + "mode": 0, + "inputs": [ + { + "name": "samples", + "type": "LATENT", + "link": 122 + }, + { + "name": "vae", + "type": "VAE", + "link": 83 + } + ], + "outputs": [ + { + "name": "AUDIO", + "type": "AUDIO", + "links": [ + 126, + 127, + 128 + ] + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.32", + "Node name for S&R": "VAEDecodeAudio" + }, + "widgets_values": [] + }, + { + "id": 60, + "type": "SaveAudio", + "pos": [ + 1260, + 40 + ], + "size": [ + 610, + 112 + ], + "flags": {}, + "order": 14, + "mode": 4, + "inputs": [ + { + "name": "audio", + "type": "AUDIO", + "link": 127 + } + ], + "outputs": [], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.34", + "Node name for S&R": "SaveAudio" + }, + "widgets_values": [ + "audio/ComfyUI" + ] + }, + { + "id": 61, + "type": "SaveAudioOpus", + "pos": [ + 1260, + 220 + ], + "size": [ + 610, + 136 + ], + "flags": {}, + "order": 15, + "mode": 4, + "inputs": [ + { + "name": "audio", + "type": "AUDIO", + "link": 128 + } + ], + "outputs": [], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.34", + "Node name for S&R": "SaveAudioOpus" + }, + "widgets_values": [ + "audio/ComfyUI", + "128k" + ] + }, + { + "id": 73, + "type": "Note", + "pos": [ + 1260, + 410 + ], + "size": [ + 610, + 90 + ], + "flags": {}, + "order": 3, + "mode": 0, + "inputs": [], + "outputs": [], + "properties": {}, + "widgets_values": [ + "These nodes can save audio in different formats. Currently, all the modes are Bypass. You can enable them as per your needs.\n\n这些节点可以将 audio 保存成不同格式,目前的模式都是 Bypass ,你可以按你的需要来启用" + ], + "color": "#432", + "bgcolor": "#653" + }, + { + "id": 44, + "type": "ConditioningZeroOut", + "pos": [ + 600, + 70 + ], + "size": [ + 197.712890625, + 26 + ], + "flags": { + "collapsed": true + }, + "order": 10, + "mode": 0, + "inputs": [ + { + "name": "conditioning", + "type": "CONDITIONING", + "link": 108 + } + ], + "outputs": [ + { + "name": "CONDITIONING", + "type": "CONDITIONING", + "links": [ + 120 + ] + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.32", + "Node name for S&R": "ConditioningZeroOut" + }, + "widgets_values": [] + }, + { + "id": 51, + "type": "ModelSamplingSD3", + "pos": [ + 590, + -40 + ], + "size": [ + 330, + 60 + ], + "flags": { + "collapsed": false + }, + "order": 6, + "mode": 0, + "inputs": [ + { + "name": "model", + "type": "MODEL", + "link": 115 + } + ], + "outputs": [ + { + "name": "MODEL", + "type": "MODEL", + "links": [ + 113 + ] + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.34", + "Node name for S&R": "ModelSamplingSD3" + }, + "widgets_values": [ + 5.000000000000001 + ] + }, + { + "id": 50, + "type": "LatentOperationTonemapReinhard", + "pos": [ + 590, + -160 + ], + "size": [ + 330, + 58 + ], + "flags": {}, + "order": 4, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "LATENT_OPERATION", + "type": "LATENT_OPERATION", + "links": [ + 114 + ] + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.34", + "Node name for S&R": "LatentOperationTonemapReinhard" + }, + "widgets_values": [ + 1.0000000000000002 + ] + }, + { + "id": 52, + "type": "KSampler", + "pos": [ + 940, + -40 + ], + "size": [ + 290, + 262 + ], + "flags": {}, + "order": 11, + "mode": 0, + "inputs": [ + { + "name": "model", + "type": "MODEL", + "link": 121 + }, + { + "name": "positive", + "type": "CONDITIONING", + "link": 117 + }, + { + "name": "negative", + "type": "CONDITIONING", + "link": 120 + }, + { + "name": "latent_image", + "type": "LATENT", + "link": 119 + } + ], + "outputs": [ + { + "name": "LATENT", + "type": "LATENT", + "slot_index": 0, + "links": [ + 122 + ] + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.34", + "Node name for S&R": "KSampler" + }, + "widgets_values": [ + 468254064217846, + "randomize", + 50, + 5, + "euler", + "simple", + 1 + ] + }, + { + "id": 14, + "type": "TextEncodeAceStepAudio", + "pos": [ + 590, + 120 + ], + "size": [ + 340, + 500 + ], + "flags": {}, + "order": 7, + "mode": 0, + "inputs": [ + { + "name": "clip", + "type": "CLIP", + "link": 80 + } + ], + "outputs": [ + { + "name": "CONDITIONING", + "type": "CONDITIONING", + "links": [ + 108, + 117 + ] + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.32", + "Node name for S&R": "TextEncodeAceStepAudio" + }, + "widgets_values": [ + "anime, soft female vocals, kawaii pop, j-pop, childish, piano, guitar, synthesizer, fast, happy, cheerful, lighthearted\t\n", + "[inst]\n\n[verse]\nふわふわ おみみが\nゆれるよ かぜのなか\nきらきら あおいめ\nみつめる せかいを\n\n[verse]\nふわふわ しっぽは\nおおきく ゆれるよ\nきんいろ かみのけ\nなびくよ かぜのなか\n\n[verse]\nコンフィーユーアイの\nまもりびと\nピンクの セーターで\nえがおを くれるよ\n\nあおいろ スカートと\nくろいコート きんのもよう\nやさしい ひかりが\nつつむよ フェネックガール\n\n[verse]\nふわふわ おみみで\nきこえる こころの こえ\nだいすき フェネックガール\nいつでも そばにいるよ\n\n\n", + 0.9900000000000002 + ] + }, + { + "id": 17, + "type": "EmptyAceStepLatentAudio", + "pos": [ + 180, + 50 + ], + "size": [ + 370, + 82 + ], + "flags": {}, + "order": 5, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "LATENT", + "type": "LATENT", + "links": [ + 119 + ] + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.32", + "Node name for S&R": "EmptyAceStepLatentAudio" + }, + "widgets_values": [ + 120, + 1 + ] + }, + { + "id": 59, + "type": "SaveAudioMP3", + "pos": [ + 1260, + -160 + ], + "size": [ + 610, + 136 + ], + "flags": {}, + "order": 13, + "mode": 0, + "inputs": [ + { + "name": "audio", + "type": "AUDIO", + "link": 126 + } + ], + "outputs": [], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.34", + "Node name for S&R": "SaveAudioMP3" + }, + "widgets_values": [ + "audio/ComfyUI", + "V0" + ] + } + ], + "links": [ + [ + 80, + 40, + 1, + 14, + 0, + "CLIP" + ], + [ + 83, + 40, + 2, + 18, + 1, + "VAE" + ], + [ + 108, + 14, + 0, + 44, + 0, + "CONDITIONING" + ], + [ + 113, + 51, + 0, + 49, + 0, + "MODEL" + ], + [ + 114, + 50, + 0, + 49, + 1, + "LATENT_OPERATION" + ], + [ + 115, + 40, + 0, + 51, + 0, + "MODEL" + ], + [ + 117, + 14, + 0, + 52, + 1, + "CONDITIONING" + ], + [ + 119, + 17, + 0, + 52, + 3, + "LATENT" + ], + [ + 120, + 44, + 0, + 52, + 2, + "CONDITIONING" + ], + [ + 121, + 49, + 0, + 52, + 0, + "MODEL" + ], + [ + 122, + 52, + 0, + 18, + 0, + "LATENT" + ], + [ + 126, + 18, + 0, + 59, + 0, + "AUDIO" + ], + [ + 127, + 18, + 0, + 60, + 0, + "AUDIO" + ], + [ + 128, + 18, + 0, + 61, + 0, + "AUDIO" + ], + [ + 136, + 64, + 0, + 68, + 0, + "AUDIO" + ], + [ + 137, + 40, + 2, + 68, + 1, + "VAE" + ] + ], + "groups": [ + { + "id": 1, + "title": "Load model here", + "bounding": [ + 170, + -230, + 390, + 180 + ], + "color": "#3f789e", + "font_size": 24, + "flags": {} + }, + { + "id": 4, + "title": "Latent", + "bounding": [ + 170, + -30, + 390, + 280 + ], + "color": "#3f789e", + "font_size": 24, + "flags": {} + }, + { + "id": 5, + "title": "Adjust the vocal volume", + "bounding": [ + 580, + -230, + 350, + 140 + ], + "color": "#3f789e", + "font_size": 24, + "flags": {} + }, + { + "id": 6, + "title": "For repainting", + "bounding": [ + 170, + 270, + 390, + 223.60000610351562 + ], + "color": "#3f789e", + "font_size": 24, + "flags": {} + }, + { + "id": 7, + "title": "Output", + "bounding": [ + 1250, + -230, + 630, + 760 + ], + "color": "#3f789e", + "font_size": 24, + "flags": {} + } + ], + "config": {}, + "extra": { + "ds": { + "scale": 1, + "offset": [ + -147.02717343600432, + 384.62272311479 + ] + }, + "frontendVersion": "1.19.9", + "node_versions": { + "comfy-core": "0.3.34", + "ace-step": "06f751d65491c9077fa2bc9b06d2c6f2a90e4c56" + }, + "VHS_latentpreview": false, + "VHS_latentpreviewrate": 0, + "VHS_MetadataImage": true, + "VHS_KeepIntermediate": true + }, + "version": 0.4 +} \ No newline at end of file diff --git a/example_workflows/animatediff-video-production-v1.jpg b/example_workflows/animatediff-video-production-v1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..32e28bf4674e0b670b0a68736c5cefb246d626a4 GIT binary patch literal 5372 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 H%>I7>0@UPG literal 0 HcmV?d00001 diff --git a/example_workflows/animatediff-video-production-v1.json b/example_workflows/animatediff-video-production-v1.json new file mode 100644 index 0000000..71ae391 --- /dev/null +++ b/example_workflows/animatediff-video-production-v1.json @@ -0,0 +1,248 @@ +{ + "last_node_id": 10, + "last_link_id": 12, + "nodes": [ + { + "id": 1, + "type": "CheckpointLoaderSimple", + "pos": [50, 100], + "size": {"0": 350, "1": 100}, + "flags": {}, + "order": 0, + "mode": 0, + "properties": {"Node name for S&R": "CheckpointLoaderSimple"}, + "widgets_values": ["v1-5-pruned-emaonly.safetensors"], + "title": "SD 1.5 Checkpoint Loader", + "outputs": [ + {"name": "MODEL", "type": "MODEL", "links": [1], "slot_index": 0}, + {"name": "CLIP", "type": "CLIP", "links": [2, 3], "slot_index": 1}, + {"name": "VAE", "type": "VAE", "links": [4], "slot_index": 2} + ] + }, + { + "id": 2, + "type": "ADE_LoadAnimateDiffModel", + "pos": [50, 300], + "size": {"0": 350, "1": 100}, + "flags": {}, + "order": 1, + "mode": 0, + "properties": {"Node name for S&R": "ADE_LoadAnimateDiffModel"}, + "widgets_values": ["mm_sd_v15_v2.ckpt"], + "title": "Load AnimateDiff Motion Module", + "outputs": [ + {"name": "MOTION_MODEL", "type": "MOTION_MODEL_ADE", "links": [5], "slot_index": 0} + ] + }, + { + "id": 3, + "type": "ADE_ApplyAnimateDiffModelSimple", + "pos": [450, 300], + "size": {"0": 315, "1": 100}, + "flags": {}, + "order": 2, + "mode": 0, + "properties": {"Node name for S&R": "ADE_ApplyAnimateDiffModelSimple"}, + "inputs": [ + {"name": "motion_model", "type": "MOTION_MODEL_ADE", "link": 5} + ], + "outputs": [ + {"name": "M_MODELS", "type": "M_MODELS", "links": [6], "slot_index": 0} + ] + }, + { + "id": 4, + "type": "ADE_UseEvolvedSampling", + "pos": [800, 100], + "size": {"0": 315, "1": 100}, + "flags": {}, + "order": 3, + "mode": 0, + "properties": {"Node name for S&R": "ADE_UseEvolvedSampling"}, + "widgets_values": ["sqrt_linear (AnimateDiff)"], + "inputs": [ + {"name": "model", "type": "MODEL", "link": 1}, + {"name": "m_models", "type": "M_MODELS", "link": 6} + ], + "outputs": [ + {"name": "MODEL", "type": "MODEL", "links": [7], "slot_index": 0} + ] + }, + { + "id": 5, + "type": "CLIPTextEncode", + "pos": [450, 500], + "size": {"0": 400, "1": 200}, + "flags": {}, + "order": 4, + "mode": 0, + "properties": {"Node name for S&R": "CLIPTextEncode"}, + "widgets_values": ["A person walking through a forest, cinematic movement"], + "title": "API Video Prompt", + "inputs": [ + {"name": "clip", "type": "CLIP", "link": 2} + ], + "outputs": [ + {"name": "CONDITIONING", "type": "CONDITIONING", "links": [8], "slot_index": 0} + ] + }, + { + "id": 6, + "type": "CLIPTextEncode", + "pos": [450, 750], + "size": {"0": 400, "1": 200}, + "flags": {}, + "order": 5, + "mode": 0, + "properties": {"Node name for S&R": "CLIPTextEncode"}, + "widgets_values": ["static, blurry, low quality"], + "title": "API Negative Prompt", + "inputs": [ + {"name": "clip", "type": "CLIP", "link": 3} + ], + "outputs": [ + {"name": "CONDITIONING", "type": "CONDITIONING", "links": [9], "slot_index": 0} + ] + }, + { + "id": 7, + "type": "EmptyLatentImage", + "pos": [800, 300], + "size": {"0": 315, "1": 100}, + "flags": {}, + "order": 6, + "mode": 0, + "properties": {"Node name for S&R": "EmptyLatentImage"}, + "widgets_values": [512, 512, 16], + "title": "API Latent Config (16 frames)", + "outputs": [ + {"name": "LATENT", "type": "LATENT", "links": [10], "slot_index": 0} + ] + }, + { + "id": 8, + "type": "KSamplerAdvanced", + "pos": [1150, 100], + "size": {"0": 315, "1": 474}, + "flags": {}, + "order": 7, + "mode": 0, + "properties": {"Node name for S&R": "KSamplerAdvanced"}, + "widgets_values": ["enable", 42, "fixed", 20, 8.0, "euler", "normal", 0, 10000, "disable"], + "title": "AnimateDiff Sampler", + "inputs": [ + {"name": "model", "type": "MODEL", "link": 7}, + {"name": "positive", "type": "CONDITIONING", "link": 8}, + {"name": "negative", "type": "CONDITIONING", "link": 9}, + {"name": "latent_image", "type": "LATENT", "link": 10} + ], + "outputs": [ + {"name": "LATENT", "type": "LATENT", "links": [11], "slot_index": 0} + ] + }, + { + "id": 9, + "type": "VAEDecode", + "pos": [1500, 100], + "size": {"0": 315, "1": 100}, + "flags": {}, + "order": 8, + "mode": 0, + "properties": {"Node name for S&R": "VAEDecode"}, + "title": "VAE Decode Video", + "inputs": [ + {"name": "samples", "type": "LATENT", "link": 11}, + {"name": "vae", "type": "VAE", "link": 4} + ], + "outputs": [ + {"name": "IMAGE", "type": "IMAGE", "links": [12], "slot_index": 0} + ] + }, + { + "id": 10, + "type": "VHS_VideoCombine", + "pos": [1800, 100], + "size": {"0": 315, "1": 100}, + "flags": {}, + "order": 9, + "mode": 0, + "properties": {"Node name for S&R": "VHS_VideoCombine"}, + "widgets_values": [8, 0, "animatediff_output", "video/h264-mp4", false, true, "yuv420p", 19, true, false], + "title": "Combine Frames", + "inputs": [ + {"name": "images", "type": "IMAGE", "link": 12} + ] + } + ], + "links": [ + [1, 1, 0, 4, 0, "MODEL"], + [2, 1, 1, 5, 0, "CLIP"], + [3, 1, 1, 6, 0, "CLIP"], + [4, 1, 2, 9, 1, "VAE"], + [5, 2, 0, 3, 0, "MOTION_MODEL_ADE"], + [6, 3, 0, 4, 1, "M_MODELS"], + [7, 4, 0, 8, 0, "MODEL"], + [8, 5, 0, 8, 1, "CONDITIONING"], + [9, 6, 0, 8, 2, "CONDITIONING"], + [10, 7, 0, 8, 3, "LATENT"], + [11, 8, 0, 9, 0, "LATENT"], + [12, 9, 0, 10, 0, "IMAGE"] + ], + "extra": { + "workflow_info": { + "name": "AnimateDiff Video Production", + "version": "1.0.0", + "description": "Text-to-video generation using AnimateDiff. Create animated sequences from text prompts with natural motion.", + "category": "advanced", + "tags": [ + "animatediff", + "text-to-video", + "animation", + "advanced", + "production" + ], + "requirements": { + "models": [ + "stable-diffusion-v1-5", + "animatediff-motion-module-v15" + ], + "custom_nodes": [ + "ComfyUI-AnimateDiff-Evolved", + "ComfyUI-VideoHelperSuite" + ], + "vram_min": "12GB" + }, + "parameters": { + "prompt": { + "node_id": 5, + "type": "string", + "required": true, + "description": "Describe action and movement" + }, + "frames": { + "node_id": 7, + "type": "integer", + "default": 16, + "description": "Number of frames (8-32)" + }, + "fps": { + "node_id": 10, + "type": "integer", + "default": 8 + } + }, + "performance": { + "avg_generation_time": "60-90 seconds", + "vram_usage": "~16-20GB", + "output": "16 frames (~2s @ 8fps)" + }, + "use_cases": [ + "Text-to-video animation", + "Character animations", + "Motion graphics", + "Animated storyboards" + ] + } + }, + "version": 0.4 +} diff --git a/example_workflows/batch-pipeline-production-v1.jpg b/example_workflows/batch-pipeline-production-v1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..8201ddf610f4c5bd4da42aa940270d571e4a7cc9 GIT binary patch literal 4812 zcmeH_c`)1S8pnUJ1=TvSr4+G5DUPF-TEi*FPSqMsTUykXt7_jG4q7{{C@K|B5o>8J zu@|k{siKxDLd05XseQ{y&)w$UnKN_mo%^TnJI_1w&ilOYJfG+JQb(y%zz>GH2D$(U z1OOn~0;rz>ZGe%Ufq{XZk+v~1GBSbLn87r$pE||D24UymfUrX#oILzcPA)!f2;{8r zSv~;)7!1Y<6@iNg!ubVZg5N&@(Vl{tz-O45&j@lsxCH-eQJVn>Gf0RIpa+QnbPy0d z1VnuYz-V$t4$-^qg5#tLzQ8dH)(*-rg&mg_Q?-mX}ZLytu>#Nd?7AO3Es#+P~=N>ggL8 zT3A|HBW}Oa^t|j1i>SQ$8n?Yy zKPwMhVOnhcJK7&){~1{L|3vl=uzzxm0c`Xj+VJQhfF`h6B$3_t^iWnJI~F*JlOCLS z;KT!e<^hr&Q$W%a*+DPnj-$iSLn~*uI*oin$^jdqHEUzMkYN6`psfYTk?4jWo!y@& zp!FJqi?1ko&?}4cGJr_&_H`2hg?ho6T(Ev`@6$$_m`AXhr8x{ zOdI;&^+17ATDE~(l83ud7xc^@`0dX^PsYeR=SOeSsq zczsAg8~cP^=s-oHm`bN&wwe?L8!4EA^15QN=!+S!UTu7x=v1kIfm#f!la{}DXm+(x z0X&lTy=u||I=^vkV-)j~d=d;jw=7dQr_nGjuM+ z*rc$wCEv%I6YkZf%^vMG@OlsBeod)#TYWvuT2hx;Ss`W8CO}WC2{$)@a5L~_E_Z|! zj7DiZ@B+<5>>)WZ?qc}mZR|`>q;5jlpb(jukCJy6?Q5MSzAB5KN2@Il4*3ig)M45*u1FpR5@tnV~% z9w+s4G|R!ykci}ryug*QvJ%^?gbH2x#}b#%=pX%@GfeXAS_<0p zd(m)zbJ<@KcE=5x->5qv_AQ7QNh)A~7y2l);pjV=6I7+^Ihtj-`4bG$fSU{ZOZjsB z0Sez4-a&Zc{8-O6U7#4&eu>Er>S~Qts#ZFsoWMISbmz1%_?#ts58nmyjam=Fpwv0+ z;BQ3*O5(ga;soOA@NpDG$G@)nL4y)uqIG-4o;=A5WljiR{zRe30E=T~4X)E!%c7@S zD_0P??X11=g>Cmd-*l{^v^iNS(=4JmvE)~4Pv+9qezjxCvcG`*cJWjEdx|H>X}vn}I*kbPdWbG|H6#GJTN zT()2@7o;$8#n!o-QRZ3Wu`Mn`jC%qGUidQo8DWhv47S2b%;Ga5ukw0n{VJc4l-QJD zxek5ka}dg2O3Wb{dES-1-qS9W;dqPf*0u=I2Iu~n;%V8j?lUzv(C>Zs<=yRZibUzN zx0BFE=7Y0CiszcjZQ8S*p1CeyiU7|eoz^mw3tW>Yc0DXo7pD&TyHxJVhcyfBd-kf> z3lW@jq_eoqafMt&q~X$vzma!*cC3^`H>*VUum7(=__v`1ChK!i*T)PP+|Naww-$16 z6$smUafJD;zk$vt?#t*`nVw*7ZO7z#QTkHo$XG*H>`WpgH#s$izA~7U$NIb?FJKv1Nb|We`xLRJ&2ZeHG3dyPCwzl&Gzv;{+pJ-_5(78JJiDa@`RNd|U z;lAF~o+859-Mr7Df~Nw%{C<9RCIj+Vk9>g&u;kd3`aVs)ERxgqyj>S)Qk?fO4+u1T zmN&Z#HC4(n;^n`oddaowXyq$zC2wcRFY8o{hV*OrR#oWH*_6J3>SJAu(Q%{Q-tZmn zTvt>MexKjU^LUVjUrDC7p4607KgGUxZdr5E;|NsjOtvKyjO|8iqeFceoEX(a(^I^Y zNBPJu1W8FN6%v};NG?U1>s6U`L+#5@DHLhVAUpB-Wewn}yE}sPv0Q-R39&tB99r5c`G|WH%~rWKOUfDfBL?j67uiDWtP&)v{i6 zv_vt6h&j)@srC%y9X8kMT|cW#xt}kZxvTO*^W4N2$gW?2qErcg`ZZ)%HF7fKmY0%J zH6gH2Lujangem51e@5Pdoske)=7wstF?i literal 0 HcmV?d00001 diff --git a/example_workflows/batch-pipeline-production-v1.json b/example_workflows/batch-pipeline-production-v1.json new file mode 100644 index 0000000..20a23f1 --- /dev/null +++ b/example_workflows/batch-pipeline-production-v1.json @@ -0,0 +1,247 @@ +{ + "last_node_id": 10, + "last_link_id": 10, + "nodes": [ + { + "id": 1, + "type": "CheckpointLoaderSimple", + "pos": [50, 100], + "size": {"0": 350, "1": 100}, + "flags": {}, + "order": 0, + "mode": 0, + "properties": {"Node name for S&R": "CheckpointLoaderSimple"}, + "widgets_values": ["sd_xl_base_1.0.safetensors"], + "title": "SDXL Base Loader", + "outputs": [ + {"name": "MODEL", "type": "MODEL", "links": [1], "slot_index": 0}, + {"name": "CLIP", "type": "CLIP", "links": [2, 3], "slot_index": 1}, + {"name": "VAE", "type": "VAE", "links": [4], "slot_index": 2} + ] + }, + { + "id": 2, + "type": "CLIPTextEncode", + "pos": [450, 100], + "size": {"0": 400, "1": 200}, + "flags": {}, + "order": 1, + "mode": 0, + "properties": {"Node name for S&R": "CLIPTextEncode"}, + "widgets_values": ["A beautiful landscape"], + "title": "API Base Prompt", + "inputs": [ + {"name": "clip", "type": "CLIP", "link": 2} + ], + "outputs": [ + {"name": "CONDITIONING", "type": "CONDITIONING", "links": [5], "slot_index": 0} + ] + }, + { + "id": 3, + "type": "CLIPTextEncode", + "pos": [450, 350], + "size": {"0": 400, "1": 200}, + "flags": {}, + "order": 2, + "mode": 0, + "properties": {"Node name for S&R": "CLIPTextEncode"}, + "widgets_values": ["blurry, low quality"], + "title": "API Negative Prompt", + "inputs": [ + {"name": "clip", "type": "CLIP", "link": 3} + ], + "outputs": [ + {"name": "CONDITIONING", "type": "CONDITIONING", "links": [6], "slot_index": 0} + ] + }, + { + "id": 4, + "type": "EmptyLatentImage", + "pos": [450, 600], + "size": {"0": 315, "1": 106}, + "flags": {}, + "order": 3, + "mode": 0, + "properties": {"Node name for S&R": "EmptyLatentImage"}, + "widgets_values": [1024, 1024, 4], + "title": "API Latent Config (Batch=4)", + "outputs": [ + {"name": "LATENT", "type": "LATENT", "links": [7], "slot_index": 0} + ] + }, + { + "id": 5, + "type": "KSampler", + "pos": [900, 100], + "size": {"0": 315, "1": 474}, + "flags": {}, + "order": 4, + "mode": 0, + "properties": {"Node name for S&R": "KSampler"}, + "widgets_values": [42, "fixed", 20, 7.0, "euler", "normal", 1], + "title": "Batch Sampler (4 variations)", + "inputs": [ + {"name": "model", "type": "MODEL", "link": 1}, + {"name": "positive", "type": "CONDITIONING", "link": 5}, + {"name": "negative", "type": "CONDITIONING", "link": 6}, + {"name": "latent_image", "type": "LATENT", "link": 7} + ], + "outputs": [ + {"name": "LATENT", "type": "LATENT", "links": [8], "slot_index": 0} + ] + }, + { + "id": 6, + "type": "VAEDecode", + "pos": [1270, 100], + "size": {"0": 210, "1": 46}, + "flags": {}, + "order": 5, + "mode": 0, + "properties": {"Node name for S&R": "VAEDecode"}, + "title": "VAE Decode Batch", + "inputs": [ + {"name": "samples", "type": "LATENT", "link": 8}, + {"name": "vae", "type": "VAE", "link": 4} + ], + "outputs": [ + {"name": "IMAGE", "type": "IMAGE", "links": [9, 10], "slot_index": 0} + ] + }, + { + "id": 7, + "type": "PreviewImage", + "pos": [1530, 100], + "size": {"0": 400, "1": 400}, + "flags": {}, + "order": 6, + "mode": 0, + "properties": {"Node name for S&R": "PreviewImage"}, + "title": "Preview All Variations", + "inputs": [ + {"name": "images", "type": "IMAGE", "link": 9} + ] + }, + { + "id": 8, + "type": "SaveImage", + "pos": [1530, 550], + "size": {"0": 400, "1": 100}, + "flags": {}, + "order": 7, + "mode": 0, + "properties": {"Node name for S&R": "SaveImage"}, + "widgets_values": ["batch_output"], + "title": "API Save All", + "inputs": [ + {"name": "images", "type": "IMAGE", "link": 10} + ] + } + ], + "links": [ + [1, 1, 0, 5, 0, "MODEL"], + [2, 1, 1, 2, 0, "CLIP"], + [3, 1, 1, 3, 0, "CLIP"], + [4, 1, 2, 6, 1, "VAE"], + [5, 2, 0, 5, 1, "CONDITIONING"], + [6, 3, 0, 5, 2, "CONDITIONING"], + [7, 4, 0, 5, 3, "LATENT"], + [8, 5, 0, 6, 0, "LATENT"], + [9, 6, 0, 7, 0, "IMAGE"], + [10, 6, 0, 8, 0, "IMAGE"] + ], + "groups": [], + "config": {}, + "extra": { + "workflow_info": { + "name": "Batch Pipeline Production", + "version": "1.0.0", + "description": "Batch generation pipeline for multiple variations. Generate 4 images simultaneously with different seeds for rapid iteration using Stable Diffusion XL.", + "category": "advanced", + "tags": [ + "batch", + "multi-generation", + "variations", + "advanced", + "production", + "flux" + ], + "requirements": { + "models": ["stable-diffusion-xl-base-1.0"], + "custom_nodes": [], + "vram_min": "20GB", + "vram_recommended": "24GB" + }, + "parameters": { + "prompt": { + "node_id": 2, + "widget_index": 0, + "type": "string", + "required": true, + "default": "A beautiful landscape", + "description": "Text description of desired image" + }, + "negative_prompt": { + "node_id": 3, + "widget_index": 0, + "type": "string", + "required": false, + "default": "blurry, low quality", + "description": "Undesired elements to avoid" + }, + "batch_count": { + "node_id": 4, + "widget_index": 2, + "type": "integer", + "required": false, + "default": 4, + "min": 1, + "max": 8, + "description": "Number of variations to generate (batch size)" + }, + "seed": { + "node_id": 5, + "widget_index": 0, + "type": "integer", + "required": false, + "default": 42, + "min": 0, + "max": 4294967295, + "description": "Random seed for reproducibility" + }, + "steps": { + "node_id": 5, + "widget_index": 2, + "type": "integer", + "required": false, + "default": 20, + "min": 15, + "max": 50, + "description": "Number of sampling steps (20-30 recommended for SDXL)" + } + }, + "outputs": { + "images": { + "node_id": 8, + "type": "image", + "format": "PNG", + "count": 4, + "resolution": "1024x1024 (configurable)" + } + }, + "performance": { + "avg_generation_time": "45-60 seconds for 4 images (20 steps)", + "vram_usage": "~20-24GB (depends on batch size)", + "gpu_utilization": "95-100%" + }, + "use_cases": [ + "Rapid prototyping with multiple variations", + "Concept exploration and A/B testing", + "Client presentations with options", + "Quick iteration workflows" + ] + } + }, + "version": 0.4 +} diff --git a/example_workflows/cogvideox-i2v-production-v1.jpg b/example_workflows/cogvideox-i2v-production-v1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..254f6a489676b8fcad002ec676cbc9ca15f77c96 GIT binary patch literal 5321 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 VQ_x=R-NBv%dk*{?2cV3RzW_|W{>cCU literal 0 HcmV?d00001 diff --git a/example_workflows/cogvideox-i2v-production-v1.json b/example_workflows/cogvideox-i2v-production-v1.json new file mode 100644 index 0000000..c799981 --- /dev/null +++ b/example_workflows/cogvideox-i2v-production-v1.json @@ -0,0 +1,420 @@ +{ + "last_node_id": 8, + "last_link_id": 10, + "nodes": [ + { + "id": 1, + "type": "LoadImage", + "pos": [50, 100], + "size": [315, 314], + "widgets_values": ["input_frame.png", "image"], + "title": "API Input Image", + "flags": {}, + "order": 0, + "mode": 0, + "properties": { + "Node name for S&R": "LoadImage" + }, + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [1], + "slot_index": 0 + }, + { + "name": "MASK", + "type": "MASK", + "links": null + } + ] + }, + { + "id": 2, + "type": "DownloadAndLoadCogVideoModel", + "pos": [50, 500], + "size": [350, 100], + "widgets_values": ["THUDM/CogVideoX-5b-I2V", "bf16", "disabled", true], + "title": "CogVideoX-5b-I2V Loader", + "flags": {}, + "order": 1, + "mode": 0, + "properties": { + "Node name for S&R": "DownloadAndLoadCogVideoModel" + }, + "outputs": [ + { + "name": "model", + "type": "COGVIDEOMODEL", + "links": [2], + "slot_index": 0 + }, + { + "name": "vae", + "type": "VAE", + "links": [3, 10], + "slot_index": 1 + } + ] + }, + { + "id": 7, + "type": "CLIPLoader", + "pos": [50, 650], + "size": [350, 100], + "widgets_values": ["t5xxl_fp16.safetensors", "sd3"], + "title": "T5 CLIP Loader", + "flags": {}, + "order": 2, + "mode": 0, + "properties": { + "Node name for S&R": "CLIPLoader" + }, + "outputs": [ + { + "name": "CLIP", + "type": "CLIP", + "links": [4, 5], + "slot_index": 0 + } + ] + }, + { + "id": 3, + "type": "CogVideoTextEncode", + "pos": [450, 100], + "size": [400, 200], + "widgets_values": ["Camera movement description, action, scene details", 1, false], + "title": "API Video Prompt (Positive)", + "flags": {}, + "order": 3, + "mode": 0, + "properties": { + "Node name for S&R": "CogVideoTextEncode" + }, + "inputs": [ + { + "name": "clip", + "type": "CLIP", + "link": 4 + } + ], + "outputs": [ + { + "name": "conditioning", + "type": "CONDITIONING", + "links": [6], + "slot_index": 0 + }, + { + "name": "clip", + "type": "CLIP", + "links": null + } + ] + }, + { + "id": 8, + "type": "CogVideoTextEncode", + "pos": [450, 350], + "size": [400, 200], + "widgets_values": ["low quality, blurry, distorted, watermark", 1, true], + "title": "API Video Prompt (Negative)", + "flags": {}, + "order": 4, + "mode": 0, + "properties": { + "Node name for S&R": "CogVideoTextEncode" + }, + "inputs": [ + { + "name": "clip", + "type": "CLIP", + "link": 5 + } + ], + "outputs": [ + { + "name": "conditioning", + "type": "CONDITIONING", + "links": [7], + "slot_index": 0 + }, + { + "name": "clip", + "type": "CLIP", + "links": null + } + ] + }, + { + "id": 9, + "type": "CogVideoImageEncode", + "pos": [450, 600], + "size": [315, 100], + "widgets_values": [], + "title": "Encode Input Image", + "flags": {}, + "order": 5, + "mode": 0, + "properties": { + "Node name for S&R": "CogVideoImageEncode" + }, + "inputs": [ + { + "name": "vae", + "type": "VAE", + "link": 3 + }, + { + "name": "start_image", + "type": "IMAGE", + "link": 1 + } + ], + "outputs": [ + { + "name": "samples", + "type": "LATENT", + "links": [8], + "slot_index": 0 + } + ] + }, + { + "id": 4, + "type": "CogVideoSampler", + "pos": [900, 100], + "size": [315, 474], + "widgets_values": [49, 50, 6.0, 42, "fixed", "CogVideoXDDIM", 1.0], + "title": "CogVideoX Sampler (6s @ 8fps)", + "flags": {}, + "order": 6, + "mode": 0, + "properties": { + "Node name for S&R": "CogVideoSampler" + }, + "inputs": [ + { + "name": "model", + "type": "COGVIDEOMODEL", + "link": 2 + }, + { + "name": "positive", + "type": "CONDITIONING", + "link": 6 + }, + { + "name": "negative", + "type": "CONDITIONING", + "link": 7 + }, + { + "name": "image_cond_latents", + "type": "LATENT", + "link": 8 + } + ], + "outputs": [ + { + "name": "samples", + "type": "LATENT", + "links": [9], + "slot_index": 0 + } + ] + }, + { + "id": 5, + "type": "CogVideoDecode", + "pos": [1250, 100], + "size": [315, 200], + "widgets_values": [true, 240, 360, 0.25, 0.25], + "title": "VAE Decode Video", + "flags": {}, + "order": 7, + "mode": 0, + "properties": { + "Node name for S&R": "CogVideoDecode" + }, + "inputs": [ + { + "name": "vae", + "type": "VAE", + "link": 10 + }, + { + "name": "samples", + "type": "LATENT", + "link": 9 + } + ], + "outputs": [ + { + "name": "images", + "type": "IMAGE", + "links": [11], + "slot_index": 0 + } + ] + }, + { + "id": 6, + "type": "VHS_VideoCombine", + "pos": [1600, 100], + "size": [315, 200], + "widgets_values": [8, 0, "cogvideox_output", "video/h264-mp4", "yuv420p", 19, true, false], + "title": "Combine Video Frames", + "flags": {}, + "order": 8, + "mode": 0, + "properties": { + "Node name for S&R": "VHS_VideoCombine" + }, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 11 + } + ], + "outputs": [ + { + "name": "Filenames", + "type": "VHS_FILENAMES", + "links": null + } + ] + } + ], + "links": [ + [1, 1, 0, 9, 1, "IMAGE"], + [2, 2, 0, 4, 0, "COGVIDEOMODEL"], + [3, 2, 1, 9, 0, "VAE"], + [4, 7, 0, 3, 0, "CLIP"], + [5, 7, 0, 8, 0, "CLIP"], + [6, 3, 0, 4, 1, "CONDITIONING"], + [7, 8, 0, 4, 2, "CONDITIONING"], + [8, 9, 0, 4, 3, "LATENT"], + [9, 4, 0, 5, 1, "LATENT"], + [10, 2, 1, 5, 0, "VAE"], + [11, 5, 0, 6, 0, "IMAGE"] + ], + "groups": [], + "config": {}, + "extra": { + "workflow_info": { + "name": "CogVideoX Image-to-Video Production", + "version": "1.2.0", + "description": "AI-driven image-to-video using CogVideoX-5b-I2V. Generate 6-second videos (49 frames @ 8fps) from input images with camera movement and action.", + "category": "image-to-video", + "tags": ["cogvideox", "i2v", "video-generation", "production"], + "requirements": { + "models": ["CogVideoX-5b-I2V", "T5-XXL FP16"], + "custom_nodes": ["ComfyUI-VideoHelperSuite", "ComfyUI-CogVideoXWrapper"], + "vram_min": "20GB", + "vram_recommended": "24GB" + }, + "parameters": { + "input_image": { + "node_id": 1, + "widget_index": 0, + "type": "image", + "required": true, + "description": "Starting frame for video generation" + }, + "positive_prompt": { + "node_id": 3, + "widget_index": 0, + "type": "string", + "required": true, + "default": "Camera movement description, action, scene details", + "description": "Describe desired camera movement, actions, and scene" + }, + "negative_prompt": { + "node_id": 8, + "widget_index": 0, + "type": "string", + "required": false, + "default": "low quality, blurry, distorted, watermark", + "description": "Undesired elements to avoid" + }, + "num_frames": { + "node_id": 4, + "widget_index": 0, + "type": "integer", + "required": false, + "default": 49, + "min": 1, + "max": 1024, + "description": "Number of frames to generate (49 = ~6s @ 8fps)" + }, + "steps": { + "node_id": 4, + "widget_index": 1, + "type": "integer", + "required": false, + "default": 50, + "min": 20, + "max": 100, + "description": "Sampling steps (50 recommended for quality)" + }, + "cfg": { + "node_id": 4, + "widget_index": 2, + "type": "float", + "required": false, + "default": 6.0, + "min": 1.0, + "max": 30.0, + "description": "Classifier-free guidance scale" + }, + "seed": { + "node_id": 4, + "widget_index": 3, + "type": "integer", + "required": false, + "default": 42, + "description": "Random seed for reproducibility" + }, + "fps": { + "node_id": 6, + "widget_index": 0, + "type": "integer", + "required": false, + "default": 8, + "description": "Output video framerate" + } + }, + "outputs": { + "video": { + "node_id": 6, + "type": "video", + "format": "MP4 (H.264)", + "resolution": "Based on input image", + "duration": "~6 seconds @ 8fps (49 frames)" + } + }, + "performance": { + "avg_generation_time": "120-180 seconds", + "vram_usage": "~20-22GB", + "gpu_utilization": "95-100%" + }, + "use_cases": [ + "Animate static images with camera motion", + "Create video loops from single frames", + "Add dynamic movement to product shots", + "Generate cinematic camera movements" + ], + "notes": [ + "CogVideoX-5b-I2V is specifically trained for image-to-video generation", + "Model will download automatically on first use (~10GB)", + "Enable VAE tiling to reduce VRAM usage", + "Higher steps (50-100) improve quality but increase generation time", + "T5-XXL text encoder required - automatically linked from SD3.5" + ] + } + }, + "version": 0.4 +} diff --git a/example_workflows/controlnet-fusion-production-v1.jpg b/example_workflows/controlnet-fusion-production-v1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..2281e89c1ab512fc417bfdf2fa6da470dd9998aa GIT binary patch literal 5177 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 W0ELNv{7()3XyA_q{?P!KG5IgaDVT!* literal 0 HcmV?d00001 diff --git a/example_workflows/diffrhythm-reference-based-v1.json b/example_workflows/diffrhythm-reference-based-v1.json new file mode 100644 index 0000000..efe8b93 --- /dev/null +++ b/example_workflows/diffrhythm-reference-based-v1.json @@ -0,0 +1,164 @@ +{ + "last_node_id": 4, + "last_link_id": 3, + "nodes": [ + { + "id": 1, + "type": "LoadAudio", + "pos": [100, 100], + "size": [300, 100], + "flags": {}, + "order": 0, + "mode": 0, + "outputs": [ + { + "name": "AUDIO", + "type": "AUDIO", + "links": [1] + } + ], + "properties": { + "Node name for S&R": "LoadAudio" + }, + "widgets_values": [ + "reference_audio.wav" + ], + "title": "Load Reference Audio" + }, + { + "id": 2, + "type": "DiffRhythmRun", + "pos": [500, 100], + "size": [400, 450], + "flags": {}, + "order": 1, + "mode": 0, + "inputs": [ + { + "name": "style_audio_or_edit_song", + "type": "AUDIO", + "link": 1 + } + ], + "outputs": [ + { + "name": "AUDIO", + "type": "AUDIO", + "links": [2, 3] + } + ], + "properties": { + "Node name for S&R": "DiffRhythmRun" + }, + "widgets_values": [ + "cfm_model_v1_2.pt", + "Energetic rock music with driving guitar riffs and powerful drums", + true, + "euler", + 30, + 5, + "speed", + 456, + "randomize", + false, + "[-1, 20], [60, -1]" + ], + "title": "DiffRhythm Reference-Based Generation" + }, + { + "id": 3, + "type": "PreviewAudio", + "pos": [1000, 100], + "size": [300, 100], + "flags": {}, + "order": 2, + "mode": 0, + "inputs": [ + { + "name": "audio", + "type": "AUDIO", + "link": 2 + } + ], + "properties": { + "Node name for S&R": "PreviewAudio" + }, + "title": "Preview Generated Audio" + }, + { + "id": 4, + "type": "SaveAudio", + "pos": [1000, 250], + "size": [300, 100], + "flags": {}, + "order": 3, + "mode": 0, + "inputs": [ + { + "name": "audio", + "type": "AUDIO", + "link": 3 + } + ], + "properties": { + "Node name for S&R": "SaveAudio" + }, + "widgets_values": [ + "diffrhythm_reference_output" + ], + "title": "Save Audio" + } + ], + "links": [ + [1, 1, 0, 2, 0, "AUDIO"], + [2, 2, 0, 3, 0, "AUDIO"], + [3, 2, 0, 4, 0, "AUDIO"] + ], + "groups": [], + "config": {}, + "extra": { + "workflow_info": { + "name": "DiffRhythm Reference-Based Generation v1", + "description": "Generate new music based on a reference audio file while following text prompt guidance", + "version": "1.0.0", + "author": "valknar@pivoine.art", + "category": "text-to-music", + "tags": ["diffrhythm", "music-generation", "reference-based", "style-transfer"], + "requirements": { + "custom_nodes": ["ComfyUI_DiffRhythm"], + "models": ["ASLP-lab/DiffRhythm-1_2", "ASLP-lab/DiffRhythm-vae", "OpenMuQ/MuQ-MuLan-large", "OpenMuQ/MuQ-large-msd-iter", "FacebookAI/xlm-roberta-base"], + "vram_min": "14GB", + "vram_recommended": "18GB", + "system_deps": ["espeak-ng"] + }, + "usage": { + "reference_audio": "Path to reference audio file (WAV, MP3, or other supported formats)", + "model": "cfm_model_v1_2.pt (DiffRhythm 1.2)", + "style_prompt": "Text description guiding the style and characteristics of generated music", + "unload_model": "Boolean to unload model after generation (default: true)", + "odeint_method": "ODE solver: euler, midpoint, rk4, implicit_adams (default: euler)", + "steps": "Number of diffusion steps: 1-100 (default: 30)", + "cfg": "Classifier-free guidance scale: 1-10 (default: 5 for reference-based)", + "quality_or_speed": "Generation mode: quality or speed (default: speed)", + "seed": "Random seed for reproducibility (default: 456)", + "edit": "Enable segment editing mode (default: false)", + "edit_segments": "Segments to edit when edit=true" + }, + "use_cases": [ + "Style transfer: Apply the style of reference music to new prompt", + "Variations: Create variations of existing compositions", + "Genre transformation: Transform music to different genre while keeping structure", + "Mood adaptation: Change the mood/emotion while maintaining musical elements" + ], + "notes": [ + "This workflow combines reference audio with text prompt guidance", + "The reference audio is connected to the style_audio_or_edit_song input", + "Higher cfg values (7-10) = closer adherence to both prompt and reference", + "Lower cfg values (2-4) = more creative interpretation", + "Reference audio should ideally be similar duration to target (95s for cfm_model_v1_2.pt)", + "Can use any format supported by ComfyUI's LoadAudio node" + ] + } + }, + "version": 0.4 +} diff --git a/example_workflows/diffrhythm-simple-t2m-v1.jpg b/example_workflows/diffrhythm-simple-t2m-v1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..4a2b270fb23b24d5e0eab847c44ed9a4a5e36152 GIT binary patch literal 6101 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 O^1v?-{L2HZ@Banw4U9hk literal 0 HcmV?d00001 diff --git a/example_workflows/diffrhythm-simple-t2m-v1.json b/example_workflows/diffrhythm-simple-t2m-v1.json new file mode 100644 index 0000000..3f422cb --- /dev/null +++ b/example_workflows/diffrhythm-simple-t2m-v1.json @@ -0,0 +1,125 @@ +{ + "last_node_id": 3, + "last_link_id": 2, + "nodes": [ + { + "id": 1, + "type": "DiffRhythmRun", + "pos": [100, 100], + "size": [400, 400], + "flags": {}, + "order": 0, + "mode": 0, + "outputs": [ + { + "name": "AUDIO", + "type": "AUDIO", + "links": [1, 2] + } + ], + "properties": { + "Node name for S&R": "DiffRhythmRun" + }, + "widgets_values": [ + "cfm_model_v1_2.pt", + "Upbeat electronic dance music with energetic beats and synthesizer melodies", + true, + "euler", + 30, + 4, + "speed", + 42, + "randomize", + false, + "[-1, 20], [60, -1]" + ], + "title": "DiffRhythm Text-to-Music (95s)" + }, + { + "id": 2, + "type": "PreviewAudio", + "pos": [600, 100], + "size": [300, 100], + "flags": {}, + "order": 1, + "mode": 0, + "inputs": [ + { + "name": "audio", + "type": "AUDIO", + "link": 1 + } + ], + "properties": { + "Node name for S&R": "PreviewAudio" + }, + "title": "Preview Audio" + }, + { + "id": 3, + "type": "SaveAudio", + "pos": [600, 250], + "size": [300, 100], + "flags": {}, + "order": 2, + "mode": 0, + "inputs": [ + { + "name": "audio", + "type": "AUDIO", + "link": 2 + } + ], + "properties": { + "Node name for S&R": "SaveAudio" + }, + "widgets_values": [ + "diffrhythm_output" + ], + "title": "Save Audio" + } + ], + "links": [ + [1, 1, 0, 2, 0, "AUDIO"], + [2, 1, 0, 3, 0, "AUDIO"] + ], + "groups": [], + "config": {}, + "extra": { + "workflow_info": { + "name": "DiffRhythm Simple Text-to-Music v1", + "description": "Basic text-to-music generation using DiffRhythm 1.2 (95 seconds)", + "version": "1.0.0", + "author": "valknar@pivoine.art", + "category": "text-to-music", + "tags": ["diffrhythm", "music-generation", "text-to-music", "95s"], + "requirements": { + "custom_nodes": ["ComfyUI_DiffRhythm"], + "models": ["ASLP-lab/DiffRhythm-1_2", "ASLP-lab/DiffRhythm-vae", "OpenMuQ/MuQ-MuLan-large", "OpenMuQ/MuQ-large-msd-iter", "FacebookAI/xlm-roberta-base"], + "vram_min": "12GB", + "vram_recommended": "16GB", + "system_deps": ["espeak-ng"] + }, + "usage": { + "model": "cfm_model_v1_2.pt (DiffRhythm 1.2 - 95s generation)", + "style_prompt": "Text description of the desired music style, mood, and instruments", + "unload_model": "Boolean to unload model after generation (default: true)", + "odeint_method": "ODE solver: euler, midpoint, rk4, implicit_adams (default: euler)", + "steps": "Number of diffusion steps: 1-100 (default: 30)", + "cfg": "Classifier-free guidance scale: 1-10 (default: 4)", + "quality_or_speed": "Generation mode: quality or speed (default: speed)", + "seed": "Random seed for reproducibility (default: 42)", + "edit": "Enable segment editing mode (default: false)", + "edit_segments": "Segments to edit when edit=true (default: [-1, 20], [60, -1])" + }, + "notes": [ + "This workflow uses DiffRhythm 1.2 for 95-second music generation", + "All parameters except model and style_prompt are optional", + "Supports English and Chinese text prompts", + "Generation time: ~30-60 seconds on RTX 4090", + "Can optionally connect MultiLineLyricsDR node for lyrics input" + ] + } + }, + "version": 0.4 +} diff --git a/example_workflows/face-upscale-production-v1.jpg b/example_workflows/face-upscale-production-v1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..07e88e211ec2723551cb8329d0b393fdf178f78d GIT binary patch literal 4847 zcmeH~c{J4PAIHCgv5T=^%ZxQbgvpjA3aR8WF_xHyB+V6L8(Sj^rR0Yibty8GZ48&W z!(>T{i_9-eWZ$wUV{I^+-*kW5Ilpu6`7P)7r}uL{&pFR|KF@PLujljr=V5&o8_b!&U@$MAFh3thqC!Ff!Vpn$afm1cA|b6HBOxg# z1%b#a%gQM#!eB5785K1ZsG0&42K{~sh;x*Wm+t^S{{g5ZL=yU6i~S0K@Pm}N0B(>9 zzy$$uLqO~|0E|;781%bNR5eSvbTiZpeM1uk1f^wUe~?o@sG)gC3x3qd*u>QA#7SE_ z`%@055$9dqknSFyewX|&2V4of8WtWAiHnMkxp^xoIpy}9)Xc004++_i9{*fGEG&Bd zqPV2=m+BhIuhiN)+Uu4#Z(G}bYwzgk?fcL_@NsZxa%%e1%ZyqcCDe5v`u|*kyT!@$SM2)kA zy$%HlMIt?=V!owKy{d(A{yd8rwOC&KV_k( z#uV(7qMjqeu4ag~DEy-U5@Rz6i@kxpmq#<s{E@S3Qlr@1d4uLvTv;C7o!{=nK zO&s7?tx~}I)}3A=dP?P&T8|pKpEFE-5NReV&NO_}s8E%->(Ptv3_kWbjl~?twqlcf z?YYwAn;X^o;ij7n#*XWs4}abMWqY+^^ln}4Wu6J>>xTHPEH;nUEfD|wOskx&3x;&e_{J}=+ak(v9d`~NFW|Y8Ca=V z(Qu^kqjTtKR6g&{wPYOw(@$<9vDCL#+s14_m<f(-?W%mVjh3{ z6dAnavPclS)TPk5o&<}!ne-__DWUD?tkgWZ>invHXo{oaM&LFvCc@9zN7+^qX`SzE zD+&C+0@=ho@y)UH>$iq$Y+%Ef3>4H>eY7Ik={J=3?%u<6Zq%`b zbBqz`1Q5Zir;IfAFGk)#Od?7gt;F-mJJ_(7m-~+1^oO=#OYuSP zXvT$Ts`OfPWeKFw`Th(~rsP(;xl0sb*ojGIUW9k)mgM zpOnD{VeKZq*o2-2DxxpWskjFBRHUz7JK{Nw%X6jcGGcr-trCAr7}*}~I`vC>c`ZGx zK9e%k%_8sIuMi!g9NhG=FOG}rqj;4)IoRpe)U7+0pcV@Ma8X6)yp%7!jcJeeLD@2ot8!fT#$aTsl>W_cUt+`! zhZ@As1X@)F=S_u0`C@|dXoOK&qa&fAtS<{`^#h%7w-0On&TWK92lZcR@lmu#x)_h4 z{)LLC0kk;H4{($i>&Q#S;Z~wz(w9NM^mj@!NZ-X4lhMSG<8$0&wefOs@J7bdG+kl| z#`D5GMK@XHNCStg0b$-Frqf58yS?F+5=2kL3zzP!mu`&>5$o_Y0h?>igtW1?4{k+= z<6vkkW1D3R&Oh!?*r+`IXz_GdlLZb&x)>KzyBqM@OPg#dlx{RN=42$LV%(uWlAmew zbWkI8yC-#$n4uLxL=O4Tcdzbwvw@0Mu~(s8XL16rr$;hhuz`bYU@~uK&W{Zgh=jvL z;#`iVr$ox(Z^jojSGd0-%#Jbj5tTu7$z-J)2kb(k$Uk2pX=K`kTVxUH=?=q9XHYIr z1x!Mz{d3*lO#4`Y=!reA-B@QvoP&B{Mzqm_ex`Rzpio1biDk+H%EZ|=a^i@#fQ1~aLTjK2o!_!k*HV?DM-}>_GAAI_C2ugfj{s7H+%3eVEC|f literal 0 HcmV?d00001 diff --git a/example_workflows/face-upscale-production-v1.json b/example_workflows/face-upscale-production-v1.json new file mode 100644 index 0000000..c78589e --- /dev/null +++ b/example_workflows/face-upscale-production-v1.json @@ -0,0 +1,185 @@ +{ + "last_node_id": 5, + "last_link_id": 4, + "nodes": [ + { + "id": 1, + "type": "LoadImage", + "pos": [50, 100], + "size": [350, 100], + "flags": {}, + "order": 0, + "mode": 0, + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [1], + "slot_index": 0 + }, + { + "name": "MASK", + "type": "MASK", + "links": null, + "slot_index": 1 + } + ], + "properties": { + "Node name for S&R": "LoadImage" + }, + "widgets_values": ["input_portrait.png", "image"], + "title": "API Input Portrait" + }, + { + "id": 2, + "type": "UpscaleModelLoader", + "pos": [50, 400], + "size": [350, 100], + "flags": {}, + "order": 1, + "mode": 0, + "outputs": [ + { + "name": "UPSCALE_MODEL", + "type": "UPSCALE_MODEL", + "links": [2], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "UpscaleModelLoader" + }, + "widgets_values": ["RealESRGAN_x2.pth"], + "title": "Face Upscale Model (2x)" + }, + { + "id": 3, + "type": "ImageUpscaleWithModel", + "pos": [450, 100], + "size": [315, 100], + "flags": {}, + "order": 2, + "mode": 0, + "inputs": [ + { + "name": "upscale_model", + "type": "UPSCALE_MODEL", + "link": 2 + }, + { + "name": "image", + "type": "IMAGE", + "link": 1 + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [3, 4], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "ImageUpscaleWithModel" + }, + "title": "Upscale Portrait (2x)" + }, + { + "id": 4, + "type": "PreviewImage", + "pos": [800, 100], + "size": [315, 100], + "flags": {}, + "order": 3, + "mode": 0, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 3 + } + ], + "properties": { + "Node name for S&R": "PreviewImage" + }, + "title": "Preview Enhanced" + }, + { + "id": 5, + "type": "SaveImage", + "pos": [800, 400], + "size": [315, 100], + "flags": {}, + "order": 4, + "mode": 0, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 4 + } + ], + "properties": { + "Node name for S&R": "SaveImage" + }, + "widgets_values": ["face_upscale_output"], + "title": "API Image Output" + } + ], + "links": [ + [1, 1, 0, 3, 1, "IMAGE"], + [2, 2, 0, 3, 0, "UPSCALE_MODEL"], + [3, 3, 0, 4, 0, "IMAGE"], + [4, 3, 0, 5, 0, "IMAGE"] + ], + "groups": [], + "config": {}, + "extra": { + "workflow_info": { + "name": "Face Upscale Production", + "version": "1.1.0", + "description": "Portrait-focused upscaling using RealESRGAN x2. Simplified workflow optimized for face enhancement. For advanced face detection with FaceDetailer, additional nodes are required.", + "category": "upscaling", + "tags": ["face-upscale", "portrait", "realesrgan", "production"], + "requirements": { + "models": ["RealESRGAN"], + "custom_nodes": [], + "vram_min": "8GB" + }, + "parameters": { + "input_image": { + "node_id": 1, + "type": "image", + "required": true, + "description": "Portrait image to upscale" + }, + "model": { + "node_id": 2, + "widget_index": 0, + "type": "string", + "default": "RealESRGAN_x2.pth", + "options": ["RealESRGAN_x2.pth", "RealESRGAN_x4.pth"], + "description": "Upscale model (x2 recommended for portraits)" + } + }, + "performance": { + "avg_generation_time": "5-15 seconds", + "vram_usage": "~6-8GB" + }, + "use_cases": [ + "Portrait enhancement", + "Professional headshots", + "Face restoration", + "ID photo upscaling" + ], + "notes": [ + "This is a simplified version using basic upscaling", + "For advanced face detection, use FaceDetailer from Impact-Pack", + "FaceDetailer requires: BBOX detector, SDXL checkpoint, CLIP conditioning", + "Current version optimized for speed and simplicity" + ] + } + }, + "version": 0.4 +} diff --git a/example_workflows/flux-dev-t2i-production-v1.jpg b/example_workflows/flux-dev-t2i-production-v1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..80f84f6485d63e0e561585e07c047b21c71f29f0 GIT binary patch literal 4768 zcmeH{c{JPU8pnT0L{O!X*tgnh?_#NC3`Mo2*A}BHrABoTCa7Idswp;m<0B@ zoNzt?fIt8M5-vb61~>vxh=_;?1S(8WC{z?CDFzctde0tlNw~C(3|txxN64wjBalk6 zaJYhof|9DLy1F_-UQ=6BOkT5>NoR7-&BjfPgds zFdPJdg9P1xy0A_t=nnyZ7YGay5mqTCF0n^=fV2+)gCG#Fuzn$c@N}|p9}s~YIe7&|C7lDhdin-t=0`0ot*jl7JDoUr z%Gt&18}BndXMNE@7cX7D5{wCnijIkmi%-DaNYA)=>-)^Cf;)vp#U($MmQ_{P)c%aG ztAFtDQ46WH?eUYRUC+B;^z^>$>!;G_!*3ZQqs%Gx^!u6LXXoY@mRCNluJP9S8=GIa zKtj%c=x<>E#swF0frVocfqmfuf#ZY$fr~&jj)=8-vBq1Q-@E~x&4k*sjBhcIj9kTT9gLh-M z2fH5F^}wHbplNOs%OTV|;xTVF*1cr3Tsxyuo!|dp4e>T?h6ZN~dIkGPKHx{Tm0w5!B`ral;0K9)^x8;AaBg1@kSu_4>&Aa#q2hY&RmZN7w<9aqX zr4KtFDXn?8_tD|!7GH}Ibftf!*SmN{W``J$>L!1+fQ#WG=jk~z1#Zs%V_Ug<{HQT| z5vV(E!^S&Pm>s^7v>N9dtyEw6+b@?yZks z_%NZ&h&INbp>mA9b7e;((>KEu6?p@RhkCY8d(v!lYh8b4jr+c2NHo52d3kDO5C+Tt z3*WiXeL7&z!c&XyJ7~w1Jzh?RU5ps%+u<5S;8qE86_+x3>b_-e7H=739%m38FQGOz z;zSO`B%XURx$09H?>I%rWsoZ$gyQavm^J9veE;%(*qy-VN8N#IumjEGNj6*_vC==} zyg1`ZN5LC}wkg5r*lSpSjf{1KJ>i7!ZLwEH9p&XE4VFQvO?sbnR>*|+2^q4iEgSCn zeD7XgZnuUu1H!*H;Tjc>rqCiN4M2}WWR zV0OU(pIZyH(B(1(z}K0%QjPCqKA%f!vqaCExr6x)XxasO%Yfk^sqlw_2ZWGlh8u*_z~e=NgP)8yg( zz@k@>mWzpu#;p|knz5-1mE}r5xL7(Hu@r84;w)B0wdQhriTiS1rjg9&#m%PP^5mI~ zb*Y&d4G0u8rk(te0B&DY)0NMxUh+BkESyE>yzqD)xbWFx0FMuMa1El6ji^S<6#?K> zy5GJeI{F8_wXd8h>*jZ-mZZN~hHen4#@A>OS|-R(vbG+_bd8R244Guf5ZrHMB%O2! zasKqdpPHU3HjfYuK%b=Cb#T{6y-A|M_t?f`lv>SDXBYj&XEex44RNi|FiIyr#^;f8 zCn~bGe;hx=iBKY!C)6x>VVLQ*u5@j2L(c7?r|4jIgD4!MnBMk!JzHwyH z{F}N3RL;cGfrPdDl_*btWeL41l8G>-{@>z*t+W8>J2fN#K2!^Uxz=X4tk)#FP&W@w z+2;X$_tDp;iyWN#5>xe@?ExLGls|XJN&?1tFOFY zrPU)>p}ae2gK@*t@8h8YUKrw0R_hqy&3MqASyTqSe0_x1!PI23c_~t8bT`f2>`qN^ zb#c&4s-c&2$Iy;KFw-rg-p{Npj=E7|)Kqj!3%WdN4vf z+xd+4{^45mk@fPYO9DVDPF=oT_u%#B*2=K+SPPFRZB+3%X;4S}t!3KkiIcDGtsxd7$uNaID1~{8OXB^~ZqnGykfa0!s(h=K(1=xCJ(O`x z;n}&{ZW98)=gC(&N7Q^%HGEVZa(*KAdMz4u)e%f8ymVYW%TIT$lbTY>N9P7jv+EXm zt(#aa-VNh*vK;#O3c_P53B ztT}2fg}C9qy_QEQTg}TPT$*HoLyqF&IJ0lV-rGc+EPXXSqBq9R;#wP4k^Pm1r_bnTq)DmYnqbFQQVn>)+R$V6ZpQ>{gF*|dvR3tIyy$7EzC(}M j4R#m{Th5dd^32UZC!_~xH+Fll>w#Sl{D}u(g3-SMZ=~&} literal 0 HcmV?d00001 diff --git a/example_workflows/flux-dev-t2i-production-v1.json b/example_workflows/flux-dev-t2i-production-v1.json new file mode 100644 index 0000000..c8ff980 --- /dev/null +++ b/example_workflows/flux-dev-t2i-production-v1.json @@ -0,0 +1,362 @@ +{ + "last_node_id": 9, + "last_link_id": 13, + "nodes": [ + { + "id": 1, + "type": "UNETLoader", + "pos": [50, 100], + "size": [350, 100], + "flags": {}, + "order": 0, + "mode": 0, + "outputs": [ + { + "name": "MODEL", + "type": "MODEL", + "links": [1], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "UNETLoader" + }, + "widgets_values": ["flux1-dev.safetensors", "default"], + "title": "FLUX Dev UNET Loader" + }, + { + "id": 2, + "type": "DualCLIPLoader", + "pos": [50, 250], + "size": [350, 100], + "flags": {}, + "order": 1, + "mode": 0, + "outputs": [ + { + "name": "CLIP", + "type": "CLIP", + "links": [2], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "DualCLIPLoader" + }, + "widgets_values": ["t5xxl_fp16.safetensors", "clip_l.safetensors", "flux"], + "title": "FLUX CLIP Loader" + }, + { + "id": 3, + "type": "CLIPTextEncodeFlux", + "pos": [450, 100], + "size": [400, 250], + "flags": {}, + "order": 2, + "mode": 0, + "inputs": [ + { + "name": "clip", + "type": "CLIP", + "link": 2 + } + ], + "outputs": [ + { + "name": "CONDITIONING", + "type": "CONDITIONING", + "links": [3, 8], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "CLIPTextEncodeFlux" + }, + "widgets_values": [ + "A beautiful mountain landscape at sunset, highly detailed, professional photography, cinematic lighting, 8k ultra HD", + "A beautiful mountain landscape at sunset, highly detailed, professional photography, cinematic lighting, 8k ultra HD", + 3.5 + ], + "title": "API Positive Prompt" + }, + { + "id": 9, + "type": "ConditioningZeroOut", + "pos": [450, 400], + "size": [315, 60], + "flags": {}, + "order": 3, + "mode": 0, + "inputs": [ + { + "name": "conditioning", + "type": "CONDITIONING", + "link": 8 + } + ], + "outputs": [ + { + "name": "CONDITIONING", + "type": "CONDITIONING", + "links": [9], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "ConditioningZeroOut" + }, + "title": "Empty Negative Conditioning" + }, + { + "id": 4, + "type": "EmptyLatentImage", + "pos": [450, 500], + "size": [315, 106], + "flags": {}, + "order": 4, + "mode": 0, + "outputs": [ + { + "name": "LATENT", + "type": "LATENT", + "links": [4], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "EmptyLatentImage" + }, + "widgets_values": [1024, 1024, 1], + "title": "API Latent Image Config" + }, + { + "id": 5, + "type": "KSampler", + "pos": [900, 100], + "size": [315, 474], + "flags": {}, + "order": 5, + "mode": 0, + "inputs": [ + { + "name": "model", + "type": "MODEL", + "link": 1 + }, + { + "name": "positive", + "type": "CONDITIONING", + "link": 3 + }, + { + "name": "negative", + "type": "CONDITIONING", + "link": 9 + }, + { + "name": "latent_image", + "type": "LATENT", + "link": 4 + } + ], + "outputs": [ + { + "name": "LATENT", + "type": "LATENT", + "links": [5], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "KSampler" + }, + "widgets_values": [42, "fixed", 20, 1.0, "euler", "normal", 1.0], + "title": "FLUX Dev Sampler (20 steps)" + }, + { + "id": 6, + "type": "VAELoader", + "pos": [900, 600], + "size": [315, 60], + "flags": {}, + "order": 6, + "mode": 0, + "outputs": [ + { + "name": "VAE", + "type": "VAE", + "links": [6], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "VAELoader" + }, + "widgets_values": ["ae.safetensors"], + "title": "FLUX VAE Loader" + }, + { + "id": 7, + "type": "VAEDecode", + "pos": [1270, 100], + "size": [210, 46], + "flags": {}, + "order": 7, + "mode": 0, + "inputs": [ + { + "name": "samples", + "type": "LATENT", + "link": 5 + }, + { + "name": "vae", + "type": "VAE", + "link": 6 + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [7], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "VAEDecode" + }, + "title": "VAE Decode" + }, + { + "id": 8, + "type": "SaveImage", + "pos": [1530, 100], + "size": [400, 100], + "flags": {}, + "order": 8, + "mode": 0, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 7 + } + ], + "properties": { + "Node name for S&R": "SaveImage" + }, + "widgets_values": ["flux_dev_output"], + "title": "API Image Output" + } + ], + "links": [ + [1, 1, 0, 5, 0, "MODEL"], + [2, 2, 0, 3, 0, "CLIP"], + [3, 3, 0, 5, 1, "CONDITIONING"], + [4, 4, 0, 5, 3, "LATENT"], + [5, 5, 0, 7, 0, "LATENT"], + [6, 6, 0, 7, 1, "VAE"], + [7, 7, 0, 8, 0, "IMAGE"], + [8, 3, 0, 9, 0, "CONDITIONING"], + [9, 9, 0, 5, 2, "CONDITIONING"] + ], + "groups": [], + "config": {}, + "extra": { + "workflow_info": { + "name": "FLUX Dev Text-to-Image Production", + "version": "1.2.0", + "description": "High-quality text-to-image generation using FLUX.1-dev (20-50 steps). Optimized for final production outputs with excellent detail and coherence.", + "category": "text-to-image", + "tags": ["flux", "dev", "high-quality", "production", "t2i"], + "requirements": { + "models": ["FLUX.1-dev", "CLIP-L", "T5-XXL FP16"], + "custom_nodes": [], + "vram_min": "20GB", + "vram_recommended": "24GB" + }, + "parameters": { + "prompt": { + "node_id": 3, + "widget_index": 0, + "type": "string", + "required": true, + "default": "A beautiful mountain landscape at sunset", + "description": "Text description of desired image" + }, + "width": { + "node_id": 4, + "widget_index": 0, + "type": "integer", + "required": false, + "default": 1024, + "min": 512, + "max": 2048, + "description": "Image width in pixels" + }, + "height": { + "node_id": 4, + "widget_index": 1, + "type": "integer", + "required": false, + "default": 1024, + "min": 512, + "max": 2048, + "description": "Image height in pixels" + }, + "seed": { + "node_id": 5, + "widget_index": 0, + "type": "integer", + "required": false, + "default": 42, + "min": 0, + "max": 4294967295, + "description": "Random seed for reproducibility" + }, + "steps": { + "node_id": 5, + "widget_index": 2, + "type": "integer", + "required": false, + "default": 20, + "min": 10, + "max": 50, + "description": "Number of sampling steps (20-50 recommended for FLUX Dev)" + }, + "guidance": { + "node_id": 3, + "widget_index": 2, + "type": "float", + "required": false, + "default": 3.5, + "min": 1.0, + "max": 10.0, + "description": "Guidance scale (3.5 recommended for FLUX)" + } + }, + "outputs": { + "image": { + "node_id": 8, + "type": "image", + "format": "PNG", + "resolution": "1024x1024 (configurable)" + } + }, + "performance": { + "avg_generation_time": "25-35 seconds (20 steps), 60-75 seconds (50 steps)", + "vram_usage": "~20-22GB", + "gpu_utilization": "95-100%" + }, + "notes": [ + "FLUX uses UNETLoader instead of CheckpointLoader", + "DualCLIPLoader loads both T5-XXL and CLIP-L text encoders", + "CLIPTextEncodeFlux is FLUX-specific text encoder", + "No negative prompt for FLUX - guidance is handled differently", + "CFG scale of 1.0 recommended, guidance in text encoder" + ] + } + }, + "version": 0.4 +} diff --git a/example_workflows/flux-schnell-t2i-production-v1.jpg b/example_workflows/flux-schnell-t2i-production-v1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..84b7ece5dfd79444f503fd6c14613256ac633cef GIT binary patch literal 5246 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 literal 0 HcmV?d00001 diff --git a/example_workflows/flux-schnell-t2i-production-v1.json b/example_workflows/flux-schnell-t2i-production-v1.json new file mode 100644 index 0000000..448b888 --- /dev/null +++ b/example_workflows/flux-schnell-t2i-production-v1.json @@ -0,0 +1,363 @@ +{ + "last_node_id": 9, + "last_link_id": 9, + "nodes": [ + { + "id": 1, + "type": "UNETLoader", + "pos": [50, 100], + "size": [350, 100], + "flags": {}, + "order": 0, + "mode": 0, + "outputs": [ + { + "name": "MODEL", + "type": "MODEL", + "links": [1], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "UNETLoader" + }, + "widgets_values": ["flux1-schnell.safetensors", "default"], + "title": "FLUX Schnell UNET Loader" + }, + { + "id": 2, + "type": "DualCLIPLoader", + "pos": [50, 250], + "size": [350, 100], + "flags": {}, + "order": 1, + "mode": 0, + "outputs": [ + { + "name": "CLIP", + "type": "CLIP", + "links": [2], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "DualCLIPLoader" + }, + "widgets_values": ["t5xxl_fp16.safetensors", "clip_l.safetensors", "flux"], + "title": "FLUX CLIP Loader" + }, + { + "id": 3, + "type": "CLIPTextEncodeFlux", + "pos": [450, 100], + "size": [400, 250], + "flags": {}, + "order": 2, + "mode": 0, + "inputs": [ + { + "name": "clip", + "type": "CLIP", + "link": 2 + } + ], + "outputs": [ + { + "name": "CONDITIONING", + "type": "CONDITIONING", + "links": [3, 8], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "CLIPTextEncodeFlux" + }, + "widgets_values": [ + "A beautiful mountain landscape at sunset, highly detailed, cinematic lighting, 8k", + "A beautiful mountain landscape at sunset, highly detailed, cinematic lighting, 8k", + 3.5 + ], + "title": "API Positive Prompt" + }, + { + "id": 9, + "type": "ConditioningZeroOut", + "pos": [450, 400], + "size": [315, 60], + "flags": {}, + "order": 3, + "mode": 0, + "inputs": [ + { + "name": "conditioning", + "type": "CONDITIONING", + "link": 8 + } + ], + "outputs": [ + { + "name": "CONDITIONING", + "type": "CONDITIONING", + "links": [9], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "ConditioningZeroOut" + }, + "title": "Empty Negative Conditioning" + }, + { + "id": 4, + "type": "EmptyLatentImage", + "pos": [450, 500], + "size": [315, 106], + "flags": {}, + "order": 4, + "mode": 0, + "outputs": [ + { + "name": "LATENT", + "type": "LATENT", + "links": [4], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "EmptyLatentImage" + }, + "widgets_values": [1024, 1024, 1], + "title": "API Latent Image Config" + }, + { + "id": 5, + "type": "KSampler", + "pos": [900, 100], + "size": [315, 474], + "flags": {}, + "order": 5, + "mode": 0, + "inputs": [ + { + "name": "model", + "type": "MODEL", + "link": 1 + }, + { + "name": "positive", + "type": "CONDITIONING", + "link": 3 + }, + { + "name": "negative", + "type": "CONDITIONING", + "link": 9 + }, + { + "name": "latent_image", + "type": "LATENT", + "link": 4 + } + ], + "outputs": [ + { + "name": "LATENT", + "type": "LATENT", + "links": [5], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "KSampler" + }, + "widgets_values": [42, "fixed", 4, 1.0, "euler", "normal", 1.0], + "title": "FLUX Schnell Sampler (4 steps)" + }, + { + "id": 6, + "type": "VAELoader", + "pos": [900, 600], + "size": [315, 60], + "flags": {}, + "order": 6, + "mode": 0, + "outputs": [ + { + "name": "VAE", + "type": "VAE", + "links": [6], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "VAELoader" + }, + "widgets_values": ["ae.safetensors"], + "title": "FLUX VAE Loader" + }, + { + "id": 7, + "type": "VAEDecode", + "pos": [1270, 100], + "size": [210, 46], + "flags": {}, + "order": 7, + "mode": 0, + "inputs": [ + { + "name": "samples", + "type": "LATENT", + "link": 5 + }, + { + "name": "vae", + "type": "VAE", + "link": 6 + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [7], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "VAEDecode" + }, + "title": "VAE Decode" + }, + { + "id": 8, + "type": "SaveImage", + "pos": [1530, 100], + "size": [400, 100], + "flags": {}, + "order": 8, + "mode": 0, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 7 + } + ], + "properties": { + "Node name for S&R": "SaveImage" + }, + "widgets_values": ["flux_schnell_output"], + "title": "API Image Output" + } + ], + "links": [ + [1, 1, 0, 5, 0, "MODEL"], + [2, 2, 0, 3, 0, "CLIP"], + [3, 3, 0, 5, 1, "CONDITIONING"], + [4, 4, 0, 5, 3, "LATENT"], + [5, 5, 0, 7, 0, "LATENT"], + [6, 6, 0, 7, 1, "VAE"], + [7, 7, 0, 8, 0, "IMAGE"], + [8, 3, 0, 9, 0, "CONDITIONING"], + [9, 9, 0, 5, 2, "CONDITIONING"] + ], + "groups": [], + "config": {}, + "extra": { + "workflow_info": { + "name": "FLUX Schnell Text-to-Image Production", + "version": "1.2.0", + "description": "Fast text-to-image generation using FLUX.1-schnell (4 steps). Optimized for rapid prototyping and iteration.", + "category": "text-to-image", + "tags": ["flux", "schnell", "fast", "production", "t2i"], + "requirements": { + "models": ["FLUX.1-schnell", "CLIP-L", "T5-XXL FP16"], + "custom_nodes": [], + "vram_min": "16GB", + "vram_recommended": "24GB" + }, + "parameters": { + "prompt": { + "node_id": 3, + "widget_index": 0, + "type": "string", + "required": true, + "default": "A beautiful mountain landscape at sunset", + "description": "Text description of desired image" + }, + "width": { + "node_id": 4, + "widget_index": 0, + "type": "integer", + "required": false, + "default": 1024, + "min": 512, + "max": 2048, + "description": "Image width in pixels" + }, + "height": { + "node_id": 4, + "widget_index": 1, + "type": "integer", + "required": false, + "default": 1024, + "min": 512, + "max": 2048, + "description": "Image height in pixels" + }, + "seed": { + "node_id": 5, + "widget_index": 0, + "type": "integer", + "required": false, + "default": 42, + "min": 0, + "max": 4294967295, + "description": "Random seed for reproducibility" + }, + "steps": { + "node_id": 5, + "widget_index": 2, + "type": "integer", + "required": false, + "default": 4, + "min": 1, + "max": 10, + "description": "Number of sampling steps (4 recommended for FLUX Schnell)" + }, + "guidance": { + "node_id": 3, + "widget_index": 2, + "type": "float", + "required": false, + "default": 3.5, + "min": 1.0, + "max": 10.0, + "description": "Guidance scale (3.5 recommended for FLUX)" + } + }, + "outputs": { + "image": { + "node_id": 8, + "type": "image", + "format": "PNG", + "resolution": "1024x1024 (configurable)" + } + }, + "performance": { + "avg_generation_time": "5-8 seconds (4 steps)", + "vram_usage": "~16-18GB", + "gpu_utilization": "95-100%" + }, + "notes": [ + "FLUX uses UNETLoader instead of CheckpointLoader", + "DualCLIPLoader loads both T5-XXL and CLIP-L text encoders", + "CLIPTextEncodeFlux is FLUX-specific text encoder", + "No negative prompt for FLUX - guidance is handled differently", + "CFG scale of 1.0 recommended, guidance in text encoder", + "Schnell is optimized for 4 steps - fastest FLUX variant" + ] + } + }, + "version": 0.4 +} diff --git a/example_workflows/i2v_hunyuan15-i2v-720p.jpg b/example_workflows/i2v_hunyuan15-i2v-720p.jpg new file mode 100644 index 0000000000000000000000000000000000000000..5dd98c6150abc58c2b9dc20716322d12d52fad70 GIT binary patch literal 6870 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 literal 0 HcmV?d00001 diff --git a/example_workflows/i2v_hunyuan15-i2v-720p.json b/example_workflows/i2v_hunyuan15-i2v-720p.json new file mode 100644 index 0000000..248b036 --- /dev/null +++ b/example_workflows/i2v_hunyuan15-i2v-720p.json @@ -0,0 +1,2528 @@ +{ + "id": "ecc20583-98c5-4707-83f4-631b49a2bf0b", + "revision": 0, + "last_node_id": 141, + "last_link_id": 343, + "nodes": [ + { + "id": 81, + "type": "CLIPVisionLoader", + "pos": [ + -620, + 450 + ], + "size": [ + 350, + 58 + ], + "flags": {}, + "order": 0, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "CLIP_VISION", + "type": "CLIP_VISION", + "links": [ + 225 + ] + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.68", + "Node name for S&R": "CLIPVisionLoader", + "models": [ + { + "name": "sigclip_vision_patch14_384.safetensors", + "url": "https://huggingface.co/Comfy-Org/sigclip_vision_384/resolve/main/sigclip_vision_patch14_384.safetensors", + "directory": "clip_vision" + } + ] + }, + "widgets_values": [ + "sigclip_vision_patch14_384.safetensors" + ] + }, + { + "id": 11, + "type": "DualCLIPLoader", + "pos": [ + -620, + 180 + ], + "size": [ + 350, + 130 + ], + "flags": {}, + "order": 1, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "CLIP", + "type": "CLIP", + "slot_index": 0, + "links": [ + 205, + 240 + ] + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.68", + "Node name for S&R": "DualCLIPLoader", + "models": [ + { + "name": "qwen_2.5_vl_7b_fp8_scaled.safetensors", + "url": "https://huggingface.co/Comfy-Org/HunyuanVideo_1.5_repackaged/resolve/main/split_files/text_encoders/qwen_2.5_vl_7b_fp8_scaled.safetensors", + "directory": "text_encoders" + }, + { + "name": "byt5_small_glyphxl_fp16.safetensors", + "url": "https://huggingface.co/Comfy-Org/HunyuanVideo_1.5_repackaged/resolve/main/split_files/text_encoders/byt5_small_glyphxl_fp16.safetensors", + "directory": "text_encoders" + } + ] + }, + "widgets_values": [ + "qwen_2.5_vl_7b_fp8_scaled.safetensors", + "byt5_small_glyphxl_fp16.safetensors", + "hunyuan_video_15", + "default" + ] + }, + { + "id": 108, + "type": "LatentUpscaleModelLoader", + "pos": [ + -620, + 1670 + ], + "size": [ + 470, + 70 + ], + "flags": {}, + "order": 2, + "mode": 4, + "inputs": [], + "outputs": [ + { + "name": "LATENT_UPSCALE_MODEL", + "type": "LATENT_UPSCALE_MODEL", + "links": [ + 274 + ] + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.70", + "Node name for S&R": "LatentUpscaleModelLoader", + "models": [ + { + "name": "hunyuanvideo15_latent_upsampler_1080p.safetensors", + "url": "https://huggingface.co/Comfy-Org/HunyuanVideo_1.5_repackaged/resolve/main/split_files/latent_upscale_models/hunyuanvideo15_latent_upsampler_1080p.safetensors", + "directory": "latent_upscale_models" + } + ] + }, + "widgets_values": [ + "hunyuanvideo15_latent_upsampler_1080p.safetensors" + ] + }, + { + "id": 111, + "type": "UNETLoader", + "pos": [ + -620, + 1540 + ], + "size": [ + 470, + 82 + ], + "flags": {}, + "order": 3, + "mode": 4, + "inputs": [], + "outputs": [ + { + "name": "MODEL", + "type": "MODEL", + "slot_index": 0, + "links": [ + 286 + ] + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.68", + "Node name for S&R": "UNETLoader", + "models": [ + { + "name": "hunyuanvideo1.5_1080p_sr_distilled_fp16.safetensors", + "url": "https://huggingface.co/Comfy-Org/HunyuanVideo_1.5_repackaged/resolve/main/split_files/diffusion_models/hunyuanvideo1.5_1080p_sr_distilled_fp16.safetensors", + "directory": "diffusion_models" + } + ] + }, + "widgets_values": [ + "hunyuanvideo1.5_1080p_sr_distilled_fp16.safetensors", + "default" + ] + }, + { + "id": 101, + "type": "CreateVideo", + "pos": [ + 640, + 60 + ], + "size": [ + 270, + 78 + ], + "flags": {}, + "order": 35, + "mode": 0, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 308 + }, + { + "name": "audio", + "shape": 7, + "type": "AUDIO", + "link": null + } + ], + "outputs": [ + { + "name": "VIDEO", + "type": "VIDEO", + "links": [ + 269 + ] + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.68", + "Node name for S&R": "CreateVideo" + }, + "widgets_values": [ + 24 + ] + }, + { + "id": 79, + "type": "CLIPVisionEncode", + "pos": [ + -610, + 960 + ], + "size": [ + 290.390625, + 78 + ], + "flags": {}, + "order": 22, + "mode": 0, + "inputs": [ + { + "name": "clip_vision", + "type": "CLIP_VISION", + "link": 225 + }, + { + "name": "image", + "type": "IMAGE", + "link": 219 + } + ], + "outputs": [ + { + "name": "CLIP_VISION_OUTPUT", + "type": "CLIP_VISION_OUTPUT", + "links": [ + 217, + 299 + ] + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.68", + "Node name for S&R": "CLIPVisionEncode" + }, + "widgets_values": [ + "center" + ] + }, + { + "id": 113, + "type": "HunyuanVideo15SuperResolution", + "pos": [ + -570, + 2210 + ], + "size": [ + 370, + 170 + ], + "flags": {}, + "order": 36, + "mode": 4, + "inputs": [ + { + "name": "positive", + "type": "CONDITIONING", + "link": 295 + }, + { + "name": "negative", + "type": "CONDITIONING", + "link": 296 + }, + { + "name": "latent", + "type": "LATENT", + "link": 280 + }, + { + "name": "vae", + "shape": 7, + "type": "VAE", + "link": 301 + }, + { + "name": "start_image", + "shape": 7, + "type": "IMAGE", + "link": 300 + }, + { + "name": "clip_vision_output", + "shape": 7, + "type": "CLIP_VISION_OUTPUT", + "link": 299 + } + ], + "outputs": [ + { + "name": "positive", + "type": "CONDITIONING", + "links": [ + 330 + ] + }, + { + "name": "negative", + "type": "CONDITIONING", + "links": [ + 331 + ] + }, + { + "name": "latent", + "type": "LATENT", + "links": [ + 327 + ] + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.70", + "Node name for S&R": "HunyuanVideo15SuperResolution" + }, + "widgets_values": [ + 0.7 + ] + }, + { + "id": 93, + "type": "CLIPTextEncode", + "pos": [ + -220, + 260 + ], + "size": [ + 422.84503173828125, + 200 + ], + "flags": {}, + "order": 19, + "mode": 0, + "inputs": [ + { + "name": "clip", + "type": "CLIP", + "link": 240 + } + ], + "outputs": [ + { + "name": "CONDITIONING", + "type": "CONDITIONING", + "links": [ + 246, + 296, + 342 + ] + } + ], + "title": "CLIP Text Encode (Negative Prompt)", + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.68", + "Node name for S&R": "CLIPTextEncode" + }, + "widgets_values": [ + "" + ], + "color": "#223", + "bgcolor": "#335" + }, + { + "id": 114, + "type": "CreateVideo", + "pos": [ + 900, + 1710 + ], + "size": [ + 270, + 80 + ], + "flags": {}, + "order": 43, + "mode": 4, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 309 + }, + { + "name": "audio", + "shape": 7, + "type": "AUDIO", + "link": null + } + ], + "outputs": [ + { + "name": "VIDEO", + "type": "VIDEO", + "links": [ + 292 + ] + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.68", + "Node name for S&R": "CreateVideo" + }, + "widgets_values": [ + 24 + ] + }, + { + "id": 10, + "type": "VAELoader", + "pos": [ + -620, + 350 + ], + "size": [ + 350, + 60 + ], + "flags": {}, + "order": 4, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "VAE", + "type": "VAE", + "slot_index": 0, + "links": [ + 206, + 224, + 290, + 301, + 306, + 307 + ] + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.68", + "Node name for S&R": "VAELoader", + "models": [ + { + "name": "hunyuanvideo15_vae_fp16.safetensors", + "url": "https://huggingface.co/Comfy-Org/HunyuanVideo_1.5_repackaged/resolve/main/split_files/vae/hunyuanvideo15_vae_fp16.safetensors", + "directory": "vae" + } + ] + }, + "widgets_values": [ + "hunyuanvideo15_vae_fp16.safetensors" + ] + }, + { + "id": 104, + "type": "MarkdownNote", + "pos": [ + -1220, + 10 + ], + "size": [ + 560, + 520 + ], + "flags": { + "collapsed": false + }, + "order": 5, + "mode": 0, + "inputs": [], + "outputs": [], + "title": "Model links", + "properties": {}, + "widgets_values": [ + "\n\n## Report issue\n\nIf you found any issues when running this workflow, [report template issue here](https://github.com/Comfy-Org/workflow_templates/issues)\n\n## Model links\n\n[HunyuanVideo_1.5_repackaged](https://huggingface.co/Comfy-Org/HunyuanVideo_1.5_repackaged/tree/main/split_files)\n\n**text_encoders**\n\n- [qwen_2.5_vl_7b_fp8_scaled.safetensors](https://huggingface.co/Comfy-Org/HunyuanVideo_1.5_repackaged/resolve/main/split_files/text_encoders/qwen_2.5_vl_7b_fp8_scaled.safetensors)\n- [byt5_small_glyphxl_fp16.safetensors](https://huggingface.co/Comfy-Org/HunyuanVideo_1.5_repackaged/resolve/main/split_files/text_encoders/byt5_small_glyphxl_fp16.safetensors)\n\n**clip_vision**\n\n- [sigclip_vision_patch14_384.safetensors](https://huggingface.co/Comfy-Org/sigclip_vision_384/resolve/main/sigclip_vision_patch14_384.safetensors)\n\n**diffusion_models**\n\n- [hunyuanvideo1.5_720p_i2v_fp16.safetensors](https://huggingface.co/Comfy-Org/HunyuanVideo_1.5_repackaged/resolve/main/split_files/diffusion_models/hunyuanvideo1.5_720p_i2v_fp16.safetensors)\n\n**vae**\n\n- [hunyuanvideo15_vae_fp16.safetensors](https://huggingface.co/Comfy-Org/HunyuanVideo_1.5_repackaged/resolve/main/split_files/vae/hunyuanvideo15_vae_fp16.safetensors)\n\n\nModel Storage Location\n\n```\n📂 ComfyUI/\n├── 📂 models/\n│ ├── 📂 text_encoders/\n│ │ ├── qwen_2.5_vl_7b_fp8_scaled.safetensors\n│ │ └── byt5_small_glyphxl_fp16.safetensors\n│ ├── 📂 clip_vision/\n│ │ └── sigclip_vision_patch14_384.safetensors\n│ ├── 📂 diffusion_models/\n│ │ └── hunyuanvideo1.5_720p_i2v_fp16.safetensors\n│ └── 📂 vae/\n│ └── hunyuanvideo15_vae_fp16.safetensors\n```\n" + ], + "color": "#432", + "bgcolor": "#653" + }, + { + "id": 78, + "type": "HunyuanVideo15ImageToVideo", + "pos": [ + -160, + 580 + ], + "size": [ + 296.3169921875, + 210 + ], + "flags": {}, + "order": 28, + "mode": 0, + "inputs": [ + { + "name": "positive", + "type": "CONDITIONING", + "link": 222 + }, + { + "name": "negative", + "type": "CONDITIONING", + "link": 246 + }, + { + "name": "vae", + "type": "VAE", + "link": 224 + }, + { + "name": "start_image", + "shape": 7, + "type": "IMAGE", + "link": 218 + }, + { + "name": "clip_vision_output", + "shape": 7, + "type": "CLIP_VISION_OUTPUT", + "link": 217 + } + ], + "outputs": [ + { + "name": "positive", + "type": "CONDITIONING", + "links": [ + 318 + ] + }, + { + "name": "negative", + "type": "CONDITIONING", + "links": [ + 319 + ] + }, + { + "name": "latent", + "type": "LATENT", + "links": [ + 315 + ] + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.68", + "Node name for S&R": "HunyuanVideo15ImageToVideo" + }, + "widgets_values": [ + 1280, + 720, + 121, + 1 + ] + }, + { + "id": 116, + "type": "EasyCache", + "pos": [ + -560, + 1820 + ], + "size": [ + 360, + 130 + ], + "flags": {}, + "order": 20, + "mode": 4, + "inputs": [ + { + "name": "model", + "type": "MODEL", + "link": 286 + } + ], + "outputs": [ + { + "name": "MODEL", + "type": "MODEL", + "links": [ + 328, + 329, + 340 + ] + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.68", + "Node name for S&R": "EasyCache" + }, + "widgets_values": [ + 0.2, + 0.15, + 0.95, + false + ] + }, + { + "id": 12, + "type": "UNETLoader", + "pos": [ + -620, + 50 + ], + "size": [ + 350, + 82 + ], + "flags": {}, + "order": 6, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "MODEL", + "type": "MODEL", + "slot_index": 0, + "links": [ + 270 + ] + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.68", + "Node name for S&R": "UNETLoader", + "models": [ + { + "name": "hunyuanvideo1.5_720p_i2v_fp16.safetensors", + "url": "https://huggingface.co/Comfy-Org/HunyuanVideo_1.5_repackaged/resolve/main/split_files/diffusion_models/hunyuanvideo1.5_720p_i2v_fp16.safetensors", + "directory": "diffusion_models" + } + ] + }, + "widgets_values": [ + "hunyuanvideo1.5_720p_i2v_fp16.safetensors", + "default" + ] + }, + { + "id": 121, + "type": "Note", + "pos": [ + 240, + -120 + ], + "size": [ + 350, + 90 + ], + "flags": {}, + "order": 7, + "mode": 0, + "inputs": [], + "outputs": [], + "properties": {}, + "widgets_values": [ + "EasyCache can speed up this workflow, but it will also sacrifice the video quality. If you need it, use Ctrl+B to enable." + ], + "color": "#432", + "bgcolor": "#653" + }, + { + "id": 123, + "type": "MarkdownNote", + "pos": [ + -630, + -120 + ], + "size": [ + 360, + 88 + ], + "flags": {}, + "order": 8, + "mode": 0, + "inputs": [], + "outputs": [], + "properties": {}, + "widgets_values": [ + "If you don't have enough VRAM and encounter the OOM error, please try to set the `weight_dtype` to `fp8_e4n3fn`." + ], + "color": "#432", + "bgcolor": "#653" + }, + { + "id": 122, + "type": "MarkdownNote", + "pos": [ + 240, + 880 + ], + "size": [ + 370, + 320 + ], + "flags": {}, + "order": 9, + "mode": 0, + "inputs": [], + "outputs": [], + "title": "Sampler settings", + "properties": {}, + "widgets_values": [ + "50 inference steps just take too long to get the final video, so by default we set the step to 20 steps. If you want a better quality, please try the original settings below\n\n## Original setting from Hunyuan team\n| Model | cfg | embeded_cfg | shift | inference step |\n|-----------------------|-----|-------------|-------|----------------|\n| 480p_t2v | 6 | None | 5 | 50 |\n| 480p_i2v | 6 | None | 5 | 50 |\n| 720p_t2v | 6 | None | 9 | 50 |\n| 720p_i2v | 6 | None | 7 | 50 |\n| 480p_t2v_distilled | 1 | None | 5 | 50 |\n| 480p_i2v_distilled | 1 | None | 5 | 50 |\n| 720p_t2v_distilled | 1 | None | 9 | 50 |\n| 720p_i2v_distilled | 1 | None | 7 | 50 |" + ], + "color": "#432", + "bgcolor": "#653" + }, + { + "id": 44, + "type": "CLIPTextEncode", + "pos": [ + -220, + 50 + ], + "size": [ + 422.84503173828125, + 164.31304931640625 + ], + "flags": {}, + "order": 18, + "mode": 0, + "inputs": [ + { + "name": "clip", + "type": "CLIP", + "link": 205 + } + ], + "outputs": [ + { + "name": "CONDITIONING", + "type": "CONDITIONING", + "slot_index": 0, + "links": [ + 222, + 295, + 341 + ] + } + ], + "title": "CLIP Text Encode (Positive Prompt)", + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.68", + "Node name for S&R": "CLIPTextEncode" + }, + "widgets_values": [ + "A young wasteland explorer in a weathered blue vault suit sprints through a dense, overgrown forest. Wearing a white aviator helmet with fur ear flaps and brass goggles, his mechanical gauntlets swing as he dodges massive tree trunks and low-hanging vines. Sunlight filters through the canopy, creating dramatic rays. He splashes through streams, crushes fallen leaves, and leaps over a fallen log. Birds scatter as he passes, and the camera captures his fast-paced, dynamic chase through the wilderness. " + ], + "color": "#232", + "bgcolor": "#353" + }, + { + "id": 80, + "type": "LoadImage", + "pos": [ + -610, + 600 + ], + "size": [ + 290.390625, + 314.00000000000006 + ], + "flags": {}, + "order": 10, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 218, + 219, + 300 + ] + }, + { + "name": "MASK", + "type": "MASK", + "links": null + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.68", + "Node name for S&R": "LoadImage" + }, + "widgets_values": [ + "video_hunyuan_video_1.5_720p_i2v_input_image.png", + "image" + ] + }, + { + "id": 117, + "type": "VAEDecode", + "pos": [ + 900, + 1510 + ], + "size": [ + 270, + 46 + ], + "flags": {}, + "order": 41, + "mode": 4, + "inputs": [ + { + "name": "samples", + "type": "LATENT", + "link": 336 + }, + { + "name": "vae", + "type": "VAE", + "link": 290 + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 309 + ] + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.70", + "Node name for S&R": "VAEDecode" + }, + "widgets_values": [] + }, + { + "id": 120, + "type": "VAEDecodeTiled", + "pos": [ + 640, + -140 + ], + "size": [ + 270, + 150 + ], + "flags": {}, + "order": 34, + "mode": 4, + "inputs": [ + { + "name": "samples", + "type": "LATENT", + "link": 322 + }, + { + "name": "vae", + "type": "VAE", + "link": 306 + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [] + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.70", + "Node name for S&R": "VAEDecodeTiled" + }, + "widgets_values": [ + 512, + 64, + 64, + 4096 + ] + }, + { + "id": 124, + "type": "Note", + "pos": [ + 1210, + 1300 + ], + "size": [ + 230, + 88 + ], + "flags": {}, + "order": 11, + "mode": 0, + "inputs": [], + "outputs": [], + "properties": {}, + "widgets_values": [ + "Use the VAE Decode (Tiled) when it takes too long to get the final video." + ], + "color": "#432", + "bgcolor": "#653" + }, + { + "id": 126, + "type": "BasicScheduler", + "pos": [ + 250, + 480 + ], + "size": [ + 315, + 106 + ], + "flags": {}, + "order": 26, + "mode": 0, + "inputs": [ + { + "name": "model", + "type": "MODEL", + "link": 316 + } + ], + "outputs": [ + { + "name": "SIGMAS", + "type": "SIGMAS", + "links": [ + 313 + ] + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.68", + "Node name for S&R": "BasicScheduler" + }, + "widgets_values": [ + "simple", + 20, + 1 + ] + }, + { + "id": 127, + "type": "RandomNoise", + "pos": [ + 250, + 620 + ], + "size": [ + 315, + 82 + ], + "flags": {}, + "order": 12, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "NOISE", + "type": "NOISE", + "links": [ + 310 + ] + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.68", + "Node name for S&R": "RandomNoise" + }, + "widgets_values": [ + 887963123424675, + "fixed" + ], + "color": "#2a363b", + "bgcolor": "#3f5159" + }, + { + "id": 128, + "type": "KSamplerSelect", + "pos": [ + 250, + 750 + ], + "size": [ + 315, + 58 + ], + "flags": {}, + "order": 13, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "SAMPLER", + "type": "SAMPLER", + "links": [ + 312 + ] + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.68", + "Node name for S&R": "KSamplerSelect" + }, + "widgets_values": [ + "euler" + ] + }, + { + "id": 129, + "type": "CFGGuider", + "pos": [ + 250, + 340 + ], + "size": [ + 315, + 98 + ], + "flags": {}, + "order": 30, + "mode": 0, + "inputs": [ + { + "name": "model", + "type": "MODEL", + "link": 314 + }, + { + "name": "positive", + "type": "CONDITIONING", + "link": 318 + }, + { + "name": "negative", + "type": "CONDITIONING", + "link": 319 + } + ], + "outputs": [ + { + "name": "GUIDER", + "type": "GUIDER", + "links": [ + 311 + ] + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.68", + "Node name for S&R": "CFGGuider" + }, + "widgets_values": [ + 6 + ] + }, + { + "id": 130, + "type": "ModelSamplingSD3", + "pos": [ + 250, + 240 + ], + "size": [ + 315, + 58 + ], + "flags": {}, + "order": 27, + "mode": 0, + "inputs": [ + { + "name": "model", + "type": "MODEL", + "link": 317 + } + ], + "outputs": [ + { + "name": "MODEL", + "type": "MODEL", + "slot_index": 0, + "links": [ + 314 + ] + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.68", + "Node name for S&R": "ModelSamplingSD3" + }, + "widgets_values": [ + 7 + ] + }, + { + "id": 125, + "type": "SamplerCustomAdvanced", + "pos": [ + 630, + 250 + ], + "size": [ + 272.3617858886719, + 326 + ], + "flags": {}, + "order": 31, + "mode": 0, + "inputs": [ + { + "name": "noise", + "type": "NOISE", + "link": 310 + }, + { + "name": "guider", + "type": "GUIDER", + "link": 311 + }, + { + "name": "sampler", + "type": "SAMPLER", + "link": 312 + }, + { + "name": "sigmas", + "type": "SIGMAS", + "link": 313 + }, + { + "name": "latent_image", + "type": "LATENT", + "link": 315 + } + ], + "outputs": [ + { + "name": "output", + "type": "LATENT", + "slot_index": 0, + "links": [ + 320, + 321, + 322 + ] + }, + { + "name": "denoised_output", + "type": "LATENT", + "links": [] + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.68", + "Node name for S&R": "SamplerCustomAdvanced" + } + }, + { + "id": 105, + "type": "EasyCache", + "pos": [ + 240, + 20 + ], + "size": [ + 360, + 130 + ], + "flags": {}, + "order": 21, + "mode": 4, + "inputs": [ + { + "name": "model", + "type": "MODEL", + "link": 270 + } + ], + "outputs": [ + { + "name": "MODEL", + "type": "MODEL", + "links": [ + 316, + 317 + ] + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.68", + "Node name for S&R": "EasyCache" + }, + "widgets_values": [ + 0.2, + 0.15, + 0.95, + false + ] + }, + { + "id": 8, + "type": "VAEDecode", + "pos": [ + 650, + -230 + ], + "size": [ + 210, + 46 + ], + "flags": {}, + "order": 32, + "mode": 0, + "inputs": [ + { + "name": "samples", + "type": "LATENT", + "link": 320 + }, + { + "name": "vae", + "type": "VAE", + "link": 206 + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "slot_index": 0, + "links": [ + 308 + ] + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.68", + "Node name for S&R": "VAEDecode" + }, + "widgets_values": [] + }, + { + "id": 102, + "type": "SaveVideo", + "pos": [ + 960, + 60 + ], + "size": [ + 1200, + 870 + ], + "flags": {}, + "order": 37, + "mode": 0, + "inputs": [ + { + "name": "video", + "type": "VIDEO", + "link": 269 + } + ], + "outputs": [], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.68", + "Node name for S&R": "SaveVideo" + }, + "widgets_values": [ + "video/hunyuan_video_1.5", + "auto", + "h264" + ] + }, + { + "id": 131, + "type": "RandomNoise", + "pos": [ + -110, + 2230 + ], + "size": [ + 315, + 82 + ], + "flags": {}, + "order": 14, + "mode": 4, + "inputs": [], + "outputs": [ + { + "name": "NOISE", + "type": "NOISE", + "links": [ + 323 + ] + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.68", + "Node name for S&R": "RandomNoise" + }, + "widgets_values": [ + 889, + "fixed" + ], + "color": "#2a363b", + "bgcolor": "#3f5159" + }, + { + "id": 132, + "type": "KSamplerSelect", + "pos": [ + -110, + 2360 + ], + "size": [ + 315, + 58 + ], + "flags": {}, + "order": 15, + "mode": 4, + "inputs": [], + "outputs": [ + { + "name": "SAMPLER", + "type": "SAMPLER", + "links": [ + 325, + 334 + ] + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.68", + "Node name for S&R": "KSamplerSelect" + }, + "widgets_values": [ + "euler" + ] + }, + { + "id": 133, + "type": "ModelSamplingSD3", + "pos": [ + -110, + 1850 + ], + "size": [ + 315, + 58 + ], + "flags": {}, + "order": 24, + "mode": 4, + "inputs": [ + { + "name": "model", + "type": "MODEL", + "link": 329 + } + ], + "outputs": [ + { + "name": "MODEL", + "type": "MODEL", + "slot_index": 0, + "links": [ + 326 + ] + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.68", + "Node name for S&R": "ModelSamplingSD3" + }, + "widgets_values": [ + 2 + ] + }, + { + "id": 134, + "type": "BasicScheduler", + "pos": [ + -110, + 2090 + ], + "size": [ + 315, + 106 + ], + "flags": {}, + "order": 23, + "mode": 4, + "inputs": [ + { + "name": "model", + "type": "MODEL", + "link": 328 + } + ], + "outputs": [ + { + "name": "SIGMAS", + "type": "SIGMAS", + "links": [ + 332 + ] + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.68", + "Node name for S&R": "BasicScheduler" + }, + "widgets_values": [ + "simple", + 8, + 1 + ] + }, + { + "id": 135, + "type": "SplitSigmas", + "pos": [ + 280, + 1710 + ], + "size": [ + 270, + 78 + ], + "flags": {}, + "order": 29, + "mode": 4, + "inputs": [ + { + "name": "sigmas", + "type": "SIGMAS", + "link": 332 + } + ], + "outputs": [ + { + "name": "high_sigmas", + "type": "SIGMAS", + "links": [ + 333 + ] + }, + { + "name": "low_sigmas", + "type": "SIGMAS", + "links": [ + 335 + ] + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.71", + "Node name for S&R": "SplitSigmas" + }, + "widgets_values": [ + 4 + ] + }, + { + "id": 137, + "type": "DisableNoise", + "pos": [ + 600, + 1800 + ], + "size": [ + 140, + 26 + ], + "flags": {}, + "order": 16, + "mode": 4, + "inputs": [], + "outputs": [ + { + "name": "NOISE", + "type": "NOISE", + "links": [ + 343 + ] + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.70", + "Node name for S&R": "DisableNoise" + } + }, + { + "id": 138, + "type": "SamplerCustomAdvanced", + "pos": [ + 270, + 1860 + ], + "size": [ + 270, + 120 + ], + "flags": {}, + "order": 39, + "mode": 4, + "inputs": [ + { + "name": "noise", + "type": "NOISE", + "link": 323 + }, + { + "name": "guider", + "type": "GUIDER", + "link": 324 + }, + { + "name": "sampler", + "type": "SAMPLER", + "link": 325 + }, + { + "name": "sigmas", + "type": "SIGMAS", + "link": 333 + }, + { + "name": "latent_image", + "type": "LATENT", + "link": 327 + } + ], + "outputs": [ + { + "name": "output", + "type": "LATENT", + "slot_index": 0, + "links": [ + 338 + ] + }, + { + "name": "denoised_output", + "type": "LATENT", + "links": [] + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.68", + "Node name for S&R": "SamplerCustomAdvanced" + } + }, + { + "id": 139, + "type": "SamplerCustomAdvanced", + "pos": [ + 600, + 1860 + ], + "size": [ + 270, + 130 + ], + "flags": {}, + "order": 40, + "mode": 4, + "inputs": [ + { + "name": "noise", + "type": "NOISE", + "link": 343 + }, + { + "name": "guider", + "type": "GUIDER", + "link": 339 + }, + { + "name": "sampler", + "type": "SAMPLER", + "link": 334 + }, + { + "name": "sigmas", + "type": "SIGMAS", + "link": 335 + }, + { + "name": "latent_image", + "type": "LATENT", + "link": 338 + } + ], + "outputs": [ + { + "name": "output", + "type": "LATENT", + "slot_index": 0, + "links": [ + 336, + 337 + ] + }, + { + "name": "denoised_output", + "type": "LATENT", + "links": [] + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.68", + "Node name for S&R": "SamplerCustomAdvanced" + } + }, + { + "id": 140, + "type": "CFGGuider", + "pos": [ + 230, + 1540 + ], + "size": [ + 315, + 98 + ], + "flags": {}, + "order": 25, + "mode": 4, + "inputs": [ + { + "name": "model", + "type": "MODEL", + "link": 340 + }, + { + "name": "positive", + "type": "CONDITIONING", + "link": 341 + }, + { + "name": "negative", + "type": "CONDITIONING", + "link": 342 + } + ], + "outputs": [ + { + "name": "GUIDER", + "type": "GUIDER", + "links": [ + 339 + ] + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.68", + "Node name for S&R": "CFGGuider" + }, + "widgets_values": [ + 1 + ] + }, + { + "id": 141, + "type": "CFGGuider", + "pos": [ + -110, + 1950 + ], + "size": [ + 315, + 98 + ], + "flags": {}, + "order": 38, + "mode": 4, + "inputs": [ + { + "name": "model", + "type": "MODEL", + "link": 326 + }, + { + "name": "positive", + "type": "CONDITIONING", + "link": 330 + }, + { + "name": "negative", + "type": "CONDITIONING", + "link": 331 + } + ], + "outputs": [ + { + "name": "GUIDER", + "type": "GUIDER", + "links": [ + 324 + ] + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.68", + "Node name for S&R": "CFGGuider" + }, + "widgets_values": [ + 1 + ] + }, + { + "id": 136, + "type": "Note", + "pos": [ + 600, + 1670 + ], + "size": [ + 238.81604977221195, + 88 + ], + "flags": {}, + "order": 17, + "mode": 4, + "inputs": [], + "outputs": [], + "properties": {}, + "widgets_values": [ + "Split at matching sigma to the noise scale" + ], + "color": "#432", + "bgcolor": "#653" + }, + { + "id": 109, + "type": "HunyuanVideo15LatentUpscaleWithModel", + "pos": [ + -570, + 2020 + ], + "size": [ + 370, + 150 + ], + "flags": {}, + "order": 33, + "mode": 4, + "inputs": [ + { + "name": "model", + "type": "LATENT_UPSCALE_MODEL", + "link": 274 + }, + { + "name": "samples", + "type": "LATENT", + "link": 321 + } + ], + "outputs": [ + { + "name": "LATENT", + "type": "LATENT", + "links": [ + 280 + ] + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.70", + "Node name for S&R": "HunyuanVideo15LatentUpscaleWithModel" + }, + "widgets_values": [ + "bilinear", + 1920, + 1080, + "disabled" + ] + }, + { + "id": 118, + "type": "SaveVideo", + "pos": [ + 1200, + 1500 + ], + "size": [ + 1200, + 880 + ], + "flags": {}, + "order": 44, + "mode": 4, + "inputs": [ + { + "name": "video", + "type": "VIDEO", + "link": 292 + } + ], + "outputs": [], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.70", + "Node name for S&R": "SaveVideo" + }, + "widgets_values": [ + "video/hunyuan_video_1.5_sr", + "auto", + "auto" + ] + }, + { + "id": 112, + "type": "VAEDecodeTiled", + "pos": [ + 920, + 1260 + ], + "size": [ + 270, + 150 + ], + "flags": {}, + "order": 42, + "mode": 4, + "inputs": [ + { + "name": "samples", + "type": "LATENT", + "link": 337 + }, + { + "name": "vae", + "type": "VAE", + "link": 307 + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [] + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.70", + "Node name for S&R": "VAEDecodeTiled" + }, + "widgets_values": [ + 512, + 64, + 64, + 4096 + ] + } + ], + "links": [ + [ + 205, + 11, + 0, + 44, + 0, + "CLIP" + ], + [ + 206, + 10, + 0, + 8, + 1, + "VAE" + ], + [ + 217, + 79, + 0, + 78, + 4, + "CLIP_VISION_OUTPUT" + ], + [ + 218, + 80, + 0, + 78, + 3, + "IMAGE" + ], + [ + 219, + 80, + 0, + 79, + 1, + "IMAGE" + ], + [ + 222, + 44, + 0, + 78, + 0, + "CONDITIONING" + ], + [ + 224, + 10, + 0, + 78, + 2, + "VAE" + ], + [ + 225, + 81, + 0, + 79, + 0, + "CLIP_VISION" + ], + [ + 240, + 11, + 0, + 93, + 0, + "CLIP" + ], + [ + 246, + 93, + 0, + 78, + 1, + "CONDITIONING" + ], + [ + 269, + 101, + 0, + 102, + 0, + "VIDEO" + ], + [ + 270, + 12, + 0, + 105, + 0, + "MODEL" + ], + [ + 274, + 108, + 0, + 109, + 0, + "LATENT_UPSCALE_MODEL" + ], + [ + 280, + 109, + 0, + 113, + 2, + "LATENT" + ], + [ + 286, + 111, + 0, + 116, + 0, + "MODEL" + ], + [ + 290, + 10, + 0, + 117, + 1, + "VAE" + ], + [ + 292, + 114, + 0, + 118, + 0, + "VIDEO" + ], + [ + 295, + 44, + 0, + 113, + 0, + "CONDITIONING" + ], + [ + 296, + 93, + 0, + 113, + 1, + "CONDITIONING" + ], + [ + 299, + 79, + 0, + 113, + 5, + "CLIP_VISION_OUTPUT" + ], + [ + 300, + 80, + 0, + 113, + 4, + "IMAGE" + ], + [ + 301, + 10, + 0, + 113, + 3, + "VAE" + ], + [ + 306, + 10, + 0, + 120, + 1, + "VAE" + ], + [ + 307, + 10, + 0, + 112, + 1, + "VAE" + ], + [ + 308, + 8, + 0, + 101, + 0, + "IMAGE" + ], + [ + 309, + 117, + 0, + 114, + 0, + "IMAGE" + ], + [ + 310, + 127, + 0, + 125, + 0, + "NOISE" + ], + [ + 311, + 129, + 0, + 125, + 1, + "GUIDER" + ], + [ + 312, + 128, + 0, + 125, + 2, + "SAMPLER" + ], + [ + 313, + 126, + 0, + 125, + 3, + "SIGMAS" + ], + [ + 314, + 130, + 0, + 129, + 0, + "MODEL" + ], + [ + 315, + 78, + 2, + 125, + 4, + "LATENT" + ], + [ + 316, + 105, + 0, + 126, + 0, + "MODEL" + ], + [ + 317, + 105, + 0, + 130, + 0, + "MODEL" + ], + [ + 318, + 78, + 0, + 129, + 1, + "CONDITIONING" + ], + [ + 319, + 78, + 1, + 129, + 2, + "CONDITIONING" + ], + [ + 320, + 125, + 0, + 8, + 0, + "LATENT" + ], + [ + 321, + 125, + 0, + 109, + 1, + "LATENT" + ], + [ + 322, + 125, + 0, + 120, + 0, + "LATENT" + ], + [ + 323, + 131, + 0, + 138, + 0, + "NOISE" + ], + [ + 324, + 141, + 0, + 138, + 1, + "GUIDER" + ], + [ + 325, + 132, + 0, + 138, + 2, + "SAMPLER" + ], + [ + 326, + 133, + 0, + 141, + 0, + "MODEL" + ], + [ + 327, + 113, + 2, + 138, + 4, + "LATENT" + ], + [ + 328, + 116, + 0, + 134, + 0, + "MODEL" + ], + [ + 329, + 116, + 0, + 133, + 0, + "MODEL" + ], + [ + 330, + 113, + 0, + 141, + 1, + "CONDITIONING" + ], + [ + 331, + 113, + 1, + 141, + 2, + "CONDITIONING" + ], + [ + 332, + 134, + 0, + 135, + 0, + "SIGMAS" + ], + [ + 333, + 135, + 0, + 138, + 3, + "SIGMAS" + ], + [ + 334, + 132, + 0, + 139, + 2, + "SAMPLER" + ], + [ + 335, + 135, + 1, + 139, + 3, + "SIGMAS" + ], + [ + 336, + 139, + 0, + 117, + 0, + "LATENT" + ], + [ + 337, + 139, + 0, + 112, + 0, + "LATENT" + ], + [ + 338, + 138, + 0, + 139, + 4, + "LATENT" + ], + [ + 339, + 140, + 0, + 139, + 1, + "GUIDER" + ], + [ + 340, + 116, + 0, + 140, + 0, + "MODEL" + ], + [ + 341, + 44, + 0, + 140, + 1, + "CONDITIONING" + ], + [ + 342, + 93, + 0, + 140, + 2, + "CONDITIONING" + ], + [ + 343, + 137, + 0, + 139, + 0, + "NOISE" + ] + ], + "groups": [ + { + "id": 1, + "title": "Step 1 - Load models", + "bounding": [ + -630, + -20, + 370, + 539.6 + ], + "color": "#3f789e", + "font_size": 24, + "flags": {} + }, + { + "id": 2, + "title": "Step 3 - Prompt", + "bounding": [ + -230, + -20, + 442.84503173828125, + 493.6 + ], + "color": "#3f789e", + "font_size": 24, + "flags": {} + }, + { + "id": 3, + "title": "Step 2 - Upload start_image", + "bounding": [ + -630, + 530, + 370, + 520 + ], + "color": "#3f789e", + "font_size": 24, + "flags": {} + }, + { + "id": 4, + "title": "Step 4 - Video Size", + "bounding": [ + -230, + 500, + 440, + 320 + ], + "color": "#3f789e", + "font_size": 24, + "flags": {} + }, + { + "id": 8, + "title": "Video Upscale 1080P (Ctrl-B to enable)", + "bounding": [ + -640, + 1430, + 3060, + 1010 + ], + "color": "#3f789e", + "font_size": 24, + "flags": {} + }, + { + "id": 5, + "title": "Load models", + "bounding": [ + -630, + 1470, + 490, + 283.6 + ], + "color": "#3f789e", + "font_size": 24, + "flags": {} + }, + { + "id": 9, + "title": "Custom Sampler", + "bounding": [ + 240, + 170, + 672.3617858886719, + 651.6 + ], + "color": "#3f789e", + "font_size": 24, + "flags": {} + }, + { + "id": 10, + "title": "Custom Sampler(SR)", + "bounding": [ + -120, + 1470, + 1000, + 961.6 + ], + "color": "#3f789e", + "font_size": 24, + "flags": {} + } + ], + "config": {}, + "extra": { + "ds": { + "scale": 0.27366813599758877, + "offset": [ + 3960.8668185800825, + 1109.8918373232455 + ] + }, + "frontendVersion": "1.30.6", + "groupNodes": {}, + "VHS_latentpreview": false, + "VHS_latentpreviewrate": 0, + "VHS_MetadataImage": true, + "VHS_KeepIntermediate": true, + "workflowRendererVersion": "LG" + }, + "version": 0.4 +} \ No newline at end of file diff --git a/example_workflows/i2v_hunyuan15-t2v-720p.jpg b/example_workflows/i2v_hunyuan15-t2v-720p.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ae37695f641b952d1b230170e06ae8665a56b543 GIT binary patch literal 7017 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 fE#aGVDXQ*eO2cV+^ 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 P{&?Vz2ma{++US1(LMlRZ literal 0 HcmV?d00001 diff --git a/example_workflows/i2v_wan22-14b-i2v.json b/example_workflows/i2v_wan22-14b-i2v.json new file mode 100644 index 0000000..7d59461 --- /dev/null +++ b/example_workflows/i2v_wan22-14b-i2v.json @@ -0,0 +1,2327 @@ +{ + "id": "ec7da562-7e21-4dac-a0d2-f4441e1efd3b", + "revision": 0, + "last_node_id": 115, + "last_link_id": 214, + "nodes": [ + { + "id": 38, + "type": "CLIPLoader", + "pos": [ + 70, + 1360 + ], + "size": [ + 346.391845703125, + 106 + ], + "flags": {}, + "order": 0, + "mode": 4, + "inputs": [], + "outputs": [ + { + "name": "CLIP", + "type": "CLIP", + "slot_index": 0, + "links": [ + 74, + 75 + ] + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.45", + "Node name for S&R": "CLIPLoader", + "models": [ + { + "name": "umt5_xxl_fp8_e4m3fn_scaled.safetensors", + "url": "https://huggingface.co/Comfy-Org/Wan_2.1_ComfyUI_repackaged/resolve/main/split_files/text_encoders/umt5_xxl_fp8_e4m3fn_scaled.safetensors", + "directory": "text_encoders" + } + ], + "ue_properties": { + "widget_ue_connectable": {}, + "version": "7.1", + "input_ue_unconnectable": {} + } + }, + "widgets_values": [ + "umt5_xxl_fp8_e4m3fn_scaled.safetensors", + "wan", + "default" + ] + }, + { + "id": 7, + "type": "CLIPTextEncode", + "pos": [ + 450, + 1580 + ], + "size": [ + 425.27801513671875, + 180.6060791015625 + ], + "flags": {}, + "order": 16, + "mode": 4, + "inputs": [ + { + "name": "clip", + "type": "CLIP", + "link": 75 + } + ], + "outputs": [ + { + "name": "CONDITIONING", + "type": "CONDITIONING", + "slot_index": 0, + "links": [ + 135 + ] + } + ], + "title": "CLIP Text Encode (Negative Prompt)", + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.45", + "Node name for S&R": "CLIPTextEncode", + "ue_properties": { + "widget_ue_connectable": {}, + "version": "7.1", + "input_ue_unconnectable": {} + } + }, + "widgets_values": [ + "色调艳丽,过曝,静态,细节模糊不清,字幕,风格,作品,画作,画面,静止,整体发灰,最差质量,低质量,JPEG压缩残留,丑陋的,残缺的,多余的手指,画得不好的手部,画得不好的脸部,畸形的,毁容的,形态畸形的肢体,手指融合,静止不动的画面,杂乱的背景,三条腿,背景人很多,倒着走" + ], + "color": "#322", + "bgcolor": "#533" + }, + { + "id": 39, + "type": "VAELoader", + "pos": [ + 70, + 1520 + ], + "size": [ + 344.731689453125, + 59.98149108886719 + ], + "flags": {}, + "order": 1, + "mode": 4, + "inputs": [], + "outputs": [ + { + "name": "VAE", + "type": "VAE", + "slot_index": 0, + "links": [ + 76, + 141 + ] + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.45", + "Node name for S&R": "VAELoader", + "models": [ + { + "name": "wan_2.1_vae.safetensors", + "url": "https://huggingface.co/Comfy-Org/Wan_2.2_ComfyUI_Repackaged/resolve/main/split_files/vae/wan_2.1_vae.safetensors", + "directory": "vae" + } + ], + "ue_properties": { + "widget_ue_connectable": {}, + "version": "7.1", + "input_ue_unconnectable": {} + } + }, + "widgets_values": [ + "wan_2.1_vae.safetensors" + ] + }, + { + "id": 54, + "type": "ModelSamplingSD3", + "pos": [ + 670, + 1100 + ], + "size": [ + 210, + 60 + ], + "flags": {}, + "order": 17, + "mode": 4, + "inputs": [ + { + "name": "model", + "type": "MODEL", + "link": 110 + } + ], + "outputs": [ + { + "name": "MODEL", + "type": "MODEL", + "slot_index": 0, + "links": [ + 147 + ] + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.45", + "Node name for S&R": "ModelSamplingSD3", + "ue_properties": { + "widget_ue_connectable": {}, + "version": "7.1", + "input_ue_unconnectable": {} + } + }, + "widgets_values": [ + 8.000000000000002 + ] + }, + { + "id": 55, + "type": "ModelSamplingSD3", + "pos": [ + 670, + 1230 + ], + "size": [ + 210, + 58 + ], + "flags": {}, + "order": 18, + "mode": 4, + "inputs": [ + { + "name": "model", + "type": "MODEL", + "link": 112 + } + ], + "outputs": [ + { + "name": "MODEL", + "type": "MODEL", + "slot_index": 0, + "links": [ + 148 + ] + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.45", + "Node name for S&R": "ModelSamplingSD3", + "ue_properties": { + "widget_ue_connectable": {}, + "version": "7.1", + "input_ue_unconnectable": {} + } + }, + "widgets_values": [ + 8 + ] + }, + { + "id": 6, + "type": "CLIPTextEncode", + "pos": [ + 450, + 1380 + ], + "size": [ + 422.84503173828125, + 164.31304931640625 + ], + "flags": {}, + "order": 15, + "mode": 4, + "inputs": [ + { + "name": "clip", + "type": "CLIP", + "link": 74 + } + ], + "outputs": [ + { + "name": "CONDITIONING", + "type": "CONDITIONING", + "slot_index": 0, + "links": [ + 134 + ] + } + ], + "title": "CLIP Text Encode (Positive Prompt)", + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.45", + "Node name for S&R": "CLIPTextEncode", + "ue_properties": { + "widget_ue_connectable": {}, + "version": "7.1", + "input_ue_unconnectable": {} + } + }, + "widgets_values": [ + "The white dragon warrior stands still, eyes full of determination and strength. The camera slowly moves closer or circles around the warrior, highlighting the powerful presence and heroic spirit of the character." + ], + "color": "#232", + "bgcolor": "#353" + }, + { + "id": 37, + "type": "UNETLoader", + "pos": [ + 70, + 1100 + ], + "size": [ + 346.7470703125, + 82 + ], + "flags": {}, + "order": 2, + "mode": 4, + "inputs": [], + "outputs": [ + { + "name": "MODEL", + "type": "MODEL", + "slot_index": 0, + "links": [ + 110 + ] + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.45", + "Node name for S&R": "UNETLoader", + "models": [ + { + "name": "wan2.2_i2v_high_noise_14B_fp8_scaled.safetensors", + "url": "https://huggingface.co/Comfy-Org/Wan_2.2_ComfyUI_Repackaged/resolve/main/split_files/diffusion_models/wan2.2_i2v_high_noise_14B_fp8_scaled.safetensors", + "directory": "diffusion_models" + } + ], + "ue_properties": { + "widget_ue_connectable": {}, + "version": "7.1", + "input_ue_unconnectable": {} + } + }, + "widgets_values": [ + "wan2.2_i2v_high_noise_14B_fp8_scaled.safetensors", + "default" + ] + }, + { + "id": 56, + "type": "UNETLoader", + "pos": [ + 70, + 1230 + ], + "size": [ + 346.7470703125, + 82 + ], + "flags": {}, + "order": 3, + "mode": 4, + "inputs": [], + "outputs": [ + { + "name": "MODEL", + "type": "MODEL", + "slot_index": 0, + "links": [ + 112 + ] + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.45", + "Node name for S&R": "UNETLoader", + "models": [ + { + "name": "wan2.2_i2v_low_noise_14B_fp8_scaled.safetensors", + "url": "https://huggingface.co/Comfy-Org/Wan_2.2_ComfyUI_Repackaged/resolve/main/split_files/diffusion_models/wan2.2_i2v_low_noise_14B_fp8_scaled.safetensors", + "directory": "diffusion_models" + } + ], + "ue_properties": { + "widget_ue_connectable": {}, + "version": "7.1", + "input_ue_unconnectable": {} + } + }, + "widgets_values": [ + "wan2.2_i2v_low_noise_14B_fp8_scaled.safetensors", + "default" + ] + }, + { + "id": 63, + "type": "WanImageToVideo", + "pos": [ + 480, + 1860 + ], + "size": [ + 342.5999755859375, + 210 + ], + "flags": {}, + "order": 23, + "mode": 4, + "inputs": [ + { + "name": "positive", + "type": "CONDITIONING", + "link": 134 + }, + { + "name": "negative", + "type": "CONDITIONING", + "link": 135 + }, + { + "name": "vae", + "type": "VAE", + "link": 141 + }, + { + "name": "clip_vision_output", + "shape": 7, + "type": "CLIP_VISION_OUTPUT", + "link": null + }, + { + "name": "start_image", + "shape": 7, + "type": "IMAGE", + "link": 133 + } + ], + "outputs": [ + { + "name": "positive", + "type": "CONDITIONING", + "slot_index": 0, + "links": [ + 136, + 138 + ] + }, + { + "name": "negative", + "type": "CONDITIONING", + "slot_index": 1, + "links": [ + 137, + 139 + ] + }, + { + "name": "latent", + "type": "LATENT", + "slot_index": 2, + "links": [ + 140 + ] + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.45", + "Node name for S&R": "WanImageToVideo", + "ue_properties": { + "widget_ue_connectable": {}, + "version": "7.1", + "input_ue_unconnectable": {} + } + }, + "widgets_values": [ + 640, + 640, + 81, + 1 + ] + }, + { + "id": 84, + "type": "CLIPLoader", + "pos": [ + 60, + 30 + ], + "size": [ + 346.391845703125, + 106 + ], + "flags": {}, + "order": 4, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "CLIP", + "type": "CLIP", + "slot_index": 0, + "links": [ + 178, + 181 + ] + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.45", + "Node name for S&R": "CLIPLoader", + "models": [ + { + "name": "umt5_xxl_fp8_e4m3fn_scaled.safetensors", + "url": "https://huggingface.co/Comfy-Org/Wan_2.1_ComfyUI_repackaged/resolve/main/split_files/text_encoders/umt5_xxl_fp8_e4m3fn_scaled.safetensors", + "directory": "text_encoders" + } + ], + "ue_properties": { + "widget_ue_connectable": {}, + "version": "7.1", + "input_ue_unconnectable": {} + } + }, + "widgets_values": [ + "umt5_xxl_fp8_e4m3fn_scaled.safetensors", + "wan", + "default" + ] + }, + { + "id": 90, + "type": "VAELoader", + "pos": [ + 60, + 190 + ], + "size": [ + 344.731689453125, + 59.98149108886719 + ], + "flags": {}, + "order": 5, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "VAE", + "type": "VAE", + "slot_index": 0, + "links": [ + 176, + 185 + ] + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.45", + "Node name for S&R": "VAELoader", + "models": [ + { + "name": "wan_2.1_vae.safetensors", + "url": "https://huggingface.co/Comfy-Org/Wan_2.2_ComfyUI_Repackaged/resolve/main/split_files/vae/wan_2.1_vae.safetensors", + "directory": "vae" + } + ], + "ue_properties": { + "widget_ue_connectable": {}, + "version": "7.1", + "input_ue_unconnectable": {} + } + }, + "widgets_values": [ + "wan_2.1_vae.safetensors" + ] + }, + { + "id": 95, + "type": "UNETLoader", + "pos": [ + 50, + -230 + ], + "size": [ + 346.7470703125, + 82 + ], + "flags": {}, + "order": 6, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "MODEL", + "type": "MODEL", + "slot_index": 0, + "links": [ + 194 + ] + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.45", + "Node name for S&R": "UNETLoader", + "models": [ + { + "name": "wan2.2_i2v_high_noise_14B_fp8_scaled.safetensors", + "url": "https://huggingface.co/Comfy-Org/Wan_2.2_ComfyUI_Repackaged/resolve/main/split_files/diffusion_models/wan2.2_i2v_high_noise_14B_fp8_scaled.safetensors", + "directory": "diffusion_models" + } + ], + "ue_properties": { + "widget_ue_connectable": {}, + "version": "7.1", + "input_ue_unconnectable": {} + } + }, + "widgets_values": [ + "wan2.2_i2v_high_noise_14B_fp8_scaled.safetensors", + "default" + ] + }, + { + "id": 96, + "type": "UNETLoader", + "pos": [ + 50, + -100 + ], + "size": [ + 346.7470703125, + 82 + ], + "flags": {}, + "order": 7, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "MODEL", + "type": "MODEL", + "slot_index": 0, + "links": [ + 196 + ] + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.45", + "Node name for S&R": "UNETLoader", + "models": [ + { + "name": "wan2.2_i2v_low_noise_14B_fp8_scaled.safetensors", + "url": "https://huggingface.co/Comfy-Org/Wan_2.2_ComfyUI_Repackaged/resolve/main/split_files/diffusion_models/wan2.2_i2v_low_noise_14B_fp8_scaled.safetensors", + "directory": "diffusion_models" + } + ], + "ue_properties": { + "widget_ue_connectable": {}, + "version": "7.1", + "input_ue_unconnectable": {} + } + }, + "widgets_values": [ + "wan2.2_i2v_low_noise_14B_fp8_scaled.safetensors", + "default" + ] + }, + { + "id": 103, + "type": "ModelSamplingSD3", + "pos": [ + 740, + -100 + ], + "size": [ + 210, + 58 + ], + "flags": { + "collapsed": false + }, + "order": 26, + "mode": 0, + "inputs": [ + { + "name": "model", + "type": "MODEL", + "link": 189 + } + ], + "outputs": [ + { + "name": "MODEL", + "type": "MODEL", + "slot_index": 0, + "links": [ + 192 + ] + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.45", + "Node name for S&R": "ModelSamplingSD3", + "ue_properties": { + "widget_ue_connectable": {}, + "version": "7.1", + "input_ue_unconnectable": {} + } + }, + "widgets_values": [ + 5.000000000000001 + ] + }, + { + "id": 93, + "type": "CLIPTextEncode", + "pos": [ + 440, + 90 + ], + "size": [ + 510, + 160 + ], + "flags": {}, + "order": 20, + "mode": 0, + "inputs": [ + { + "name": "clip", + "type": "CLIP", + "link": 181 + } + ], + "outputs": [ + { + "name": "CONDITIONING", + "type": "CONDITIONING", + "slot_index": 0, + "links": [ + 183 + ] + } + ], + "title": "CLIP Text Encode (Positive Prompt)", + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.45", + "Node name for S&R": "CLIPTextEncode", + "ue_properties": { + "widget_ue_connectable": {}, + "version": "7.1", + "input_ue_unconnectable": {} + } + }, + "widgets_values": [ + "The white dragon warrior stands still, eyes full of determination and strength. The camera slowly moves closer or circles around the warrior, highlighting the powerful presence and heroic spirit of the character." + ], + "color": "#232", + "bgcolor": "#353" + }, + { + "id": 89, + "type": "CLIPTextEncode", + "pos": [ + 440, + 290 + ], + "size": [ + 510, + 130 + ], + "flags": {}, + "order": 19, + "mode": 0, + "inputs": [ + { + "name": "clip", + "type": "CLIP", + "link": 178 + } + ], + "outputs": [ + { + "name": "CONDITIONING", + "type": "CONDITIONING", + "slot_index": 0, + "links": [ + 184 + ] + } + ], + "title": "CLIP Text Encode (Negative Prompt)", + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.45", + "Node name for S&R": "CLIPTextEncode", + "ue_properties": { + "widget_ue_connectable": {}, + "version": "7.1", + "input_ue_unconnectable": {} + } + }, + "widgets_values": [ + "色调艳丽,过曝,静态,细节模糊不清,字幕,风格,作品,画作,画面,静止,整体发灰,最差质量,低质量,JPEG压缩残留,丑陋的,残缺的,多余的手指,画得不好的手部,画得不好的脸部,畸形的,毁容的,形态畸形的肢体,手指融合,静止不动的画面,杂乱的背景,三条腿,背景人很多,倒着走" + ], + "color": "#322", + "bgcolor": "#533" + }, + { + "id": 101, + "type": "LoraLoaderModelOnly", + "pos": [ + 450, + -230 + ], + "size": [ + 280, + 82 + ], + "flags": {}, + "order": 21, + "mode": 0, + "inputs": [ + { + "name": "model", + "type": "MODEL", + "link": 194 + } + ], + "outputs": [ + { + "name": "MODEL", + "type": "MODEL", + "links": [ + 190 + ] + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.49", + "Node name for S&R": "LoraLoaderModelOnly", + "models": [ + { + "name": "wan2.2_i2v_lightx2v_4steps_lora_v1_high_noise.safetensors", + "url": "https://huggingface.co/Comfy-Org/Wan_2.2_ComfyUI_Repackaged/resolve/main/split_files/loras/wan2.2_i2v_lightx2v_4steps_lora_v1_high_noise.safetensors", + "directory": "loras" + } + ], + "ue_properties": { + "widget_ue_connectable": {}, + "version": "7.1", + "input_ue_unconnectable": {} + } + }, + "widgets_values": [ + "wan2.2_i2v_lightx2v_4steps_lora_v1_high_noise.safetensors", + 1.0000000000000002 + ] + }, + { + "id": 102, + "type": "LoraLoaderModelOnly", + "pos": [ + 450, + -100 + ], + "size": [ + 280, + 82 + ], + "flags": {}, + "order": 22, + "mode": 0, + "inputs": [ + { + "name": "model", + "type": "MODEL", + "link": 196 + } + ], + "outputs": [ + { + "name": "MODEL", + "type": "MODEL", + "links": [ + 189 + ] + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.49", + "Node name for S&R": "LoraLoaderModelOnly", + "models": [ + { + "name": "wan2.2_i2v_lightx2v_4steps_lora_v1_low_noise.safetensors", + "url": "https://huggingface.co/Comfy-Org/Wan_2.2_ComfyUI_Repackaged/resolve/main/split_files/loras/wan2.2_i2v_lightx2v_4steps_lora_v1_low_noise.safetensors", + "directory": "loras" + } + ], + "ue_properties": { + "widget_ue_connectable": {}, + "version": "7.1", + "input_ue_unconnectable": {} + } + }, + "widgets_values": [ + "wan2.2_i2v_lightx2v_4steps_lora_v1_low_noise.safetensors", + 1.0000000000000002 + ] + }, + { + "id": 105, + "type": "MarkdownNote", + "pos": [ + -470, + 280 + ], + "size": [ + 480, + 180 + ], + "flags": {}, + "order": 8, + "mode": 0, + "inputs": [], + "outputs": [], + "title": "VRAM Usage", + "properties": { + "ue_properties": { + "version": "7.1", + "widget_ue_connectable": {}, + "input_ue_unconnectable": {} + } + }, + "widgets_values": [ + "## GPU:RTX4090D 24GB\n\n| Model | Size |VRAM Usage | 1st Generation | 2nd Generation |\n|---------------------|-------|-----------|---------------|-----------------|\n| fp8_scaled |640*640| 84% | ≈ 536s | ≈ 513s |\n| fp8_scaled + 4steps LoRA | 640*640 | 83% | ≈ 97s | ≈ 71s |" + ], + "color": "#432", + "bgcolor": "#653" + }, + { + "id": 62, + "type": "LoadImage", + "pos": [ + 80, + 1740 + ], + "size": [ + 315, + 314 + ], + "flags": {}, + "order": 9, + "mode": 4, + "inputs": [], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "slot_index": 0, + "links": [ + 133 + ] + }, + { + "name": "MASK", + "type": "MASK", + "slot_index": 1, + "links": null + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.45", + "Node name for S&R": "LoadImage", + "ue_properties": { + "widget_ue_connectable": {}, + "version": "7.1", + "input_ue_unconnectable": {} + } + }, + "widgets_values": [ + "video_wan2_2_14B_i2v_input_image.jpg", + "image" + ] + }, + { + "id": 106, + "type": "MarkdownNote", + "pos": [ + -350, + 1010 + ], + "size": [ + 370, + 110 + ], + "flags": {}, + "order": 10, + "mode": 0, + "inputs": [], + "outputs": [], + "properties": { + "ue_properties": { + "widget_ue_connectable": {}, + "version": "7.1", + "input_ue_unconnectable": {} + } + }, + "widgets_values": [ + "1. Box-select then use Ctrl + B to enable\n2. If you don't want to run both groups simultaneously, don't forget to use **Ctrl + B** to disable the **fp8_scaled + 4steps LoRA** group after enabling the **fp8_scaled** group, or try the [partial - execution](https://docs.comfy.org/interface/features/partial-execution) feature." + ], + "color": "#432", + "bgcolor": "#653" + }, + { + "id": 67, + "type": "Note", + "pos": [ + 510, + 820 + ], + "size": [ + 390, + 88 + ], + "flags": {}, + "order": 11, + "mode": 0, + "inputs": [], + "outputs": [], + "title": "Video Size", + "properties": { + "ue_properties": { + "widget_ue_connectable": {}, + "version": "7.1", + "input_ue_unconnectable": {} + } + }, + "widgets_values": [ + "By default, we set the video to a smaller size for users with low VRAM. If you have enough VRAM, you can change the size" + ], + "color": "#432", + "bgcolor": "#653" + }, + { + "id": 104, + "type": "ModelSamplingSD3", + "pos": [ + 740, + -230 + ], + "size": [ + 210, + 60 + ], + "flags": {}, + "order": 25, + "mode": 0, + "inputs": [ + { + "name": "model", + "type": "MODEL", + "link": 190 + } + ], + "outputs": [ + { + "name": "MODEL", + "type": "MODEL", + "slot_index": 0, + "links": [ + 195 + ] + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.45", + "Node name for S&R": "ModelSamplingSD3", + "ue_properties": { + "widget_ue_connectable": {}, + "version": "7.1", + "input_ue_unconnectable": {} + } + }, + "widgets_values": [ + 5.000000000000001 + ] + }, + { + "id": 98, + "type": "WanImageToVideo", + "pos": [ + 530, + 530 + ], + "size": [ + 342.5999755859375, + 210 + ], + "flags": {}, + "order": 24, + "mode": 0, + "inputs": [ + { + "name": "positive", + "type": "CONDITIONING", + "link": 183 + }, + { + "name": "negative", + "type": "CONDITIONING", + "link": 184 + }, + { + "name": "vae", + "type": "VAE", + "link": 185 + }, + { + "name": "clip_vision_output", + "shape": 7, + "type": "CLIP_VISION_OUTPUT", + "link": null + }, + { + "name": "start_image", + "shape": 7, + "type": "IMAGE", + "link": 186 + } + ], + "outputs": [ + { + "name": "positive", + "type": "CONDITIONING", + "slot_index": 0, + "links": [ + 168, + 172 + ] + }, + { + "name": "negative", + "type": "CONDITIONING", + "slot_index": 1, + "links": [ + 169, + 173 + ] + }, + { + "name": "latent", + "type": "LATENT", + "slot_index": 2, + "links": [ + 174 + ] + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.45", + "Node name for S&R": "WanImageToVideo", + "ue_properties": { + "widget_ue_connectable": {}, + "version": "7.1", + "input_ue_unconnectable": {} + } + }, + "widgets_values": [ + 640, + 640, + 81, + 1 + ] + }, + { + "id": 94, + "type": "CreateVideo", + "pos": [ + 1350, + 460 + ], + "size": [ + 270, + 78 + ], + "flags": {}, + "order": 34, + "mode": 0, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 182 + }, + { + "name": "audio", + "shape": 7, + "type": "AUDIO", + "link": null + } + ], + "outputs": [ + { + "name": "VIDEO", + "type": "VIDEO", + "links": [ + 197 + ] + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.45", + "Node name for S&R": "CreateVideo", + "ue_properties": { + "widget_ue_connectable": {}, + "version": "7.1", + "input_ue_unconnectable": {} + } + }, + "widgets_values": [ + 16 + ] + }, + { + "id": 87, + "type": "VAEDecode", + "pos": [ + 1060, + 480 + ], + "size": [ + 210, + 46 + ], + "flags": {}, + "order": 32, + "mode": 0, + "inputs": [ + { + "name": "samples", + "type": "LATENT", + "link": 175 + }, + { + "name": "vae", + "type": "VAE", + "link": 176 + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "slot_index": 0, + "links": [ + 182 + ] + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.45", + "Node name for S&R": "VAEDecode", + "ue_properties": { + "widget_ue_connectable": {}, + "version": "7.1", + "input_ue_unconnectable": {} + } + }, + "widgets_values": [] + }, + { + "id": 108, + "type": "SaveVideo", + "pos": [ + 1690, + -250 + ], + "size": [ + 890, + 988 + ], + "flags": {}, + "order": 36, + "mode": 0, + "inputs": [ + { + "name": "video", + "type": "VIDEO", + "link": 197 + } + ], + "outputs": [], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.49", + "Node name for S&R": "SaveVideo", + "ue_properties": { + "widget_ue_connectable": {}, + "version": "7.1", + "input_ue_unconnectable": {} + } + }, + "widgets_values": [ + "video/ComfyUI", + "auto", + "auto" + ] + }, + { + "id": 115, + "type": "Note", + "pos": [ + 30, + -470 + ], + "size": [ + 360, + 100 + ], + "flags": {}, + "order": 12, + "mode": 0, + "inputs": [], + "outputs": [], + "title": "About 4 Steps LoRA", + "properties": { + "ue_properties": { + "widget_ue_connectable": {}, + "version": "7.1", + "input_ue_unconnectable": {} + } + }, + "widgets_values": [ + "Using the Wan2.2 Lighting LoRA will result in the loss of video dynamics, but it will reduce the generation time. This template provides two workflows, and you can enable one as needed." + ], + "color": "#432", + "bgcolor": "#653" + }, + { + "id": 86, + "type": "KSamplerAdvanced", + "pos": [ + 990, + -250 + ], + "size": [ + 304.748046875, + 546 + ], + "flags": {}, + "order": 28, + "mode": 0, + "inputs": [ + { + "name": "model", + "type": "MODEL", + "link": 195 + }, + { + "name": "positive", + "type": "CONDITIONING", + "link": 172 + }, + { + "name": "negative", + "type": "CONDITIONING", + "link": 173 + }, + { + "name": "latent_image", + "type": "LATENT", + "link": 174 + } + ], + "outputs": [ + { + "name": "LATENT", + "type": "LATENT", + "links": [ + 170 + ] + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.45", + "Node name for S&R": "KSamplerAdvanced", + "ue_properties": { + "widget_ue_connectable": {}, + "version": "7.1", + "input_ue_unconnectable": {} + } + }, + "widgets_values": [ + "enable", + 138073435077572, + "randomize", + 4, + 1, + "euler", + "simple", + 0, + 2, + "enable" + ] + }, + { + "id": 85, + "type": "KSamplerAdvanced", + "pos": [ + 1336.748046875, + -250 + ], + "size": [ + 304.748046875, + 546 + ], + "flags": {}, + "order": 30, + "mode": 0, + "inputs": [ + { + "name": "model", + "type": "MODEL", + "link": 192 + }, + { + "name": "positive", + "type": "CONDITIONING", + "link": 168 + }, + { + "name": "negative", + "type": "CONDITIONING", + "link": 169 + }, + { + "name": "latent_image", + "type": "LATENT", + "link": 170 + } + ], + "outputs": [ + { + "name": "LATENT", + "type": "LATENT", + "links": [ + 175 + ] + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.45", + "Node name for S&R": "KSamplerAdvanced", + "ue_properties": { + "widget_ue_connectable": {}, + "version": "7.1", + "input_ue_unconnectable": {} + } + }, + "widgets_values": [ + "disable", + 0, + "fixed", + 4, + 1, + "euler", + "simple", + 2, + 4, + "disable" + ] + }, + { + "id": 58, + "type": "KSamplerAdvanced", + "pos": [ + 1240, + 1110 + ], + "size": [ + 304.748046875, + 498.6905822753906 + ], + "flags": {}, + "order": 29, + "mode": 4, + "inputs": [ + { + "name": "model", + "type": "MODEL", + "link": 148 + }, + { + "name": "positive", + "type": "CONDITIONING", + "link": 138 + }, + { + "name": "negative", + "type": "CONDITIONING", + "link": 139 + }, + { + "name": "latent_image", + "type": "LATENT", + "link": 113 + } + ], + "outputs": [ + { + "name": "LATENT", + "type": "LATENT", + "links": [ + 124 + ] + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.45", + "Node name for S&R": "KSamplerAdvanced", + "ue_properties": { + "widget_ue_connectable": {}, + "version": "7.1", + "input_ue_unconnectable": {} + } + }, + "widgets_values": [ + "disable", + 0, + "fixed", + 20, + 3.5, + "euler", + "simple", + 10, + 10000, + "disable" + ] + }, + { + "id": 109, + "type": "CreateVideo", + "pos": [ + 1250, + 1740 + ], + "size": [ + 270, + 78 + ], + "flags": {}, + "order": 33, + "mode": 4, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 198 + }, + { + "name": "audio", + "shape": 7, + "type": "AUDIO", + "link": null + } + ], + "outputs": [ + { + "name": "VIDEO", + "type": "VIDEO", + "links": [ + 199 + ] + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.49", + "Node name for S&R": "CreateVideo", + "ue_properties": { + "widget_ue_connectable": {}, + "version": "7.1", + "input_ue_unconnectable": {} + } + }, + "widgets_values": [ + 16 + ] + }, + { + "id": 8, + "type": "VAEDecode", + "pos": [ + 920, + 1750 + ], + "size": [ + 210, + 46 + ], + "flags": {}, + "order": 31, + "mode": 4, + "inputs": [ + { + "name": "samples", + "type": "LATENT", + "link": 124 + }, + { + "name": "vae", + "type": "VAE", + "link": 76 + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "slot_index": 0, + "links": [ + 198 + ] + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.45", + "Node name for S&R": "VAEDecode", + "ue_properties": { + "widget_ue_connectable": {}, + "version": "7.1", + "input_ue_unconnectable": {} + } + }, + "widgets_values": [] + }, + { + "id": 57, + "type": "KSamplerAdvanced", + "pos": [ + 920, + 1110 + ], + "size": [ + 310, + 500 + ], + "flags": {}, + "order": 27, + "mode": 4, + "inputs": [ + { + "name": "model", + "type": "MODEL", + "link": 147 + }, + { + "name": "positive", + "type": "CONDITIONING", + "link": 136 + }, + { + "name": "negative", + "type": "CONDITIONING", + "link": 137 + }, + { + "name": "latent_image", + "type": "LATENT", + "link": 140 + } + ], + "outputs": [ + { + "name": "LATENT", + "type": "LATENT", + "links": [ + 113 + ] + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.45", + "Node name for S&R": "KSamplerAdvanced", + "ue_properties": { + "widget_ue_connectable": {}, + "version": "7.1", + "input_ue_unconnectable": {} + } + }, + "widgets_values": [ + "enable", + 306189419888845, + "randomize", + 20, + 3.5, + "euler", + "simple", + 0, + 10, + "enable" + ] + }, + { + "id": 61, + "type": "SaveVideo", + "pos": [ + 1580, + 1110 + ], + "size": [ + 990, + 990 + ], + "flags": {}, + "order": 35, + "mode": 4, + "inputs": [ + { + "name": "video", + "type": "VIDEO", + "link": 199 + } + ], + "outputs": [], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.45", + "Node name for S&R": "SaveVideo", + "ue_properties": { + "widget_ue_connectable": {}, + "version": "7.1", + "input_ue_unconnectable": {} + } + }, + "widgets_values": [ + "video/ComfyUI", + "auto", + "auto" + ] + }, + { + "id": 66, + "type": "MarkdownNote", + "pos": [ + -470, + -320 + ], + "size": [ + 480, + 530 + ], + "flags": {}, + "order": 13, + "mode": 0, + "inputs": [], + "outputs": [], + "title": "Model Links", + "properties": { + "ue_properties": { + "widget_ue_connectable": {}, + "version": "7.1", + "input_ue_unconnectable": {} + } + }, + "widgets_values": [ + "[Tutorial](https://docs.comfy.org/tutorials/video/wan/wan2_2\n)\n\n**Diffusion Model**\n- [wan2.2_i2v_high_noise_14B_fp8_scaled.safetensors](https://huggingface.co/Comfy-Org/Wan_2.2_ComfyUI_Repackaged/resolve/main/split_files/diffusion_models/wan2.2_i2v_high_noise_14B_fp8_scaled.safetensors)\n- [wan2.2_i2v_low_noise_14B_fp8_scaled.safetensors](https://huggingface.co/Comfy-Org/Wan_2.2_ComfyUI_Repackaged/resolve/main/split_files/diffusion_models/wan2.2_i2v_low_noise_14B_fp8_scaled.safetensors)\n\n**LoRA**\n- [wan2.2_i2v_lightx2v_4steps_lora_v1_low_noise.safetensors](https://huggingface.co/Comfy-Org/Wan_2.2_ComfyUI_Repackaged/resolve/main/split_files/loras/wan2.2_i2v_lightx2v_4steps_lora_v1_low_noise.safetensors)\n- [wan2.2_i2v_lightx2v_4steps_lora_v1_high_noise.safetensors](https://huggingface.co/Comfy-Org/Wan_2.2_ComfyUI_Repackaged/resolve/main/split_files/loras/wan2.2_i2v_lightx2v_4steps_lora_v1_high_noise.safetensors)\n\n**VAE**\n- [wan_2.1_vae.safetensors](https://huggingface.co/Comfy-Org/Wan_2.2_ComfyUI_Repackaged/resolve/main/split_files/vae/wan_2.1_vae.safetensors)\n\n**Text Encoder** \n- [umt5_xxl_fp8_e4m3fn_scaled.safetensors](https://huggingface.co/Comfy-Org/Wan_2.1_ComfyUI_repackaged/resolve/main/split_files/text_encoders/umt5_xxl_fp8_e4m3fn_scaled.safetensors)\n\n\nFile save location\n\n```\nComfyUI/\n├───📂 models/\n│ ├───📂 diffusion_models/\n│ │ ├─── wan2.2_i2v_low_noise_14B_fp8_scaled.safetensors\n│ │ └─── wan2.2_i2v_high_noise_14B_fp8_scaled.safetensors\n│ ├───📂 loras/\n│ │ ├─── wan2.2_i2v_lightx2v_4steps_lora_v1_low_noise.safetensors\n│ │ └─── wan2.2_i2v_lightx2v_4steps_lora_v1_low_noise.safetensors\n│ ├───📂 text_encoders/\n│ │ └─── umt5_xxl_fp8_e4m3fn_scaled.safetensors \n│ └───📂 vae/\n│ └── wan_2.1_vae.safetensors\n```\n" + ], + "color": "#432", + "bgcolor": "#653" + }, + { + "id": 97, + "type": "LoadImage", + "pos": [ + 70, + 400 + ], + "size": [ + 315, + 314.0001220703125 + ], + "flags": {}, + "order": 14, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "slot_index": 0, + "links": [ + 186 + ] + }, + { + "name": "MASK", + "type": "MASK", + "slot_index": 1, + "links": null + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.45", + "Node name for S&R": "LoadImage", + "ue_properties": { + "widget_ue_connectable": {}, + "version": "7.1", + "input_ue_unconnectable": {} + } + }, + "widgets_values": [ + "video_wan2_2_14B_i2v_input_image.jpg", + "image" + ] + } + ], + "links": [ + [ + 74, + 38, + 0, + 6, + 0, + "CLIP" + ], + [ + 75, + 38, + 0, + 7, + 0, + "CLIP" + ], + [ + 76, + 39, + 0, + 8, + 1, + "VAE" + ], + [ + 110, + 37, + 0, + 54, + 0, + "MODEL" + ], + [ + 112, + 56, + 0, + 55, + 0, + "MODEL" + ], + [ + 113, + 57, + 0, + 58, + 3, + "LATENT" + ], + [ + 124, + 58, + 0, + 8, + 0, + "LATENT" + ], + [ + 133, + 62, + 0, + 63, + 4, + "IMAGE" + ], + [ + 134, + 6, + 0, + 63, + 0, + "CONDITIONING" + ], + [ + 135, + 7, + 0, + 63, + 1, + "CONDITIONING" + ], + [ + 136, + 63, + 0, + 57, + 1, + "CONDITIONING" + ], + [ + 137, + 63, + 1, + 57, + 2, + "CONDITIONING" + ], + [ + 138, + 63, + 0, + 58, + 1, + "CONDITIONING" + ], + [ + 139, + 63, + 1, + 58, + 2, + "CONDITIONING" + ], + [ + 140, + 63, + 2, + 57, + 3, + "LATENT" + ], + [ + 141, + 39, + 0, + 63, + 2, + "VAE" + ], + [ + 147, + 54, + 0, + 57, + 0, + "MODEL" + ], + [ + 148, + 55, + 0, + 58, + 0, + "MODEL" + ], + [ + 168, + 98, + 0, + 85, + 1, + "CONDITIONING" + ], + [ + 169, + 98, + 1, + 85, + 2, + "CONDITIONING" + ], + [ + 170, + 86, + 0, + 85, + 3, + "LATENT" + ], + [ + 172, + 98, + 0, + 86, + 1, + "CONDITIONING" + ], + [ + 173, + 98, + 1, + 86, + 2, + "CONDITIONING" + ], + [ + 174, + 98, + 2, + 86, + 3, + "LATENT" + ], + [ + 175, + 85, + 0, + 87, + 0, + "LATENT" + ], + [ + 176, + 90, + 0, + 87, + 1, + "VAE" + ], + [ + 178, + 84, + 0, + 89, + 0, + "CLIP" + ], + [ + 181, + 84, + 0, + 93, + 0, + "CLIP" + ], + [ + 182, + 87, + 0, + 94, + 0, + "IMAGE" + ], + [ + 183, + 93, + 0, + 98, + 0, + "CONDITIONING" + ], + [ + 184, + 89, + 0, + 98, + 1, + "CONDITIONING" + ], + [ + 185, + 90, + 0, + 98, + 2, + "VAE" + ], + [ + 186, + 97, + 0, + 98, + 4, + "IMAGE" + ], + [ + 189, + 102, + 0, + 103, + 0, + "MODEL" + ], + [ + 190, + 101, + 0, + 104, + 0, + "MODEL" + ], + [ + 192, + 103, + 0, + 85, + 0, + "MODEL" + ], + [ + 194, + 95, + 0, + 101, + 0, + "MODEL" + ], + [ + 195, + 104, + 0, + 86, + 0, + "MODEL" + ], + [ + 196, + 96, + 0, + 102, + 0, + "MODEL" + ], + [ + 197, + 94, + 0, + 108, + 0, + "VIDEO" + ], + [ + 198, + 8, + 0, + 109, + 0, + "IMAGE" + ], + [ + 199, + 109, + 0, + 61, + 0, + "VIDEO" + ] + ], + "groups": [ + { + "id": 10, + "title": "fp8_scaled", + "bounding": [ + 40, + 980, + 2570, + 1150 + ], + "color": "#3f789e", + "font_size": 24, + "flags": {} + }, + { + "id": 1, + "title": "Step1 - Load models", + "bounding": [ + 50, + 1020, + 371.0310363769531, + 571.3974609375 + ], + "color": "#3f789e", + "font_size": 24, + "flags": {} + }, + { + "id": 2, + "title": "Step2 - Upload start_image", + "bounding": [ + 50, + 1620, + 370, + 470 + ], + "color": "#3f789e", + "font_size": 24, + "flags": {} + }, + { + "id": 3, + "title": "Step4 - Prompt", + "bounding": [ + 440, + 1310, + 445.27801513671875, + 464.2060852050781 + ], + "color": "#3f789e", + "font_size": 24, + "flags": {} + }, + { + "id": 4, + "title": "Step3 - Video size & length", + "bounding": [ + 440, + 1790, + 440, + 300 + ], + "color": "#3f789e", + "font_size": 24, + "flags": {} + }, + { + "id": 15, + "title": "fp8_scaled + 4steps LoRA", + "bounding": [ + 30, + -350, + 2580, + 1120 + ], + "color": "#3f789e", + "font_size": 24, + "flags": {} + }, + { + "id": 11, + "title": "Step1 - Load models", + "bounding": [ + 40, + -310, + 371.0310363769531, + 571.3974609375 + ], + "color": "#3f789e", + "font_size": 24, + "flags": {} + }, + { + "id": 12, + "title": "Step2 - Upload start_image", + "bounding": [ + 40, + 280, + 370, + 470 + ], + "color": "#3f789e", + "font_size": 24, + "flags": {} + }, + { + "id": 13, + "title": "Step4 - Prompt", + "bounding": [ + 430, + 20, + 530, + 420 + ], + "color": "#3f789e", + "font_size": 24, + "flags": {} + }, + { + "id": 14, + "title": "Step3 - Video size & length", + "bounding": [ + 430, + 460, + 530, + 290 + ], + "color": "#3f789e", + "font_size": 24, + "flags": {} + }, + { + "id": 16, + "title": "Lightx2v 4steps LoRA", + "bounding": [ + 430, + -310, + 530, + 310 + ], + "color": "#3f789e", + "font_size": 24, + "flags": {} + } + ], + "config": {}, + "extra": { + "ds": { + "scale": 0.45000000000000046, + "offset": [ + 1208.3999122160667, + 781.2015842319031 + ] + }, + "frontendVersion": "1.27.10", + "VHS_latentpreview": false, + "VHS_latentpreviewrate": 0, + "VHS_MetadataImage": true, + "VHS_KeepIntermediate": true, + "ue_links": [] + }, + "version": 0.4 +} \ No newline at end of file diff --git a/example_workflows/i2v_wan22-14b-s2v.jpg b/example_workflows/i2v_wan22-14b-s2v.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e9d39ad469496bbc419c674984a6afb0a6e5fcc0 GIT binary patch literal 6308 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 literal 0 HcmV?d00001 diff --git a/example_workflows/i2v_wan22-14b-t2v.json b/example_workflows/i2v_wan22-14b-t2v.json new file mode 100644 index 0000000..5cbcbb8 --- /dev/null +++ b/example_workflows/i2v_wan22-14b-t2v.json @@ -0,0 +1,1876 @@ +{ + "id": "ec7da562-7e21-4dac-a0d2-f4441e1efd3b", + "revision": 0, + "last_node_id": 113, + "last_link_id": 187, + "nodes": [ + { + "id": 71, + "type": "CLIPLoader", + "pos": [ + 50, + 50 + ], + "size": [ + 346.391845703125, + 106 + ], + "flags": {}, + "order": 0, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "CLIP", + "type": "CLIP", + "slot_index": 0, + "links": [ + 141, + 160 + ] + } + ], + "properties": { + "Node name for S&R": "CLIPLoader", + "cnr_id": "comfy-core", + "ver": "0.3.45", + "models": [ + { + "name": "umt5_xxl_fp8_e4m3fn_scaled.safetensors", + "url": "https://huggingface.co/Comfy-Org/Wan_2.1_ComfyUI_repackaged/resolve/main/split_files/text_encoders/umt5_xxl_fp8_e4m3fn_scaled.safetensors", + "directory": "text_encoders" + } + ] + }, + "widgets_values": [ + "umt5_xxl_fp8_e4m3fn_scaled.safetensors", + "wan", + "default" + ] + }, + { + "id": 73, + "type": "VAELoader", + "pos": [ + 50, + 210 + ], + "size": [ + 344.731689453125, + 59.98149108886719 + ], + "flags": {}, + "order": 1, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "VAE", + "type": "VAE", + "slot_index": 0, + "links": [ + 158 + ] + } + ], + "properties": { + "Node name for S&R": "VAELoader", + "cnr_id": "comfy-core", + "ver": "0.3.45", + "models": [ + { + "name": "wan_2.1_vae.safetensors", + "url": "https://huggingface.co/Comfy-Org/Wan_2.2_ComfyUI_Repackaged/resolve/main/split_files/vae/wan_2.1_vae.safetensors", + "directory": "vae" + } + ] + }, + "widgets_values": [ + "wan_2.1_vae.safetensors" + ] + }, + { + "id": 76, + "type": "UNETLoader", + "pos": [ + 50, + -80 + ], + "size": [ + 346.7470703125, + 82 + ], + "flags": {}, + "order": 2, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "MODEL", + "type": "MODEL", + "slot_index": 0, + "links": [ + 155 + ] + } + ], + "properties": { + "Node name for S&R": "UNETLoader", + "cnr_id": "comfy-core", + "ver": "0.3.45", + "models": [ + { + "name": "wan2.2_t2v_low_noise_14B_fp8_scaled.safetensors", + "url": "https://huggingface.co/Comfy-Org/Wan_2.2_ComfyUI_Repackaged/resolve/main/split_files/diffusion_models/wan2.2_t2v_low_noise_14B_fp8_scaled.safetensors", + "directory": "diffusion_models" + } + ] + }, + "widgets_values": [ + "wan2.2_t2v_low_noise_14B_fp8_scaled.safetensors", + "default" + ] + }, + { + "id": 75, + "type": "UNETLoader", + "pos": [ + 50, + -210 + ], + "size": [ + 346.7470703125, + 82 + ], + "flags": {}, + "order": 3, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "MODEL", + "type": "MODEL", + "slot_index": 0, + "links": [ + 153 + ] + } + ], + "properties": { + "Node name for S&R": "UNETLoader", + "cnr_id": "comfy-core", + "ver": "0.3.45", + "models": [ + { + "name": "wan2.2_t2v_high_noise_14B_fp8_scaled.safetensors", + "url": "https://huggingface.co/Comfy-Org/Wan_2.2_ComfyUI_Repackaged/resolve/main/split_files/diffusion_models/wan2.2_t2v_high_noise_14B_fp8_scaled.safetensors", + "directory": "diffusion_models" + } + ] + }, + "widgets_values": [ + "wan2.2_t2v_high_noise_14B_fp8_scaled.safetensors", + "default" + ] + }, + { + "id": 90, + "type": "CLIPLoader", + "pos": [ + 60, + 1130 + ], + "size": [ + 346.391845703125, + 106 + ], + "flags": {}, + "order": 4, + "mode": 4, + "inputs": [], + "outputs": [ + { + "name": "CLIP", + "type": "CLIP", + "slot_index": 0, + "links": [ + 164, + 178 + ] + } + ], + "properties": { + "Node name for S&R": "CLIPLoader", + "cnr_id": "comfy-core", + "ver": "0.3.45", + "models": [ + { + "name": "umt5_xxl_fp8_e4m3fn_scaled.safetensors", + "url": "https://huggingface.co/Comfy-Org/Wan_2.1_ComfyUI_repackaged/resolve/main/split_files/text_encoders/umt5_xxl_fp8_e4m3fn_scaled.safetensors", + "directory": "text_encoders" + } + ] + }, + "widgets_values": [ + "umt5_xxl_fp8_e4m3fn_scaled.safetensors", + "wan", + "default" + ] + }, + { + "id": 92, + "type": "VAELoader", + "pos": [ + 60, + 1290 + ], + "size": [ + 344.731689453125, + 59.98149108886719 + ], + "flags": {}, + "order": 5, + "mode": 4, + "inputs": [], + "outputs": [ + { + "name": "VAE", + "type": "VAE", + "slot_index": 0, + "links": [ + 176 + ] + } + ], + "properties": { + "Node name for S&R": "VAELoader", + "cnr_id": "comfy-core", + "ver": "0.3.45", + "models": [ + { + "name": "wan_2.1_vae.safetensors", + "url": "https://huggingface.co/Comfy-Org/Wan_2.2_ComfyUI_Repackaged/resolve/main/split_files/vae/wan_2.1_vae.safetensors", + "directory": "vae" + } + ] + }, + "widgets_values": [ + "wan_2.1_vae.safetensors" + ] + }, + { + "id": 94, + "type": "ModelSamplingSD3", + "pos": [ + 660, + 980 + ], + "size": [ + 210, + 58 + ], + "flags": {}, + "order": 22, + "mode": 4, + "inputs": [ + { + "name": "model", + "type": "MODEL", + "link": 166 + } + ], + "outputs": [ + { + "name": "MODEL", + "type": "MODEL", + "slot_index": 0, + "links": [ + 167 + ] + } + ], + "properties": { + "Node name for S&R": "ModelSamplingSD3", + "cnr_id": "comfy-core", + "ver": "0.3.45" + }, + "widgets_values": [ + 8 + ] + }, + { + "id": 101, + "type": "UNETLoader", + "pos": [ + 50, + 870 + ], + "size": [ + 346.7470703125, + 82 + ], + "flags": {}, + "order": 6, + "mode": 4, + "inputs": [], + "outputs": [ + { + "name": "MODEL", + "type": "MODEL", + "slot_index": 0, + "links": [ + 165 + ] + } + ], + "properties": { + "Node name for S&R": "UNETLoader", + "cnr_id": "comfy-core", + "ver": "0.3.45", + "models": [ + { + "name": "wan2.2_t2v_high_noise_14B_fp8_scaled.safetensors", + "url": "https://huggingface.co/Comfy-Org/Wan_2.2_ComfyUI_Repackaged/resolve/main/split_files/diffusion_models/wan2.2_t2v_high_noise_14B_fp8_scaled.safetensors", + "directory": "diffusion_models" + } + ] + }, + "widgets_values": [ + "wan2.2_t2v_high_noise_14B_fp8_scaled.safetensors", + "default" + ] + }, + { + "id": 102, + "type": "UNETLoader", + "pos": [ + 50, + 1000 + ], + "size": [ + 346.7470703125, + 82 + ], + "flags": {}, + "order": 7, + "mode": 4, + "inputs": [], + "outputs": [ + { + "name": "MODEL", + "type": "MODEL", + "slot_index": 0, + "links": [ + 166 + ] + } + ], + "properties": { + "Node name for S&R": "UNETLoader", + "cnr_id": "comfy-core", + "ver": "0.3.45", + "models": [ + { + "name": "wan2.2_t2v_low_noise_14B_fp8_scaled.safetensors", + "url": "https://huggingface.co/Comfy-Org/Wan_2.2_ComfyUI_Repackaged/resolve/main/split_files/diffusion_models/wan2.2_t2v_low_noise_14B_fp8_scaled.safetensors", + "directory": "diffusion_models" + } + ] + }, + "widgets_values": [ + "wan2.2_t2v_low_noise_14B_fp8_scaled.safetensors", + "default" + ] + }, + { + "id": 83, + "type": "LoraLoaderModelOnly", + "pos": [ + 450, + -200 + ], + "size": [ + 280, + 82 + ], + "flags": {}, + "order": 18, + "mode": 0, + "inputs": [ + { + "name": "model", + "type": "MODEL", + "link": 153 + } + ], + "outputs": [ + { + "name": "MODEL", + "type": "MODEL", + "links": [ + 152 + ] + } + ], + "properties": { + "Node name for S&R": "LoraLoaderModelOnly", + "cnr_id": "comfy-core", + "ver": "0.3.49", + "models": [ + { + "name": "wan2.2_t2v_lightx2v_4steps_lora_v1.1_high_noise.safetensors", + "url": "https://huggingface.co/Comfy-Org/Wan_2.2_ComfyUI_Repackaged/resolve/main/split_files/loras/wan2.2_t2v_lightx2v_4steps_lora_v1.1_high_noise.safetensors", + "directory": "loras" + } + ] + }, + "widgets_values": [ + "wan2.2_t2v_lightx2v_4steps_lora_v1.1_high_noise.safetensors", + 1.0000000000000002 + ] + }, + { + "id": 85, + "type": "LoraLoaderModelOnly", + "pos": [ + 450, + -60 + ], + "size": [ + 280, + 82 + ], + "flags": {}, + "order": 17, + "mode": 0, + "inputs": [ + { + "name": "model", + "type": "MODEL", + "link": 155 + } + ], + "outputs": [ + { + "name": "MODEL", + "type": "MODEL", + "links": [ + 156 + ] + } + ], + "properties": { + "Node name for S&R": "LoraLoaderModelOnly", + "cnr_id": "comfy-core", + "ver": "0.3.49", + "models": [ + { + "name": "wan2.2_t2v_lightx2v_4steps_lora_v1.1_low_noise.safetensors", + "url": "https://huggingface.co/Comfy-Org/Wan_2.2_ComfyUI_Repackaged/resolve/main/split_files/loras/wan2.2_t2v_lightx2v_4steps_lora_v1.1_low_noise.safetensors", + "directory": "loras" + } + ] + }, + "widgets_values": [ + "wan2.2_t2v_lightx2v_4steps_lora_v1.1_low_noise.safetensors", + 1.0000000000000002 + ] + }, + { + "id": 86, + "type": "ModelSamplingSD3", + "pos": [ + 740, + -60 + ], + "size": [ + 210, + 58 + ], + "flags": { + "collapsed": false + }, + "order": 23, + "mode": 0, + "inputs": [ + { + "name": "model", + "type": "MODEL", + "link": 156 + } + ], + "outputs": [ + { + "name": "MODEL", + "type": "MODEL", + "slot_index": 0, + "links": [ + 183 + ] + } + ], + "properties": { + "Node name for S&R": "ModelSamplingSD3", + "cnr_id": "comfy-core", + "ver": "0.3.45" + }, + "widgets_values": [ + 5.000000000000001 + ] + }, + { + "id": 82, + "type": "ModelSamplingSD3", + "pos": [ + 740, + -200 + ], + "size": [ + 210, + 60 + ], + "flags": {}, + "order": 24, + "mode": 0, + "inputs": [ + { + "name": "model", + "type": "MODEL", + "link": 152 + } + ], + "outputs": [ + { + "name": "MODEL", + "type": "MODEL", + "slot_index": 0, + "links": [ + 181 + ] + } + ], + "properties": { + "Node name for S&R": "ModelSamplingSD3", + "cnr_id": "comfy-core", + "ver": "0.3.45" + }, + "widgets_values": [ + 5.000000000000001 + ] + }, + { + "id": 62, + "type": "MarkdownNote", + "pos": [ + -470, + -290 + ], + "size": [ + 480, + 550 + ], + "flags": {}, + "order": 8, + "mode": 0, + "inputs": [], + "outputs": [], + "title": "Model Links", + "properties": {}, + "widgets_values": [ + "[Tutorial](https://docs.comfy.org/tutorials/video/wan/wan2_2\n) | [教程](https://docs.comfy.org/zh-CN/tutorials/video/wan/wan2_2\n)\n\n**Diffusion Model** \n- [wan2.2_t2v_high_noise_14B_fp8_scaled.safetensors](https://huggingface.co/Comfy-Org/Wan_2.2_ComfyUI_Repackaged/resolve/main/split_files/diffusion_models/wan2.2_t2v_high_noise_14B_fp8_scaled.safetensors)\n- [wan2.2_t2v_low_noise_14B_fp8_scaled.safetensors](https://huggingface.co/Comfy-Org/Wan_2.2_ComfyUI_Repackaged/resolve/main/split_files/diffusion_models/wan2.2_t2v_low_noise_14B_fp8_scaled.safetensors)\n\n**LoRA**\n\n- [wan2.2_t2v_lightx2v_4steps_lora_v1.1_high_noise.safetensors](https://huggingface.co/Comfy-Org/Wan_2.2_ComfyUI_Repackaged/resolve/main/split_files/loras/wan2.2_t2v_lightx2v_4steps_lora_v1.1_high_noise.safetensors)\n- [wan2.2_t2v_lightx2v_4steps_lora_v1.1_low_noise.safetensors](https://huggingface.co/Comfy-Org/Wan_2.2_ComfyUI_Repackaged/resolve/main/split_files/loras/wan2.2_t2v_lightx2v_4steps_lora_v1.1_low_noise.safetensors)\n\n**VAE**\n- [wan_2.1_vae.safetensors](https://huggingface.co/Comfy-Org/Wan_2.2_ComfyUI_Repackaged/resolve/main/split_files/vae/wan_2.1_vae.safetensors)\n\n**Text Encoder** \n- [umt5_xxl_fp8_e4m3fn_scaled.safetensors](https://huggingface.co/Comfy-Org/Wan_2.1_ComfyUI_repackaged/resolve/main/split_files/text_encoders/umt5_xxl_fp8_e4m3fn_scaled.safetensors)\n\n\nFile save location\n\n```\nComfyUI/\n├───📂 models/\n│ ├───📂 diffusion_models/\n│ │ ├─── wan2.2_t2v_low_noise_14B_fp8_scaled.safetensors\n│ │ └─── wan2.2_t2v_high_noise_14B_fp8_scaled.safetensors\n│ ├───📂 loras/\n│ │ ├───wan2.2_t2v_lightx2v_4steps_lora_v1.1_low_noise.safetensors\n│ │ └───wan2.2_t2v_lightx2v_4steps_lora_v1.1_high_noise.safetensors\n│ ├───📂 text_encoders/\n│ │ └─── umt5_xxl_fp8_e4m3fn_scaled.safetensors \n│ └───📂 vae/\n│ └── wan_2.1_vae.safetensors\n```\n" + ], + "color": "#432", + "bgcolor": "#653" + }, + { + "id": 89, + "type": "CLIPTextEncode", + "pos": [ + 440, + 130 + ], + "size": [ + 510, + 160 + ], + "flags": {}, + "order": 16, + "mode": 0, + "inputs": [ + { + "name": "clip", + "type": "CLIP", + "link": 160 + } + ], + "outputs": [ + { + "name": "CONDITIONING", + "type": "CONDITIONING", + "slot_index": 0, + "links": [ + 143, + 149 + ] + } + ], + "title": "CLIP Text Encode (Positive Prompt)", + "properties": { + "Node name for S&R": "CLIPTextEncode", + "cnr_id": "comfy-core", + "ver": "0.3.45" + }, + "widgets_values": [ + "Beautiful young European woman with honey blonde hair gracefully turning her head back over shoulder, gentle smile, bright eyes looking at camera. Hair flowing in slow motion as she turns. Soft natural lighting, clean background, cinematic slow-motion portrait." + ], + "color": "#232", + "bgcolor": "#353" + }, + { + "id": 81, + "type": "KSamplerAdvanced", + "pos": [ + 990, + -250 + ], + "size": [ + 300, + 546 + ], + "flags": {}, + "order": 26, + "mode": 0, + "inputs": [ + { + "name": "model", + "type": "MODEL", + "link": 181 + }, + { + "name": "positive", + "type": "CONDITIONING", + "link": 149 + }, + { + "name": "negative", + "type": "CONDITIONING", + "link": 150 + }, + { + "name": "latent_image", + "type": "LATENT", + "link": 151 + } + ], + "outputs": [ + { + "name": "LATENT", + "type": "LATENT", + "links": [ + 145 + ] + } + ], + "properties": { + "Node name for S&R": "KSamplerAdvanced", + "cnr_id": "comfy-core", + "ver": "0.3.45" + }, + "widgets_values": [ + "enable", + 392459563371087, + "randomize", + 4, + 1, + "euler", + "simple", + 0, + 2, + "enable" + ] + }, + { + "id": 88, + "type": "CreateVideo", + "pos": [ + 1320, + 460 + ], + "size": [ + 270, + 78 + ], + "flags": {}, + "order": 32, + "mode": 0, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 159 + }, + { + "name": "audio", + "shape": 7, + "type": "AUDIO", + "link": null + } + ], + "outputs": [ + { + "name": "VIDEO", + "type": "VIDEO", + "links": [ + 147 + ] + } + ], + "properties": { + "Node name for S&R": "CreateVideo", + "cnr_id": "comfy-core", + "ver": "0.3.45" + }, + "widgets_values": [ + 16 + ] + }, + { + "id": 80, + "type": "SaveVideo", + "pos": [ + 1660, + -240 + ], + "size": [ + 704, + 802 + ], + "flags": {}, + "order": 34, + "mode": 0, + "inputs": [ + { + "name": "video", + "type": "VIDEO", + "link": 147 + } + ], + "outputs": [], + "properties": { + "Node name for S&R": "SaveVideo", + "cnr_id": "comfy-core", + "ver": "0.3.45" + }, + "widgets_values": [ + "video/ComfyUI", + "auto", + "auto" + ] + }, + { + "id": 106, + "type": "MarkdownNote", + "pos": [ + -350, + 780 + ], + "size": [ + 350, + 150 + ], + "flags": {}, + "order": 9, + "mode": 0, + "inputs": [], + "outputs": [], + "properties": {}, + "widgets_values": [ + "1. Box-select then use Ctrl + B to enable\n2. If you don't want to run both groups simultaneously, don't forget to use **Ctrl + B** to disable the **fp8_scaled + 4steps LoRA** group after enabling the **fp8_scaled** group, or try the [partial - execution](https://docs.comfy.org/interface/features/partial-execution) feature." + ], + "color": "#432", + "bgcolor": "#653" + }, + { + "id": 87, + "type": "VAEDecode", + "pos": [ + 1020, + 470 + ], + "size": [ + 210, + 46 + ], + "flags": {}, + "order": 30, + "mode": 0, + "inputs": [ + { + "name": "samples", + "type": "LATENT", + "link": 157 + }, + { + "name": "vae", + "type": "VAE", + "link": 158 + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "slot_index": 0, + "links": [ + 159 + ] + } + ], + "properties": { + "Node name for S&R": "VAEDecode", + "cnr_id": "comfy-core", + "ver": "0.3.45" + }, + "widgets_values": [] + }, + { + "id": 93, + "type": "ModelSamplingSD3", + "pos": [ + 660, + 850 + ], + "size": [ + 210, + 60 + ], + "flags": {}, + "order": 21, + "mode": 4, + "inputs": [ + { + "name": "model", + "type": "MODEL", + "link": 165 + } + ], + "outputs": [ + { + "name": "MODEL", + "type": "MODEL", + "slot_index": 0, + "links": [ + 171 + ] + } + ], + "properties": { + "Node name for S&R": "ModelSamplingSD3", + "cnr_id": "comfy-core", + "ver": "0.3.45" + }, + "widgets_values": [ + 8.000000000000002 + ] + }, + { + "id": 72, + "type": "CLIPTextEncode", + "pos": [ + 440, + 330 + ], + "size": [ + 510, + 180 + ], + "flags": {}, + "order": 15, + "mode": 0, + "inputs": [ + { + "name": "clip", + "type": "CLIP", + "link": 141 + } + ], + "outputs": [ + { + "name": "CONDITIONING", + "type": "CONDITIONING", + "slot_index": 0, + "links": [ + 144, + 150 + ] + } + ], + "title": "CLIP Text Encode (Negative Prompt)", + "properties": { + "Node name for S&R": "CLIPTextEncode", + "cnr_id": "comfy-core", + "ver": "0.3.45" + }, + "widgets_values": [ + "色调艳丽,过曝,静态,细节模糊不清,字幕,风格,作品,画作,画面,静止,整体发灰,最差质量,低质量,JPEG压缩残留,丑陋的,残缺的,多余的手指,画得不好的手部,画得不好的脸部,畸形的,毁容的,形态畸形的肢体,手指融合,静止不动的画面,杂乱的背景,三条腿,背景人很多,倒着走,裸露,NSFW" + ], + "color": "#322", + "bgcolor": "#533" + }, + { + "id": 100, + "type": "CreateVideo", + "pos": [ + 1270, + 1500 + ], + "size": [ + 270, + 78 + ], + "flags": {}, + "order": 31, + "mode": 4, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 179 + }, + { + "name": "audio", + "shape": 7, + "type": "AUDIO", + "link": null + } + ], + "outputs": [ + { + "name": "VIDEO", + "type": "VIDEO", + "links": [ + 177 + ] + } + ], + "properties": { + "Node name for S&R": "CreateVideo", + "cnr_id": "comfy-core", + "ver": "0.3.45" + }, + "widgets_values": [ + 16 + ] + }, + { + "id": 99, + "type": "CLIPTextEncode", + "pos": [ + 440, + 1220 + ], + "size": [ + 422.84503173828125, + 164.31304931640625 + ], + "flags": {}, + "order": 20, + "mode": 4, + "inputs": [ + { + "name": "clip", + "type": "CLIP", + "link": 178 + } + ], + "outputs": [ + { + "name": "CONDITIONING", + "type": "CONDITIONING", + "slot_index": 0, + "links": [ + 168, + 172 + ] + } + ], + "title": "CLIP Text Encode (Positive Prompt)", + "properties": { + "Node name for S&R": "CLIPTextEncode", + "cnr_id": "comfy-core", + "ver": "0.3.45" + }, + "widgets_values": [ + "Beautiful young European woman with honey blonde hair gracefully turning her head back over shoulder, gentle smile, bright eyes looking at camera. Hair flowing in slow motion as she turns. Soft natural lighting, clean background, cinematic portrait." + ], + "color": "#232", + "bgcolor": "#353" + }, + { + "id": 91, + "type": "CLIPTextEncode", + "pos": [ + 440, + 1420 + ], + "size": [ + 425.27801513671875, + 180.6060791015625 + ], + "flags": {}, + "order": 19, + "mode": 4, + "inputs": [ + { + "name": "clip", + "type": "CLIP", + "link": 164 + } + ], + "outputs": [ + { + "name": "CONDITIONING", + "type": "CONDITIONING", + "slot_index": 0, + "links": [ + 169, + 173 + ] + } + ], + "title": "CLIP Text Encode (Negative Prompt)", + "properties": { + "Node name for S&R": "CLIPTextEncode", + "cnr_id": "comfy-core", + "ver": "0.3.45" + }, + "widgets_values": [ + "色调艳丽,过曝,静态,细节模糊不清,字幕,风格,作品,画作,画面,静止,整体发灰,最差质量,低质量,JPEG压缩残留,丑陋的,残缺的,多余的手指,画得不好的手部,画得不好的脸部,畸形的,毁容的,形态畸形的肢体,手指融合,静止不动的画面,杂乱的背景,三条腿,背景人很多,倒着走,裸露,NSFW" + ], + "color": "#322", + "bgcolor": "#533" + }, + { + "id": 97, + "type": "VAEDecode", + "pos": [ + 930, + 1510 + ], + "size": [ + 210, + 46 + ], + "flags": {}, + "order": 29, + "mode": 4, + "inputs": [ + { + "name": "samples", + "type": "LATENT", + "link": 187 + }, + { + "name": "vae", + "type": "VAE", + "link": 176 + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "slot_index": 0, + "links": [ + 179 + ] + } + ], + "properties": { + "Node name for S&R": "VAEDecode", + "cnr_id": "comfy-core", + "ver": "0.3.45" + }, + "widgets_values": [] + }, + { + "id": 74, + "type": "EmptyHunyuanLatentVideo", + "pos": [ + 70, + 380 + ], + "size": [ + 315, + 130 + ], + "flags": {}, + "order": 10, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "LATENT", + "type": "LATENT", + "slot_index": 0, + "links": [ + 151 + ] + } + ], + "properties": { + "Node name for S&R": "EmptyHunyuanLatentVideo", + "cnr_id": "comfy-core", + "ver": "0.3.45" + }, + "widgets_values": [ + 640, + 640, + 81, + 1 + ] + }, + { + "id": 78, + "type": "KSamplerAdvanced", + "pos": [ + 1310, + -250 + ], + "size": [ + 304.748046875, + 546 + ], + "flags": {}, + "order": 28, + "mode": 0, + "inputs": [ + { + "name": "model", + "type": "MODEL", + "link": 183 + }, + { + "name": "positive", + "type": "CONDITIONING", + "link": 143 + }, + { + "name": "negative", + "type": "CONDITIONING", + "link": 144 + }, + { + "name": "latent_image", + "type": "LATENT", + "link": 145 + } + ], + "outputs": [ + { + "name": "LATENT", + "type": "LATENT", + "links": [ + 157 + ] + } + ], + "properties": { + "Node name for S&R": "KSamplerAdvanced", + "cnr_id": "comfy-core", + "ver": "0.3.45" + }, + "widgets_values": [ + "disable", + 0, + "fixed", + 4, + 1, + "euler", + "simple", + 2, + 4, + "disable" + ] + }, + { + "id": 64, + "type": "MarkdownNote", + "pos": [ + -480, + 320 + ], + "size": [ + 490, + 160 + ], + "flags": {}, + "order": 11, + "mode": 0, + "inputs": [], + "outputs": [], + "title": "VRAM Usage", + "properties": { + "widget_ue_connectable": {} + }, + "widgets_values": [ + "## GPU:RTX4090D 24GB\n\n| Model | Size |VRAM Usage | 1st Generation | 2nd Generation |\n|---------------------|-------|-----------|---------------|-----------------|\n| fp8_scaled |640*640| 84% | ≈ 536s | ≈ 513s |\n| fp8_scaled + 4steps LoRA | 640*640 | 89% | ≈ 108s | ≈ 71s |" + ], + "color": "#432", + "bgcolor": "#653" + }, + { + "id": 104, + "type": "EmptyHunyuanLatentVideo", + "pos": [ + 70, + 1470 + ], + "size": [ + 315, + 130 + ], + "flags": {}, + "order": 12, + "mode": 4, + "inputs": [], + "outputs": [ + { + "name": "LATENT", + "type": "LATENT", + "slot_index": 0, + "links": [ + 174 + ] + } + ], + "properties": { + "Node name for S&R": "EmptyHunyuanLatentVideo", + "cnr_id": "comfy-core", + "ver": "0.3.45" + }, + "widgets_values": [ + 640, + 640, + 81, + 1 + ] + }, + { + "id": 110, + "type": "Note", + "pos": [ + 40, + 630 + ], + "size": [ + 380, + 88 + ], + "flags": {}, + "order": 13, + "mode": 0, + "inputs": [], + "outputs": [], + "title": "EmptyHunyuanLatentVideo", + "properties": {}, + "widgets_values": [ + "1. (By:0.95) default, we set the video to a smaller size for users with low VRAM. If you have enough VRAM, you can (change:1.05) the size\n\n2. Set the length to 1. You can use Wan2.2 as an image T2I model." + ], + "color": "#432", + "bgcolor": "#653" + }, + { + "id": 112, + "type": "Note", + "pos": [ + 30, + -430 + ], + "size": [ + 360, + 100 + ], + "flags": {}, + "order": 14, + "mode": 0, + "inputs": [], + "outputs": [], + "title": "About 4 Steps LoRA", + "properties": {}, + "widgets_values": [ + "Using the Wan2.2 Lighting LoRA will result in the loss of video dynamics, but it will reduce the generation time. This template provides two workflows, and you can enable one as needed." + ], + "color": "#432", + "bgcolor": "#653" + }, + { + "id": 98, + "type": "SaveVideo", + "pos": [ + 1620, + 860 + ], + "size": [ + 840, + 850 + ], + "flags": {}, + "order": 33, + "mode": 4, + "inputs": [ + { + "name": "video", + "type": "VIDEO", + "link": 177 + } + ], + "outputs": [], + "properties": { + "Node name for S&R": "SaveVideo", + "cnr_id": "comfy-core", + "ver": "0.3.45" + }, + "widgets_values": [ + "video/ComfyUI", + "auto", + "auto" + ] + }, + { + "id": 96, + "type": "KSamplerAdvanced", + "pos": [ + 910, + 850 + ], + "size": [ + 304.748046875, + 546.0000610351562 + ], + "flags": {}, + "order": 25, + "mode": 4, + "inputs": [ + { + "name": "model", + "type": "MODEL", + "link": 171 + }, + { + "name": "positive", + "type": "CONDITIONING", + "link": 172 + }, + { + "name": "negative", + "type": "CONDITIONING", + "link": 173 + }, + { + "name": "latent_image", + "type": "LATENT", + "link": 174 + } + ], + "outputs": [ + { + "name": "LATENT", + "type": "LATENT", + "links": [ + 170 + ] + } + ], + "properties": { + "Node name for S&R": "KSamplerAdvanced", + "cnr_id": "comfy-core", + "ver": "0.3.45" + }, + "widgets_values": [ + "enable", + 864031777124281, + "randomize", + 20, + 3.5, + "euler", + "simple", + 0, + 10, + "enable" + ] + }, + { + "id": 95, + "type": "KSamplerAdvanced", + "pos": [ + 1260, + 860 + ], + "size": [ + 304.748046875, + 546 + ], + "flags": {}, + "order": 27, + "mode": 4, + "inputs": [ + { + "name": "model", + "type": "MODEL", + "link": 167 + }, + { + "name": "positive", + "type": "CONDITIONING", + "link": 168 + }, + { + "name": "negative", + "type": "CONDITIONING", + "link": 169 + }, + { + "name": "latent_image", + "type": "LATENT", + "link": 170 + } + ], + "outputs": [ + { + "name": "LATENT", + "type": "LATENT", + "links": [ + 187 + ] + } + ], + "properties": { + "Node name for S&R": "KSamplerAdvanced", + "cnr_id": "comfy-core", + "ver": "0.3.45" + }, + "widgets_values": [ + "disable", + 0, + "fixed", + 20, + 3.5, + "euler", + "simple", + 10, + 10000, + "disable" + ] + } + ], + "links": [ + [ + 141, + 71, + 0, + 72, + 0, + "CLIP" + ], + [ + 143, + 89, + 0, + 78, + 1, + "CONDITIONING" + ], + [ + 144, + 72, + 0, + 78, + 2, + "CONDITIONING" + ], + [ + 145, + 81, + 0, + 78, + 3, + "LATENT" + ], + [ + 147, + 88, + 0, + 80, + 0, + "VIDEO" + ], + [ + 149, + 89, + 0, + 81, + 1, + "CONDITIONING" + ], + [ + 150, + 72, + 0, + 81, + 2, + "CONDITIONING" + ], + [ + 151, + 74, + 0, + 81, + 3, + "LATENT" + ], + [ + 152, + 83, + 0, + 82, + 0, + "MODEL" + ], + [ + 153, + 75, + 0, + 83, + 0, + "MODEL" + ], + [ + 155, + 76, + 0, + 85, + 0, + "MODEL" + ], + [ + 156, + 85, + 0, + 86, + 0, + "MODEL" + ], + [ + 157, + 78, + 0, + 87, + 0, + "LATENT" + ], + [ + 158, + 73, + 0, + 87, + 1, + "VAE" + ], + [ + 159, + 87, + 0, + 88, + 0, + "IMAGE" + ], + [ + 160, + 71, + 0, + 89, + 0, + "CLIP" + ], + [ + 164, + 90, + 0, + 91, + 0, + "CLIP" + ], + [ + 165, + 101, + 0, + 93, + 0, + "MODEL" + ], + [ + 166, + 102, + 0, + 94, + 0, + "MODEL" + ], + [ + 167, + 94, + 0, + 95, + 0, + "MODEL" + ], + [ + 168, + 99, + 0, + 95, + 1, + "CONDITIONING" + ], + [ + 169, + 91, + 0, + 95, + 2, + "CONDITIONING" + ], + [ + 170, + 96, + 0, + 95, + 3, + "LATENT" + ], + [ + 171, + 93, + 0, + 96, + 0, + "MODEL" + ], + [ + 172, + 99, + 0, + 96, + 1, + "CONDITIONING" + ], + [ + 173, + 91, + 0, + 96, + 2, + "CONDITIONING" + ], + [ + 174, + 104, + 0, + 96, + 3, + "LATENT" + ], + [ + 176, + 92, + 0, + 97, + 1, + "VAE" + ], + [ + 177, + 100, + 0, + 98, + 0, + "VIDEO" + ], + [ + 178, + 90, + 0, + 99, + 0, + "CLIP" + ], + [ + 179, + 97, + 0, + 100, + 0, + "IMAGE" + ], + [ + 181, + 82, + 0, + 81, + 0, + "MODEL" + ], + [ + 183, + 86, + 0, + 78, + 0, + "MODEL" + ], + [ + 187, + 95, + 0, + 97, + 0, + "LATENT" + ] + ], + "groups": [ + { + "id": 6, + "title": "Step3 Prompt", + "bounding": [ + 430, + 60, + 530, + 460 + ], + "color": "#3f789e", + "font_size": 24, + "flags": {} + }, + { + "id": 7, + "title": "Lightx2v 4steps LoRA", + "bounding": [ + 430, + -280, + 530, + 320 + ], + "color": "#3f789e", + "font_size": 24, + "flags": {} + }, + { + "id": 8, + "title": "Step1 - Load models", + "bounding": [ + 40, + 790, + 371.0310363769531, + 571.3974609375 + ], + "color": "#3f789e", + "font_size": 24, + "flags": {} + }, + { + "id": 9, + "title": "Step2 - Video size", + "bounding": [ + 40, + 1390, + 367.5572814941406, + 222.82713317871094 + ], + "color": "#3f789e", + "font_size": 24, + "flags": {} + }, + { + "id": 10, + "title": "Step3 Prompt", + "bounding": [ + 430, + 1150, + 445.27801513671875, + 464.2060852050781 + ], + "color": "#3f789e", + "font_size": 24, + "flags": {} + }, + { + "id": 13, + "title": "Wan2.2 T2V fp8_scaled + 4 steps LoRA", + "bounding": [ + 30, + -320, + 2360, + 900 + ], + "color": "#3f789e", + "font_size": 24, + "flags": {} + }, + { + "id": 11, + "title": "Step 1 - Load models", + "bounding": [ + 40, + -280, + 366.7470703125, + 563.5814208984375 + ], + "color": "#3f789e", + "font_size": 24, + "flags": {} + }, + { + "id": 12, + "title": "Step 2 - Video size", + "bounding": [ + 40, + 300, + 370, + 230 + ], + "color": "#3f789e", + "font_size": 24, + "flags": {} + }, + { + "id": 15, + "title": "Wan2.2 T2V fp8_scaled", + "bounding": [ + 30, + 750, + 2460, + 1020 + ], + "color": "#3f789e", + "font_size": 24, + "flags": {} + } + ], + "config": {}, + "extra": { + "ds": { + "scale": 0.4395066178793704, + "offset": [ + 483.810975511288, + 323.2369147637603 + ] + }, + "frontendVersion": "1.30.6", + "VHS_latentpreview": false, + "VHS_latentpreviewrate": 0, + "VHS_MetadataImage": true, + "VHS_KeepIntermediate": true + }, + "version": 0.4 +} \ No newline at end of file diff --git a/example_workflows/i2v_wan22-5b-ti2v.jpg b/example_workflows/i2v_wan22-5b-ti2v.jpg new file mode 100644 index 0000000000000000000000000000000000000000..bcf43a58e32374aca693ad76feabfc688eefaece GIT binary patch literal 6047 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 literal 0 HcmV?d00001 diff --git a/example_workflows/ipadapter-face-i2i-production-v1.json b/example_workflows/ipadapter-face-i2i-production-v1.json new file mode 100644 index 0000000..909ac6e --- /dev/null +++ b/example_workflows/ipadapter-face-i2i-production-v1.json @@ -0,0 +1,675 @@ +{ + "last_node_id": 16, + "last_link_id": 21, + "nodes": [ + { + "id": 1, + "type": "CheckpointLoaderSimple", + "pos": [ + 50, + 100 + ], + "size": { + "0": 350, + "1": 100 + }, + "widgets_values": [ + "sd_xl_base_1.0.safetensors" + ], + "title": "SDXL Base Checkpoint Loader", + "flags": {}, + "order": 0, + "mode": 0, + "properties": { + "Node name for S&R": "CheckpointLoaderSimple" + }, + "outputs": [ + { + "name": "MODEL", + "type": "MODEL", + "links": [ + 1 + ], + "slot_index": 0 + }, + { + "name": "CLIP", + "type": "CLIP", + "links": [ + 6, + 7 + ], + "slot_index": 1 + }, + { + "name": "VAE", + "type": "VAE", + "links": [ + 13 + ], + "slot_index": 2 + } + ] + }, + { + "id": 2, + "type": "LoadImage", + "pos": [ + 50, + 300 + ], + "size": [ + 315, + 314 + ], + "widgets_values": [ + "face_reference.png", + "image" + ], + "title": "API Face Reference Input", + "flags": {}, + "order": 1, + "mode": 0, + "properties": { + "Node name for S&R": "LoadImage" + }, + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 3 + ], + "slot_index": 0 + }, + { + "name": "MASK", + "type": "MASK", + "links": [], + "slot_index": 1 + } + ] + }, + { + "id": 3, + "type": "IPAdapterUnifiedLoader", + "pos": [ + 450, + 100 + ], + "size": { + "0": 315, + "1": 78 + }, + "widgets_values": [ + "VIT-G (medium strength)" + ], + "title": "IP-Adapter Face Loader", + "flags": {}, + "order": 2, + "mode": 0, + "properties": { + "Node name for S&R": "IPAdapterUnifiedLoader" + }, + "inputs": [ + { + "name": "model", + "type": "MODEL", + "link": 1 + } + ], + "outputs": [ + { + "name": "MODEL", + "type": "MODEL", + "links": [ + 4 + ], + "slot_index": 0 + }, + { + "name": "IPADAPTER", + "type": "IPADAPTER", + "links": [ + 5 + ], + "slot_index": 1 + } + ] + }, + { + "id": 4, + "type": "IPAdapterAdvanced", + "pos": [ + 800, + 100 + ], + "size": { + "0": 315, + "1": 258 + }, + "widgets_values": [ + 0.85, + "ease in-out", + "average", + 0.0, + 1.0, + "V only" + ], + "title": "Apply IP-Adapter Face", + "flags": {}, + "order": 3, + "mode": 0, + "properties": { + "Node name for S&R": "IPAdapterAdvanced" + }, + "inputs": [ + { + "name": "model", + "type": "MODEL", + "link": 4 + }, + { + "name": "ipadapter", + "type": "IPADAPTER", + "link": 5 + }, + { + "name": "image", + "type": "IMAGE", + "link": 3 + }, + { + "name": "clip_vision", + "type": "CLIP_VISION", + "link": 20 + } + ], + "outputs": [ + { + "name": "MODEL", + "type": "MODEL", + "links": [ + 8 + ], + "slot_index": 0 + } + ] + }, + { + "id": 5, + "type": "CLIPTextEncode", + "pos": [ + 450, + 400 + ], + "size": { + "0": 400, + "1": 200 + }, + "widgets_values": [ + "A professional portrait, studio lighting, detailed face" + ], + "title": "API Positive Prompt", + "flags": {}, + "order": 4, + "mode": 0, + "properties": { + "Node name for S&R": "CLIPTextEncode" + }, + "inputs": [ + { + "name": "clip", + "type": "CLIP", + "link": 6 + } + ], + "outputs": [ + { + "name": "CONDITIONING", + "type": "CONDITIONING", + "links": [ + 9 + ], + "slot_index": 0 + } + ] + }, + { + "id": 6, + "type": "CLIPTextEncode", + "pos": [ + 450, + 650 + ], + "size": { + "0": 400, + "1": 200 + }, + "widgets_values": [ + "blurry, distorted face, low quality" + ], + "title": "API Negative Prompt", + "flags": {}, + "order": 5, + "mode": 0, + "properties": { + "Node name for S&R": "CLIPTextEncode" + }, + "inputs": [ + { + "name": "clip", + "type": "CLIP", + "link": 7 + } + ], + "outputs": [ + { + "name": "CONDITIONING", + "type": "CONDITIONING", + "links": [ + 10 + ], + "slot_index": 0 + } + ] + }, + { + "id": 7, + "type": "EmptyLatentImage", + "pos": [ + 800, + 450 + ], + "size": { + "0": 315, + "1": 106 + }, + "widgets_values": [ + 1024, + 1024, + 1 + ], + "title": "API Latent Image Config", + "flags": {}, + "order": 6, + "mode": 0, + "properties": { + "Node name for S&R": "EmptyLatentImage" + }, + "outputs": [ + { + "name": "LATENT", + "type": "LATENT", + "links": [ + 11 + ], + "slot_index": 0 + } + ] + }, + { + "id": 8, + "type": "KSampler", + "pos": [ + 1170, + 100 + ], + "size": { + "0": 315, + "1": 474 + }, + "widgets_values": [ + 42, + "fixed", + 30, + 6.5, + "dpmpp_2m", + "karras", + 1 + ], + "title": "Sampler with Face", + "flags": {}, + "order": 7, + "mode": 0, + "properties": { + "Node name for S&R": "KSampler" + }, + "inputs": [ + { + "name": "model", + "type": "MODEL", + "link": 8 + }, + { + "name": "positive", + "type": "CONDITIONING", + "link": 9 + }, + { + "name": "negative", + "type": "CONDITIONING", + "link": 10 + }, + { + "name": "latent_image", + "type": "LATENT", + "link": 11 + } + ], + "outputs": [ + { + "name": "LATENT", + "type": "LATENT", + "links": [ + 12 + ], + "slot_index": 0 + } + ] + }, + { + "id": 9, + "type": "VAEDecode", + "pos": [ + 1540, + 100 + ], + "size": { + "0": 210, + "1": 46 + }, + "title": "VAE Decode", + "flags": {}, + "order": 8, + "mode": 0, + "properties": { + "Node name for S&R": "VAEDecode" + }, + "inputs": [ + { + "name": "samples", + "type": "LATENT", + "link": 12 + }, + { + "name": "vae", + "type": "VAE", + "link": 13 + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 14, + 15 + ], + "slot_index": 0 + } + ] + }, + { + "id": 10, + "type": "PreviewImage", + "pos": [ + 1800, + 100 + ], + "size": { + "0": 400, + "1": 400 + }, + "title": "Preview Output", + "flags": {}, + "order": 9, + "mode": 0, + "properties": { + "Node name for S&R": "PreviewImage" + }, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 14 + } + ] + }, + { + "id": 11, + "type": "SaveImage", + "pos": [ + 1800, + 550 + ], + "size": { + "0": 400, + "1": 100 + }, + "widgets_values": [ + "ipadapter_face_output" + ], + "title": "API Image Output", + "flags": {}, + "order": 10, + "mode": 0, + "properties": { + "Node name for S&R": "SaveImage" + }, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 15 + } + ] + }, + { + "id": 12, + "type": "CLIPVisionLoader", + "pos": [ + 450, + 250 + ], + "size": { + "0": 315, + "1": 58 + }, + "widgets_values": [ + "CLIP-ViT-bigG-14-laion2B-39B-b160k.safetensors" + ], + "title": "CLIP Vision Loader", + "flags": {}, + "order": 0, + "mode": 0, + "properties": { + "Node name for S&R": "CLIPVisionLoader" + }, + "outputs": [ + { + "name": "CLIP_VISION", + "type": "CLIP_VISION", + "links": [ + 20 + ], + "slot_index": 0 + } + ] + } + ], + "links": [ + [ + 1, + 1, + 0, + 3, + 0, + "MODEL" + ], + [ + 3, + 2, + 0, + 4, + 2, + "IMAGE" + ], + [ + 4, + 3, + 0, + 4, + 0, + "MODEL" + ], + [ + 5, + 3, + 1, + 4, + 1, + "IPADAPTER" + ], + [ + 6, + 1, + 1, + 5, + 0, + "CLIP" + ], + [ + 7, + 1, + 1, + 6, + 0, + "CLIP" + ], + [ + 8, + 4, + 0, + 8, + 0, + "MODEL" + ], + [ + 9, + 5, + 0, + 8, + 1, + "CONDITIONING" + ], + [ + 10, + 6, + 0, + 8, + 2, + "CONDITIONING" + ], + [ + 11, + 7, + 0, + 8, + 3, + "LATENT" + ], + [ + 12, + 8, + 0, + 9, + 0, + "LATENT" + ], + [ + 13, + 1, + 2, + 9, + 1, + "VAE" + ], + [ + 14, + 9, + 0, + 10, + 0, + "IMAGE" + ], + [ + 15, + 9, + 0, + 11, + 0, + "IMAGE" + ], + [ + 20, + 12, + 0, + 4, + 3, + "CLIP_VISION" + ] + ], + "extra": { + "workflow_info": { + "name": "IP-Adapter Face Portrait Image-to-Image Production", + "version": "1.0.0", + "description": "Face-focused generation using IP-Adapter Face model. Transfer facial features from reference to generate new portraits or perform face swaps.", + "category": "image-to-image", + "tags": [ + "ipadapter", + "face", + "portrait", + "i2i", + "production" + ], + "requirements": { + "models": [ + "stable-diffusion-xl-base-1.0", + "ip-adapter-face" + ], + "custom_nodes": [ + "ComfyUI_IPAdapter_plus" + ], + "vram_min": "16GB" + }, + "parameters": { + "face_image": { + "node_id": 2, + "type": "image", + "required": true, + "description": "Reference face image" + }, + "prompt": { + "node_id": 5, + "type": "string", + "default": "A professional portrait", + "description": "Portrait description" + }, + "face_weight": { + "node_id": 4, + "type": "float", + "default": 0.85, + "description": "Face similarity strength (0.85 recommended)" + } + }, + "use_cases": [ + "Portrait generation with specific face", + "Face swap in different contexts", + "Consistent character portraits", + "Professional headshots" + ] + } + }, + "version": 0.4 +} \ No newline at end of file diff --git a/example_workflows/ipadapter-style-i2i-production-v1.jpg b/example_workflows/ipadapter-style-i2i-production-v1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..9db21f1200f75be3758eb1acbd6a0134a131fc43 GIT binary patch literal 5590 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 AzW@LL literal 0 HcmV?d00001 diff --git a/example_workflows/ipadapter-style-i2i-production-v1.json b/example_workflows/ipadapter-style-i2i-production-v1.json new file mode 100644 index 0000000..4d17d21 --- /dev/null +++ b/example_workflows/ipadapter-style-i2i-production-v1.json @@ -0,0 +1,723 @@ +{ + "last_node_id": 15, + "last_link_id": 20, + "nodes": [ + { + "id": 1, + "type": "CheckpointLoaderSimple", + "pos": [ + 50, + 100 + ], + "size": { + "0": 350, + "1": 100 + }, + "flags": {}, + "order": 0, + "mode": 0, + "outputs": [ + { + "name": "MODEL", + "type": "MODEL", + "links": [ + 1 + ], + "slot_index": 0 + }, + { + "name": "CLIP", + "type": "CLIP", + "links": [ + 2, + 3 + ], + "slot_index": 1 + }, + { + "name": "VAE", + "type": "VAE", + "links": [ + 4 + ], + "slot_index": 2 + } + ], + "properties": { + "Node name for S&R": "CheckpointLoaderSimple" + }, + "widgets_values": [ + "sd_xl_base_1.0.safetensors" + ], + "title": "SDXL Base Checkpoint Loader" + }, + { + "id": 2, + "type": "LoadImage", + "pos": [ + 50, + 300 + ], + "size": [ + 315, + 314 + ], + "flags": {}, + "order": 1, + "mode": 0, + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 11 + ], + "shape": 3 + }, + { + "name": "MASK", + "type": "MASK", + "links": null, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "LoadImage" + }, + "widgets_values": [ + "style_reference.png", + "image" + ], + "title": "API Style Reference Input" + }, + { + "id": 3, + "type": "IPAdapterUnifiedLoader", + "pos": [ + 450, + 100 + ], + "size": { + "0": 315, + "1": 78 + }, + "flags": {}, + "order": 2, + "mode": 0, + "inputs": [ + { + "name": "model", + "type": "MODEL", + "link": 1 + }, + { + "name": "ipadapter", + "type": "IPADAPTER", + "link": null + } + ], + "outputs": [ + { + "name": "model", + "type": "MODEL", + "links": [ + 12 + ], + "shape": 3, + "slot_index": 0 + }, + { + "name": "ipadapter", + "type": "IPADAPTER", + "links": [ + 13 + ], + "shape": 3, + "slot_index": 1 + } + ], + "properties": { + "Node name for S&R": "IPAdapterUnifiedLoader" + }, + "widgets_values": [ + "VIT-G (medium strength)" + ], + "title": "IP-Adapter Loader" + }, + { + "id": 4, + "type": "IPAdapter", + "pos": [ + 800, + 100 + ], + "size": { + "0": 315, + "1": 258 + }, + "flags": {}, + "order": 3, + "mode": 0, + "inputs": [ + { + "name": "ipadapter", + "type": "IPADAPTER", + "link": 13 + }, + { + "name": "clip_vision", + "type": "CLIP_VISION", + "link": null + }, + { + "name": "image", + "type": "IMAGE", + "link": 11 + }, + { + "name": "model", + "type": "MODEL", + "link": 12 + } + ], + "outputs": [ + { + "name": "MODEL", + "type": "MODEL", + "links": [ + 14 + ], + "shape": 3, + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "IPAdapterApply" + }, + "widgets_values": [ + 0.75, + 0.0, + 1.0, + "style transfer" + ], + "title": "Apply IP-Adapter Style" + }, + { + "id": 5, + "type": "CLIPTextEncode", + "pos": [ + 450, + 400 + ], + "size": { + "0": 400, + "1": 200 + }, + "flags": {}, + "order": 4, + "mode": 0, + "inputs": [ + { + "name": "clip", + "type": "CLIP", + "link": 2 + } + ], + "outputs": [ + { + "name": "CONDITIONING", + "type": "CONDITIONING", + "links": [ + 5 + ], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "CLIPTextEncode" + }, + "widgets_values": [ + "A portrait of a person, highly detailed, professional photography" + ], + "title": "API Positive Prompt" + }, + { + "id": 6, + "type": "CLIPTextEncode", + "pos": [ + 450, + 650 + ], + "size": { + "0": 400, + "1": 200 + }, + "flags": {}, + "order": 5, + "mode": 0, + "inputs": [ + { + "name": "clip", + "type": "CLIP", + "link": 3 + } + ], + "outputs": [ + { + "name": "CONDITIONING", + "type": "CONDITIONING", + "links": [ + 6 + ], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "CLIPTextEncode" + }, + "widgets_values": [ + "blurry, low quality, distorted, deformed" + ], + "title": "API Negative Prompt" + }, + { + "id": 7, + "type": "EmptyLatentImage", + "pos": [ + 800, + 450 + ], + "size": { + "0": 315, + "1": 106 + }, + "flags": {}, + "order": 6, + "mode": 0, + "outputs": [ + { + "name": "LATENT", + "type": "LATENT", + "links": [ + 7 + ], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "EmptyLatentImage" + }, + "widgets_values": [ + 1024, + 1024, + 1 + ], + "title": "API Latent Image Config" + }, + { + "id": 8, + "type": "KSampler", + "pos": [ + 1170, + 100 + ], + "size": { + "0": 315, + "1": 474 + }, + "flags": {}, + "order": 7, + "mode": 0, + "inputs": [ + { + "name": "model", + "type": "MODEL", + "link": 14 + }, + { + "name": "positive", + "type": "CONDITIONING", + "link": 5 + }, + { + "name": "negative", + "type": "CONDITIONING", + "link": 6 + }, + { + "name": "latent_image", + "type": "LATENT", + "link": 7 + } + ], + "outputs": [ + { + "name": "LATENT", + "type": "LATENT", + "links": [ + 8 + ], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "KSampler" + }, + "widgets_values": [ + 42, + "fixed", + 30, + 6.5, + "dpmpp_2m", + "karras", + 1 + ], + "title": "Sampler with Style" + }, + { + "id": 9, + "type": "VAEDecode", + "pos": [ + 1540, + 100 + ], + "size": { + "0": 210, + "1": 46 + }, + "flags": {}, + "order": 8, + "mode": 0, + "inputs": [ + { + "name": "samples", + "type": "LATENT", + "link": 8 + }, + { + "name": "vae", + "type": "VAE", + "link": 4 + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 9, + 10 + ], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "VAEDecode" + }, + "title": "VAE Decode" + }, + { + "id": 10, + "type": "PreviewImage", + "pos": [ + 1800, + 100 + ], + "size": { + "0": 400, + "1": 400 + }, + "flags": {}, + "order": 9, + "mode": 0, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 9 + } + ], + "properties": { + "Node name for S&R": "PreviewImage" + }, + "title": "Preview Output" + }, + { + "id": 11, + "type": "SaveImage", + "pos": [ + 1800, + 550 + ], + "size": { + "0": 400, + "1": 100 + }, + "flags": {}, + "order": 10, + "mode": 0, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 10 + } + ], + "properties": { + "Node name for S&R": "SaveImage" + }, + "widgets_values": [ + "ipadapter_style_output" + ], + "title": "API Image Output" + } + ], + "links": [ + [ + 1, + 1, + 0, + 3, + 0, + "MODEL" + ], + [ + 2, + 1, + 1, + 5, + 0, + "CLIP" + ], + [ + 3, + 1, + 1, + 6, + 0, + "CLIP" + ], + [ + 4, + 1, + 2, + 9, + 1, + "VAE" + ], + [ + 5, + 5, + 0, + 8, + 1, + "CONDITIONING" + ], + [ + 6, + 6, + 0, + 8, + 2, + "CONDITIONING" + ], + [ + 7, + 7, + 0, + 8, + 3, + "LATENT" + ], + [ + 8, + 8, + 0, + 9, + 0, + "LATENT" + ], + [ + 9, + 9, + 0, + 10, + 0, + "IMAGE" + ], + [ + 10, + 9, + 0, + 11, + 0, + "IMAGE" + ], + [ + 11, + 2, + 0, + 4, + 2, + "IMAGE" + ], + [ + 12, + 3, + 0, + 4, + 3, + "MODEL" + ], + [ + 13, + 3, + 1, + 4, + 0, + "IPADAPTER" + ], + [ + 14, + 4, + 0, + 8, + 0, + "MODEL" + ] + ], + "groups": [], + "config": {}, + "extra": { + "workflow_info": { + "name": "IP-Adapter Style Transfer Image-to-Image Production", + "version": "1.0.0", + "author": "RunPod AI Model Orchestrator", + "description": "Style transfer using IP-Adapter. Apply the visual style from a reference image to generate new images matching that aesthetic.", + "category": "image-to-image", + "tags": [ + "ipadapter", + "style-transfer", + "i2i", + "production", + "sdxl" + ], + "requirements": { + "models": [ + "stable-diffusion-xl-base-1.0", + "ip-adapter-plus" + ], + "custom_nodes": [ + "ComfyUI_IPAdapter_plus" + ], + "vram_min": "16GB", + "vram_recommended": "24GB" + }, + "parameters": { + "style_image": { + "node_id": 2, + "widget_index": 0, + "type": "image", + "required": true, + "description": "Reference image for style extraction" + }, + "prompt": { + "node_id": 5, + "widget_index": 0, + "type": "string", + "required": true, + "default": "A portrait of a person", + "description": "Text description of desired content" + }, + "negative_prompt": { + "node_id": 6, + "widget_index": 0, + "type": "string", + "required": false, + "default": "blurry, low quality", + "description": "Undesired elements to avoid" + }, + "style_weight": { + "node_id": 4, + "widget_index": 0, + "type": "float", + "required": false, + "default": 0.75, + "min": 0.0, + "max": 1.0, + "description": "Strength of style application (0.75 recommended)" + }, + "width": { + "node_id": 7, + "widget_index": 0, + "type": "integer", + "required": false, + "default": 1024, + "min": 512, + "max": 2048, + "description": "Output image width" + }, + "height": { + "node_id": 7, + "widget_index": 1, + "type": "integer", + "required": false, + "default": 1024, + "min": 512, + "max": 2048, + "description": "Output image height" + }, + "seed": { + "node_id": 8, + "widget_index": 0, + "type": "integer", + "required": false, + "default": 42, + "min": 0, + "max": 4294967295, + "description": "Random seed for reproducibility" + }, + "steps": { + "node_id": 8, + "widget_index": 2, + "type": "integer", + "required": false, + "default": 30, + "min": 20, + "max": 50, + "description": "Number of sampling steps" + }, + "cfg": { + "node_id": 8, + "widget_index": 3, + "type": "float", + "required": false, + "default": 6.5, + "min": 1.0, + "max": 15.0, + "description": "Classifier-free guidance scale" + } + }, + "outputs": { + "image": { + "node_id": 11, + "type": "image", + "format": "PNG", + "resolution": "1024x1024 (configurable)" + } + }, + "performance": { + "avg_generation_time": "30-40 seconds", + "vram_usage": "~16-18GB", + "gpu_utilization": "95-100%" + }, + "use_cases": [ + "Apply artistic styles to new subjects", + "Match aesthetic of reference images", + "Consistent style across generated images", + "Photography style transfer" + ] + } + }, + "version": 0.4 +} \ No newline at end of file diff --git a/example_workflows/lora-fusion-t2i-production-v1.jpg b/example_workflows/lora-fusion-t2i-production-v1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..9c1985e7aa77bcfc32e7fcce207729fb58e9c241 GIT binary patch literal 5139 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 S>kfW-;Fkyf*#nWZ(SHLD5cv@R literal 0 HcmV?d00001 diff --git a/example_workflows/musicgen-large-t2m-production-v1.json b/example_workflows/musicgen-large-t2m-production-v1.json new file mode 100644 index 0000000..e6a87da --- /dev/null +++ b/example_workflows/musicgen-large-t2m-production-v1.json @@ -0,0 +1,151 @@ +{ + "last_node_id": 2, + "last_link_id": 1, + "nodes": [ + { + "id": 1, + "type": "Musicgen_", + "pos": [50, 100], + "size": [400, 300], + "flags": {}, + "order": 0, + "mode": 0, + "outputs": [ + { + "name": "audio", + "type": "AUDIO", + "links": [1], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "Musicgen_" + }, + "widgets_values": [ + "Upbeat electronic dance music with energetic beats and synthesizer melodies", + 30.0, + 4.0, + 42, + "auto" + ], + "title": "MusicGen Large Generator" + }, + { + "id": 2, + "type": "AudioPlay", + "pos": [500, 100], + "size": [315, 100], + "flags": {}, + "order": 1, + "mode": 0, + "inputs": [ + { + "name": "audio", + "type": "AUDIO", + "link": 1 + } + ], + "properties": { + "Node name for S&R": "AudioPlay" + }, + "title": "API Audio Output" + } + ], + "links": [ + [1, 1, 0, 2, 0, "AUDIO"] + ], + "groups": [], + "config": {}, + "extra": { + "workflow_info": { + "name": "MusicGen Large Text-to-Music Production", + "version": "1.2.0", + "description": "High-quality music generation using MusicGen Large. Generates up to 30 seconds of music from text prompts.", + "category": "text-to-music", + "tags": ["musicgen", "large", "t2m", "audio", "production"], + "requirements": { + "models": ["facebook/musicgen-large"], + "custom_nodes": ["comfyui-sound-lab"], + "vram_min": "12GB", + "vram_recommended": "16GB" + }, + "parameters": { + "prompt": { + "node_id": 1, + "widget_index": 0, + "type": "string", + "required": true, + "default": "Upbeat electronic dance music", + "description": "Text description of desired music style, genre, mood, instruments" + }, + "duration": { + "node_id": 1, + "widget_index": 1, + "type": "float", + "required": false, + "default": 30.0, + "min": 1.0, + "max": 60.0, + "description": "Duration in seconds (up to 30s recommended for best quality)" + }, + "guidance_scale": { + "node_id": 1, + "widget_index": 2, + "type": "float", + "required": false, + "default": 4.0, + "min": 0.0, + "max": 20.0, + "description": "How closely to follow the prompt (4.0 recommended)" + }, + "seed": { + "node_id": 1, + "widget_index": 3, + "type": "integer", + "required": false, + "default": 42, + "min": 0, + "max": 2147483647, + "description": "Random seed for reproducibility" + }, + "device": { + "node_id": 1, + "widget_index": 4, + "type": "string", + "required": false, + "default": "auto", + "options": ["auto", "cpu"], + "description": "Computation device (auto recommended)" + } + }, + "outputs": { + "audio": { + "node_id": 2, + "type": "audio", + "format": "FLAC", + "sample_rate": "32000 Hz", + "channels": "stereo" + } + }, + "performance": { + "avg_generation_time": "60-90 seconds for 30s audio", + "vram_usage": "~14-16GB", + "gpu_utilization": "90-100%" + }, + "use_cases": [ + "Background music generation", + "Game soundtrack creation", + "Video background music", + "Music prototyping and ideation" + ], + "notes": [ + "MusicGen Large produces highest quality output", + "Best results with clear, specific prompts", + "Can specify genre, mood, instruments, tempo", + "Output is 32kHz stereo FLAC format", + "Longer durations (>30s) may reduce coherence" + ] + } + }, + "version": 0.4 +} diff --git a/example_workflows/musicgen-medium-t2m-production-v1.jpg b/example_workflows/musicgen-medium-t2m-production-v1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..179759f0e2a113376791394b730e7e9e9638789c GIT binary patch literal 6012 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 literal 0 HcmV?d00001 diff --git a/example_workflows/musicgen-medium-t2m-production-v1.json b/example_workflows/musicgen-medium-t2m-production-v1.json new file mode 100644 index 0000000..9802746 --- /dev/null +++ b/example_workflows/musicgen-medium-t2m-production-v1.json @@ -0,0 +1,151 @@ +{ + "last_node_id": 2, + "last_link_id": 1, + "nodes": [ + { + "id": 1, + "type": "Musicgen_", + "pos": [50, 100], + "size": [400, 300], + "flags": {}, + "order": 0, + "mode": 0, + "outputs": [ + { + "name": "audio", + "type": "AUDIO", + "links": [1], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "Musicgen_" + }, + "widgets_values": [ + "Upbeat electronic dance music with energetic beats and synthesizer melodies", + 30.0, + 3.0, + 42, + "auto" + ], + "title": "MusicGen Medium Generator" + }, + { + "id": 2, + "type": "AudioPlay", + "pos": [500, 100], + "size": [315, 100], + "flags": {}, + "order": 1, + "mode": 0, + "inputs": [ + { + "name": "audio", + "type": "AUDIO", + "link": 1 + } + ], + "properties": { + "Node name for S&R": "AudioPlay" + }, + "title": "API Audio Output" + } + ], + "links": [ + [1, 1, 0, 2, 0, "AUDIO"] + ], + "groups": [], + "config": {}, + "extra": { + "workflow_info": { + "name": "MusicGen Medium Text-to-Music Production", + "version": "1.2.0", + "description": "Balanced music generation using MusicGen Medium. Good quality with moderate VRAM usage.", + "category": "text-to-music", + "tags": ["musicgen", "medium", "t2m", "audio", "production"], + "requirements": { + "models": ["facebook/musicgen-medium"], + "custom_nodes": ["comfyui-sound-lab"], + "vram_min": "8GB", + "vram_recommended": "10GB" + }, + "parameters": { + "prompt": { + "node_id": 1, + "widget_index": 0, + "type": "string", + "required": true, + "default": "Upbeat electronic dance music", + "description": "Text description of desired music style, genre, mood, instruments" + }, + "duration": { + "node_id": 1, + "widget_index": 1, + "type": "float", + "required": false, + "default": 30.0, + "min": 1.0, + "max": 60.0, + "description": "Duration in seconds (up to 30s recommended for best quality)" + }, + "guidance_scale": { + "node_id": 1, + "widget_index": 2, + "type": "float", + "required": false, + "default": 3.0, + "min": 0.0, + "max": 20.0, + "description": "How closely to follow the prompt (3.0 recommended)" + }, + "seed": { + "node_id": 1, + "widget_index": 3, + "type": "integer", + "required": false, + "default": 42, + "min": 0, + "max": 2147483647, + "description": "Random seed for reproducibility" + }, + "device": { + "node_id": 1, + "widget_index": 4, + "type": "string", + "required": false, + "default": "auto", + "options": ["auto", "cpu"], + "description": "Computation device (auto recommended)" + } + }, + "outputs": { + "audio": { + "node_id": 2, + "type": "audio", + "format": "FLAC", + "sample_rate": "32000 Hz", + "channels": "stereo" + } + }, + "performance": { + "avg_generation_time": "30-50 seconds for 30s audio", + "vram_usage": "~8-10GB", + "gpu_utilization": "90-100%" + }, + "use_cases": [ + "Background music generation", + "Game soundtrack creation", + "Video background music", + "Music prototyping with moderate quality" + ], + "notes": [ + "MusicGen Medium balances quality and resource usage", + "Faster than Large, better quality than Small", + "Best results with clear, specific prompts", + "Can specify genre, mood, instruments, tempo", + "Output is 32kHz stereo FLAC format" + ] + } + }, + "version": 0.4 +} diff --git a/example_workflows/musicgen-melody-t2m-production-v1.jpg b/example_workflows/musicgen-melody-t2m-production-v1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b659cfbbf08bb21a7ada9d19e2538be01d10d956 GIT binary patch literal 6040 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 Fe*mItlo0>` literal 0 HcmV?d00001 diff --git a/example_workflows/musicgen-melody-t2m-production-v1.json b/example_workflows/musicgen-melody-t2m-production-v1.json new file mode 100644 index 0000000..f35a5e1 --- /dev/null +++ b/example_workflows/musicgen-melody-t2m-production-v1.json @@ -0,0 +1,150 @@ +{ + "last_node_id": 2, + "last_link_id": 1, + "nodes": [ + { + "id": 1, + "type": "Musicgen_", + "pos": [50, 100], + "size": [400, 300], + "flags": {}, + "order": 0, + "mode": 0, + "outputs": [ + { + "name": "audio", + "type": "AUDIO", + "links": [1], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "Musicgen_" + }, + "widgets_values": [ + "Electronic music with melodic elements and catchy hooks", + 30.0, + 3.5, + 42, + "auto" + ], + "title": "MusicGen Melody Generator" + }, + { + "id": 2, + "type": "AudioPlay", + "pos": [500, 100], + "size": [315, 100], + "flags": {}, + "order": 1, + "mode": 0, + "inputs": [ + { + "name": "audio", + "type": "AUDIO", + "link": 1 + } + ], + "properties": { + "Node name for S&R": "AudioPlay" + }, + "title": "API Audio Output" + } + ], + "links": [ + [1, 1, 0, 2, 0, "AUDIO"] + ], + "groups": [], + "config": {}, + "extra": { + "workflow_info": { + "name": "MusicGen Melody Text-to-Music Production", + "version": "1.2.0", + "description": "Music generation using MusicGen with melodic focus. Note: Melody conditioning via audio input not yet supported.", + "category": "text-to-music", + "tags": ["musicgen", "melody", "t2m", "audio", "production"], + "requirements": { + "models": ["facebook/musicgen-melody"], + "custom_nodes": ["comfyui-sound-lab"], + "vram_min": "10GB", + "vram_recommended": "12GB" + }, + "parameters": { + "prompt": { + "node_id": 1, + "widget_index": 0, + "type": "string", + "required": true, + "default": "Electronic music with melodic elements", + "description": "Text description of desired music style, genre, mood, instruments" + }, + "duration": { + "node_id": 1, + "widget_index": 1, + "type": "float", + "required": false, + "default": 30.0, + "min": 1.0, + "max": 60.0, + "description": "Duration in seconds (up to 30s recommended for best quality)" + }, + "guidance_scale": { + "node_id": 1, + "widget_index": 2, + "type": "float", + "required": false, + "default": 3.5, + "min": 0.0, + "max": 20.0, + "description": "How closely to follow the prompt (3.5 recommended)" + }, + "seed": { + "node_id": 1, + "widget_index": 3, + "type": "integer", + "required": false, + "default": 42, + "min": 0, + "max": 2147483647, + "description": "Random seed for reproducibility" + }, + "device": { + "node_id": 1, + "widget_index": 4, + "type": "string", + "required": false, + "default": "auto", + "options": ["auto", "cpu"], + "description": "Computation device (auto recommended)" + } + }, + "outputs": { + "audio": { + "node_id": 2, + "type": "audio", + "format": "FLAC", + "sample_rate": "32000 Hz", + "channels": "stereo" + } + }, + "performance": { + "avg_generation_time": "40-60 seconds for 30s audio", + "vram_usage": "~10-12GB", + "gpu_utilization": "90-100%" + }, + "use_cases": [ + "Melodic music generation", + "Creating catchy hooks and melodies", + "Music with strong melodic structure" + ], + "notes": [ + "IMPORTANT: Melody conditioning via audio input not yet supported in current Sound Lab implementation", + "This workflow uses text prompts only - describe melodic characteristics in the prompt", + "For best melodic results, use descriptive terms like 'catchy melody', 'melodic hooks', 'harmonic progression'", + "MusicGen Melody model trained for melodic content", + "Output is 32kHz stereo FLAC format" + ] + } + }, + "version": 0.4 +} diff --git a/example_workflows/musicgen-small-t2m-production-v1.jpg b/example_workflows/musicgen-small-t2m-production-v1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..475d68e447e4e874b0c9e48853036efb279b5e03 GIT binary patch literal 5643 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 2048x2048)", + "vram_usage": "~20-22GB (LUSTIFY + tiled processing)" + } + } + }, + "version": 0.4 +} diff --git a/example_workflows/pony-anime-t2i-production-v1.jpg b/example_workflows/pony-anime-t2i-production-v1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..282f04fc903db9f3b4b737455d8334017840860f GIT binary patch literal 5328 zcmeH~cTf}i7RNWCgd%W5m6{6#r6@=j1R{!ra_Jq!C_Gd|q!*DQq9`Cl0*L0S0Yn1| zL`qPk1Pu@c1p%p1Aqho^Ab}VHB6;z?HuL8G@yfq`ch1h7-SgWypFQ85`7LjpHx2ya zWbbGXfIt8M;vWEy3LFH41Ox>I1%&t~At51Q$TkrOUsB@YqT8TS($Y{VC{#vXML|YZ zNe&9#uD)GKRTTz<$tY;RHPqlLYB04Q4*~I)LWCibA|jG%vQSyI|606G04f6d6$}V~ zGypIZBmf2Rx&RozPa)7B0{$)#SU`~9rHH7QIKP1S3jhWQ2!Q$h^8xtPY5e*$)8nwjslusmpY z$R6q7=;Y=ECqT-V4r8jP3EACd_ zyN|D`e$dd^L~MTiq~+;za#wc`<;Bb1q2ae9qhsR}lQcSGW_E7=Ws)qA!re`F6&Z2Q-(=n{twR7WF8BkF%PRQz5(A zN!6B3b3@!9^U~SEK83?q83hq3CdI>NHWICBD9Tc?i%sLu z&MDzGV>&FW`GZ0GSX6x9OZk8u*O3P!#gO~-41-(IFDe;Hs8hIO`>1pAR%4Ro{nQWC zefT-Fct!hI0C(T?B9ca2%d>*e^WM9UBjK3!1+e36et+3%Uwi6{{y0iqgz|pwiLzw$ zbjg=Ic2K(uanTAfS$o9pWb8%bqk#(XCVEvy4VZ8cPi7*d26}(`ut%@stN#?2vC_p}KCHla*TE z2R(}(-qiz^_tBB*5T4#YyWc{M$TXi4wowXCH$#&rALl2Coah)gVQOg~x7glCy6zp; zAbT`kr6}OQ)%$e?@9d8urMxD3*NAMtH_H$V!9+>@# z@K{$puby-$ODc;%d&E-1ag=i^R`0r5S{U8bw6NE#GNm#<0Ka#VR5mTj$ko3sAD)_c z9iCWK;q7}%Kf1GSHq6=<0u=V^;kn;wbFJJynuNIbn5nhXZo44rORGMxvyx-9`=u4S z&qqhW>UnA|A#|yA>1NR@nTJBcEn)H-QwN`E6Yi!Wm)&S}nRFM+K3`S=K1{em(6@QX z1CI?E-x-ZQh1a!Eb)4~0jhjYiS?LiplN))WU)f8^LUNx-%IWf?%+y2o13vi~FUVu-eBU@guyD_^@*dDPW>)4H zUT*Y#DvX;!lQ8Ssl1Jp9sUa$N_mYp_J$1*(hJgVgk}t{G^dv>pH@UbM+)^NA3Kih-3y4XqS~(9; zTN4C&$KT1-KkHo)VPKR4rw6yUx$Givm~li|X;;CURsuuq z;v9FDd5$UJic)@aJzXNmGt&fL7}DB?@$p>^Q9d7HAMG&EQm4m2<)!*Sx^U8;u5o`4 z%d zkWY*EZQ-8I@aW5)M%$x~T|@qwOJ<=iwH>4dbv3bsi{kLT)5WWR?sUQ=S$CXcN|Ne| zx`NFLx3n*Cp~rs;tHZh0>h@bs744lRV&*-Z+DcEccIiEs&fYe)QS{ zhWe=S{2t2k41*V9^i7_nTW&;(dfrfIt8MhMn;x?FWJ7=s$a^t z-r8Fu-Q|P#AYIr9I#-$y8RR`OFS9UNvbb4x)G=!}Lhu;5di08Haf`}Mu`aK&pTjWW8YOOh!iD^FVSJOJ3ZGql@$n({0X zWj9KEsQ3DWyK!6M8=E9Yc!bh?scJ_izl*eO26O9n0cQX#sh+*NNkKHofL+W(?>I^tq{qK&z3XkuA|>7 z!d|+)l1IfpZ%b^~oSx6wQsbi1@6vHnrXXwJNvrEzs>Ud!c|hi8%Z zvY?r>_W~yRa1}v`%vEa`r|`+}rpz(}$&D$;6draMe$_JH>$eNU15)eyi;Io8QNwg`^$SuBNL2Dq5i{oAA&lUBQbmII z(I}lvoMJ?{Zr<28?+d2F_UPyWxVwWO##u6>pp0wFn7VjT@)E>fXn8Hh4t@qn~!#;{xt>rl@3T9a#z46k8;GpD=!RL8P+)VcO`d8w(Xh3n$M zq9{t-rzkXHB?ciyV%C;!m0(e5*h&nFpAmm#>lL|Y+P~ain(^vwv9RU=*}EgB>gESw zO*F)E%ch!9w8nY#rsyd*D!hme6W6g4xxbeOWZp|<9n$fe^Ynf9K=DLF$@UlMsY(* z#>3Oqsw1T=LiWdp8^d#FsJ8|*^6t8-O!jP0kx6NU4cz|pp-D>4)bqf^BD%HT^HO8$ zwOf(w%A!|S9_-oX{K8do#pdJ2*Z|wZ-y3IDmvY0(i0tV-HXBOK2+dg6vBZ7PoZ)|- zZ^k58lr5+E91?S#2i%K^_ewAj0w23L+wBZZ8>vZ)SvH{Edz@{h97WIDTWe|{y-6IkF;@d1@&a^R3bqlUfbWVqvgida?cc94C_ ziK!wit5Ayk$rk|Gfz${rJCzfmY5TXu$#Zq(SajUuLK4B5(>EK_#L zE;2(iL$ZaLY{QJ1$NjwbyFGtB@B4S(>o~7}uH`sC=lMO3>tcOnk$}TyMy5sp2m}D2 z{QjMDh1|4Ms*g?kuHZX`C z3}STvGW&UQg8nJsZ-Lm@Irg*U=Hcbr-%xiLU<0wUv+d`<53s*GdVd|@0CNf+JF9;{ z$m$l?@jzkK2k9@lWewhb6tNzr$f>#AkK^GL6%&U@$SXikoK!rgeqKZKg4X3LhDOFF zre@b~*x1_HJ2<*~+`i*^*ULL7I3zSIJRYkc3<-qG3B-P8MNWOVGy_{7&qJb7mJ``nNDg~cW6ul0@1t!>)Q?q6J> zea`>Xe}Mf97kHnGZNDuXTz_$a*uwUM9n8Ub?Cb$SeJie8fkMYsA8-pBq`!Rokw;d| znj+$Mf0$QP?i^X3`WMQ?&s-r6kafgk>t5;5A5~#6J z>cQ3+NM|q6vOE2$`|E2}ya9n`rpqcSxw_U=XxHM;>e6-iVOZuF3Gqz-prkA=YiZ&SvWgVG3+%I*Ia(CweBhl4f)U)D2Rmk2FX*zXO?=I4!GZ6i*Tguq+htEP9zR7TGCb4a+zj7&etU*J_ z_+Xe7p>kZ;9t1DR%rIF-w`Cp0@aT5VoK?j`bR;$E+PJkV4IXuG2~yweMh0JmI`0+e$n!TZC;+3~nu4%nJ z1uSn|RQjwd&yc13$fJ;Tf=CsSYu86}+)Yl0<}VD^+<)>~|KKG>iv!^K)<;@z4Ej@ z_YVi#3$EU)kBxM%Fonj}7cAo|JR9xdUv7k4m>Eggy_gd-*z@as4d&~#cW!=Vp1W9n zSeU9lM^xNe*v;3fChT&lrkzoH+aJ>sa$Qr3C|eb?&IXXR`a@d1W{^}P)wQ{7$h~-R zDK5DQv8r%3e>O%C<;O#QjM~Q_gr_?WqBj52qzRwo^V@2tk46FH~KlO;bvn`Kr7^@fKsd@x`wl zl&`#qC_A3b$s^9CJ;B9ZI*VMcLqF67Q3@X1W&u37l-1xBM+z8%JTsIyD|^%WbJ-I< z!J@@n^eyeWuaiH*V@xd0@6=cOF18jJ#}2zpP}9hw4@hZ=5-~XUQlbm7U+2u{ens^r zzm#XsfJ=edvvQQE3FHk+e*Vu3?QW$rw+3OpX-2RIEI`=dvPyy~cMl7I)w6)vtTmby zP8hdf#{zok{>%$b=$eKkxJ@a;dH9~Xija?8y>Dj-!sBB3<)%`M*&ok$3*0+qQA$hODJxNv+YLd3%^H-^ zZkOZrblWs?Us=-q&t+<=#*!lPmgAuSDNb`$F(-)up22bNcy>6-_ajY0UnTlCaIiJ5T4*Al-G*AgUnq7jf(673wH^ z#WbM{nGq}R1@G@o-=oBe?j9LQ(X>20@!lw#8vgvE{mGJdpKPmJR)~zjf@XON3+Vi& zG*TI2!EQpoonQ0xN9M{|3Egx^Nd=@hR-Jokv(g?CkkW#-O%`#U&ad-;O#0(OKK~SrL+vhmpM-|GEL=7 zPlB)7WP(ODZ;b^lyQ&O3wv{CxvAdqodO)3exD5L0x^4ZoZa!`M)mMf-&9s0#8F0y%@Ir$i`0VA**!ZPuI!3D@ePe~>^Y8kN??OnAQL5kLj5pO(GZ_i%_5 zr)AesYg;Dd^1QG}C*Tm+=`7!n?HHS}zr5 zbkL{96&+NAMdX!yqH7UKOzfndu>Y#M-sHSvQ*-Oc+UiwKg*=Oc%1Py96N`=vkoZ8v z(E=?y2zKA4*|@#?nJmB@-|AKP*v)Uv55*gyisj_ISd3}#%VX+2*bw{KSW56=N>ZWi zzBcQeQvy1W@A0>)uSPw5o7ifhPq$mP9Y4FECs12cJ$SXj6mu!^aMSVYtHNhlzyl=3 zOz~pV796D|>L8M|+kHNdFfiV@QIBQ;3brg@^Al`O#XIaHLGRHbDMf<`hCyg<%r28K zDLrf3J9Tmy?w@Ys*o=qlK5y74?qYqj8`MxX;g&jm-!f5eTlX{=!MacOFu@i4Yo-(? z+S3bTKAV(RGJ{e+3wVJHWMnI+>7lFhRV~502g=CA2dzhjbd<}#UF>9H1Ls|;b*+g3 z?WPZhLA))G+cn&jz9UcUcE0+KdevN%n|#-@DA3M-u)$gIXJp!n0EveoKa=xiMZ!E^ z%r3n+?tbT%2~o|cpIE7X(YW+Li`f5u*7u8v`C^-49u!W34jKjJPit>{TbgD8LM+VQ3paiEkiuRr2SAWUz!%89jNG!^=OfeJ;_d8DXMPfq5RrY zHRd5F?Z?j_t9imdeq_!`#tK-SF zrzET}$;A zyKh)Prjq~eER>m32Ol=Py|U>yeJYYqu}-rc?X~Vp^QWOL;fIjKPDIU*3evJ9-M-FP z11vrV7a=Ct9u2CUhX5P8*!z(~y>Yb#mZOre$|9we{W{RhO? zrTH`x>iW#oDWH9>peuN;Kjz9ff%qdDMz{0+tDk)Tqo3z2(nc_}K@tIm+>J?@LG#nl zrU?UhQ3uTXta2a8!;?K+KK%D9(n>nvSeM>HS|6#%Yss!T-bf=q3)Xgv;qU-Z2lvQ=h}tx4sf zrm1uAi{K7}s!+?Ly5|@+Io-pPi=kR~N6$Ga5QRA(c;53p82AAYWJ`UfQ}E5x!7lgt zYAOROV4Wa?Dqd;WF36^ky&1w&KJBMrn?u#v?Fv*Dl<@1@2t`U*WCr4a#*Si zKU01gyd-^ws!;W!r2x%mDw1E<(Q#RvDSY4zkB&!%+74)aPb3Df^ZYsP@u%wDKEY+W zIk7p^8TCH$>u%!KRThw8H>0<^m%{?C$irITz{IDIhQhX< YH?0hXf#31F2ERS<+XH`l0K}U72hC~9xc~qF literal 0 HcmV?d00001 diff --git a/example_workflows/realvisxl-lightning-t2i-production-v1.json b/example_workflows/realvisxl-lightning-t2i-production-v1.json new file mode 100644 index 0000000..8d5b203 --- /dev/null +++ b/example_workflows/realvisxl-lightning-t2i-production-v1.json @@ -0,0 +1,263 @@ +{ + "last_node_id": 11, + "last_link_id": 16, + "nodes": [ + { + "id": 1, + "type": "CheckpointLoaderSimple", + "pos": [50, 100], + "size": {"0": 380, "1": 100}, + "flags": {}, + "order": 0, + "mode": 0, + "outputs": [ + { + "name": "MODEL", + "type": "MODEL", + "links": [1], + "slot_index": 0 + }, + { + "name": "CLIP", + "type": "CLIP", + "links": [2, 3], + "slot_index": 1 + }, + { + "name": "VAE", + "type": "VAE", + "links": [4], + "slot_index": 2 + } + ], + "properties": { + "Node name for S&R": "CheckpointLoaderSimple" + }, + "widgets_values": ["realvisxlV50_v50LightningBakedvae.safetensors"], + "title": "RealVisXL V5.0 Lightning Checkpoint" + }, + { + "id": 2, + "type": "CLIPTextEncode", + "pos": [480, 100], + "size": {"0": 450, "1": 250}, + "flags": {}, + "order": 1, + "mode": 0, + "inputs": [ + { + "name": "clip", + "type": "CLIP", + "link": 2 + } + ], + "outputs": [ + { + "name": "CONDITIONING", + "type": "CONDITIONING", + "links": [5], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "CLIPTextEncode" + }, + "widgets_values": ["Beautiful woman portrait, professional photography, natural lighting, high quality, detailed, 8k"], + "title": "API Positive Prompt" + }, + { + "id": 3, + "type": "CLIPTextEncode", + "pos": [480, 400], + "size": {"0": 450, "1": 150}, + "flags": {}, + "order": 2, + "mode": 0, + "inputs": [ + { + "name": "clip", + "type": "CLIP", + "link": 3 + } + ], + "outputs": [ + { + "name": "CONDITIONING", + "type": "CONDITIONING", + "links": [6], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "CLIPTextEncode" + }, + "widgets_values": ["(worst quality, low quality:1.4), bad anatomy, deformed, blurry, watermark, text, ugly, cartoon, anime"], + "title": "Negative Prompt (RealVisXL Optimized)" + }, + { + "id": 4, + "type": "EmptyLatentImage", + "pos": [480, 600], + "size": {"0": 315, "1": 110}, + "flags": {}, + "order": 3, + "mode": 0, + "outputs": [ + { + "name": "LATENT", + "type": "LATENT", + "links": [7], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "EmptyLatentImage" + }, + "widgets_values": [1024, 1024, 1], + "title": "Latent Image (SDXL Resolution)" + }, + { + "id": 5, + "type": "KSampler", + "pos": [980, 100], + "size": {"0": 350, "1": 290}, + "flags": {}, + "order": 4, + "mode": 0, + "inputs": [ + { + "name": "model", + "type": "MODEL", + "link": 1 + }, + { + "name": "positive", + "type": "CONDITIONING", + "link": 5 + }, + { + "name": "negative", + "type": "CONDITIONING", + "link": 6 + }, + { + "name": "latent_image", + "type": "LATENT", + "link": 7 + } + ], + "outputs": [ + { + "name": "LATENT", + "type": "LATENT", + "links": [8], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "KSampler" + }, + "widgets_values": [ + 0, + "randomize", + 6, + 2.0, + "dpmpp_sde", + "karras", + 1.0 + ], + "title": "Lightning Sampler (DPM++ SDE Karras / 6 Steps)" + }, + { + "id": 6, + "type": "VAEDecode", + "pos": [1380, 100], + "size": {"0": 210, "1": 50}, + "flags": {}, + "order": 5, + "mode": 0, + "inputs": [ + { + "name": "samples", + "type": "LATENT", + "link": 8 + }, + { + "name": "vae", + "type": "VAE", + "link": 4 + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [9], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "VAEDecode" + }, + "title": "VAE Decode" + }, + { + "id": 7, + "type": "SaveImage", + "pos": [1640, 100], + "size": {"0": 320, "1": 290}, + "flags": {}, + "order": 6, + "mode": 0, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 9 + } + ], + "properties": { + "Node name for S&R": "SaveImage" + }, + "widgets_values": ["realvisxl_lightning"], + "title": "API Output Image" + } + ], + "links": [ + [1, 1, 0, 5, 0, "MODEL"], + [2, 1, 1, 2, 0, "CLIP"], + [3, 1, 1, 3, 0, "CLIP"], + [4, 1, 2, 6, 1, "VAE"], + [5, 2, 0, 5, 1, "CONDITIONING"], + [6, 3, 0, 5, 2, "CONDITIONING"], + [7, 4, 0, 5, 3, "LATENT"], + [8, 5, 0, 6, 0, "LATENT"], + [9, 6, 0, 7, 0, "IMAGE"] + ], + "groups": [], + "config": {}, + "extra": { + "workflow_info": { + "name": "RealVisXL V5.0 Lightning Fast NSFW Text-to-Image", + "version": "1.0", + "description": "Production workflow for RealVisXL V5.0 Lightning checkpoint optimized for ultra-fast photorealistic NSFW generation with 4-6 step inference (vs 30+ for standard models)", + "category": "nsfw", + "model": "realvisxlV50_v50LightningBakedvae.safetensors", + "recommended_settings": { + "sampler": "dpmpp_sde with karras scheduler", + "scheduler": "karras", + "steps": "4-6 (Lightning optimized)", + "cfg_scale": "1.0-2.0 (lower for Lightning)" + }, + "features": [ + "Ultra-fast 4-6 step generation", + "High-quality photorealistic output", + "Baked VAE for optimal quality", + "Professional portraits and scenes", + "Both SFW and NSFW capable" + ], + "tags": ["nsfw", "realistic", "photorealistic", "lightning", "fast", "sdxl"] + } + }, + "version": 0.4 +} diff --git a/example_workflows/sd35-large-t2i-production-v1.jpg b/example_workflows/sd35-large-t2i-production-v1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..9849598771ab9fe2ef832da97cc24b0302b24241 GIT binary patch literal 5351 zcmeH|XEfZ~8pi*l3n7DHFnT8lQ6nNah<-?vsL@LzYD7&Wf)FL@Bx(}vXlJw;Wkzo& zBt%3BCd%kzFj1n>TX z3eX0qDXFNaD5=R4H8nL2Eh8N*SN zD~F)4Ag?ftmyh@7B_Q%qS{hm=Iyxp^HZU9Se=Slw0Hy=+Qvj48L4X1bq6C9T-2fjs zPioMg0{$it1tk?ZOFH^<4CD>S3jhU(l9Ga)KN*0$JCeK(P=Tpg1mrYnSk0Vh1^wCN zpQOH}6Vj^bfS3<&314;&cuIecode3rB_b*&E+MI)sHCi-dPVye9bLT}`UW>|Sy)bjx_f&2{&?U2dF0FJ*!aZP$+>yl!s62M%IX^N`}WT6-jDr*!=GFrGUwm*SFnHK z0+YEY$Zesb{mBKQct{RPFcr0c91V-68Lg8)tDyW7IySA;w>2H~LYK|AAkG29=h%f6 z=0u1;(f%a+&%mDkPh|f9`zO~Vz(@%qH;)nwXaHFW;)oH`A*}@QHxy@aR)aGSoO$5i zd7x_biqC0P7%I%CsKM&|A2-IucuPNpXO}r3k5sX%L$5pzibkBWh0i|0sst%s0CR|>Z_->XB$ZWk4Om%sxW(I!1hJ=X`4{eGHj z=ffd;@kC#pmbB9mYq*7lbB|@@T--@O1Zc;xvoVDt#C)^&nn)umOWOMPjK6O5`Iovr8CzxXVbU6eOLi~a`)y7;}QPtjS_6F`dU-_ z#ZYJ3>)zp;%y=c6%{|y2%VW>Q>kWzV&;?f)FMi_3u$kxx={cUu^XJ?4n4d2+wN}f& z$hqAvyvWHkc8*3tR(-MMGfy@_DI%Y zN#5oGQwhEKTY~8B5-Leu`rvia)=Y0Fv&xD*q1R6&vEgJJtx+5(?G*rTb55g8UjFd? zgNai0JscHp?%{Y#gvuw(U9ZRNHC6i=->g6Swyl2)O3RvVf?WdL81gL+g(vSqzMM+D z4?qRlIIltbjdJV=lk$4^aNm1OIQYz~Zr=>{lEOM}e8HG7v90QQuQuFOi#$9}0%DwS z1&1IKurRH0Y#(?kFsx`yacsS|*XG_RE=<29bzI61D-)_ggbAfHv8n$4uX3>zAz+OcbtlsACq-xnFzh_V442GC_knNs)}pC8G=&E zo~PaP-kbcW(RaOf_N|t5hniz}NgHK$)zF1~!)`9>4CUwyD*U{V?zr(xt?zgFLM;nlcX&n3QoWTUQLV#t_UOo;XSlhp z+42%v1`6rDg-gce?@sRL%*93TsJv-yB~tHZCePQtHbA3cKDW*lY_fK&ey+}P(bQ#W zIY8W%=^bvjyl;kVdWhZ#!9rGfIrhU#_EWmE;d_tDcjlx zY?^7i5R~}lO5*A@Q8Whigf2@#vbJKuDVnWIMmdPb|D&&dY@-6<~qx{!<%S&9ea_U;ghn3xyCtlsTYiw^D?u-6@HM;?$I!gk;`w4@F zEqo?NM&S30b)m!(ZUD#Fz9U$N#LDA!M>p!xqYUcxF?_VqD|$6hjU+XbF=U<+dz{HA zVtw9y`aN}5Z_&||{3-F;YlH@Me2=q`M610_^G0hp z&qOoSo5jp-^6SpjhQiETUy}LsU=U{lD3{(vngm3|4y{^qxu^fOX4CAYlvVj-u!o&p zfN7SVe}kXmQrLJ&1p64qwlbt6f7uL!85vVjb_mSU5$0(e0yg?6QC^#YE)R}==@5CM ztMjrbF^@}=f#xLSFxn80oV${-l%^BK?F$~9t9E&iJZl3#Z#Os6DAJwD)2S<_-K;%bA+I^Sj@@Z)y2CNp9PYZ|tcTJGaH&S-uIVNO=OK`-N7%?dOJ-KXG^PrN#iN-GR9ood4qm~Ldf$Y6 ziMlTy$yiwgOz(28cu??xJ|VBKz?&dbO6;G$TJ0EOc%}bKD;> zYs{Y?oHt&JwY3lwn|vG4+oYJYlQPWoDST(|FmK(oe)Umf|o zbHtQsno2kK1)yA0F{-X?q>|G?|O#d)XO$#Xl_%Ri9E_mveBN-DLWk_(oo38%j6@+qw;wry)2~vR<-X(|wXK_}8GY_13;NN(F HlJxa2^z_oN literal 0 HcmV?d00001 diff --git a/example_workflows/sd35-large-t2i-production-v1.json b/example_workflows/sd35-large-t2i-production-v1.json new file mode 100644 index 0000000..17cbe61 --- /dev/null +++ b/example_workflows/sd35-large-t2i-production-v1.json @@ -0,0 +1,376 @@ +{ + "last_node_id": 9, + "last_link_id": 10, + "nodes": [ + { + "id": 1, + "type": "CheckpointLoaderSimple", + "pos": [50, 100], + "size": [350, 100], + "flags": {}, + "order": 0, + "mode": 0, + "outputs": [ + { + "name": "MODEL", + "type": "MODEL", + "links": [1], + "slot_index": 0 + }, + { + "name": "CLIP", + "type": "CLIP", + "links": null + }, + { + "name": "VAE", + "type": "VAE", + "links": [4], + "slot_index": 2 + } + ], + "properties": { + "Node name for S&R": "CheckpointLoaderSimple" + }, + "widgets_values": ["sd3.5_large.safetensors"], + "title": "SD3.5 Large Checkpoint Loader" + }, + { + "id": 9, + "type": "TripleCLIPLoader", + "pos": [50, 250], + "size": [350, 150], + "flags": {}, + "order": 1, + "mode": 0, + "outputs": [ + { + "name": "CLIP", + "type": "CLIP", + "links": [9, 10], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "TripleCLIPLoader" + }, + "widgets_values": ["clip_l.safetensors", "clip_g.safetensors", "t5xxl_fp16.safetensors"], + "title": "SD3.5 CLIP Loaders (L+G+T5)" + }, + { + "id": 2, + "type": "CLIPTextEncode", + "pos": [450, 100], + "size": [400, 200], + "flags": {}, + "order": 2, + "mode": 0, + "inputs": [ + { + "name": "clip", + "type": "CLIP", + "link": 9 + } + ], + "outputs": [ + { + "name": "CONDITIONING", + "type": "CONDITIONING", + "links": [5], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "CLIPTextEncode" + }, + "widgets_values": ["A beautiful mountain landscape at sunset, highly detailed, professional photography, cinematic lighting, 8k ultra HD, photorealistic"], + "title": "API Positive Prompt" + }, + { + "id": 3, + "type": "CLIPTextEncode", + "pos": [450, 350], + "size": [400, 200], + "flags": {}, + "order": 3, + "mode": 0, + "inputs": [ + { + "name": "clip", + "type": "CLIP", + "link": 10 + } + ], + "outputs": [ + { + "name": "CONDITIONING", + "type": "CONDITIONING", + "links": [6], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "CLIPTextEncode" + }, + "widgets_values": ["blurry, low quality, distorted, watermark, text, signature, ugly, cartoon, painting"], + "title": "API Negative Prompt" + }, + { + "id": 4, + "type": "EmptyLatentImage", + "pos": [450, 600], + "size": [315, 106], + "flags": {}, + "order": 4, + "mode": 0, + "outputs": [ + { + "name": "LATENT", + "type": "LATENT", + "links": [7], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "EmptyLatentImage" + }, + "widgets_values": [1024, 1024, 1], + "title": "API Latent Image Config" + }, + { + "id": 5, + "type": "KSampler", + "pos": [900, 100], + "size": [315, 474], + "flags": {}, + "order": 5, + "mode": 0, + "inputs": [ + { + "name": "model", + "type": "MODEL", + "link": 1 + }, + { + "name": "positive", + "type": "CONDITIONING", + "link": 5 + }, + { + "name": "negative", + "type": "CONDITIONING", + "link": 6 + }, + { + "name": "latent_image", + "type": "LATENT", + "link": 7 + } + ], + "outputs": [ + { + "name": "LATENT", + "type": "LATENT", + "links": [8], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "KSampler" + }, + "widgets_values": [42, "fixed", 28, 4.5, "dpmpp_2m", "karras", 1], + "title": "SD3.5 Sampler (28 steps)" + }, + { + "id": 6, + "type": "VAEDecode", + "pos": [1270, 100], + "size": [210, 46], + "flags": {}, + "order": 6, + "mode": 0, + "inputs": [ + { + "name": "samples", + "type": "LATENT", + "link": 8 + }, + { + "name": "vae", + "type": "VAE", + "link": 4 + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [2, 3], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "VAEDecode" + }, + "title": "VAE Decode" + }, + { + "id": 7, + "type": "PreviewImage", + "pos": [1530, 100], + "size": [400, 400], + "flags": {}, + "order": 7, + "mode": 0, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 2 + } + ], + "properties": { + "Node name for S&R": "PreviewImage" + }, + "title": "Preview Output" + }, + { + "id": 8, + "type": "SaveImage", + "pos": [1530, 550], + "size": [400, 100], + "flags": {}, + "order": 8, + "mode": 0, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 3 + } + ], + "properties": { + "Node name for S&R": "SaveImage" + }, + "widgets_values": ["sd35_large_output"], + "title": "API Image Output" + } + ], + "links": [ + [1, 1, 0, 5, 0, "MODEL"], + [2, 6, 0, 7, 0, "IMAGE"], + [3, 6, 0, 8, 0, "IMAGE"], + [4, 1, 2, 6, 1, "VAE"], + [5, 2, 0, 5, 1, "CONDITIONING"], + [6, 3, 0, 5, 2, "CONDITIONING"], + [7, 4, 0, 5, 3, "LATENT"], + [8, 5, 0, 6, 0, "LATENT"], + [9, 9, 0, 2, 0, "CLIP"], + [10, 9, 0, 3, 0, "CLIP"] + ], + "groups": [], + "config": {}, + "extra": { + "workflow_info": { + "name": "Stable Diffusion 3.5 Large Text-to-Image Production", + "version": "1.2.0", + "description": "Latest generation text-to-image using Stable Diffusion 3.5 Large (28 steps). Provides excellent photorealism and prompt adherence.", + "category": "text-to-image", + "tags": ["sd3.5", "stable-diffusion", "large", "production", "t2i", "photorealistic"], + "requirements": { + "models": ["SD3.5-large", "CLIP-L", "CLIP-G", "T5-XXL FP16"], + "custom_nodes": [], + "vram_min": "18GB", + "vram_recommended": "24GB" + }, + "parameters": { + "prompt": { + "node_id": 2, + "widget_index": 0, + "type": "string", + "required": true, + "default": "A beautiful mountain landscape at sunset", + "description": "Text description of desired image" + }, + "negative_prompt": { + "node_id": 3, + "widget_index": 0, + "type": "string", + "required": false, + "default": "blurry, low quality", + "description": "Undesired elements to avoid" + }, + "width": { + "node_id": 4, + "widget_index": 0, + "type": "integer", + "required": false, + "default": 1024, + "min": 512, + "max": 2048, + "description": "Image width in pixels" + }, + "height": { + "node_id": 4, + "widget_index": 1, + "type": "integer", + "required": false, + "default": 1024, + "min": 512, + "max": 2048, + "description": "Image height in pixels" + }, + "seed": { + "node_id": 5, + "widget_index": 0, + "type": "integer", + "required": false, + "default": 42, + "min": 0, + "max": 4294967295, + "description": "Random seed for reproducibility" + }, + "steps": { + "node_id": 5, + "widget_index": 2, + "type": "integer", + "required": false, + "default": 28, + "min": 20, + "max": 50, + "description": "Number of sampling steps (28 recommended for SD3.5)" + }, + "cfg": { + "node_id": 5, + "widget_index": 3, + "type": "float", + "required": false, + "default": 4.5, + "min": 1.0, + "max": 15.0, + "description": "Classifier-free guidance scale (4.5 recommended)" + } + }, + "outputs": { + "image": { + "node_id": 8, + "type": "image", + "format": "PNG", + "resolution": "1024x1024 (configurable)" + } + }, + "performance": { + "avg_generation_time": "35-45 seconds", + "vram_usage": "~18-20GB", + "gpu_utilization": "95-100%" + }, + "notes": [ + "SD3.5 uses CheckpointLoaderSimple for MODEL+VAE", + "TripleCLIPLoader loads CLIP-L, CLIP-G, and T5-XXL separately", + "Checkpoint file doesn't include CLIP encoders", + "All three CLIP encoders required for best quality" + ] + } + }, + "version": 0.4 +} diff --git a/example_workflows/sdxl-refiner-t2i-production-v1.jpg b/example_workflows/sdxl-refiner-t2i-production-v1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..27a8145f58968040bfe145ca2587038ed4641acc GIT binary patch literal 5313 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 YZEzbi;Ai~o!A}qT^uV8a0M8!!D=r`cP5=M^ literal 0 HcmV?d00001 diff --git a/example_workflows/sdxl-refiner-t2i-production-v1.json b/example_workflows/sdxl-refiner-t2i-production-v1.json new file mode 100644 index 0000000..16085c2 --- /dev/null +++ b/example_workflows/sdxl-refiner-t2i-production-v1.json @@ -0,0 +1,581 @@ +{ + "last_node_id": 15, + "last_link_id": 22, + "nodes": [ + { + "id": 1, + "type": "CheckpointLoaderSimple", + "pos": [50, 100], + "size": {"0": 350, "1": 100}, + "flags": {}, + "order": 0, + "mode": 0, + "outputs": [ + { + "name": "MODEL", + "type": "MODEL", + "links": [1], + "slot_index": 0 + }, + { + "name": "CLIP", + "type": "CLIP", + "links": [2, 3], + "slot_index": 1 + }, + { + "name": "VAE", + "type": "VAE", + "links": [4], + "slot_index": 2 + } + ], + "properties": { + "Node name for S&R": "CheckpointLoaderSimple" + }, + "widgets_values": ["sd_xl_base_1.0.safetensors"], + "title": "SDXL Base Checkpoint Loader" + }, + { + "id": 2, + "type": "CheckpointLoaderSimple", + "pos": [50, 300], + "size": {"0": 350, "1": 100}, + "flags": {}, + "order": 1, + "mode": 0, + "outputs": [ + { + "name": "MODEL", + "type": "MODEL", + "links": [11], + "slot_index": 0 + }, + { + "name": "CLIP", + "type": "CLIP", + "links": [12, 13], + "slot_index": 1 + }, + { + "name": "VAE", + "type": "VAE", + "links": [14], + "slot_index": 2 + } + ], + "properties": { + "Node name for S&R": "CheckpointLoaderSimple" + }, + "widgets_values": ["sd_xl_refiner_1.0.safetensors"], + "title": "SDXL Refiner Checkpoint Loader" + }, + { + "id": 3, + "type": "CLIPTextEncode", + "pos": [450, 100], + "size": {"0": 400, "1": 200}, + "flags": {}, + "order": 2, + "mode": 0, + "inputs": [ + { + "name": "clip", + "type": "CLIP", + "link": 2 + } + ], + "outputs": [ + { + "name": "CONDITIONING", + "type": "CONDITIONING", + "links": [5], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "CLIPTextEncode" + }, + "widgets_values": ["A beautiful mountain landscape at sunset, highly detailed, professional photography, cinematic lighting, 8k ultra HD, masterpiece"], + "title": "API Positive Prompt (Base)" + }, + { + "id": 4, + "type": "CLIPTextEncode", + "pos": [450, 350], + "size": {"0": 400, "1": 200}, + "flags": {}, + "order": 3, + "mode": 0, + "inputs": [ + { + "name": "clip", + "type": "CLIP", + "link": 3 + } + ], + "outputs": [ + { + "name": "CONDITIONING", + "type": "CONDITIONING", + "links": [6], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "CLIPTextEncode" + }, + "widgets_values": ["blurry, low quality, distorted, watermark, text, signature, bad anatomy, deformed"], + "title": "API Negative Prompt (Base)" + }, + { + "id": 5, + "type": "CLIPTextEncode", + "pos": [450, 600], + "size": {"0": 400, "1": 200}, + "flags": {}, + "order": 4, + "mode": 0, + "inputs": [ + { + "name": "clip", + "type": "CLIP", + "link": 12 + } + ], + "outputs": [ + { + "name": "CONDITIONING", + "type": "CONDITIONING", + "links": [15], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "CLIPTextEncode" + }, + "widgets_values": ["A beautiful mountain landscape at sunset, highly detailed, professional photography, cinematic lighting, 8k ultra HD, masterpiece"], + "title": "API Positive Prompt (Refiner)" + }, + { + "id": 6, + "type": "CLIPTextEncode", + "pos": [450, 850], + "size": {"0": 400, "1": 200}, + "flags": {}, + "order": 5, + "mode": 0, + "inputs": [ + { + "name": "clip", + "type": "CLIP", + "link": 13 + } + ], + "outputs": [ + { + "name": "CONDITIONING", + "type": "CONDITIONING", + "links": [16], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "CLIPTextEncode" + }, + "widgets_values": ["blurry, low quality, distorted, watermark, text, signature, bad anatomy, deformed"], + "title": "API Negative Prompt (Refiner)" + }, + { + "id": 7, + "type": "EmptyLatentImage", + "pos": [900, 600], + "size": {"0": 315, "1": 106}, + "flags": {}, + "order": 6, + "mode": 0, + "outputs": [ + { + "name": "LATENT", + "type": "LATENT", + "links": [7], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "EmptyLatentImage" + }, + "widgets_values": [1024, 1024, 1], + "title": "API Latent Image Config" + }, + { + "id": 8, + "type": "KSampler", + "pos": [900, 100], + "size": {"0": 315, "1": 474}, + "flags": {}, + "order": 7, + "mode": 0, + "inputs": [ + { + "name": "model", + "type": "MODEL", + "link": 1 + }, + { + "name": "positive", + "type": "CONDITIONING", + "link": 5 + }, + { + "name": "negative", + "type": "CONDITIONING", + "link": 6 + }, + { + "name": "latent_image", + "type": "LATENT", + "link": 7 + } + ], + "outputs": [ + { + "name": "LATENT", + "type": "LATENT", + "links": [8, 17], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "KSampler" + }, + "widgets_values": [ + 42, + "fixed", + 30, + 7.5, + "dpmpp_2m", + "karras", + 1 + ], + "title": "SDXL Base Sampler (30 steps)" + }, + { + "id": 9, + "type": "VAEDecode", + "pos": [1270, 100], + "size": {"0": 210, "1": 46}, + "flags": {}, + "order": 8, + "mode": 0, + "inputs": [ + { + "name": "samples", + "type": "LATENT", + "link": 8 + }, + { + "name": "vae", + "type": "VAE", + "link": 4 + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [9], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "VAEDecode" + }, + "title": "VAE Decode (Base)" + }, + { + "id": 10, + "type": "PreviewImage", + "pos": [1530, 100], + "size": {"0": 400, "1": 400}, + "flags": {}, + "order": 9, + "mode": 0, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 9 + } + ], + "properties": { + "Node name for S&R": "PreviewImage" + }, + "title": "Preview Base Output" + }, + { + "id": 11, + "type": "KSampler", + "pos": [1270, 600], + "size": {"0": 315, "1": 474}, + "flags": {}, + "order": 10, + "mode": 0, + "inputs": [ + { + "name": "model", + "type": "MODEL", + "link": 11 + }, + { + "name": "positive", + "type": "CONDITIONING", + "link": 15 + }, + { + "name": "negative", + "type": "CONDITIONING", + "link": 16 + }, + { + "name": "latent_image", + "type": "LATENT", + "link": 17 + } + ], + "outputs": [ + { + "name": "LATENT", + "type": "LATENT", + "links": [18], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "KSampler" + }, + "widgets_values": [ + 42, + "fixed", + 20, + 7.5, + "dpmpp_2m", + "karras", + 1 + ], + "title": "SDXL Refiner Sampler (20 steps)" + }, + { + "id": 12, + "type": "VAEDecode", + "pos": [1640, 600], + "size": {"0": 210, "1": 46}, + "flags": {}, + "order": 11, + "mode": 0, + "inputs": [ + { + "name": "samples", + "type": "LATENT", + "link": 18 + }, + { + "name": "vae", + "type": "VAE", + "link": 14 + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [19, 20], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "VAEDecode" + }, + "title": "VAE Decode (Refiner)" + }, + { + "id": 13, + "type": "PreviewImage", + "pos": [1900, 600], + "size": {"0": 400, "1": 400}, + "flags": {}, + "order": 12, + "mode": 0, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 19 + } + ], + "properties": { + "Node name for S&R": "PreviewImage" + }, + "title": "Preview Refined Output" + }, + { + "id": 14, + "type": "SaveImage", + "pos": [1900, 1050], + "size": {"0": 400, "1": 100}, + "flags": {}, + "order": 13, + "mode": 0, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 20 + } + ], + "properties": { + "Node name for S&R": "SaveImage" + }, + "widgets_values": ["sdxl_refined_output"], + "title": "API Image Output" + } + ], + "links": [ + [1, 1, 0, 8, 0, "MODEL"], + [2, 1, 1, 3, 0, "CLIP"], + [3, 1, 1, 4, 0, "CLIP"], + [4, 1, 2, 9, 1, "VAE"], + [5, 3, 0, 8, 1, "CONDITIONING"], + [6, 4, 0, 8, 2, "CONDITIONING"], + [7, 7, 0, 8, 3, "LATENT"], + [8, 8, 0, 9, 0, "LATENT"], + [9, 9, 0, 10, 0, "IMAGE"], + [11, 2, 0, 11, 0, "MODEL"], + [12, 2, 1, 5, 0, "CLIP"], + [13, 2, 1, 6, 0, "CLIP"], + [14, 2, 2, 12, 1, "VAE"], + [15, 5, 0, 11, 1, "CONDITIONING"], + [16, 6, 0, 11, 2, "CONDITIONING"], + [17, 8, 0, 11, 3, "LATENT"], + [18, 11, 0, 12, 0, "LATENT"], + [19, 12, 0, 13, 0, "IMAGE"], + [20, 12, 0, 14, 0, "IMAGE"] + ], + "groups": [], + "config": {}, + "extra": { + "workflow_info": { + "name": "SDXL with Refiner Text-to-Image Production", + "version": "1.0.0", + "author": "RunPod AI Model Orchestrator", + "description": "Two-stage text-to-image generation using SDXL Base (30 steps) + Refiner (20 steps). Produces highly detailed, refined outputs with excellent coherence.", + "category": "text-to-image", + "tags": ["sdxl", "refiner", "two-stage", "high-quality", "production", "t2i"], + "requirements": { + "models": ["stable-diffusion-xl-base-1.0", "stable-diffusion-xl-refiner-1.0"], + "custom_nodes": [], + "vram_min": "20GB", + "vram_recommended": "24GB" + }, + "parameters": { + "prompt": { + "node_id": [3, 5], + "widget_index": 0, + "type": "string", + "required": true, + "default": "A beautiful mountain landscape at sunset", + "description": "Text description of desired image (used for both base and refiner)" + }, + "negative_prompt": { + "node_id": [4, 6], + "widget_index": 0, + "type": "string", + "required": false, + "default": "blurry, low quality", + "description": "Undesired elements to avoid (used for both base and refiner)" + }, + "width": { + "node_id": 7, + "widget_index": 0, + "type": "integer", + "required": false, + "default": 1024, + "min": 512, + "max": 2048, + "description": "Image width in pixels" + }, + "height": { + "node_id": 7, + "widget_index": 1, + "type": "integer", + "required": false, + "default": 1024, + "min": 512, + "max": 2048, + "description": "Image height in pixels" + }, + "seed": { + "node_id": [8, 11], + "widget_index": 0, + "type": "integer", + "required": false, + "default": 42, + "min": 0, + "max": 4294967295, + "description": "Random seed for reproducibility (same for base and refiner)" + }, + "base_steps": { + "node_id": 8, + "widget_index": 2, + "type": "integer", + "required": false, + "default": 30, + "min": 20, + "max": 50, + "description": "Number of sampling steps for base model" + }, + "refiner_steps": { + "node_id": 11, + "widget_index": 2, + "type": "integer", + "required": false, + "default": 20, + "min": 10, + "max": 30, + "description": "Number of sampling steps for refiner model" + }, + "cfg": { + "node_id": [8, 11], + "widget_index": 3, + "type": "float", + "required": false, + "default": 7.5, + "min": 1.0, + "max": 15.0, + "description": "Classifier-free guidance scale (7.5 recommended for SDXL)" + } + }, + "outputs": { + "base_image": { + "node_id": 10, + "type": "preview", + "description": "Base model output (before refinement)" + }, + "refined_image": { + "node_id": 14, + "type": "image", + "format": "PNG", + "resolution": "1024x1024 (configurable)", + "description": "Final refined output" + } + }, + "performance": { + "avg_generation_time": "40-60 seconds (30+20 steps)", + "vram_usage": "~18-20GB", + "gpu_utilization": "95-100%", + "notes": "Base and refiner run sequentially to manage VRAM" + } + } + }, + "version": 0.4 +} diff --git a/example_workflows/simple-upscale-production-v1.jpg b/example_workflows/simple-upscale-production-v1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..8f84906b239fc140aa83e9663636c703a1cf01ed GIT binary patch literal 5341 zcmeH_c{tQv8^?cR>?H<+WGH)tvP1?GLPn8wGPWcMp=4)>L_Fvz*=8(n)?}H`*rrTn zi;Apc$uidLGqy%y-syR_>w2%}k9YaE@44>t&$;h&?$5cuj3LG(z=t$8H3mQ+001!; zz!(J#0X8rzD=V0dxv{aav2z^cTzyYp<5MF+M2rmR8AS5O%ASeojKtzs-h{9kJ z5)uN!lG2jm(qiHg;y*6|F-tkvISz4h9ugOX2#WvLV!Qz$oS>sD02m|*us}dy2#C=F zNHF_k1N|Z3?*g%aS(#mOa&aGECJ^`l77!TB!t9?3z|6)l&jD5l8~?FW`s@Oht{jrL z1y!RTJ>`@#sCo;v>Y+-jUGt8D<^+kL0#jtrq&s4!*fQ)Cg)9&);6|w zsLS?fw`=a#J#Kh<-3bT`3JwVkyBB*uF8)D6;^WjOY3Ui6S=ju7!lL4mXQj`pYhDs+ z>*^aC-!-?iwza?S=!Np}&Fs z8yAGh#ljp5E5}bR5KAyKzz|lpW2e~p^({GEZwpAOMso@pJbGI7mP<;_iVD5z-@`2= ztxl1l{Y3kN>^}pG`Jc%C3HC3p5#S&g#2g+N0w93S{6xjAzNMH%`M5%LBhW z@Mj*VeWgKh;iLav-=p5JI;a+Z`@WIh{mkgRn}bRi2=%>b`7TrxaewRb%ayCTOVU}* z#&cG~S~I@R;6pi$sGO{6nb^V-C=t2l9$DG0CtFj*N{*_hjoo>pr_ytx@OA&DDW&#- z`wYs&7N&|!O~mKZ4O`G%34s-!jlp@YHykZgazs}Yp5o%Jn1eW?o$7u&p{Mv&97d`g z^!4c9Oz69|ez@r~-!<4ULVI(m_vJohXv{ISO1w9sZO#IsVS!y(`b}ler3!JCnx9hemK5Zi0)+0zY z+RDK@SzWV!s}Ie$K7S=~N63`xN0lrzDdx_jt9Cqw?sX*Zym{;R;=R-{V$gyUw8l}F z`*8_;{B+YpGpvQMIsa`8uSouD+*!IcMc1fu({iezn8t&>K6_Mure%ziS;=uPPJA+; z(uI;2U7@iCTZ}wHmTib%=IgYtaMD+meiol@-7Z&Gq=9w);-N?iMiq=UindyNHnoFM zFJW?*$bmNkDikJGgi}}7r^m~PUgrhz-6uL&T3d~k9S9iS!=>dF#jjq)bPelt%s+BV_Gh1SyQ>-^h8?7J$KfO7 zrjEZ1C);xaG-LsbjjqU{u{K@(XRm}AfKuUAK+v5BBh$k+>z&{lzV%pyGngktst;6x}oq#{l?qi2FVB?R`OCR>p{U zm|`!&%WsGCD`Kn7Z!WDuVi&u^0Pxlfpa?qMu3k>6KGc3*0JSL|QWIZnkYr8mZ>RL&A_vV4{uiq`uf;>7H46zU~<4( zwbENx$VLIC^>$u;JIns@B4^3^*`*KD>sO`>Lp zJf9leo^iiQa7nX>n!I|pdt3|J9{Z_4M_s{=UWAdv4R7~%rYmXRe)0_inchU*p_#nl zp+G#N+%bDk3&$BiDGpH0z6MS?WO6j6UI)eFT*SRe6C6PLF65{$8W)BZys$KaR=FAp zUIP8U;hZ%&5%2GvD_%9I1D_%~IN3IHt>ijYKn|VVNj;$oXi1UK8`_F_0?4BCBiTDH zMf-MYrH4(?$`c8jRrL*2kLHWWzP2XGy8gAI6x;g;i^iH|2a<%E5ogXw-NmroVE}AV zGYRy9{YEDSu%L>H?QuqTkOJi!mX6DgmA_oByn`_t^ZH(gAsK!_xclv7Ay&u?z}v>9 z#$K*fPf~g&vp?_0GC9!_J*A4jxuh2!Ztje8n6KD3vU#`Butam9>XuD<%1v`5WM-$r zx-9ly$=K6v8Gy{UR?_Mi^T`W=l(dmu80~t_!+ ztS5S_+Gcxa%Cz7OMv4wq&=+03j|T{DeLfK^83-X|9eZ|?tIU1EhJ}uPcaGTeP-7S{ z_9Zvxd4cz~C<9nIR?ty`OdTB_{ophAwDbMDnzdQu+5o}Q|R-?w^KPOM^H})gx9>m{SiiP6w-*o_Po{a zM&5TkVKtp$CJj=@9@g3%-2N1d&LJlk6TS0z7sdH-rZ+`q>ji|tu+CG~TT@Nu`T3Pb zhu1ZfY^(;H;DLnAAFVpvX@p@1HzIxP*|?YZ$z(r#0I{QDg;CyeayB4;@+))hjW&sT>Eh@o-@hU z#naDch-1l$E^(ojZaq0>afz(qeSEgwRoWB$xZ1}GYJF5lI?o(&keus4|6%fQvVm$} zOWOY||6z{RLN4oLPO!(*%_V1V$Nu$3!d|(TSvo&1sCMzY_vcP6`|cdm;WLP={QA`yTOcM%?$=^{DHeq6av%nC3qe^tF&5s_bvRg$qm zF5Cl4VE|qiU@H2$Q5enr7y@$uvcgiA!#=ed?~Q%*yn@N@->F^KySJCG5|IPlihPUvxQ9>wp?Qi0j9;S>4%#3c=G`TV=T;@2Pi^1v?-{Fw(3jN!imopHSW literal 0 HcmV?d00001 diff --git a/example_workflows/simple-upscale-production-v1.json b/example_workflows/simple-upscale-production-v1.json new file mode 100644 index 0000000..6f3cb4a --- /dev/null +++ b/example_workflows/simple-upscale-production-v1.json @@ -0,0 +1,207 @@ +{ + "last_node_id": 6, + "last_link_id": 5, + "nodes": [ + { + "id": 1, + "type": "LoadImage", + "pos": [50, 100], + "size": [350, 100], + "flags": {}, + "order": 0, + "mode": 0, + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [1], + "slot_index": 0 + }, + { + "name": "MASK", + "type": "MASK", + "links": null, + "slot_index": 1 + } + ], + "properties": { + "Node name for S&R": "LoadImage" + }, + "widgets_values": ["input_image.png", "image"], + "title": "API Input Image" + }, + { + "id": 2, + "type": "UpscaleModelLoader", + "pos": [50, 400], + "size": [350, 100], + "flags": {}, + "order": 1, + "mode": 0, + "outputs": [ + { + "name": "UPSCALE_MODEL", + "type": "UPSCALE_MODEL", + "links": [2], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "UpscaleModelLoader" + }, + "widgets_values": ["RealESRGAN_x4.pth"], + "title": "Upscale Model Loader" + }, + { + "id": 3, + "type": "ImageUpscaleWithModel", + "pos": [450, 100], + "size": [315, 100], + "flags": {}, + "order": 2, + "mode": 0, + "inputs": [ + { + "name": "upscale_model", + "type": "UPSCALE_MODEL", + "link": 2 + }, + { + "name": "image", + "type": "IMAGE", + "link": 1 + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [3], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "ImageUpscaleWithModel" + }, + "title": "Upscale with Model (4x)" + }, + { + "id": 4, + "type": "ImageScaleBy", + "pos": [800, 100], + "size": [315, 100], + "flags": {}, + "order": 3, + "mode": 0, + "inputs": [ + { + "name": "image", + "type": "IMAGE", + "link": 3 + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [4, 5], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "ImageScaleBy" + }, + "widgets_values": ["lanczos", 0.5], + "title": "Optional Downscale to 2x" + }, + { + "id": 5, + "type": "PreviewImage", + "pos": [1150, 100], + "size": [315, 100], + "flags": {}, + "order": 4, + "mode": 0, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 4 + } + ], + "properties": { + "Node name for S&R": "PreviewImage" + }, + "title": "Preview Output" + }, + { + "id": 6, + "type": "SaveImage", + "pos": [1150, 400], + "size": [315, 100], + "flags": {}, + "order": 5, + "mode": 0, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 5 + } + ], + "properties": { + "Node name for S&R": "SaveImage" + }, + "widgets_values": ["simple_upscale_output"], + "title": "API Image Output" + } + ], + "links": [ + [1, 1, 0, 3, 1, "IMAGE"], + [2, 2, 0, 3, 0, "UPSCALE_MODEL"], + [3, 3, 0, 4, 0, "IMAGE"], + [4, 4, 0, 5, 0, "IMAGE"], + [5, 4, 0, 6, 0, "IMAGE"] + ], + "groups": [], + "config": {}, + "extra": { + "workflow_info": { + "name": "Simple Upscale Production", + "version": "1.0.0", + "description": "Fast, straightforward upscaling using RealESRGAN. No diffusion refinement, optimized for speed.", + "category": "upscaling", + "tags": ["simple-upscale", "fast", "realesrgan", "production"], + "requirements": { + "models": ["RealESRGAN"], + "custom_nodes": [], + "vram_min": "8GB" + }, + "parameters": { + "input_image": { + "node_id": 1, + "type": "image", + "required": true + }, + "model": { + "node_id": 2, + "type": "string", + "default": "RealESRGAN_x4.pth", + "options": ["RealESRGAN_x2.pth", "RealESRGAN_x4.pth"] + }, + "final_scale": { + "node_id": 4, + "widget_index": 1, + "type": "float", + "default": 0.5, + "description": "Scale factor after 4x upscale (0.5 = final 2x, 1.0 = keep 4x)" + } + }, + "performance": { + "avg_generation_time": "5-15 seconds", + "vram_usage": "~6-8GB" + } + } + }, + "version": 0.4 +} diff --git a/example_workflows/svd-i2v-production-v1.jpg b/example_workflows/svd-i2v-production-v1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..cd3727a7dcd9e3ec27c3e248f25ce09eac80a943 GIT binary patch literal 4228 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 literal 0 HcmV?d00001 diff --git a/example_workflows/svd-xt-i2v-production-v1.json b/example_workflows/svd-xt-i2v-production-v1.json new file mode 100644 index 0000000..df57d25 --- /dev/null +++ b/example_workflows/svd-xt-i2v-production-v1.json @@ -0,0 +1,417 @@ +{ + "last_node_id": 7, + "last_link_id": 10, + "nodes": [ + { + "id": 1, + "type": "LoadImage", + "pos": [50, 100], + "size": [315, 314], + "widgets_values": ["input_frame.png", "image"], + "title": "API Input Image", + "flags": {}, + "order": 0, + "mode": 0, + "properties": { + "Node name for S&R": "LoadImage" + }, + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [1], + "slot_index": 0 + }, + { + "name": "MASK", + "type": "MASK", + "links": null + } + ] + }, + { + "id": 2, + "type": "ImageOnlyCheckpointLoader", + "pos": [50, 500], + "size": [350, 100], + "widgets_values": ["svd_xt.safetensors"], + "title": "SVD-XT Model Loader", + "flags": {}, + "order": 1, + "mode": 0, + "properties": { + "Node name for S&R": "ImageOnlyCheckpointLoader" + }, + "outputs": [ + { + "name": "MODEL", + "type": "MODEL", + "links": [2], + "slot_index": 0 + }, + { + "name": "CLIP_VISION", + "type": "CLIP_VISION", + "links": [3], + "slot_index": 1 + }, + { + "name": "VAE", + "type": "VAE", + "links": [4, 5], + "slot_index": 2 + } + ] + }, + { + "id": 3, + "type": "VideoLinearCFGGuidance", + "pos": [450, 500], + "size": [315, 100], + "widgets_values": [1.0], + "title": "Linear CFG Guidance", + "flags": {}, + "order": 2, + "mode": 0, + "properties": { + "Node name for S&R": "VideoLinearCFGGuidance" + }, + "inputs": [ + { + "name": "model", + "type": "MODEL", + "link": 2 + } + ], + "outputs": [ + { + "name": "MODEL", + "type": "MODEL", + "links": [6], + "slot_index": 0 + } + ] + }, + { + "id": 4, + "type": "SVD_img2vid_Conditioning", + "pos": [450, 100], + "size": [315, 350], + "widgets_values": [1024, 576, 25, 127, 6, 0.0], + "title": "SVD-XT Image-to-Video Conditioning (25 frames)", + "flags": {}, + "order": 3, + "mode": 0, + "properties": { + "Node name for S&R": "SVD_img2vid_Conditioning" + }, + "inputs": [ + { + "name": "clip_vision", + "type": "CLIP_VISION", + "link": 3 + }, + { + "name": "init_image", + "type": "IMAGE", + "link": 1 + }, + { + "name": "vae", + "type": "VAE", + "link": 4 + } + ], + "outputs": [ + { + "name": "positive", + "type": "CONDITIONING", + "links": [7], + "slot_index": 0 + }, + { + "name": "negative", + "type": "CONDITIONING", + "links": [8], + "slot_index": 1 + }, + { + "name": "latent", + "type": "LATENT", + "links": [9], + "slot_index": 2 + } + ] + }, + { + "id": 5, + "type": "KSampler", + "pos": [800, 100], + "size": [315, 474], + "widgets_values": [42, "fixed", 30, 6.0, "euler", "karras", 1.0], + "title": "KSampler (30 steps)", + "flags": {}, + "order": 4, + "mode": 0, + "properties": { + "Node name for S&R": "KSampler" + }, + "inputs": [ + { + "name": "model", + "type": "MODEL", + "link": 6 + }, + { + "name": "positive", + "type": "CONDITIONING", + "link": 7 + }, + { + "name": "negative", + "type": "CONDITIONING", + "link": 8 + }, + { + "name": "latent_image", + "type": "LATENT", + "link": 9 + } + ], + "outputs": [ + { + "name": "LATENT", + "type": "LATENT", + "links": [10], + "slot_index": 0 + } + ] + }, + { + "id": 6, + "type": "VAEDecode", + "pos": [1150, 100], + "size": [210, 46], + "widgets_values": [], + "title": "VAE Decode Video Frames", + "flags": {}, + "order": 5, + "mode": 0, + "properties": { + "Node name for S&R": "VAEDecode" + }, + "inputs": [ + { + "name": "samples", + "type": "LATENT", + "link": 10 + }, + { + "name": "vae", + "type": "VAE", + "link": 5 + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [11], + "slot_index": 0 + } + ] + }, + { + "id": 7, + "type": "VHS_VideoCombine", + "pos": [1400, 100], + "size": [315, 200], + "widgets_values": [6, 0, "svd_xt_output", "video/h264-mp4", false, true], + "title": "Combine Video Frames", + "flags": {}, + "order": 6, + "mode": 0, + "properties": { + "Node name for S&R": "VHS_VideoCombine" + }, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 11 + } + ], + "outputs": [ + { + "name": "Filenames", + "type": "VHS_FILENAMES", + "links": null + } + ] + } + ], + "links": [ + [1, 1, 0, 4, 1, "IMAGE"], + [2, 2, 0, 3, 0, "MODEL"], + [3, 2, 1, 4, 0, "CLIP_VISION"], + [4, 2, 2, 4, 2, "VAE"], + [5, 2, 2, 6, 1, "VAE"], + [6, 3, 0, 5, 0, "MODEL"], + [7, 4, 0, 5, 1, "CONDITIONING"], + [8, 4, 1, 5, 2, "CONDITIONING"], + [9, 4, 2, 5, 3, "LATENT"], + [10, 5, 0, 6, 0, "LATENT"], + [11, 6, 0, 7, 0, "IMAGE"] + ], + "groups": [], + "config": {}, + "extra": { + "workflow_info": { + "name": "Stable Video Diffusion XT Image-to-Video Production", + "version": "1.2.0", + "description": "Extended animation using SVD-XT. Generate 25-frame video for longer animations with smooth motion.", + "category": "image-to-video", + "tags": ["svd-xt", "stable-video-diffusion", "i2v", "extended", "production"], + "requirements": { + "models": ["SVD-XT"], + "custom_nodes": ["ComfyUI-VideoHelperSuite"], + "vram_min": "18GB", + "vram_recommended": "20GB" + }, + "parameters": { + "input_image": { + "node_id": 1, + "widget_index": 0, + "type": "image", + "required": true, + "description": "Starting frame for video generation (1024x576 recommended)" + }, + "width": { + "node_id": 4, + "widget_index": 0, + "type": "integer", + "required": false, + "default": 1024, + "min": 16, + "max": 16384, + "description": "Output video width" + }, + "height": { + "node_id": 4, + "widget_index": 1, + "type": "integer", + "required": false, + "default": 576, + "min": 16, + "max": 16384, + "description": "Output video height" + }, + "video_frames": { + "node_id": 4, + "widget_index": 2, + "type": "integer", + "required": false, + "default": 25, + "min": 1, + "max": 4096, + "description": "Number of frames to generate (25 for SVD-XT)" + }, + "motion_bucket_id": { + "node_id": 4, + "widget_index": 3, + "type": "integer", + "required": false, + "default": 127, + "min": 1, + "max": 1023, + "description": "Motion amount (higher = more motion)" + }, + "fps": { + "node_id": 4, + "widget_index": 4, + "type": "integer", + "required": false, + "default": 6, + "min": 1, + "max": 1024, + "description": "Frames per second for conditioning" + }, + "augmentation_level": { + "node_id": 4, + "widget_index": 5, + "type": "float", + "required": false, + "default": 0.0, + "min": 0.0, + "max": 10.0, + "description": "Noise augmentation level" + }, + "steps": { + "node_id": 5, + "widget_index": 2, + "type": "integer", + "required": false, + "default": 30, + "min": 1, + "max": 150, + "description": "Sampling steps (30 recommended)" + }, + "cfg": { + "node_id": 5, + "widget_index": 3, + "type": "float", + "required": false, + "default": 6.0, + "min": 0.0, + "max": 30.0, + "description": "Classifier-free guidance scale" + }, + "seed": { + "node_id": 5, + "widget_index": 0, + "type": "integer", + "required": false, + "default": 42, + "description": "Random seed for reproducibility" + }, + "output_fps": { + "node_id": 7, + "widget_index": 0, + "type": "integer", + "required": false, + "default": 6, + "description": "Output video framerate" + } + }, + "outputs": { + "video": { + "node_id": 7, + "type": "video", + "format": "MP4 (H.264)", + "resolution": "1024x576 (configurable)", + "duration": "~4.2 seconds @ 6fps (25 frames)" + } + }, + "performance": { + "avg_generation_time": "40-55 seconds", + "vram_usage": "~18-20GB", + "gpu_utilization": "95-100%" + }, + "use_cases": [ + "Extended animations with smooth motion", + "Longer video loops from single frames", + "Cinematic camera movements", + "Product animation showcases" + ], + "notes": [ + "SVD-XT generates 25 frames vs 14 frames in base SVD", + "Requires more VRAM (~18GB vs ~16GB)", + "Model auto-downloads on first use (~9GB)", + "Recommended resolution: 1024x576 (16:9)", + "Higher motion_bucket_id = more movement", + "Linear CFG guidance improves temporal consistency" + ] + } + }, + "version": 0.4 +} diff --git a/example_workflows/ultimate-sd-upscale-production-v1.jpg b/example_workflows/ultimate-sd-upscale-production-v1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..097a31cc5c178fa5dcca6b4af31997211df35bb8 GIT binary patch literal 6001 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.0.0 diff --git a/scripts/generate_previews.py b/scripts/generate_previews.py new file mode 100644 index 0000000..2a5e7d4 --- /dev/null +++ b/scripts/generate_previews.py @@ -0,0 +1,120 @@ +#!/usr/bin/env python3 +"""Generate placeholder preview images for ComfyUI workflow templates.""" + +from pathlib import Path +from PIL import Image, ImageDraw, ImageFont + +PREVIEW_WIDTH = 512 +PREVIEW_HEIGHT = 288 # 16:9 aspect ratio + +# Category colors based on filename patterns +# Order matters: more specific patterns first, generic ones last +CATEGORY_COLORS = { + # NSFW patterns (check first - most specific) + "lustify": "#9B2C2C", # Dark red - NSFW + "realvis": "#9B2C2C", # Dark red - NSFW + "pony": "#9B2C2C", # Dark red - NSFW + "nsfw": "#9B2C2C", # Dark red - NSFW + # Advanced patterns + "animatediff": "#4ad9d9", # Cyan - advanced + "controlnet": "#4ad9d9", # Cyan - advanced + "batch": "#4ad9d9", # Cyan - advanced + # Upscaling + "upscale": "#9b4ad9", # Purple - upscaling + # Generic type patterns (check last) + "t2i": "#4a90d9", # Blue - text-to-image + "i2v": "#d94a4a", # Red - image-to-video + "i2i": "#4ad96b", # Green - image-to-image + "t2m": "#d9a04a", # Orange - text-to-music + "m2m": "#d9a04a", # Orange - music-to-music +} +DEFAULT_COLOR = "#2d2d2d" + + +def get_color_for_workflow(filename: str) -> str: + """Determine background color based on filename.""" + lower = filename.lower() + for pattern, color in CATEGORY_COLORS.items(): + if pattern in lower: + return color + return DEFAULT_COLOR + + +def humanize_filename(filename: str) -> str: + """Convert filename to readable title.""" + # Remove extension and common suffixes + name = filename.replace('.json', '') + name = name.replace('-production-v1', '') + name = name.replace('-production', '') + name = name.replace('-v1', '') + # Replace separators with spaces + name = name.replace('-', ' ').replace('_', ' ') + # Title case + return name.title() + + +def generate_preview(json_path: Path, output_path: Path): + """Generate a placeholder preview image with workflow title.""" + filename = json_path.name + bg_color = get_color_for_workflow(filename) + title = humanize_filename(filename) + + # Create image + img = Image.new('RGB', (PREVIEW_WIDTH, PREVIEW_HEIGHT), bg_color) + draw = ImageDraw.Draw(img) + + # Try to load fonts + try: + title_font = ImageFont.truetype( + "/usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf", 24 + ) + except OSError: + title_font = ImageFont.load_default() + + # Word wrap title + words = title.split() + lines = [] + current_line = "" + for word in words: + test = f"{current_line} {word}".strip() + if len(test) > 28: + if current_line: + lines.append(current_line) + current_line = word + else: + current_line = test + if current_line: + lines.append(current_line) + + # Draw centered text + y_offset = PREVIEW_HEIGHT // 2 - (len(lines) * 30) // 2 + for line in lines: + bbox = draw.textbbox((0, 0), line, font=title_font) + text_width = bbox[2] - bbox[0] + x = (PREVIEW_WIDTH - text_width) // 2 + draw.text((x, y_offset), line, fill="white", font=title_font) + y_offset += 30 + + img.save(output_path, 'JPEG', quality=85) + + +def main(): + workflows_dir = Path(__file__).parent.parent / 'example_workflows' + + count = 0 + for json_file in sorted(workflows_dir.glob('*.json')): + preview_path = json_file.with_suffix('.jpg') + + if preview_path.exists(): + print(f"Skipping (exists): {json_file.name}") + continue + + generate_preview(json_file, preview_path) + print(f"Generated: {preview_path.name}") + count += 1 + + print(f"\nDone! Generated {count} preview images.") + + +if __name__ == '__main__': + main()