Video to URL
Hand your generated video a public URL — no server, no API key
- video
- url
You just spent twenty minutes on a Wan clip and now you want to show it to someone. That's the moment Video to URL exists for: it takes the VIDEO object sitting on your canvas, uploads it somewhere public, and hands you back a URL string you can paste into Discord, a workflow, or an API call. No server to stand up, no API key to hunt for, no wrestling with temp-file hosts. The name slightly oversells it, mind you - it uploads to one specific free host rather than any CDN of your choosing - but for sharing generated clips it's genuinely the path of least resistance.
How it works
Under the hood this node is a small file-transfer utility wearing a node costume. It pulls the raw bytes out of whatever VIDEO object you feed it - it handles the way VideoHelperSuite and ComfyUI's own video nodes each package their files, falling back to a save_to call when it can't find a path - then POSTs the file as a multipart upload to https://ai.kefan.cn/api/upload/local and returns the URL from the response. That's the whole mechanism, and it's the whole reason the node needs nothing from you beyond a network connection.
The sleeper feature is the cache. Before uploading, it hashes the video bytes and checks a url_mapping.json it keeps in your temp directory; identical content returns the previous URL instantly, with zero re-upload. Re-run a workflow that produces the same clip and the node is effectively free. Worth knowing when you're iterating.
The inputs that matter
This is a deliberately skinny node - there are only two things to set:
- video (VIDEO, optional) - the video object you want public. Leave it unconnected and the node politely outputs an empty string instead of erroring, which is handy if you're building a conditional workflow where the upload only happens when a video actually shows up.
- timeout (INT, default 30, range 5–300) - how many seconds the upload request is allowed to take before giving up.
The single output, url (STRING), is a plain text URL. Wire it into anything that eats strings - a show-text node, an LLM node that needs a media link, or back into this pack's own URL to Video node to pull the clip into another ComfyUI instance. That round trip is the intended trick: generate locally, hand a friend the URL, they reload it with URL to Video.
Install
It ships in the ComfyUI-1hewNodes pack, so install the pack, not a single node:
cd ComfyUI/custom_nodes
git clone https://github.com/1hew/ComfyUI-1hewNodes
Restart ComfyUI, or just search "1hewNodes" in ComfyUI Manager and let it do the same thing. The pack's requirements.txt is a heavy list - rembg, transformers, ultralytics and friends - but those belong to the detection nodes; Video to URL itself only leans on requests, which you almost certainly already have. Also note this pack is written against ComfyUI's newer V3 backend API (io.ComfyNode), so it needs a reasonably current ComfyUI, not an ancient one.
Troubleshooting & gotchas
The one real failure mode is the timeout: big clips on slow upstreams can blow past the default 30 seconds, and the node raises a hard error when the upload fails. If you're moving long or high-res video, bump timeout toward 300 before blaming anything else.
The bigger caveat is one you should make before you use it, not after: your video goes to a public third-party host. Anyone with the URL can view it, there's no auth, and free-tier upload services occasionally change their endpoints or vanish. Fine for sharing a Wan clip with a friend. Genuinely bad idea for anything private or sensitive. The cache also means the same bytes resolve to the same URL, so if you'd rather a re-upload got a fresh link, you won't get one - that's the feature working as designed.
This node is new (v3.23.0) and niche enough that there's no community lore around it yet, which is itself the honest review: if all you need is a quick shareable link, it does exactly one thing and does it quietly.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| timeout | INT | 305–300 | — |
| videoopt | VIDEO | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| url | STRING | — |