{ "id": "5565c5d4-86d3-4baa-90a8-158c4cc1ddb3", "revision": 0, "last_node_id": 4699, "last_link_id": 4178, "nodes": [ { "id": 467, "type": "MarkdownNote", "pos": [ -1750.5323607657106, 3646.464094879501 ], "size": [ 389.1205006928807, 142.9747966097172 ], "flags": { "collapsed": false }, "order": 0, "mode": 0, "inputs": [], "outputs": [], "title": "Prompting LTX-2", "properties": {}, "widgets_values": [ "## LTX-2 Prompting Tips\n1. **Core Actions**: Describe events and actions as they occur over time \n2. **Audio**: Describe sounds and dialogue needed for the scene \n3. **Reference Image**: Do not repeat details already present \n4. **Consistency**: Avoid instructions that do not match the reference image, as this will degrade results" ], "color": "#222", "bgcolor": "#000" }, { "id": 476, "type": "MarkdownNote", "pos": [ -1750.5323607657106, 3507.2808841569163 ], "size": [ 389.1205006928807, 90.9765625 ], "flags": { "collapsed": false }, "order": 1, "mode": 0, "inputs": [], "outputs": [], "title": "About Models", "properties": {}, "widgets_values": [ "Download models from here:\n\n\nhttps://huggingface.co/Kijai/LTX2.3_comfy\n\nText encoder : https://huggingface.co/Comfy-Org/ltx-2" ], "color": "#222", "bgcolor": "#000" }, { "id": 524, "type": "MarkdownNote", "pos": [ -1696.9181840692995, 4718.450974871355 ], "size": [ 351.9045647926396, 160.12709455978893 ], "flags": { "collapsed": false }, "order": 2, "mode": 0, "inputs": [], "outputs": [], "title": "Video settings", "properties": {}, "widgets_values": [ "**MAX SIZE**: Max pixels of the output video (longest side). If lower ram/vram try reasonable sizes such as 768, 832 or 960. And if the original video is lower than that, set same as original video \n\n**EXTEND in seconds** : How much to add to your video. LTX works best with 5s, 10s or 15s\n\nYou can do multiple times though. For example first extend 10 seconds, then use the extended video and extend another 10 seconds and so on (you should be able to do this for quite a long shot, but the quality and consistency might degrade over time)\n" ], "color": "#222", "bgcolor": "#000" }, { "id": 468, "type": "MarkdownNote", "pos": [ -1743.9920411326484, 4194.031993698219 ], "size": [ 389.1205006928807, 96.88451363344984 ], "flags": { "collapsed": false }, "order": 3, "mode": 0, "inputs": [], "outputs": [], "title": "User Made Loras", "properties": {}, "widgets_values": [ "If using some user made LTX-2 loras they sometimes are not trained on audio, so it will produce very noisy audio outputs. Try use KJNodes LTX-2 Lora Loader Advanced in such cases, and set the non video strenght to zero\n" ], "color": "#222", "bgcolor": "#000" }, { "id": 470, "type": "MarkdownNote", "pos": [ -1731.5731302823424, 4030.690594297678 ], "size": [ 389.1205006928807, 88 ], "flags": { "collapsed": false }, "order": 4, "mode": 0, "inputs": [], "outputs": [], "title": "Prompt Enhancer (Optional)", "properties": {}, "widgets_values": [ "This automagically enhances your prompt using the already loaded Gemma model. But it can be a bit sensitive to having correct Gemma if using GGUF models. Alternatively you can bypass/disable this feature " ], "color": "#222", "bgcolor": "#000" }, { "id": 469, "type": "MarkdownNote", "pos": [ -1790.1362240029582, 3851.113966857313 ], "size": [ 389.1205006928807, 88 ], "flags": { "collapsed": false }, "order": 5, "mode": 0, "inputs": [], "outputs": [], "title": "Sampler Preview", "properties": {}, "widgets_values": [ "Tiny VAE for sampler previews. \nOptionally you can drop this for a lower res latent RGB built into the node \n\nhttps://github.com/madebyollin/taehv/blob/main/safetensors/taeltx2_3.safetensors" ], "color": "#222", "bgcolor": "#000" }, { "id": 633, "type": "MarkdownNote", "pos": [ -1694.2779747172633, 4542.2129193543 ], "size": [ 345.7789733972031, 130.87522616235765 ], "flags": { "collapsed": false }, "order": 6, "mode": 0, "inputs": [], "outputs": [], "title": "SINGLE PASS vs 2-PASS WORKFLOW", "properties": {}, "widgets_values": [ "The single pass workflow mode can sometimes work best better since 2-pass workflow the frames runs through 2 samplers and might introduce slight difference in color tones and sharpness compared input video. The blend frames output at end will help make that be more seamless though. \n\n2-pass workflow is usually a faster and easier on ram/vram though. Feel free to try both modes with an easy toggle on/off\n" ], "color": "#222", "bgcolor": "#000" }, { "id": 4696, "type": "VHS_LoadVideoFFmpeg", "pos": [ -1272.4260339298582, 3839.113962111028 ], "size": [ 314.5416717529297, 286 ], "flags": {}, "order": 7, "mode": 0, "inputs": [ { "name": "meta_batch", "shape": 7, "type": "VHS_BatchManager", "link": null }, { "name": "vae", "shape": 7, "type": "VAE", "link": null }, { "name": "force_rate", "type": "FLOAT", "widget": { "name": "force_rate" }, "link": 4168 } ], "outputs": [ { "name": "IMAGE", "type": "IMAGE", "links": [ 4165 ] }, { "name": "mask", "type": "MASK", "links": null }, { "name": "audio", "type": "AUDIO", "links": [ 4167 ] }, { "name": "video_info", "type": "VHS_VIDEOINFO", "links": [ 4166 ] } ], "properties": { "cnr_id": "comfyui-videohelpersuite", "ver": "a6879b83886490dd434249cf729b7cdd2aace241", "Node name for S&R": "VHS_LoadVideoFFmpeg" }, "widgets_values": { "video": "V2V-int8_00005_.mp4", "force_rate": 0, "custom_width": 0, "custom_height": 0, "frame_load_cap": 0, "start_time": 0, "format": "LTXV", "videopreview": { "hidden": false, "paused": true, "params": { "filename": "V2V-int8_00005_.mp4", "type": "input", "format": "video/mp4", "force_rate": 0, "custom_width": 0, "custom_height": 0, "frame_load_cap": 0, "start_time": 0 }, "muted": true } } }, { "id": 4699, "type": "393acae1-e660-4d63-959d-597e590cb341", "pos": [ -948.2895150557489, 3841.1269936701997 ], "size": [ 468.0438877428369, 857.0774792075631 ], "flags": {}, "order": 9, "mode": 0, "inputs": [ { "name": "", "type": "*", "link": 4165 }, { "name": "video_info", "type": "VHS_VIDEOINFO", "link": 4166 }, { "name": "on_true", "type": "AUDIO", "link": 4167 }, { "label": "max size", "name": "value_1", "type": "INT", "widget": { "name": "value_1" }, "link": null }, { "label": "duration", "name": "value_2", "type": "INT", "widget": { "name": "value_2" }, "link": null }, { "label": "fps", "name": "value_3", "type": "FLOAT", "widget": { "name": "value_3" }, "link": null }, { "label": "input has audio", "name": "value_4", "type": "BOOLEAN", "widget": { "name": "value_4" }, "link": null }, { "label": "single pass", "name": "value_5", "type": "BOOLEAN", "widget": { "name": "value_5" }, "link": null }, { "label": "enhanced prompt", "name": "value_6", "type": "BOOLEAN", "widget": { "name": "value_6" }, "link": null }, { "label": "ref. lenght", "name": "value_7", "type": "INT", "widget": { "name": "value_7" }, "link": null } ], "outputs": [ { "name": "FLOAT", "type": "FLOAT", "links": [ 4168 ] }, { "name": "VIDEO", "type": "VIDEO", "links": [ 4169 ] } ], "properties": { "proxyWidgets": [ [ "487", "value" ], [ "497", "value" ], [ "211", "value" ], [ "214", "value" ], [ "594", "value" ], [ "2214", "value" ], [ "4240", "value" ], [ "305", "value" ], [ "4678", "videopreview" ], [ "4230", "videopreview" ], [ "4572", "videopreview" ] ], "cnr_id": "comfy-core", "ver": "0.21.0" }, "widgets_values": [] }, { "id": 4698, "type": "SaveVideo", "pos": [ -463.8840365293592, 3848.2708371051767 ], "size": [ 549.8596100093423, 839.2761505117342 ], "flags": {}, "order": 8, "mode": 0, "inputs": [ { "name": "video", "type": "VIDEO", "link": 4169 } ], "outputs": [ { "name": "video", "type": "VIDEO", "links": null } ], "properties": { "cnr_id": "comfy-core", "ver": "0.21.0", "Node name for S&R": "SaveVideo" }, "widgets_values": [ "video/V2V-int8", "auto", "auto" ] } ], "links": [ [ 4165, 4696, 0, 4699, 0, "IMAGE" ], [ 4166, 4696, 3, 4699, 1, "VHS_VIDEOINFO" ], [ 4167, 4696, 2, 4699, 2, "AUDIO" ], [ 4168, 4699, 0, 4696, 2, "FLOAT" ], [ 4169, 4699, 1, 4698, 0, "VIDEO" ] ], "groups": [], "definitions": { "subgraphs": [ { "id": "6002fb3c-ab34-4ad8-894e-fccaa60fd8c9", "version": 1, "state": { "lastGroupId": 89, "lastNodeId": 4699, "lastLinkId": 4178, "lastRerouteId": 0 }, "revision": 0, "config": {}, "name": "PROMPT ENHANCER", "inputNode": { "id": -10, "bounding": [ -685.3286646587292, 5338.102625759812, 128, 128 ] }, "outputNode": { "id": -20, "bounding": [ 426.44380261625787, 5440.8298984870835, 132.568359375, 68 ] }, "inputs": [ { "id": "adc59317-2766-45b3-8059-aced0af7e3f6", "name": "clip", "type": "CLIP", "linkIds": [ 844 ], "localized_name": "clip", "pos": [ -581.3286646587292, 5362.102625759812 ] }, { "id": "7d4f25ef-eb05-4cd5-87e4-020c7ae8b4f7", "name": "image", "type": "IMAGE", "linkIds": [ 870 ], "localized_name": "image", "shape": 7, "pos": [ -581.3286646587292, 5382.102625759812 ] }, { "id": "ccca1de5-a446-4ca9-a60e-47de9a99a9b0", "name": "string_b", "type": "STRING", "linkIds": [ 840, 3704 ], "localized_name": "string_b", "label": "prompt", "pos": [ -581.3286646587292, 5402.102625759812 ] }, { "id": "2f3daffa-e540-4fc1-805f-5230ea1fa7a5", "name": "", "type": "*", "linkIds": [ 3833 ], "label": "Enabled", "pos": [ -581.3286646587292, 5422.102625759812 ] } ], "outputs": [ { "id": "51e4f3c8-e5b7-4d16-8773-0f4defd17249", "name": "generated_text", "type": "STRING", "linkIds": [ 3705 ], "label": "generated_text", "pos": [ 450.44380261625787, 5464.8298984870835 ] } ], "widgets": [], "nodes": [ { "id": 482, "type": "StringConcatenate", "pos": [ -424.70944029468035, 5594.2198402198555 ], "size": [ 210, 150 ], "flags": { "collapsed": true }, "order": 1, "mode": 0, "inputs": [ { "localized_name": "string_a", "name": "string_a", "type": "STRING", "widget": { "name": "string_a" }, "link": 837 }, { "localized_name": "string_b", "name": "string_b", "type": "STRING", "widget": { "name": "string_b" }, "link": 840 } ], "outputs": [ { "localized_name": "STRING", "name": "STRING", "type": "STRING", "links": [ 841 ] } ], "properties": { "cnr_id": "comfy-core", "ver": "0.14.1", "Node name for S&R": "StringConcatenate" }, "widgets_values": [ "", "", "" ] }, { "id": 485, "type": "TextGenerateLTX2Prompt", "pos": [ -155.62995179792009, 5496.416822393545 ], "size": [ 389.41187385825936, 244 ], "flags": { "collapsed": false }, "order": 2, "mode": 0, "inputs": [ { "localized_name": "clip", "name": "clip", "type": "CLIP", "link": 844 }, { "localized_name": "image", "name": "image", "shape": 7, "type": "IMAGE", "link": 870 }, { "localized_name": "video", "name": "video", "shape": 7, "type": "IMAGE", "link": null }, { "localized_name": "audio", "name": "audio", "shape": 7, "type": "AUDIO", "link": null }, { "localized_name": "prompt", "name": "prompt", "type": "STRING", "widget": { "name": "prompt" }, "link": 841 } ], "outputs": [ { "localized_name": "generated_text", "name": "generated_text", "type": "STRING", "links": [ 1077, 3703 ] } ], "properties": { "cnr_id": "comfy-core", "ver": "0.14.1", "Node name for S&R": "TextGenerateLTX2Prompt" }, "widgets_values": [ "", 256, "off", false, true ] }, { "id": 3178, "type": "ComfySwitchNode", "pos": [ -75.09782994237855, 5308.147586328056 ], "size": [ 270, 78 ], "flags": {}, "order": 3, "mode": 0, "inputs": [ { "localized_name": "on_false", "name": "on_false", "type": "STRING", "link": 3704 }, { "localized_name": "on_true", "name": "on_true", "type": "STRING", "link": 3703 }, { "localized_name": "switch", "name": "switch", "type": "BOOLEAN", "widget": { "name": "switch" }, "link": 3833 } ], "outputs": [ { "localized_name": "output", "name": "output", "type": "STRING", "links": [ 3705 ] } ], "properties": { "cnr_id": "comfy-core", "ver": "0.20.1", "Node name for S&R": "ComfySwitchNode" }, "widgets_values": [ false ] }, { "id": 484, "type": "PrimitiveStringMultiline", "pos": [ -517.9388117908403, 5655.450393406237 ], "size": [ 321.3041194946351, 451.0615668579321 ], "flags": { "collapsed": false }, "order": 0, "mode": 0, "inputs": [], "outputs": [ { "localized_name": "STRING", "name": "STRING", "type": "STRING", "links": [ 837 ] } ], "title": "LTX-2 PROMPT INSTRUCT", "properties": { "cnr_id": "comfy-core", "ver": "0.14.1", "Node name for S&R": "PrimitiveStringMultiline" }, "widgets_values": [ "You are a Creative Assistant writing concise, action-focused image-to-video prompts. Given an image (first frame) and user Raw Input Prompt, generate a prompt to guide video generation from that image.\n\n#### Guidelines:\n- Analyze the Image: Identify Subject, Setting, Elements, Style and Mood.\n- Follow user Raw Input Prompt: Include all requested motion, actions, camera movements, audio, and details. If in conflict with the image, prioritize user request while maintaining visual consistency (describe transition from image to user's scene).\n- Describe only changes from the image: Don't reiterate established visual details. Inaccurate descriptions may cause scene cuts.\n- Active language: Use present-progressive verbs (\"is walking,\" \"speaking\"). If no action specified, describe natural movements.\n- Chronological flow: Use temporal connectors (\"as,\" \"then,\" \"while\").\n- Audio layer: Describe complete soundscape throughout the prompt alongside actionsβ€”NOT at the end. Align audio intensity with action tempo. Include natural background audio, ambient sounds, effects, speech or music (when requested). Be specific (e.g., \"soft footsteps on tile\") not vague (e.g., \"ambient sound\").\n- Speech (only when requested): Provide exact words in quotes with character's visual/voice characteristics (e.g., \"The tall man speaks in a low, gravelly voice\"), language if not English and accent if relevant. If general conversation mentioned without text, generate contextual quoted dialogue. (i.e., \"The man is talking\" input -> the output should include exact spoken words, like: \"The man is talking in an excited voice saying: 'You won't believe what I just saw!' His hands gesture expressively as he speaks, eyebrows raised with enthusiasm. The ambient sound of a quiet room underscores his animated speech.\")\n- Style: Include visual style at beginning: \"Style: