Generated reference · ComfyUI workflow · Video & motion

Image to Video Animator

Transform static images into animated videos with controlled motion, breathing life into artwork and photographs

Video & motion24nodesGPU A6000out video~180sv1.0.0

On this page
24Graph nodes
23Node classes
19Inputs
6Models

Tags: videoanimationimg2vidmotionliving-imagetransform

Inputs (19)#

The typed parameter surface callers bind when they request this workflow. Enum options and numeric bounds are the values the workflow document declares.

input_imageimagerequired
Source image to animate
motion_typeenumdefault subtle_breathing
Type of motion to apply
options: subtle_breathinggentle_swayflowing_motioncamera_pancamera_zoomparallax_depthwater_ripplewind_effectfloating_elementsenergy_pulse
motion_intensityenumdefault subtle
Intensity of the motion
options: minimalsubtlemoderatedynamic
motion_directionenumdefault auto
Direction of motion
options: autoupdownleftrightcircular_cwcircular_ccwrandomcenter_outedges_in
animation_styleenumdefault cinematic
Overall animation style
options: cinematicdreamyenergeticmeditativenaturalsurrealhypnotic
preserve_compositionenumdefault strict
How closely to preserve the original composition
options: strictmoderateloose
add_effectsenumdefault none
Additional visual effects
options: nonelight_particlesdust_motesbokehlens_flarefog_wispsenergy_sparksrain_dropssnow_flakes
color_gradingenumdefault original
Color grading adjustment
options: originalwarm_cinematiccool_atmosphericvibrant_enhanceddesaturated_moodygolden_hourmoonlight
loop_modeenumdefault seamless
How the video loops
options: noneforward_loopping_pongseamless
duration_secondsintegerdefault 6min 3max 12
Video duration in seconds (frame count = duration * fps; capped for AnimateDiff sliding-context sampling)
fpsintegerdefault 8max 24
Frames per second (AnimateDiff motion is trained near 8fps; use interpolation downstream for higher rates)
output_resolutionenumdefault original
Output resolution (original maintains input size)
options: original480p720psquare_512
denoise_strengthfloatdefault 0.65min 0.3max 0.95
Denoise strength (higher = more motion, less preservation)
prompt_enhancementstringdefault
Optional additional prompt to guide animation
seedintegerdefault -1
Random seed
frame_upscalebooleandefault false
Per-frame 2x enhancement before encoding (RealESRGAN 4x then 0.5 resample); compute-heavy, off by default
checkpointenumdefault dreamshaper_8
SD1.5 checkpoint: DreamShaper 8 finetune (default, baked VAE) or base 1.5
options: dreamshaper_8sd15_base
motion_adapterbooleandefault true
AnimateDiff v3 domain-adapter LoRA (cleans motion-training artifacts)
smooth_motionbooleandefault false
RIFE 4.9 frame interpolation (2x): doubles effective fps before encoding

ComfyUI node graph (24)#

The executable ComfyUI prompt graph: 24 nodes across 23 distinct node classes, wired by 28 data dependencies. Nodes tinted green come from a custom node pack this workflow declares; the rest are ComfyUI core / baked-community classes.

flowchart TD n0["1: CheckpointLoaderSimple"] n1["2: LoadImage"] n2["3: ImageScale"] n3["4: BLIP_Caption"] n4["5: IsisTextConcat"] n5["6: CLIPTextEncode"] n6["7: CLIPTextEncode"] n7["8: VAEEncode"] n8["9: RepeatLatentBatch"] n9["10: ADE_StandardUniformContextOptions"] n10["11: ADE_MultivalDynamic"] n11["12: ADE_AnimateDiffLoaderGen1"] n12["13: KSampler"] n13["14: VAEDecode"] n14["15: ColorGrading"] n15["16: TemporalConsistencyProcessor"] n16["17: LoopProcessor"] n17["18: VHS_VideoCombine"] n18["19: SaveImage"] n19["fups_loader: UpscaleModelLoader"] n20["fups_apply: ImageUpscaleWithModel"] n21["fups_scale: ImageScaleBy"] n22["ad_adapter: LoraLoaderModelOnly"] n23["rife: RIFE VFI"] n1 -->|image| n2 n2 -->|image| n3 n3 -->|text_a| n4 n4 -->|text| n5 n0 -->|clip| n5 n0 -->|clip| n6 n2 -->|pixels| n7 n0 -->|vae| n7 n7 -->|samples| n8 n22 -->|model| n11 n9 -->|context_options| n11 n10 -->|scale_multival| n11 n11 -->|model| n12 n5 -->|positive| n12 n6 -->|negative| n12 n8 -->|latent_image| n12 n12 -->|samples| n13 n0 -->|vae| n13 n13 -->|images| n14 n14 -->|images| n15 n15 -->|images| n16 n21 -->|images| n17 n16 -->|images| n18 n19 -->|upscale_model| n20 n23 -->|image| n20 n20 -->|image| n21 n0 -->|model| n22 n16 -->|frames| n23 classDef custom fill:#12b886,stroke:#0b6b4f,color:#04110c; class n3,n4,n9,n10,n11,n14,n15,n16,n17,n23 custom;
Data-flow DAG — scroll to zoom, drag to pan.

