Nodes/Seedance 2.0 (Sjinn.ai)/🎬 Seedance 2.0 (Sjinn.ai)
ComfyUI Node

🎬 Seedance 2.0 (Sjinn.ai)

Seedance 2.0 in ComfyUI without the VRAM bill β€” this node spends credits, not GPUs

By steptoniteΒ·Created 5 months agoΒ·Updated 5 months agoΒ· 2
🎬 Seedance 2.0 (Sjinn.ai)
  • image_1
  • image_2
  • image_3
  • image_4
  • image_5
  • image_6
  • image_7
  • image_8
  • video_1
  • video_2
  • video_3
  • audio_1
  • audio_2
  • video
  • first_frame
  • last_frame
  • frames
β—„session_tokenβ–Ί
β—„api_keyβ–Ί
β—„promptβ–Ί
β—„ratio16:9β–Ί
β—„duration5β–Ί
β—„speed_modeproβ–Ί
β—„accelerate_real_facetrueβ–Ί
β—„smart_rescuefalseβ–Ί
β—„seed-1β–Ί

This is the node you reach for when you want ByteDance's Seedance 2.0 - the flagship video model your local Wan and LTX builds are constantly being compared to and losing - without renting a GPU or fighting a 14B checkpoint's VRAM requirements. It's a thin API wrapper around Sjinn.ai, a third-party host that resells Seedance 2.0, so everything runs on their servers. You pay in credits, not memory. The name might look like it's calling an API and needing a key, and here that's genuinely what's happening: no weights download, no diffusion runs on your card, nothing to quantize.

Seedance 2.0 is worth the trip. The community's standing complaint about the local video stack is that closed models are still "miles ahead" - and ByteDance's Seedance line is the closed model they're all measured against. This node drops that quality into your existing ComfyUI graph with a native VIDEO output, first/last frame previews, and a full frames batch you can feed into a VHS node. If you've ever eyeballed a cloud Seedance output and wished it were inside your workflow, this is the missing bridge.

What's actually happening under the hood

The node does zero local generation. Read the source and the whole thing is requests: it uploads your reference images, videos, and audio concurrently to Sjinn's R2 presigned URLs, fires off a task at their create_seedance20_video endpoint, then polls status every 15 seconds for up to 30 minutes until the video is done. It downloads the result to ComfyUI/output/api_s2/raw/, extracts frames with OpenCV, and hands you a VideoFromFile plus the frame tensors. The implementation is async with a shared thread pool, which means multiple copies of this node in one workflow run side by side instead of queueing - a nice touch for iterating on two takes at once.

The inputs that matter

Two of the three required fields are the whole game:

  • session_token - a __Secure-next-auth.session-token browser cookie from your sjinn.ai login. This is the fiddly one: grab it via F12 β†’ Application β†’ Cookies while logged in. It's good for roughly 30 days (or until your browser session ends), so treat it as perishable.
  • api_key - created from your sjinn.ai profile's API Keys page; used for status polling only.
  • prompt - where you call your references into play with @Image1, @Video1, @Audio1, then describe the motion: "@Image1 is the character. @Video1 is the camera motion reference. Cinematic slow motion, natural lighting."

The optional set is where the power lives: up to 8 reference images, 3 videos (≀720P and β‰₯2s, or it errors), and 2 audio clips. ratio, duration (4–15s), speed_mode (pro vs fast), and seed (-1 random, else reproducible) behave exactly like you'd expect. accelerate_real_face (default on) keeps faces consistent across frames; smart_rescue auto-rewrites your prompt if Sjinn's content filter blocks it - flip it off if you want your words used verbatim.

Installing it

Via ComfyUI Manager, Install via Git URL, paste https://github.com/steptonite/seedance2-sjinn-comfyui, install, restart. Or by hand:

cd ComfyUI/custom_nodes/
git clone https://github.com/steptonite/seedance2-sjinn-comfyui
../../python/bin/python -m pip install -r seedance2-sjinn-comfyui/requirements.txt

Restart ComfyUI. The requirements are requests, Pillow, numpy, torch, and opencv-python - you already have the first four, so the only real install is OpenCV. No models to download, which is the whole point. An optional sjinn_config.py in the node folder pre-fills your credentials so you don't paste a cookie every run.

Where people get burned

  • 401 errors mean your session token died. Grab a fresh cookie and move on; it's the #1 failure mode.
  • It must be ComfyUI v0.14+ - native VIDEO and AUDIO types are required, and the node refuses to run without them. A "socket missing" error on video_1 or audio_1 means update.
  • Black first_frame / empty frames = OpenCV isn't installed. pip install opencv-python.
  • The content filter is real. This is ByteDance's moderated API product. If a task fails policy (status=2), your credits are refunded, but smart_rescue on usually gets you a usable take.
  • Those 1–2 frame flickers are the model, not you. Community testing has found subtle noise spikes and chroma pops in every Seedance 2.0 clip - flow-denoise or temporal NR (a FlowDenoise-style node, or DaVinci's temporal noise reduction) cleans them without killing detail.

Cost reality check: 100 credits per second of output, so a 5-second clip runs 500 credits, with fast mode for iteration and pro for finals. It's a paid pipe, but it's the fastest way to benchmark the best closed video model against your local stack without buying a bigger card.

CategorySjinn.ai

Inputs (22)

NameTypeDefaultDescription
session_tokenSTRINGNextAuth session cookie from sjinn.ai browser login. Valid ~30 days.
api_keySTRINGSjinn.ai API key β€” used for status polling only.
promptSTRINGβ€”
image_1optIMAGEβ€”
image_2optIMAGEβ€”
image_3optIMAGEβ€”
image_4optIMAGEβ€”
image_5optIMAGEβ€”
image_6optIMAGEβ€”
image_7optIMAGEβ€”
image_8optIMAGEβ€”
video_1optVIDEOConnect Load Video node. Use @Video1 in prompt.
video_2optVIDEOConnect Load Video node. Use @Video2 in prompt.
video_3optVIDEOConnect Load Video node. Use @Video3 in prompt.
audio_1optAUDIOReference audio clip. Use @Audio1 in prompt.
audio_2optAUDIOReference audio clip. Use @Audio2 in prompt.
ratiooptCOMBO16:95 options: 16:9, 9:16, 1:1, 4:3, 3:4
durationoptCOMBO512 options: 4, 5, 6, 7, 8, 9, +6
speed_modeoptCOMBOpropro = higher quality / slower, fast = lower quality / quicker
accelerate_real_faceoptBOOLEANtruePreserve face consistency across frames.
smart_rescueoptBOOLEANfalseAuto-rewrite prompt if it violates content policy. Disable to use prompt verbatim. Note: hidden in Sjinn UI but still accepted by the API.
seedoptINT-1-1–4294967295-1 = random seed, 0–4294967295 = fixed seed

Outputs (4)

NameTypeDescription
videoVIDEOβ€”
first_frameIMAGEβ€”
last_frameIMAGEβ€”
framesIMAGEβ€”