Nodes/GraftingRayman/GR Scroller
ComfyUI Node

GR Scroller

Bake animated scrolling, bouncing, or zooming text into a frame batch

By GraftingRayman·Created 2 years ago·Updated about a month ago· 76
GR Scroller
  • background_image
  • FileDetails
  • Frames
textSample Text
fps30
resolutionHD 1280x720
use_background_image_sizefalse
use_background_imagefalse
font_path/usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf
font_size100
font_colorwhite
font_opacity100
font_strokefalse
font_stroke_thickness2
font_stroke_colourblack
background_colourblack
output_pathH:\scroller\output_video.mp4
save_imagesfalse
image_save_pathH:\scroller\frames\
scroll_directionleft
scroll_speed1.0
movement_speed1.0
movement_duration10
movement_typescroll
movement_distance20
apply_to_each_characterfalse
seed1140475649
upscale1.0

This is a kinetic-typography generator that lives entirely inside one node - no After Effects, no separate motion-graphics tool. Give it text, pick a resolution and frame rate, choose how it moves, and it renders the animation as a batch of frames you can pipe straight into a video-combine step. It's overkill for a simple static caption (see GR Text Overlay for that), but if you actually want a scrolling news-ticker, a bouncing title card, or letter-by-letter reveal text, this is a real timesaver.

How it works

text, resolution (seven presets from SD up to 4K, portrait variants included), and fps (1-120) set up the canvas. movement_type is the real headline - the schema lists 25 choices, including scroll, bounce, wave, jitter, circular, zoom, fade, rotate, oscillate, diagonal, spiral, and flip, with more beyond that. scroll_direction (left/right/up/down) presumably only bites when movement_type is actually scroll - setting a direction while running bounce or zoom likely won't do what you'd expect, since direction is a scroll-specific concept. movement_speed, movement_duration, and movement_distance control how fast, how long, and how far the animation runs; apply_to_each_character switches from moving the whole string as one block to animating each letter independently, which is the classic "each character bounces in on its own" effect. seed gives you reproducibility on whichever movement types have randomness baked in.

Font styling is its own block - font_path, font_size, font_color, font_opacity, and an optional font_stroke with its own thickness and color. You can render over a plain background_colour, or set use_background_image (plus use_background_image_size to match the canvas to it) and feed in a background_image to overlay the text on your own footage or still.

The inputs and outputs that matter

  • text, movement_type, scroll_direction - what it says and how it moves.
  • resolution, fps - canvas and frame rate.
  • output_path / save_images + image_save_path - where results get written.

Two outputs: FileDetails (STRING, a summary of the run) and Frames (IMAGE, the actual rendered frame batch - this is what you chain into a video-combine node downstream).

How to install it

ComfyUI Manager, search GraftingRayman. Manual:

cd ComfyUI/custom_nodes
git clone https://github.com/GraftingRayman/ComfyUI_GraftingRayman

Restart afterward. The pack won't import at all without OpenAI's CLIP installed separately, even though this node has nothing to do with CLIP - portable ComfyUI: .\python_embeded\python.exe -m pip install git+https://github.com/openai/CLIP.git; system Python: pip install git+https://github.com/openai/CLIP.git.

Common issues & troubleshooting

Pack fails to load. Check your startup console for the CLIP import error and run the pip install above.

Run fails on a fresh install or errors about a bad path. output_path defaults to a Windows path (H:\scroller\output_video.mp4), and image_save_path defaults similarly. Neither exists on a machine without an H: drive - which is most machines, and certainly any Linux box or cloud executor. Set both to a real, writable path before running.

Direction doesn't seem to affect the animation. scroll_direction is a scroll-specific setting - if movement_type is anything other than scroll (bounce, zoom, wave, and so on), direction likely has no effect on that motion style.

Font doesn't look right, or the dropdown feels limited. font_path is a literal filesystem path to a font file, not a family name - available choices depend on what fonts are actually installed on the machine running ComfyUI. A different OS or a bare container image may not have the same font set the pack's defaults assume.

Motion looks identical across otherwise-different runs, or you can't get a specific result back. Check seed - it's your reproducibility knob for whichever movement types use randomness.

CategoryGraftingRayman/Video

Inputs (26)

NameTypeDefaultDescription
textSTRINGSample Text
fpsINT301–120
resolutionCOMBOHD 1280x7207 options: 4K 3840x2160, Full HD 1920x1080, HD 1280x720, Portrait 4K 2160x3840, Portrait Full HD 1080x1920, Portrait HD 720x1280, +1
use_background_image_sizeBOOLEANfalse
use_background_imageBOOLEANfalse
font_pathCOMBO/usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf10 options: /usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf, /usr/share/fonts/truetype/dejavu/DejaVuSans.ttf, /usr/share/fonts/truetype/dejavu/DejaVuSansMono-Bold.ttf, /usr/share/fonts/truetype/dejavu/DejaVuSansMono.ttf, /usr/share/fonts/truetype/dejavu/DejaVuSerif-Bold.ttf, /usr/share/fonts/truetype/dejavu/DejaVuSerif.ttf, +4
font_sizeINT10010–1000
font_colorCOMBOwhite15 options: black, blue, cyan, gray, green, magenta, +9
font_opacityINT1000–100
font_strokeBOOLEANfalse
font_stroke_thicknessINT21–10
font_stroke_colourCOMBOblack15 options: black, blue, cyan, gray, green, magenta, +9
background_colourCOMBOblack15 options: black, blue, cyan, gray, green, magenta, +9
output_pathSTRINGH:\scroller\output_video.mp4
save_imagesBOOLEANfalse
image_save_pathSTRINGH:\scroller\frames\
scroll_directionCOMBOleft4 options: left, right, up, down
scroll_speedFLOAT1.00.1–250
movement_speedFLOAT1.00.1–10
movement_durationINT101–600
movement_typeCOMBOscroll25 options: scroll, bounce, wave, jitter, circular, zoom, +19
movement_distanceINT201–100
apply_to_each_characterBOOLEANfalse
seedINT11404756490–4294967295
upscaleFLOAT1.01–10
background_imageoptIMAGE

Outputs (2)

NameTypeDescription
FileDetailsSTRING
FramesIMAGE