Tags: motionsam3sam3.1segmentationtrackingrunpod-serverlessvolume-backed
Inputs (7)#
The typed parameter surface callers bind when they request this workflow. Enum options and numeric bounds are the values the workflow document declares.
source_videovideorequiredtext_promptstringrequireddefault personthresholdfloatdefault 0.5min 0.0max 1.0max_objectsintegerdefault 4min 0max 64detect_intervalintegerdefault 1min 1max 240obj_idintegerdefault -1min -1max 63output_fpsfloatdefault 16.0min 1.0max 60.0ComfyUI node graph (16)#
The executable ComfyUI prompt graph: 16 nodes across 14 distinct node classes, wired by 21 data dependencies. Nodes tinted green come from a custom node pack this workflow declares; the rest are ComfyUI core / baked-community classes.
Nodes (16)#
1LoadVideocorefile = {{source_video}} tmplVIDEO2GetVideoComponentscorevideo = ◂ node 1 · out[0]IMAGEAUDIOFLOATCOMBOCOMBO3CheckpointLoaderSimplecoreckpt_name = sam3.1_multiplex_fp16.safetensorsMODELCLIPVAE4CLIPTextEncodecoreclip = ◂ node 3 · out[1]text = {{text_prompt}} tmplCONDITIONING5SAM3_VideoTrackcoreimages = ◂ node 2 · out[0]model = ◂ node 3 · out[0]conditioning = ◂ node 4 · out[0]detection_threshold = {{threshold}} tmplmax_objects = {{max_objects}} tmpldetect_interval = {{detect_interval}} tmplSAM3_TRACK_DATA6SAM3_TrackToMaskcoretrack_data = ◂ node 5 · out[0]object_indices = {{'' if obj_id < 0 else str(int(obj_id))}} tmplMASK7MaskToImagecoremask = ◂ node 6 · out[0]IMAGE8CreateVideocoreimages = ◂ node 7 · out[0]fps = {{output_fps}} tmplVIDEO9SaveVideocorevideo = ◂ node 8 · out[0]filename_prefix = sam3-maskformat = mp410GetImageSizecoreimage = ◂ node 2 · out[0]INTINTINT11SolidMaskcorevalue = 0.5width = ◂ node 10 · out[0]height = ◂ node 10 · out[1]MASK12MaskCompositecoredestination = ◂ node 6 · out[0]source = ◂ node 11 · out[0]x = 0y = 0operation = multiplyMASK13EmptyImagecorewidth = ◂ node 10 · out[0]height = ◂ node 10 · out[1]batch_size = 1color = 65280IMAGE14ImageCompositeMaskedcoredestination = ◂ node 2 · out[0]source = ◂ node 13 · out[0]x = 0y = 0resize_source = falsemask = ◂ node 12 · out[0]IMAGE15CreateVideocoreimages = ◂ node 14 · out[0]fps = {{output_fps}} tmplVIDEO16SaveVideocorevideo = ◂ node 15 · out[0]filename_prefix = sam3-overlayformat = mp4Parameter banks (1)#
The prompt / configuration lookup tables this workflow keys into from its inputs — the vocabulary that turns a style / palette / preset selection into graph parameters.
requires_families (1)#
sam31Models & dependencies#
Models required (1)#
sam3.1_multiplex_fp16.safetensorsOutput contract#
What a successful run of this workflow returns.
primary{"type": "video", "format": "mp4", "codec": "h264", "fps_source": "declared", "audio": false, "alpha": false, "description": "Grayscale mask video, one frame per source frame."}secondary{"type": "video", "format": "mp4", "codec": "h264", "fps_source": "declared", "audio": false, "alpha": false, "description": "Preview overlay: the tracked region tinted green at 50 % over the source frames."}Taxonomy & routing#
How the control plane classifies this workflow — from the committed workflow-taxonomy-registry.json. It drives the consistency / control surface the agentic director can exercise over the workflow.
assetFamilyregion-edited-videooutputPackageProfilevideo-master-profilecontrolModalitiesmodel-lockprompt-template-locktemporal-lockcontrolnet-segmentationconsistencyDimensionsidentitymotionnotesSAM 3.1 text-prompted video tracking on the core SAM3_VideoTrack node. It edits no pixels of the source -- it produces the MASK the region-editing graphs then use -- so it is filed under region-edited-video as the producer half of that family. identity is a real dimension here: the tracker's job is to keep the same object selected across frames.