Nodes (24)#

1CheckpointLoaderSimplecore
ckpt_name = {{checkpoint_files[checkpoint]}} tmpl
outputs: MODELCLIPVAE
2LoadImagecore
image = {{input_image}} tmpl
outputs: IMAGEMASK
3ImageScalecore
image = ◂ node 2 · out[0]upscale_method = lanczoswidth = {{resolution_map[output_resolution].width}} tmplheight = {{resolution_map[output_resolution].height}} tmplcrop = center
outputs: IMAGE
4BLIP_Captioncustom pack
image = ◂ node 3 · out[0]
outputs: STRING
5IsisTextConcatcustom pack
text_b = {{constructed_prompt}} tmplseparator = , text_a = ◂ node 4 · out[0]
outputs: STRING
6CLIPTextEncodecore
text = ◂ node 5 · out[0]clip = ◂ node 1 · out[1]
outputs: CONDITIONING
7CLIPTextEncodecore
text = static image, frozen, no motion, ugly, blurry, distorted, morphing face, changing subject, inconsistent, jittery, flickering, low qualityclip = ◂ node 1 · out[1]
outputs: CONDITIONING
8VAEEncodecore
pixels = ◂ node 3 · out[0]vae = ◂ node 1 · out[2]
outputs: LATENT
9RepeatLatentBatchcore
samples = ◂ node 8 · out[0]amount = {{duration_seconds * fps}} tmpl
outputs: LATENT
10ADE_StandardUniformContextOptionscustom pack
context_length = {{motion_intensity_configs[motion_intensity].context_length}} tmplcontext_stride = 1context_overlap = 4fuse_method = pyramiduse_on_equal_length = falsestart_percent = 0.0guarantee_steps = 1
outputs: CONTEXT_OPTIONS
11ADE_MultivalDynamiccustom pack
float_val = {{motion_intensity_configs[motion_intensity].motion_scale}} tmpl
outputs: MULTIVAL
12ADE_AnimateDiffLoaderGen1custom pack
model = ◂ node ad_adapter · out[0]model_name = v3_sd15_mm.ckptbeta_schedule = autoselectcontext_options = ◂ node 10 · out[0]scale_multival = ◂ node 11 · out[0]
outputs: MODEL
13KSamplercore
model = ◂ node 12 · out[0]positive = ◂ node 6 · out[0]negative = ◂ node 7 · out[0]latent_image = ◂ node 9 · out[0]seed = {{seed}} tmplsteps = 25cfg = {{7.5 * preservation_configs[preserve_composition].cfg_boost}} tmplsampler_name = dpmpp_2mscheduler = karrasdenoise = {{denoise_strength * preservation_configs[preserve_composition].denoise_factor}} tmpl
outputs: LATENT
14VAEDecodecore
samples = ◂ node 13 · out[0]vae = ◂ node 1 · out[2]
outputs: IMAGE
15ColorGradingcustom pack
images = ◂ node 14 · out[0]mode = {{color_grading}} tmpl
outputs: IMAGE
16TemporalConsistencyProcessorcustom pack
images = ◂ node 15 · out[0]consistency_strength = 0.75flicker_reduction = 0.7
outputs: IMAGE
17LoopProcessorcustom pack
images = ◂ node 16 · out[0]loop_mode = {{loop_mode}} tmplblend_frames = 8
outputs: IMAGE
18VHS_VideoCombinecustom pack
images = ◂ node fups_scale · out[0]frame_rate = {{int(fps) * 2 if smooth_motion else int(fps)}} tmplloop_count = 0filename_prefix = img2vidformat = video/h264-mp4save_output = true
outputs: VHS_FILENAMES
19SaveImagecore
images = ◂ node 17 · out[0]filename_prefix = img2vid_preview
fups_loaderUpscaleModelLoadercore
model_name = RealESRGAN_x4plus.pth
outputs: UPSCALE_MODEL
fups_applyImageUpscaleWithModelcore
upscale_model = ◂ node fups_loader · out[0]image = ◂ node rife · out[0]
outputs: IMAGE
fups_scaleImageScaleBycore
image = ◂ node fups_apply · out[0]upscale_method = lanczosscale_by = 0.5
outputs: IMAGE
ad_adapterLoraLoaderModelOnlycore
model = ◂ node 1 · out[0]lora_name = v3_sd15_adapter.ckptstrength_model = 0.7
outputs: MODEL
rifeRIFE VFIcustom pack
ckpt_name = rife49.pthframes = ◂ node 17 · out[0]clear_cache_after_n_frames = 10multiplier = 2fast_mode = trueensemble = truescale_factor = 1.0dtype = float32torch_compile = falsebatch_size = 1
outputs: IMAGE

