Nodes/DIGIT Nodes/DIGIT Seedance Video (2.0 / 2.5)
ComfyUI Node

DIGIT Seedance Video (2.0 / 2.5)

Seedance video from ComfyUI — three providers, one node, and a live price tag

By thedepartmentofexternalservices·Created 7 months ago·Updated 2 months ago· 0
DIGIT Seedance Video (2.0 / 2.5)
  • first_frame
  • last_frame
  • source_video
  • reference_image1
  • reference_image2
  • reference_image3
  • reference_image4
  • reference_image5
  • reference_image6
  • reference_image7
  • reference_image8
  • reference_image9
  • reference_video1
  • reference_video2
  • reference_video3
  • reference_audio1
  • reference_audio2
  • reference_audio3
  • video
  • video_paths
  • status
◄prompt►
◄providerfal►
◄modelseedance-2.0►
◄resolution720p►
◄aspect_ratio16:9►
◄duration5►
◄generate_audiotrue►
◄bitrate_modestandard►
◄batch_count4►
◄seed0►
◄video_taskauto►
◄muapi_routeauto►
◄negative_prompt►

ByteDance's Seedance is a closed video model - you literally cannot download it, so if you want it inside ComfyUI, you call it. That's what DIGIT Seedance Video does, and it's the rare node that gives you a real choice about how you call it: one node, one provider dropdown, and it routes to fal, MUAPI, or Replicate for Seedance 2.0 or 2.5.

The interesting part is what the providers differ on. This isn't just "pick your favorite reseller." fal is fast but filters strictly - it blocks real people and likenesses. MUAPI runs a much lighter filter (people are fine) and is the only route to 1080p/4K without the heavy censorship, at the cost of routing through a smaller provider. Replicate is the backup, ByteDance's own stock filter, 2.0 only. If content policy matters to you, you pick by filter, not by price. That's a real decision this node is honest about.

How it works

Mode auto-detects from what you connect, the same pattern as the Veo node in this pack: nothing connected → text-to-video; first_frame → image-to-video; first_frame + last_frame → interpolation; reference inputs → reference-to-video (up to 9 images, 3 videos, 3 audio - cite them in the prompt as @Image1, @Video1, @Audio1); source_video → Seedance 2.5 video edit (or video_task: extend to continue from the last frame).

The inputs that drive your bill:

  • provider - fal (default), muapi, or replicate. Filter difference is the real differentiator.
  • model - seedance-2.0 (default), seedance-2.0-fast, or seedance-2.5 (30s clips, video edit, MUAPI 4K).
  • resolution - 480p/720p/1080p/4k. Cost driver #1.
  • duration - cost driver #2, billed per second. 2.0 tops out at 15s, 2.5 at 30s. same_as_input probes your source video's length.
  • batch_count - 1–8, cost driver #3: you pay per clip.
  • aspect_ratio, generate_audio, bitrate_mode, seed, and negative_prompt (replicate only).

The muapi_route dropdown (default auto) is the escape hatch when you want a specific tier. And the node shows a live cost estimate that updates as you change provider/resolution/duration - a genuinely useful touch, because per-second video pricing is where surprise bills come from.

Outputs: video (first clip as a VIDEO tensor), video_paths (all clips - feed to a DIGIT Video Saver), and status (provider, route, actual cost, per-job request IDs).

Installing and configuring

Standard pack install:

cd ComfyUI/custom_nodes
git clone https://github.com/thedepartmentofexternalservices/comfyui-digit.git
cd comfyui-digit
pip install -r requirements.txt

Or ComfyUI Manager → search comfyui-digit. No GCP needed for this one - it's provider-key based: export FAL_KEY, MUAPIAPP_API_KEY, and/or REPLICATE_API_TOKEN before starting ComfyUI. If you hit "environment variable is not set," that's the fix.

Where people get burned

The two traps are filters and prices. Pick fal because it's the default, feed it a real person, and watch it refuse - that's the strict filter, not a bug; switch to muapi if people are the job. And don't assume 4K on muapi 2.5 is native - it's upscaled from 720p there, while 2.0's 4K VIP route is native. The cost strip and the status output's actual Cost: line exist precisely because this stuff adds up fast. Start with one clip, read the price line, then scale the batch.

CategoryDIGIT

Inputs (31)

NameTypeDefaultDescription
promptSTRING—
providerCOMBOfalfal — Strict filtering: blocks real people and likenesses. Fastest queue. muapi — Low/reduced filtering: people OK. Cheapest at 480/720p; only low-censorship route to 1080p/4K. replicate — ByteDance stock filter: blocks sensitive content incl. people. Backup provider.
modelCOMBOseedance-2.0fal + muapi. seedance-2.5 unlocks 30s clips, MUAPI 4K (upscaled), and video edit/extend. Replicate is 2.0 only.
resolutionCOMBO720pCost driver #1. On muapi 2.0, 1080p/4k auto-route to VIP. On muapi 2.5, 1080p/4k are upscaled from 720p. fal 2.5 tops out at 720p.
aspect_ratioCOMBO16:97 options: auto, 21:9, 16:9, 4:3, 1:1, 3:4, +1
durationCOMBO5Cost driver #2 — billed per second. 2.0 max 15s, 2.5 max 30s. same_as_input probes the first connected source/reference video. Video edit inherits source length (use same_as_input or auto).
generate_audioBOOLEANtrue—
bitrate_modeCOMBOstandardHigh requests a larger, higher-quality encode (fal + muapi).
batch_countINT41–8Cost driver #3 — you pay per clip. Submits this many generations before polling.
seedINT00–21474836470 creates distinct random seeds. A positive value is the first seed in a consecutive batch. fal + replicate always; MUAPI Seedance 2.5 also accepts seed.
first_frameoptIMAGEImage-to-video mode. Mutually exclusive with reference inputs and source_video.
last_frameoptIMAGEOptional end frame for first-to-last interpolation, or MUAPI 2.5 video-extend target frame.
source_videooptVIDEOSeedance 2.5 video edit (default) or extend. Mutually exclusive with first_frame and reference_video*.
video_taskoptCOMBOautoUsed when source_video is connected. auto = edit. extend continues from the last frame.
muapi_routeoptCOMBOautomuapi only. auto = cheapest low-censorship 2.0 endpoint, or the matching 2.5 endpoint when model is seedance-2.5.
negative_promptoptSTRINGreplicate only.
reference_image1optIMAGE—
reference_image2optIMAGE—
reference_image3optIMAGE—
reference_image4optIMAGE—
reference_image5optIMAGE—
reference_image6optIMAGE—
reference_image7optIMAGE—
reference_image8optIMAGE—
reference_image9optIMAGE—
reference_video1optVIDEO—
reference_video2optVIDEO—
reference_video3optVIDEO—
reference_audio1optAUDIO—
reference_audio2optAUDIO—
reference_audio3optAUDIO—

Outputs (3)

NameTypeDescription
videoVIDEO—
video_pathsVIDEO_PATHS—
statusSTRING—