MKRShift_Nodes
A ComfyUI extension with 323 custom nodes.
Nodes (323)
The resize node that remembers your mask
Turnaround shots for characters, without retraining anything
One image, every platform ratio — without the crop roulette
Every aspect ratio at once, named and ready to export
A/B your generations right in the canvas, not in a folder
The config node that makes the network addons less scary
The polite way to wait for a host render to finish
The node that actually POSTs your job to the addon
A quick vitals check on your addon payload before you ship it
Declare what your host addon should show, instead of guessing
Bringing Affinity layer data into the graph as clean JSON
The node that actually writes your image out to the Affinity asset path
Decide where your Affinity result goes before the pixels exist
The Affinity bridge that rides on Photoshop plugin compatibility
Pulling After Effects comp metadata into the graph
Pulling an AE frame in as an actual image, mask included
Writing your generated frame out for the AE addon to grab
Declare where your AE result lands — comp, role, and all
The runtime node that writes frames for the AE render queue
Decide how your frames feed AE — footage, replacement, or precomp
Turn a frame batch into a shareable GIF or MP4 without ceremony
Give AI voices and foley that crunchy Game Boy treatment
Fix, flip, and fold stereo audio without leaving ComfyUI
QC your exports for clipping before anyone hears it
Stitch audio clips together end-to-end, with a stream-copy fast path
Three-band tone shaping when you don't want to open a DAW
Level your audio and place it left or right — inside the graph
Tame those hot peaks so your AI audio stops blowing out speakers
Lay two audio tracks on top of each other, with per-track gain and offset
Make your audio exactly N seconds long, however you want it done
Resample to 48k and pick your channel layout in one step
Chop the dead air off your AI voice clips automatically
Widen (or collapse) your stereo image with one mid/side knob
Speed up a clip without chipmunks, or shift pitch without changing speed
Cut, fade, and loudness-match in one node
Stamp your name into the audio itself — audibly, not invisibly
Auto-crop a wide video to vertical and follow the subject with it
See your whole batch at once — the contact sheet / XY-plot preview
A/B two batches and see the diff, not just the pair
Get beat and bar timestamps to cut against
Make your video land on the beat — or just get the math
Find the black frames your editor pretended weren't there
Your Blender camera, translated into words a diffusion model gets
Pull a texture, render, or pass from Blender straight onto an IMAGE socket
Put your generated image exactly where Blender expects it
Decide how a generated image gets back into Blender — before you generate it
Read a Blender material as data — and get back the prompt that could remake it
Which generated map lands in which slot
Writes your files, reports the paths
Tell Blender exactly how to show your generated result — before the frame exists
Camera, pose, and passes in one packet
Turn your timeline data into real YouTube chapters in one pass
A whole direction department in one node — it writes the brief, you run the sampler
One record, reused across every shot
The same CLIP Text Encode you know, plus a token count and bookmarks
A compressor and a noise gate that live in your graph, not your DAW
The simplest way to stick two generated clips together
Tame the sibilance on your AI voiceover without leaving ComfyUI
Atmospheric fog for your AI footage — real depth map, or fake sky haze
This node writes a real CMX EDL — the file your NLE still speaks
Turn an editor's EDL into cut times ComfyUI can actually use
One node that turns your render into a platform-ready export
Pull frames out of a clip without a separate ffmpeg step
Score your generated facial performance so you stop eyeballing lip sync
Synthesize believable blinks and gaze from an audio track
Make mouth motion track the audio instead of just being nearby
Merge body, face and facial streams into one stable pose without the arguments
Layer performance motion onto your neutral rig without wrecking its identity
Build the calm, neutral face your rig needs before any motion lands on it
Flicker, dust, scratches and weave
Hold a frame into a clip, for those I-can't-believe-that-shot moments
Find the dead frames in your footage so you're not hunting them by eye
Get a Fusion 360 render or viewport capture into your graph as a real image
Actually write those generated images to the Fusion 360 asset path
Decide where a generated image lands in Fusion 360 before you write it
Carry the Fusion 360 scene context into ComfyUI without a screenshot
Write your generated textures to the planned Fusion 360 asset path
Plan the texture return before it ever hits disk
Sink your print's Z corrections into the g-code before it exports
Inject a temp, flow, speed or fan tower into g-code without a slicer plugin
Inject G-code macros at the right moment — fan boost, layer announcements, calibration
Turn a plan and a profile into a .gcode file
Run OrcaSlicer, PrusaSlicer, or CuraEngine from your graph
Turn any ComfyUI image into a 3D-printable relief plate — G-code straight from pixels
Get a real STL into the graph — with transforms and a preview, no slicer needed
Stop hand-typing printer JSON — pull your real OrcaSlicer presets into the graph
The free failure-and-cost review for any MKR G-code plan
See the toolpath before you print — plans, meshes, or raw G-code, all in one preview
The one JSON blob that describes your printer (and feeds every G-code node)
A parametric vase that generates its own G-code — slicer optional
A webhook you can build without sending anything — plan first, fire later
The half of the plan/send pair that actually talks to the network
Stitch tiled image batches back into one image — seams optional, metadata required
Slice a big image into overlapping tiles for tiled processing — and stitch it back later
Batch text + logo watermarking with real control
Hide a text signature inside audio as near-inaudible tones — and save the result
Embed a text signature as inaudible image noise
What actually changed between two JSON blobs
Base image plus up to four masked layers, blended in order
Vignette, chromatic aberration, barrel, sharpen — baked to a file
Making a composite stop looking pasted-on
Sample rate, channels, duration, codec
The 'what am I actually working with' node
A free LUFS check inside ComfyUI, with a catch
Burn a name bar onto video without opening a video editor
A cheap way to find where two clips join seamlessly
Pull a render or texture from Maya straight into the graph
The node that finally writes the images to disk
Decide where and how before anything gets written
Write the textures, hand the roundtrip to the add-on
Describe the shader roundtrip before you run it
The packet that gets your scene metadata into ComfyUI
The name oversells it, the result is still worth it
Stick the voiceover on the footage, no NLE required
A spec for NDI output, not the output itself
The expert metadata sidecar
Scaffold a ComfyUI custom node from inside ComfyUI
Registry-ready pyproject.toml, drafted by a node
A real spectral gate, minus the AI hype
Bring a plate or render from Nuke into ComfyUI
The Nuke handoff node that just writes a PNG — and that's the whole point
Tell Nuke how to receive your render without ever touching Nuke
Writing your render where the Read expects it
Plan a Nuke Read node from ComfyUI, before a single pixel moves
Pull your Nuke script's Read nodes into ComfyUI as clean JSON
The name is a lie, it's frame blending — and that's fine
Where your OSC messages get designed, not sent
Fire a real OSC message over UDP — the node that makes the plan live
Wardrobe as data
Bring the whole Photoshop document's story into ComfyUI as clean JSON
Pixels written where the plan says
Decide where your result lands in Photoshop, before anyone writes a pixel
Load a Photoshop layer's pixels — and its alpha — straight into the graph
Write your result to the path the Photoshop layer plan expects
Plan the layer before the pixels exist
Palette reduction that outputs the palette
A real 3D pose blockout node that speaks numbers, not vague words
Your render written where Premiere can grab it
Tell Premiere where your render should land and how to use it — as a plan
Pull a Premiere still or graphic into ComfyUI — pixels and alpha together
Files an addon can actually find
Describe a Premiere graphic before anything touches disk
Pull your Premiere timeline into the graph as JSON
The preview/save hybrid that keeps your output folder honest
Hear what the audio node made before you commit it
Preview video without burying your output folder in mp4s
One JSON that collects your whole project's media facts
Make a tiny proxy of a huge video and stop waiting on previews
Turn a batch of images into a ready-to-ship asset manifest
Pull one caption out of the deck by number
Generate a deck of caption variants without an LLM
Drop a branded end card on a video you never rendered in an NLE
Pull one row out of your asset manifest
Frame your renders as launch cards
A QA pass that scores your export before you ship it
Run a clip backwards without touching an NLE
Find every cut in a video and get the scene list as JSON
Pick one scene out of the detected list
Make one shot's color feel like another's, in one node
Duck your music bed under the voiceover, ComfyUI edition
The blueprint, not the broadcast
Cut pixel art apart so AnimateDiff can chew it
The poor man's Demucs, and proud of it
Put A and B side by side and actually see it
Every frame in the batch, labeled and laid out
The one file name that never changes again
Turn a delivery plan into a handoff list
The quick version stamp, not the full frame
Put safe areas and version tags on every shot
The client note that writes itself
Mark the keepers, get a CSV out
A legit production slate card, no Photoshop involved
Hardcode your SRTs without leaving ComfyUI
The macOS side of the texture-sharing story
Describe the connection, don't dial it
The one that actually fires
Read the CSS your MKR themes are made of
Speed ramps with a JSON curve, not a slider
Telling a Tooll graph what to expect
The inbound half of a Tooll round-trip
A light switch for your graph, configured by JSON and overridable by a wire
Tell TouchDesigner what's arriving, before anything actually arrives
The TouchDesigner side of the bridge, as a JSON normalizer
Trim a video to a time range without leaving ComfyUI
Dissolve two clips into one, right there in the graph
Conform a clip to a target frame rate without a video editor
Grade a whole clip — gamma, contrast, brightness, saturation — without a grading app
Loop a clip N times, with an optional crossfade to hide the seam
Forward, then backward, repeat
Flatten the gradients, rescue the banding with dither
Resize and pad to an exact canvas — the aspect-ratio fixer
Rotate and flip a clip — fix phone footage before it hits the pipeline
Cut by frame numbers instead of seconds — for when you know the frames
Speed ramp a clip with a JSON list of speed points — the music-video retime
Split one clip into several at a list of timestamps — and get a manifest back
Blend frames together over time — a cheap long exposure and motion trails
Burn text or a logo onto every frame — the client-preview watermark
Describe a watch folder as JSON — the config half of the drop-file handoff
Drop a JSON payload into the watched folder
A WebSocket handoff as a JSON contract — plan first, connect later
Anamorphic streaks without renting a cinema lens
Anisotropy maps for brushed metal, without the shader-science
Ambient occlusion from a heightmap, with no bake farm
A model-free aurora generator that isn't the model
Bloom that respects your highlights instead of washing them out
Bokeh orbs from your actual highlights, no lens required
The crease detail your PBR set is missing
Split an image into its R, G, B, A, plain and simple
Cram four grayscales into one RGB(A) texture
Fringing that looks like glass, not a filter
Clearcoat maps for the lacquered look, derived not painted
Where the lacquer wears thin
Slope/offset/power grading without the color cast
Make one image inherit another's palette, statistically
Isolate a color family without a paint brush
Drag a mesh to build a selective grade
Recolor a sky by pulling a mesh point
Drag the puck, grade the shadows and highlights
Make it look like it's on an old tube, badly
Extract wear and dirt masks from a normal map
The tone-curve editor that finally feels like Lightroom, minus the subscription
Clean up noisy AI output without smearing it to plastic
Fake depth of field and atmospheric haze, no depth model required
Orton-style diffusion for skin and highlights
Chromatic aberration that knows where edges are
Procedural edge wear for PBR maps, the Subway-Surface way
Emissive derivation without the eyeballing
False color and zebras in ComfyUI
The cheapest 'un-AI' in the finishing stack
Dust, scratches, burns, and flicker in one pass
Kodak 2383 and friends
The on-camera flash look, from harsh snapshot to barely-lit
Soft-focus portraits and rescued sharpness in one tiny node
Fractal texture overlay for surface and atmosphere
Roll off out-of-gamut colors instead of crushing them
Find the colors that will clip before they embarrass you on another screen
Analog gate weave without renting a projector
The full VHS-teleport glitch kit
The tech-look edge glow
Halation, the Cinestill signature
Cheap shimmer that sells a hot-plate look
Turn any channel into a color-coded readout
Steal displacement-ready grayscale from anything
Pull detail back from blown whites
A filmic shoulder without leaving the graph
A proper waveform readout, rendered as an image
Key a color, shift it, and never touch the rest
The vectorscope-adjacent readout for colorists
Clean, indexed mattes from a messy ID pass
Click a color, get a region matte
Fake the oil-slick sheen as a grayscale mask
The mirror-play node for psychedelic transitions
The subtle refocus warp that adds life to video
Grungy, filmic glow that doesn't look like a plugin
Barrel, pincushion, and chromatic fringe in one pass
A warm flare that never needs a texture plate
Make a keyed subject actually live in its background
The midtone pop that global contrast can't give you
Stack up to three .cube LUTs without a grading app
Filmic looks on tap, no .cube files required
One node that quietly replaces five mask packs
Turning a flat render into a PBR material — with the honest caveat
Find the color cast everyone else is missing
Stack a detail normal onto a base without the seams
A height map in, a renderer-ready normal out
Fix the normal map instead of re-exporting it
Cutouts, decals, and soft transparency from your alpha
The film trick that makes AI images feel expensive
Push a whole frame toward a look in one setting
Four loose maps into one engine-ready texture
The last step between AI image and believable photo
Honest pixel art from AI output, not fake-looking pixels
An orbitable shader ball inside your graph
The chromatic afterimage effect that punches above its weight
Stop eyeballing color casts, start measuring them
The radial distortion node that's easy to overdo and hard to resist
The hard part of PBR from an image, solved by a default
The density plot that catches what your eyes won't
The boring node that keeps your material maps honest
Photoshop's deadliest grading tool, reborn as a node
X1SharpenPro is the finish pass you actually want
The fabric PBR map most texture packs skip
Shockwave Distort does the ring, the blur, and the chromatic edge in one node
Skin Tone Check heatmaps the damage
Skin Tone Protect keeps faces from going green or clown-red
The tech-art trick that makes weathering stick to the right faces
Specular Map derives it from the albedo
Split Tone does it in two color pickers
X1Stylize is the comic/fine-art shortcut
Surface Dust Mask builds the grime without the tedium
Surface Rust Bloom Mask gets the corrosion right
Surface Streak Mask runs the weathering downward
Surface Waterline Mask puts the bath ring where water actually sat
Texture Albedo Safe rescues it
Texture Caustic Field renders the ripples procedurally
Texture Cell Pattern is the voronoi you don't have to build
Texture Contour Lines draws the elevation map
Texture Crackle Field breaks the surface procedurally
Texture Delight flattens it properly
Detile Blend breaks the tile up
Sand dunes on demand — an aeolian texture that tiles
The anti-burn fix for texture islands — pad the edges before you paint
Hex tiles without the seam — a procedural honeycomb pattern
Kill the flat, repeated look — add macro variation to a texture
Marble veins that look like marble, not a spill — and they tile
The tileable fBm noise generator your material lane has been missing
The honest way to spot a texture seam — shift it and look
Water ripples, moiré, and interference — a seamless ripple field
Making a texture tile after the fact — the node that actually tries
Sedimentary rock, cliff bands, and plywood, minus the prompt lottery
See the seams before they embarrass you — a tiling preview node
Cloth, not 'AI fabric' — a procedural weave with real thread structure
Thickness maps from flat images — the subsurface secret ingredient
The one node that covers 90% of 'make this photo look right'
Transmission maps without the 3D model — derive them from a flat image
A UV checker overlay (or generator) in one node
A real vectorscope inside ComfyUI — check skin tones like a colorist
Vignettes that don't wreck your highlights — a Pro-grade falloff
Displacement warping that's actually controllable
A waveform monitor in ComfyUI — see your luma and channel values like a colorist
Give Your Renders a Film Grade Without Re-Rolling the Seed
Turn an In-Memory LUT Into a Real .cube File
XShader Isn't a GPU Shader — and That's Fine
Overview
MKRShift Nodes is a broad ComfyUI node pack focused on image craft and workflow speed. It combines creative tools, utility nodes, custom frontend helpers, and publish/output nodes in one pack instead of splitting related tasks across multiple small installs.
Node Areas
| Area | Example Nodes | Focus |
| --- | --- | --- |
| Direction | MKRCharacterCustomizer, MKRCharacterState, MKROutfitSet, MKRPoseStudio, AngleShift, Aspect1X, AxBCompare | Character setup, persistent identity state, outfit variation, 3D pose blockout, angle exploration, compare views, and framing |
| Blender Bridge | MKRBlenderSceneImport, MKRBlenderCameraShot, MKRBlenderImageImport, MKRBlenderImageOutputPlan, MKRBlenderMaterialImport, MKRBlenderMaterialReturnPlan, MKRBlenderReturnPlan | Import Blender camera, armature, image, and material payloads, derive shot/material metadata, and build return plans for roundtrip workflows |
| Host Addons | MKRBlenderSceneImport, MKRTouchDesignerImport, MKRTiXLImport, MKRNukeScriptImport, MKRPhotoshopDocumentImport, MKRAfterEffectsCompImport, MKRPremiereSequenceImport, MKRAffinityDocumentImport, MKRAffinityPhotoshopPluginPlan, MKRFusion360SceneImport, MKRFusion360ImageImport, MKRMayaSceneImport, MKRMayaImageImport, MKRNodeExtensionBuilderAdvanced, MKRNodeExtensionBuilderPlan, MKRNodeExtensionPyprojectPlan | Packet-first host integrations with per-application addon scaffolds under addons/ and matching ComfyUI nodes under Addons/..., including image/texture handoff lanes for the 3D hosts, an Affinity route based on Photoshop-plugin compatibility, plus an extension-builder lane with a cleaner advanced sidecar node for repository/license/tag metadata, manifest planning, and registry-ready pyproject.toml drafting |
| Network Transport | MKRAddonEndpointPlan, MKROSCMessagePlan, MKRNDIStreamPlan, MKRSpoutSenderPlan, MKRSyphonSenderPlan, MKRTCPBridgePlan, MKRHTTPWebhookPlan, MKRWatchFolderPlan, MKRWebSocketBridgePlan | Reusable endpoint and transport plans for host add-ons, including HTTP endpoint jobs, OSC, NDI, Spout, Syphon, TCP, watch-folder, and WebSocket workflows |
| Surface + Material | x1PreviewMaterial, x1PBRPack, x1ClearcoatMap, x1ClearcoatRoughnessMap, x1EdgeWearMask, x1TextureDetileBlend | Practical PBR map derivation, material preview, packing, wear masking, and anti-tiling texture cleanup |
| Color + Lookdev | xLUT, xLUTOutput, x1ColorWheels, x1Curves, x1ColorWarpHueSat, x1ColorWarpChromaLuma, x1PaletteMap | LUT authoring, grading, color matching, mesh-based warping, and look building |
| Image Processing | x1Bloom, x1Film, x1Stylize, x1LocalContrast, x1SharpenPro, x1LightWrapComposite, x1EdgeAberration | Finishing, texture, stylization, polish, and practical comp/VFX passes |
| Inspect + Review | AxBCompare, MKRBatchCollagePreview, MKRStudioReviewFrame, MKRStudioCompareBoard | Fast side-by-side checks, labeled batch sheets, and review-ready boards |
| Mask + Utility | x1MaskGen, AdvResize, MKRImageSplitGrid, MKRImageCombineGrid, MKRPixelPaletteReduce, MKRSpriteSheetExtract, xShader, x1DenoiseDetail | Mask generation, resize work, tiled image workflows, pixel-art palette reduction, sprite extraction, shader utilities, and cleanup |
| PreSave + Media | MKRPreSave, MKRPresaveVideo, MKRPresaveAudio, MKRMuxVideoAudio, MKRTrimVideoByTime | Preview-first export helpers plus audio/video utility work |
| Publish + Output | MKRPublishPromoFrame, MKRPublishEndCard, MKRPublishAssetManifest, MKRPublishManifestAtIndex, MKRPublishCopyDeck, MKRPublishCopyAtIndex | Promo-card framing, end cards, asset manifests, and copy extraction helpers for real export/delivery work |
| G-code | MKRGCodePrinterProfile, MKRGCodeOrcaProfileLoader, MKRGCodeLoadMeshModel, MKRGCodeHeightmapPlate, MKRGCodeSpiralVase, MKRGCodePlanAnalyzer, MKRGCodeBedMeshCompensate, MKRGCodeCalibrationTower, MKRGCodeConditionalInjector, MKRGCodePreview, MKRGCodeExternalSlicer, MKRGCodeExport | 3D-print printer profiles, Orca preset import, mesh/model loading, generators, plan analysis, bed compensation, calibration macros, preview, external slicing, and direct .gcode export |
| Studio Review + Delivery | MKRStudioSlate, MKRStudioReviewFrame, MKRStudioReviewBurnIn, MKRStudioCompareBoard, MKRStudioContactSheet, MKRStudioDeliveryPlan | Branded slates, quick burn-ins, compare boards, review frames, contact sheets, and naming/handoff planning for internal or client-facing review |
Frontend Extensions
This pack ships custom WEB_DIRECTORY extensions for nodes that benefit from a better UI:
MKRCharacterCustomizerMKRCharacterStateAngleShiftMKRPoseStudioAxBCompareMKRPreSaveMKRPresaveVideoMKRPresaveAudioMKRPublishPromoFramex1ColorWheelsx1Curvesx1ColorWarpHueSatx1ColorWarpChromaLumaxLUTx1MaskGen
Markdown help pages for these nodes live in web/docs/.
If you publish/maintain a GitHub wiki, use web/docs/Home.md as the landing page and web/docs/_Sidebar.md for wiki navigation. Those pages are organized to mirror the current in-app taxonomy, including the refreshed Surface and Inspect branches.
The Blender add-on scaffold for the bridge lives in blender_extension/mkrshift_blender_bridge/.
This pack now also exposes an initial V3 schema companion lane through:
That V3 lane currently focuses on the newer addon/network transport nodes where V3 schema definitions are low-risk and useful.
Additional host integration scaffolds now live in addons/:
addons/blender/addons/touchdesigner/addons/tixl/addons/nuke/addons/photoshop/addons/after_effects/addons/premiere_pro/addons/affinity/addons/fusion360/addons/maya/
Subgraph blueprints for the addon/network lane live in subgraphs/.
Installation
- Clone or copy this folder into
ComfyUI/custom_nodes/. - Restart ComfyUI.
- Install
ffmpegif you plan to use the video/audio export and muxing nodes. - Install
OrcaSlicer,PrusaSlicer, orCuraEngineif you plan to use the external G-code slicer node.
Extension Builder Quickstart
This repo now includes a starter builder config at extension.builder.json and a minimal example workflow at example_workflows/mkrshift_extension_builder_plan.json for MKRNodeExtensionBuilderPlan, the MKRNodeExtensionBuilderAdvanced sidecar node, and MKRNodeExtensionPyprojectPlan.
Suggested build command:
python3 /opt/codex/skills/.system/skill-installer/scripts/install-skill-from-github.py --repo criskb/comfyui-node-extension-builder --path . --name comfyui-node-extension-builder
Then write the builder_manifest_json output from MKRNodeExtensionBuilderPlan to extension.builder.json and run your preferred builder CLI. For cleaner graphs, keep expert metadata on MKRNodeExtensionBuilderAdvanced, connect its advanced_options_json output into advanced_bundle_json on the plan node, and feed the resulting manifest into MKRNodeExtensionPyprojectPlan when you want a matching pyproject.toml draft.
Notes
pyproject.tomlis included so the pack has a stable package identity.pyproject.tomlnow includes repository and Comfy registry metadata for packaging/distribution readiness.- The code uses relative imports and does not rely on the install folder matching the repo name.
- Package internals are split by concern under
nodes/andlib/, with legacy root import aliases preserved for backward compatibility. - The
G-codecategory is inspired by the earlierG-code-Studioexperiment, but implemented here as ComfyUI-native nodes. - The external slicer node can run in
dry_runmode to validate commands/config text even when a slicer CLI is not installed yet. - G-code post-processing nodes expect exported layer comments for the strongest results, so keep
include_commentsenabled onMKRGCodeExportwhen you plan to inject calibration or conditional macros later in the graph.
Verification
Run the test suite with:
python3 -m unittest discover -s tests -p 'test_*.py'
The current checks cover:
- pack importability
- exported node metadata
WEB_DIRECTORYpresence- docs and packaging assets
- publish/output and mask feature regressions
- studio review node coverage and legacy import aliases
This extension/addon was created using Codex skill designed by Cris K B https://github.com/criskb/comfyui-node-extension-builder