Nodes/ComfyUI_Sora/Storyboard-Character
ComfyUI Node

Storyboard-Character

Build a Sora character from a local clip

By xuchenxu168·Created 12 months ago·Updated 10 months ago· 5
Storyboard-Character
  • video
  • character_id
  • username
  • permalink
  • profile_picture_url
  • profile_image
  • response
◄api_providert8►
◄api_key►
◄timestamps1,3►
◄video_url►
◄character_name►
◄seed0►
◄timeout300►
◄download_profile_imagetrue►

StoryboardCharacter is the pack's other character-creation node, and it's the one that works the way you'd hope: give it a local video, and it registers a reusable character with the Sora reseller (T8, Comfly, or Aabao) using a slice of that footage. Where AabaoCharacter demands a public URL, this node accepts a local VIDEO object, picks frames from it, and for Aabao it will even try a direct multipart file upload. If you have a clip of your subject on disk and want a character ID you can reuse, this is the friendlier door.

How it works

You give it a timestamps string in the form start,end in seconds (default 1,3), and the node validates that range: the slice must be between 1 and 3 seconds long, start at or after 0, and end after it starts. Then it calls the provider's character endpoint with those timestamps and your video reference. The provider looks at that 1–3 second slice and builds a character profile from it, returning a character_id, a username, and a shareable permalink. If download_profile_image is on, it also fetches the provider's profile picture and hands it back as an IMAGE tensor.

Source handling differs by provider:

  • Aabao - can take a local video path and upload it (multipart) if you haven't given a URL.
  • T8 / Comfly - pass an external video_url; the url field in the payload is what the server fetches.

Inputs and outputs

  • timestamps - required. start,end in seconds, slice length must be 1–3s. The whole node revolves around this.
  • video - optional local VIDEO input; the node reads saved_path/path off it.
  • video_url - optional fallback external URL (required for the t8/comfly path).
  • character_name - a name for the character; used on the Aabao path.
  • seed / timeout / download_profile_image - reproducibility, request timeout (60–600s), and whether to fetch the profile picture.

Outputs: character_id, username, permalink, profile_picture_url (all STRING), profile_image (IMAGE), and response (STRING - a JSON summary, including a friendly error message when validation fails).

Install

Standard pack install - ComfyUI Manager → search "ComfyUI_Sora", or:

cd ComfyUI/custom_nodes
git clone https://github.com/xuchenxu168/ComfyUI_Sora
cd ComfyUI_Sora && pip install -r requirements.txt

Keys come from config.json - the node looks up t8_*, comfly_*, or aabao_* keys and base URLs (it even has a zhenzhen_* fallback for the T8 key, a leftover from the pack's earlier provider).

Common issues

  • "Duration < 1s" / "Duration > 3s" - the node is strict: your start/end slice must land between 1 and 3 seconds. A 1,3 range is 2 seconds and passes; 1,5 doesn't.
  • "Bad URL scheme" - video_url must start with http(s). No local paths in that field.
  • "No key found for provider" - the node couldn't find a key for the selected provider in config.json or the node field. Check which provider you're on - the default is T8.
  • Character from the wrong part of the video - the timestamps select the slice, so make sure the 1–3s window actually shows the person's face clearly. That's the footage the model learns from.
  • profile_image comes back blank/grey - the download failed (or was skipped); the node returns a blank placeholder IMAGE rather than erroring. Check profile_picture_url and grab it manually.

Reach for this when you've got the subject on disk and you want their character ID for downstream storyboard or remix work. It's the local-first sibling to AabaoCharacter's URL-only approach.

CategoryKen-Chen/sora

Inputs (9)

NameTypeDefaultDescription
api_providerCOMBOt87 options: t8, t8-us, t8-hk, comfly, comfly-us, comfly-hk, +1
api_keySTRING—
timestampsSTRING1,3—
videooptVIDEO—
video_urloptSTRING—
character_nameoptSTRING—
seedoptINT00–2147483647—
timeoutoptINT30060–600—
download_profile_imageoptBOOLEANtrue—

Outputs (6)

NameTypeDescription
character_idSTRING—
usernameSTRING—
permalinkSTRING—
profile_picture_urlSTRING—
profile_imageIMAGE—
responseSTRING—