After Effects Render Output
The runtime node that writes frames for the AE render queue
- images
- written_paths_json
- primary_path
- summary_json
After Effects Render Output is the runtime companion to MKRAfterEffectsRenderPlan - the half of the render lane that actually writes pixels. It takes your generated image batch and the ae_render_plan_json that MKRAfterEffectsRenderPlan produced, and saves the frames to the asset path the plan names. From there, the AE addon picks them up to feed a comp or the render queue. If you're building a roundtrip where ComfyUI generates footage that lands back in After Effects, this is the node that closes the loop on the ComfyUI side.
It's from the host-addons lane of MKRShift Nodes (Cris K B's production pack, with an After Effects addon scaffold under addons/after_effects/), and like every runtime output node in the lane it shares a base class, so the behavior is the same whether you're writing for AE, Photoshop, or Affinity - only the plan field name changes.
How it works
You feed it images and the ae_render_plan_json. It reads the plan's asset_path (or a nested asset object's path), then saves the batch with PIL. The details that matter when frames are on the line:
- Unrecognized or missing image suffix → writes PNG and adds a warning. Don't plan on writing EXR through this node; it converts.
- Multiple images become a zero-padded sequence:
stem_0000.png,stem_0001.png, … - the natural shape for AE footage. - Target directories are created on the fly.
filename_overrideredirects a single run without editing the plan.
Outputs are the standard host-runtime trio: written_paths_json (every file written), primary_path (the first), and summary_json (host, target comp/name, count, warnings).
Installation
cd ComfyUI/custom_nodes
git clone https://github.com/criskb/MKRShift_Nodes
Restart ComfyUI, or install via ComfyUI Manager ("MKRShift Nodes"). No pip dependencies - PIL file writing and JSON parsing.
Common issues
The usual suspects, plus one render-specific trap. First: this node writes files; it does not render anything in AE. If your comp stays empty, the AE addon isn't consuming the path - check the host side. Second, empty plan → fallback mkrshift_output.png in the working directory; always run MKRAfterEffectsRenderPlan first and wire its JSON through. Third - and this one's specific to render output - the order of your batch is the frame order, and the zero-padded naming preserves it, but only if your batch is already in timeline order. If you feed frames out of sequence, the file names will lie to you and the comp will stutter. Sort your batch upstream. And on format: if your AE pipeline expects a particular codec or EXR for the render queue, this node's PNG-write-and-warn behavior will quietly change your pipeline's expectations - match the format to the plan before you commit. For a single still, it's one of the simplest "hand my result back to AE" nodes in the pack.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| images | IMAGE | — | |
| ae_render_plan_json | STRING | {} | — |
| filename_overrideopt | STRING | — |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| written_paths_json | STRING | — |
| primary_path | STRING | — |
| summary_json | STRING | — |