Slapshot — Rotoscoping
The job you'd rather outsource than draw by hand
- video
- mask_00
- mask_01
- mask_02
- mask_03
- mask_04
- mask_05
- mask_06
- mask_07
- mask_08
- mask_09
Rotoscoping is the video job people hate doing by hand, which is exactly why it became the first thing AI video tooling promised to kill. This node is that promise, in cloud form: you feed it a video, it cuts your subject out of every frame, and you download clean alpha mattes. No local model, no GPU - Slapshot runs the whole thing on their servers and drops the result in your browser.
Here's the workflow context. In ComfyUI you can get per-frame mattes locally - BiRefNet for clean edges, SAM2 for video tracking - and the community's advice is consistent: if the subject moves, use the video-based model or the alpha flickers frame to frame. That works, but it's a chunk of VRAM and a fiddly setup. What this node sells is the same output without the fiddling, plus a feature local node setups mostly lack: reference frames. Give it up to ten frames where you've already marked the subject, and the cloud model uses those to hold the matte steady across the whole shot.
Where it lands in a real pipeline: you generate or shoot a clip, rotoscope out the subject, and drop that alpha into a Nuke or After Effects comp - the VFX handoff corner where people normally leave ComfyUI entirely.
How it works
The node grabs your video's source file, checks it's an .mp4/.mov under 3500 frames, and uploads it to Slapshot's storage. Any connected mask frames go up too, and then a roto job is submitted. A background thread polls every 60 seconds until inference finishes, and the download buttons light up: Download Hard Mattes (a binary alpha mask per frame) and Download MB Mattes (motion-blur-aware mattes, for the frames where fast motion smears the silhouette). Results stay reachable via the job ID field and Download Previous Job Result if you lose the download.
The inputs that matter
video- anything outputting aVIDEOsocket (.mp4/.mov, max 3500 frames).mask_00throughmask_09- up to ten optional reference mask frames, each connected from a Load Image node.
The masks come with a hard rule, and it's the thing that will bite you: each mask file must be named with a 5-digit frame number - 00014.png, not frame14.png. The node reads the frame number out of the filename, not the socket, and validates it against your video's length. A mask targeting frame 3000 in a 200-frame clip errors before anything uploads. Name your files right and the slot order doesn't matter; the number is what counts.
One detail worth knowing: the node converts whatever mask you feed it to a red-on-black image before upload, because that's what the inference pipeline expects. Feed it a filled selection, not a soft grey gradient, and you'll be fine.
Install and API key
ComfyUI Manager - search Slapshot, install, restart. Or:
cd ComfyUI/custom_nodes
git clone https://github.com/slapshot-ai/comfyui-slapshot
restart. Dependencies are requests, opencv-python-headless, and imageio[ffmpeg] (the README claims only requests; the source genuinely uses OpenCV for frame counting).
All four Slapshot nodes need a key from app.slapshot.ai (Profile → INTEGRATIONS → ComfyUI), set in ComfyUI's root .env:
SLAPSHOT_API_KEY=your-key-here
or in custom_nodes/comfyui-slapshot/config.ini under [API]. .env wins if both are set. Restart after, or the "no API key" modal greets you the moment you queue.
Gotchas
- Free tier caps at 1000 frames total, across every Slapshot job you've run. Rotoscoping burns frames fast.
- 3500-frame cap per video.
- Masks must use 5-digit frame-number filenames, and their targets must exist in the video. This is the #1 way people bounce off the node.
- Your footage leaves the machine and sits on Slapshot's servers for the job. Fine for your own footage; wrong tool for NDA'd material.
And the honest reputational note: this pack is fresh (repo went up mid-2026, version 0.1.10, zero community chatter). It's a vendor-published, MIT-licensed integration - read the small codebase once before you hand it your key, same as you should for any node that's built to call home.
Inputs (11)
| Name | Type | Default | Description |
|---|---|---|---|
| video | VIDEO | — | |
| mask_00opt | IMAGE | — | |
| mask_01opt | IMAGE | — | |
| mask_02opt | IMAGE | — | |
| mask_03opt | IMAGE | — | |
| mask_04opt | IMAGE | — | |
| mask_05opt | IMAGE | — | |
| mask_06opt | IMAGE | — | |
| mask_07opt | IMAGE | — | |
| mask_08opt | IMAGE | — | |
| mask_09opt | IMAGE | — |
Outputs (0)
No outputs