Prompt construction#

template
animated image, {motion_prompt}, {direction_prompt}, {style_prompt}, {color_prompt}{effects_clause}{enhancement_clause}, smooth motion, consistent quality, professional animation, high quality video

Variables (6)#

motion_prompt
{{motion_type_prompts[motion_type]}} tmpl
direction_prompt
{{motion_direction_prompts[motion_direction]}} tmpl
style_prompt
{{style_prompts[animation_style]}} tmpl
color_prompt
{{color_grading_prompts[color_grading]}} tmpl
effects_clause
{{effects_prompts[add_effects]}} tmpl
enhancement_clause
{{', ' + prompt_enhancement if prompt_enhancement else ''}} tmpl

Parameter banks (10)#

The prompt / configuration lookup tables this workflow keys into from its inputs — the vocabulary that turns a style / palette / preset selection into graph parameters.

motion_type_prompts (10)#

subtle_breathing
subtle breathing motion, gentle expansion and contraction, living stillness, barely perceptible movement
gentle_sway
gentle swaying motion, organic movement, natural oscillation, soft rocking
flowing_motion
flowing motion, continuous movement, smooth flow, liquid-like animation
camera_pan
camera panning motion, horizontal or vertical movement, cinematic sweep, traveling shot
camera_zoom
camera zoom motion, slowly zooming in or out, cinematic focus shift, depth change
parallax_depth
parallax depth motion, layers moving at different speeds, 3D-like depth, dimensional movement
water_ripple
water ripple effect, gentle waves, surface disturbance, liquid movement
wind_effect
wind effect motion, elements swaying in breeze, atmospheric movement, air current visible
floating_elements
floating elements motion, objects drifting, weightless movement, suspended animation
energy_pulse
energy pulse motion, rhythmic intensity changes, power waves, breathing energy

motion_direction_prompts (10)#

auto
natural motion direction based on image content
up
upward motion direction, ascending movement, rising animation
down
downward motion direction, descending movement, falling animation
left
leftward motion direction, horizontal movement to the left
right
rightward motion direction, horizontal movement to the right
circular_cw
clockwise circular motion, rotating movement, spinning animation
circular_ccw
counter-clockwise circular motion, reverse rotation, opposing spin
random
random motion direction, organic unpredictable movement
center_out
motion from center outward, expanding movement, radiating animation
edges_in
motion from edges inward, contracting movement, converging animation

style_prompts (7)#

cinematic
cinematic quality animation, professional motion, film-like movement, movie quality
dreamy
dreamy animation style, soft ethereal movement, otherworldly motion, fantasy feel
energetic
energetic animation style, dynamic movement, vibrant motion, lively feel
meditative
meditative animation style, calm peaceful movement, serene motion, contemplative feel
natural
natural animation style, organic realistic movement, nature-like motion, authentic feel
surreal
surreal animation style, unusual unexpected movement, dream-logic motion, strange beauty
hypnotic
hypnotic animation style, mesmerizing movement, trance-inducing motion, captivating rhythm

effects_prompts (9)#

none
light_particles
, with floating light particles, ambient sparkles, magical dust
dust_motes
, with visible dust motes, floating particles in light, atmospheric debris
bokeh
, with bokeh effect, soft light circles, dreamy focus blur
lens_flare
, with subtle lens flare, light streaks, cinematic lighting effect
fog_wisps
, with fog wisps, drifting mist, atmospheric haze
energy_sparks
, with energy sparks, glowing particles, magical energy motes
rain_drops
, with rain drops, falling water, wet atmosphere
snow_flakes
, with snowflakes, falling snow, winter atmosphere

