AutomationFlowsWeb Scraping › Generate Text-to-Video with ComfyUI

Generate Text-to-Video with ComfyUI

Original n8n title: Comfyui: Wan 2.2 5b - Text 2 Video

ComfyUI: wan 2.2 5b - text 2 video. Uses formTrigger, httpRequest, stopAndError. Event-driven trigger; 12 nodes.

Event trigger★★★★☆ complexity12 nodesForm TriggerHTTP RequestStop And Error
Web Scraping Trigger: Event Nodes: 12 Complexity: ★★★★☆ Added:
Generate Text-to-Video with ComfyUI — n8n workflow card showing Form Trigger, HTTP Request, Stop And Error integration

This workflow follows the Form Trigger → HTTP Request recipe pattern — see all workflows that pair these two integrations.

The workflow JSON

Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →

Download .json
{
  "name": "ComfyUI: wan 2.2 5b - text 2 video",
  "nodes": [
    {
      "parameters": {
        "formTitle": "Upload reference images",
        "formFields": {
          "values": [
            {
              "fieldLabel": "prompt",
              "fieldType": "textarea",
              "placeholder": "what should happen on the video",
              "requiredField": true
            },
            {
              "fieldLabel": "Negative prompt",
              "placeholder": "optional"
            }
          ]
        },
        "options": {}
      },
      "type": "n8n-nodes-base.formTrigger",
      "typeVersion": 2.2,
      "position": [
        -620,
        -60
      ],
      "id": "f7de41fc-a563-4e92-82ba-d5f3b877fa36",
      "name": "On form submission"
    },
    {
      "parameters": {
        "assignments": {
          "assignments": [
            {
              "id": "7d55d6da-a78c-4a28-9343-0ea9035a0aa3",
              "name": "COMFY_URL",
              "value": "={{   ((u) => {   let s = u.trim();   if (!/^https?:\\/\\//i.test(s)) s = 'https://' + s;   const parts = s.split('/');   return parts[0] + '//' + parts[2]; })($json.comfyui_url)  }}",
              "type": "string"
            },
            {
              "id": "c491a696-6081-4e42-98f5-0c3b75c16edc",
              "name": "NEGATIVE_PROMPT",
              "value": "={{ $('On form submission').item.json['Negative prompt'] || $json.negative_prompt }}",
              "type": "string"
            },
            {
              "id": "e179a11b-ab0b-4772-b151-10b0b7d49a8c",
              "name": "PROMPT",
              "value": "={{ $('On form submission').item.json.prompt }}",
              "type": "string"
            }
          ]
        },
        "options": {}
      },
      "type": "n8n-nodes-base.set",
      "typeVersion": 3.4,
      "position": [
        -100,
        -60
      ],
      "id": "677e7deb-bf71-48b6-bea7-46b46ba6b18c",
      "name": "Setup defaults"
    },
    {
      "parameters": {
        "url": "={{ $('Setup defaults').first().json.COMFY_URL }}/history/{{ $('Start the workflow with ComfyUI').first().json.prompt_id }}",
        "options": {}
      },
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [
        520,
        -60
      ],
      "id": "0fb73fc5-555b-49e1-8370-990732971fee",
      "name": "Get video generation status",
      "retryOnFail": true
    },
    {
      "parameters": {
        "amount": 10
      },
      "type": "n8n-nodes-base.wait",
      "typeVersion": 1.1,
      "position": [
        320,
        -60
      ],
      "id": "ec329f92-0ca2-499b-900f-391da62266ba",
      "name": "Wait until the video gets generated"
    },
    {
      "parameters": {
        "conditions": {
          "options": {
            "caseSensitive": true,
            "leftValue": "",
            "typeValidation": "strict",
            "version": 2
          },
          "conditions": [
            {
              "id": "5e89df7d-4c0e-4bd4-8a84-b1e28bdb1f7e",
              "leftValue": "={{ $json.keys().length > 0 && $json[$('Start the workflow with ComfyUI').item.json.prompt_id] && $json[$('Start the workflow with ComfyUI').item.json.prompt_id].status.completed }}",
              "rightValue": "",
              "operator": {
                "type": "boolean",
                "operation": "true",
                "singleValue": true
              }
            },
            {
              "id": "354e3206-bbe3-481d-876b-255eed39f7cf",
              "leftValue": "",
              "rightValue": "",
              "operator": {
                "type": "string",
                "operation": "equals",
                "name": "filter.operator.equals"
              }
            }
          ],
          "combinator": "and"
        },
        "options": {}
      },
      "type": "n8n-nodes-base.if",
      "typeVersion": 2.2,
      "position": [
        680,
        -60
      ],
      "id": "7f8edbdb-0dd2-46c7-83a2-2fce33dd7058",
      "name": "Completed?"
    },
    {
      "parameters": {
        "conditions": {
          "options": {
            "caseSensitive": true,
            "leftValue": "",
            "typeValidation": "strict",
            "version": 2
          },
          "conditions": [
            {
              "id": "9bfcdffd-8c7c-407d-b95c-83f8aa104845",
              "leftValue": "={{ $json[$('Start the workflow with ComfyUI').item.json.prompt_id].status.status_str === 'success' }}",
              "rightValue": "",
              "operator": {
                "type": "boolean",
                "operation": "true",
                "singleValue": true
              }
            }
          ],
          "combinator": "and"
        },
        "options": {}
      },
      "type": "n8n-nodes-base.if",
      "typeVersion": 2.2,
      "position": [
        980,
        -80
      ],
      "id": "14c2f182-2eee-4420-86dd-f2d7244db30d",
      "name": "Success?"
    },
    {
      "parameters": {
        "url": "={{ $('Setup defaults').first().json.COMFY_URL }}/view",
        "sendQuery": true,
        "queryParameters": {
          "parameters": [
            {
              "name": "type",
              "value": "output"
            },
            {
              "name": "filename",
              "value": "={{ $('Get video generation status').last().json[$('Start the workflow with ComfyUI').item.json.prompt_id].outputs.values().map(item => item.images).flat(Infinity).find(item => item.type === 'output').filename }}"
            },
            {
              "name": "subfolder",
              "value": "={{ $('Get video generation status').last().json[$('Start the workflow with ComfyUI').item.json.prompt_id].outputs['58'].images[0].subfolder }}"
            }
          ]
        },
        "sendBody": true,
        "contentType": "form-urlencoded",
        "bodyParameters": {
          "parameters": [
            {}
          ]
        },
        "options": {
          "redirect": {
            "redirect": {}
          }
        }
      },
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [
        1260,
        -240
      ],
      "id": "f5d3ffcf-e9b2-4417-a489-ecdf46be67f6",
      "name": "HTTP Request"
    },
    {
      "parameters": {
        "errorMessage": "An error occoured while generating the image"
      },
      "type": "n8n-nodes-base.stopAndError",
      "typeVersion": 1,
      "position": [
        1280,
        80
      ],
      "id": "42b6898a-7150-4c4e-9098-fc96865f1dc6",
      "name": "Stop and Error"
    },
    {
      "parameters": {
        "assignments": {
          "assignments": [
            {
              "id": "1ece166a-0536-4c3e-bf1f-e0d4ff300169",
              "name": "workflow",
              "value": "={\n  \"3\": {\n    \"inputs\": {\n      \"seed\": {{ (() => {\n  const max = 0xFFFFFFFF - 1;\n  const seed = Math.floor(Math.random() * max) + 1;\n  return seed;\n})() }},\n      \"steps\": 20,\n      \"cfg\": 5,\n      \"sampler_name\": \"uni_pc\",\n      \"scheduler\": \"simple\",\n      \"denoise\": 1,\n      \"model\": [\n        \"48\",\n        0\n      ],\n      \"positive\": [\n        \"6\",\n        0\n      ],\n      \"negative\": [\n        \"7\",\n        0\n      ],\n      \"latent_image\": [\n        \"55\",\n        0\n      ]\n    },\n    \"class_type\": \"KSampler\",\n    \"_meta\": {\n      \"title\": \"KSampler\"\n    }\n  },\n  \"6\": {\n    \"inputs\": {\n      \"text\": \"${PROMPT}\",\n      \"clip\": [\n        \"38\",\n        0\n      ]\n    },\n    \"class_type\": \"CLIPTextEncode\",\n    \"_meta\": {\n      \"title\": \"CLIP Text Encode (Positive Prompt)\"\n    }\n  },\n  \"7\": {\n    \"inputs\": {\n      \"text\": \"${NEGATIVE_PROMPT}\",\n      \"clip\": [\n        \"38\",\n        0\n      ]\n    },\n    \"class_type\": \"CLIPTextEncode\",\n    \"_meta\": {\n      \"title\": \"CLIP Text Encode (Negative Prompt)\"\n    }\n  },\n  \"8\": {\n    \"inputs\": {\n      \"samples\": [\n        \"3\",\n        0\n      ],\n      \"vae\": [\n        \"39\",\n        0\n      ]\n    },\n    \"class_type\": \"VAEDecode\",\n    \"_meta\": {\n      \"title\": \"VAE Decode\"\n    }\n  },\n  \"37\": {\n    \"inputs\": {\n      \"unet_name\": \"wan2.2_ti2v_5B_fp16.safetensors\",\n      \"weight_dtype\": \"default\"\n    },\n    \"class_type\": \"UNETLoader\",\n    \"_meta\": {\n      \"title\": \"Load Diffusion Model\"\n    }\n  },\n  \"38\": {\n    \"inputs\": {\n      \"clip_name\": \"umt5_xxl_fp8_e4m3fn_scaled.safetensors\",\n      \"type\": \"wan\",\n      \"device\": \"default\"\n    },\n    \"class_type\": \"CLIPLoader\",\n    \"_meta\": {\n      \"title\": \"Load CLIP\"\n    }\n  },\n  \"39\": {\n    \"inputs\": {\n      \"vae_name\": \"wan2.2_vae.safetensors\"\n    },\n    \"class_type\": \"VAELoader\",\n    \"_meta\": {\n      \"title\": \"Load VAE\"\n    }\n  },\n  \"48\": {\n    \"inputs\": {\n      \"shift\": 8,\n      \"model\": [\n        \"37\",\n        0\n      ]\n    },\n    \"class_type\": \"ModelSamplingSD3\",\n    \"_meta\": {\n      \"title\": \"ModelSamplingSD3\"\n    }\n  },\n  \"55\": {\n    \"inputs\": {\n      \"width\": 1280,\n      \"height\": 704,\n      \"length\": 121,\n      \"batch_size\": 1,\n      \"vae\": [\n        \"39\",\n        0\n      ]\n    },\n    \"class_type\": \"Wan22ImageToVideoLatent\",\n    \"_meta\": {\n      \"title\": \"Wan22ImageToVideoLatent\"\n    }\n  },\n  \"57\": {\n    \"inputs\": {\n      \"fps\": 24,\n      \"images\": [\n        \"8\",\n        0\n      ]\n    },\n    \"class_type\": \"CreateVideo\",\n    \"_meta\": {\n      \"title\": \"Create Video\"\n    }\n  },\n  \"58\": {\n    \"inputs\": {\n      \"filename_prefix\": \"video/ComfyUI\",\n      \"format\": \"auto\",\n      \"codec\": \"auto\",\n      \"video-preview\": \"\",\n      \"video\": [\n        \"57\",\n        0\n      ]\n    },\n    \"class_type\": \"SaveVideo\",\n    \"_meta\": {\n      \"title\": \"Save Video\"\n    }\n  }\n}",
              "type": "string"
            },
            {
              "id": "92df0709-c03c-400e-b2ac-1a8e3aff7416",
              "name": "comfyui_url",
              "value": "YOUR_COMFYUI_URL",
              "type": "string"
            },
            {
              "id": "fb621130-6eac-41ab-b514-576a0275f6b1",
              "name": "negative_prompt",
              "value": "\u8272\u8c03\u8273\u4e3d\uff0c\u8fc7\u66dd\uff0c\u9759\u6001\uff0c\u7ec6\u8282\u6a21\u7cca\u4e0d\u6e05\uff0c\u5b57\u5e55\uff0c\u98ce\u683c\uff0c\u4f5c\u54c1\uff0c\u753b\u4f5c\uff0c\u753b\u9762\uff0c\u9759\u6b62\uff0c\u6574\u4f53\u53d1\u7070\uff0c\u6700\u5dee\u8d28\u91cf\uff0c\u4f4e\u8d28\u91cf\uff0cJPEG\u538b\u7f29\u6b8b\u7559\uff0c\u4e11\u964b\u7684\uff0c\u6b8b\u7f3a\u7684\uff0c\u591a\u4f59\u7684\u624b\u6307\uff0c\u753b\u5f97\u4e0d\u597d\u7684\u624b\u90e8\uff0c\u753b\u5f97\u4e0d\u597d\u7684\u8138\u90e8\uff0c\u7578\u5f62\u7684\uff0c\u6bc1\u5bb9\u7684\uff0c\u5f62\u6001\u7578\u5f62\u7684\u80a2\u4f53\uff0c\u624b\u6307\u878d\u5408\uff0c\u9759\u6b62\u4e0d\u52a8\u7684\u753b\u9762\uff0c\u6742\u4e71\u7684\u80cc\u666f\uff0c\u4e09\u6761\u817f\uff0c\u80cc\u666f\u4eba\u5f88\u591a\uff0c\u5012\u7740\u8d70",
              "type": "string"
            }
          ]
        },
        "options": {}
      },
      "type": "n8n-nodes-base.set",
      "typeVersion": 3.4,
      "position": [
        -380,
        -60
      ],
      "id": "1f08ab0e-14b2-4ed9-a83a-722a1f9b0ea4",
      "name": "Configuration"
    },
    {
      "parameters": {
        "content": "# Configure me",
        "height": 420,
        "width": 260,
        "color": 3
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        -460,
        -280
      ],
      "id": "2c275d22-12c7-420f-b172-920b69ab1288",
      "name": "Sticky Note"
    },
    {
      "parameters": {
        "method": "POST",
        "url": "={{ $('Setup defaults').first().json.COMFY_URL }}/prompt",
        "sendBody": true,
        "specifyBody": "json",
        "jsonBody": "={\n  \"client_id\": \"n8n\",\n  \"prompt\": {{ \n\n    $('Configuration').item.json.workflow\n      .replace('${PROMPT}', $('Setup defaults').first().json.PROMPT)\n      .replace('${NEGATIVE_PROMPT}', $('Setup defaults').first().json.NEGATIVE_PROMPT) \n\n}}\n}",
        "options": {}
      },
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [
        60,
        -60
      ],
      "id": "a3d6ad94-891f-4e4d-861b-543a424f45d9",
      "name": "Start the workflow with ComfyUI"
    },
    {
      "parameters": {
        "content": "# \ud83d\udcda [Join our Skool community for support, premium content and more!](https://www.skool.com/ai-agents-az/about?w9)\n\n## Get premium variations of this workflow!\n\n## Be part of a growing community and help us create more content like this",
        "height": 300,
        "width": 700,
        "color": 6
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        -460,
        -620
      ],
      "id": "2eb38610-f368-4a22-ae45-bf140231693a",
      "name": "Sticky Note16"
    }
  ],
  "connections": {
    "On form submission": {
      "main": [
        [
          {
            "node": "Configuration",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Setup defaults": {
      "main": [
        [
          {
            "node": "Start the workflow with ComfyUI",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get video generation status": {
      "main": [
        [
          {
            "node": "Completed?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Wait until the video gets generated": {
      "main": [
        [
          {
            "node": "Get video generation status",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Completed?": {
      "main": [
        [
          {
            "node": "Success?",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Wait until the video gets generated",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Success?": {
      "main": [
        [
          {
            "node": "HTTP Request",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Stop and Error",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Configuration": {
      "main": [
        [
          {
            "node": "Setup defaults",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Start the workflow with ComfyUI": {
      "main": [
        [
          {
            "node": "Wait until the video gets generated",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "3d16e9b0-95ad-4ab5-8806-4465fea2e17e",
  "id": "DuIW59NyIFVGq0C4",
  "tags": []
}
Pro

For the full experience including quality scoring and batch install features for each workflow upgrade to Pro

About this workflow

ComfyUI: wan 2.2 5b - text 2 video. Uses formTrigger, httpRequest, stopAndError. Event-driven trigger; 12 nodes.

Source: https://github.com/Ker102/Kaelux-Automate/blob/main/data/workflows/episodes/episode_20_wan_t2v.json — original creator credit. Request a take-down →

More Web Scraping workflows → · Browse all categories →

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

Web Scraping

[n8n] Advanced URL Parsing and Shortening Workflow - Switchy.io Integration. Uses splitInBatches, stickyNote, httpRequest, html. Event-driven trigger; 56 nodes.

HTTP Request, GitHub, Stop And Error +1
Web Scraping

[](https://youtu.be/c7yCZhmMjtI)

HTTP Request, GitHub, Stop And Error +1
Web Scraping

Formtrigger Workflow. Uses formTrigger, googleDrive, httpRequest, stopAndError. Event-driven trigger; 28 nodes.

Form Trigger, Google Drive, HTTP Request +1
Web Scraping

Formtrigger Workflow. Uses formTrigger, googleDrive, httpRequest, stopAndError. Event-driven trigger; 28 nodes.

Form Trigger, Google Drive, HTTP Request +1
Web Scraping

Basic Create VM. Uses formTrigger, httpRequest, stopAndError. Event-driven trigger; 19 nodes.

Form Trigger, HTTP Request, Stop And Error