Nodes/comfyui-magic-hour/Magic Hour: Video to Video
ComfyUI Node

Magic Hour: Video to Video

Magic Hour's Video to Video Node

By magichourhq·Created about 16 hours ago·Updated about 15 hours ago· 0
Magic Hour: Video to Video
  • video
  • video
  • video_path
  • credits_charged
◄art_style3D Render►
◄modeldefault►
◄prompt_typedefault►
◄prompt►
◄versiondefault►
◄fps_resolutionHALF►
◄start_seconds0.0►
◄end_seconds0.0►

Restyling a video locally is a genuine project. AnimateDiff-era setups wanted a ControlNet stack and a temporal layer; the Vid2Vid routes that actually work still want depth, pose and a lot of patience. This node is the other approach: point it at a clip, pick "3D Render" from a dropdown, and get a restyled MP4 back in a couple of minutes.

It's the least controllable way to do video-to-video, and sometimes that's exactly what you want.

How it works

Same machinery as the rest of the pack: the clip is written to a temp MP4, uploaded to Magic Hour, and the job runs on their servers with wait_for_completion set, so your graph sits and waits. When it finishes, the node downloads the file into ComfyUI/output/magic_hour/ and returns it as a ComfyUI VIDEO.

Nothing here is a diffusion graph you can inspect. There's no denoise value, no sampler, no seed. The style transfer is a preset on the far side of an HTTP call, which is the trade documented under API-wrapper nodes: you skip the five-hour ControlNet setup and accept per-call billing, zero local control, and your footage going out the door. The pack is first-party (Magic Hour's own repo, Apache-2.0), which is the version of this pattern worth trusting with a key.

The inputs that matter

video - the source clip, any ComfyUI VIDEO.

art_style is the star of the show: 75 presets, defaulting to 3D Render, and the list runs through names like Airbender, Bold Anime, Celestial Skin, Chinese Swordsmen, Boba Fett. The prompt nudges, but the preset does the heavy lifting - that's the thing to internalize before you spend an hour writing a really good one. Pick two or three styles you like and A/B them on the same ten seconds.

model narrows the renderer: 3D Anime, Absolute Reality, Dreamshaper, Flat 2D Anime, Kaywaii, Soft Anime, Western Anime, plus default. Names like Dreamshaper and "Absolute Reality" will look familiar to anyone who's been around SD1.5-era checkpoints, which tells you roughly what flavor of restyle you're getting. default lets the API choose.

prompt_type - default, append_default, custom - decides how your prompt is used: as a hint, appended to a house prompt, or as the whole prompt. The catch is in the source: the node only sends prompt if the box isn't empty, but it always sends prompt_type. So custom with an empty text box is the combination to avoid.

version (default, v1, v2) picks the engine generation. fps_resolution (HALF or FULL, default HALF) is your cost dial - HALF is the cheaper pass, and it's the one to test a style with before committing a whole clip to FULL.

start_seconds / end_seconds cut the segment that gets restyled. end_seconds = 0 means "to the end of the clip," per the author's own tooltip.

Outputs

video is the restyled clip, ready for Save Video or a preview node. video_path gives you the saved file path as a string and keeps working even if your ComfyUI can't construct a VIDEO value. credits_charged is an integer telling you what that run actually cost, which on a restyle job is worth watching - style passes are billed per second of output.

Install

ComfyUI Manager → search "Magic Hour". Or:

cd ComfyUI/custom_nodes
git clone https://github.com/magichourhq/comfyui-magic-hour
pip install -r comfyui-magic-hour/requirements.txt

That installs exactly one thing, the magic-hour SDK. You need Python 3.10+ and a ComfyUI recent enough to have the VIDEO type. Then supply a key before launching ComfyUI:

export MAGIC_HOUR_API_KEY=...
# or: echo 'YOUR_KEY' > ComfyUI/custom_nodes/comfyui-magic-hour/api_key.txt

The key isn't a widget on purpose - node values get baked into workflow JSON, and a key in a shared workflow is a key leaked.

Where people get burned

Half your style list is missing. The art_style and model dropdowns are populated by introspecting the installed SDK at import time. An old or partially-installed magic-hour package falls back to a short default list. If you only see a handful of styles, fix the SDK and restart:

pip install -U 'magic-hour>=0.87.1'

Long clips, silent billing. Restyling is charged by output length, and there's no progress bar in the node - it just waits. Test on a 5–10 second window with HALF before you push a three-minute clip through FULL.

end_seconds = 0 on a clip with unreadable duration raises a clear error telling you to set end_seconds. Type a number and move on.

Style presets that reference someone's IP are the vendor's grown-up problem, not a license you've been handed. Read Magic Hour's terms before you ship anything commercial.

That's the honest summary: this is a preset machine, not a control surface. If you want to steer the look, you're back to a local ControlNet stack; if you want a stylized clip in five minutes, it's four clicks.

CategoryMagic Hour

Inputs (9)

NameTypeDefaultDescription
videoVIDEO—
art_styleCOMBO3D Render75 options: 3D Render, Airbender, Android, Anime Warrior, Armored Knight, Assassin's Creed, +69
modelCOMBOdefault8 options: 3D Anime, Absolute Reality, Dreamshaper, Flat 2D Anime, Kaywaii, Soft Anime, +2
prompt_typeCOMBOdefault3 options: default, append_default, custom
promptSTRING—
versionCOMBOdefault3 options: default, v1, v2
fps_resolutionCOMBOHALF2 options: HALF, FULL
start_secondsFLOAT0.00–3600—
end_secondsFLOAT0.00–36000 = to the end of the clip

Outputs (3)

NameTypeDescription
videoVIDEO—
video_pathSTRING—
credits_chargedINT—