color_grading_prompts (7)#

original
original color palette maintained
warm_cinematic
warm cinematic color grading, amber tones, golden highlights, film look
cool_atmospheric
cool atmospheric color grading, blue tones, moody shadows, cinematic cool
vibrant_enhanced
vibrant enhanced colors, saturated tones, vivid palette, punchy look
desaturated_moody
desaturated moody grading, muted tones, subdued colors, artistic feel
golden_hour
golden hour color grading, warm sunset tones, orange highlights, magic hour
moonlight
moonlight color grading, cool blue tones, night atmosphere, lunar glow

preservation_configs (3)#

strict
{"denoise_factor": 0.85, "cfg_boost": 1.2}
moderate
{"denoise_factor": 1.0, "cfg_boost": 1.0}
loose
{"denoise_factor": 1.15, "cfg_boost": 0.9}

motion_intensity_configs (4)#

minimal
{"motion_scale": 0.3, "context_length": 24}
subtle
{"motion_scale": 0.6, "context_length": 20}
moderate
{"motion_scale": 0.9, "context_length": 16}
dynamic
{"motion_scale": 1.3, "context_length": 12}

resolution_map (4)#

original
{"width": 512, "height": 512}
480p
{"width": 512, "height": 288}
720p
{"width": 768, "height": 432}
square_512
{"width": 512, "height": 512}

preset_configurations (5)#

living_artwork
{"motion_type": "subtle_breathing", "motion_intensity": "subtle", "animation_style": "dreamy", "preserve_composition": "strict", "loop_mode": "seamless", "description": "Subtle breathing motion for artwork"}
cinematic_scene
{"motion_type": "camera_zoom", "motion_intensity": "moderate", "animation_style": "cinematic", "preserve_composition": "moderate", "add_effects": "bokeh", "description": "Cinematic zoom effect with bokeh"}
meditation_visual
{"motion_type": "energy_pulse", "motion_intensity": "subtle", "animation_style": "meditative", "preserve_composition": "strict", "add_effects": "light_particles", "loop_mode": "seamless", "description": "Meditative pulsing animation"}
nature_scene
{"motion_type": "wind_effect", "motion_intensity": "moderate", "animation_style": "natural", "preserve_composition": "moderate", "add_effects": "dust_motes", "description": "Natural wind and movement"}
surreal_dream
{"motion_type": "flowing_motion", "motion_intensity": "dynamic", "animation_style": "surreal", "preserve_composition": "loose", "add_effects": "fog_wisps", "description": "Surreal flowing dream animation"}

tips (2)#

best_practices
Use high-quality source images for best resultsLower denoise_strength for better preservation of originalStart with strict preservation, adjust if more motion neededSeamless loop mode works best with 10+ second duration
content_recommendations
Works best with: landscapes, artwork, portraits, abstract imagesChallenging for: complex scenes, multiple moving subjects, text

Models & dependencies#

Custom node packs (10)#

The non-core ComfyUI node classes this graph requires; the RunPod worker image the workflow runs on must bake or install a pack that provides every one of them.

ADE_AnimateDiffLoaderGen1ADE_MultivalDynamicADE_StandardUniformContextOptionsBLIP_CaptionColorGradingIsisTextConcatLoopProcessorRIFE VFITemporalConsistencyProcessorVHS_VideoCombine

Checkpoint aliases (2)#

dreamshaper_8
DreamShaper_8_pruned.safetensors
sd15_base
v1-5-pruned-emaonly.safetensors

Models required (6)#

DreamShaper_8_pruned.safetensors
RealESRGAN_x4plus.pth
rife49.pth
v1-5-pruned-emaonly.safetensors
v3_sd15_adapter.ckpt
v3_sd15_mm.ckpt

Output contract#

What a successful run of this workflow returns.

type
video
format
mp4
codec
h264
audio
false
description
Animated video from source image

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.

assetFamily
social-shortform-vertical-video-pack
outputPackageProfile
video-master-profile
controlModalities
camera-lockcamera-path-guidecolor-script-lockdepth-constraintidentity-adapterkeyframe-anchor-locklatent-reusemodel-lockmotion-vector-lockpalette-lockpose-constraintprompt-template-lockreference-ensemblesampler-scheduler-lockscene-lockseed-lock +4 more
consistencyDimensions
motionenvironmentlightingcolor-script
notes
Auto-mapped from video defaults