Aseprite Animation Tags
Frame tags without opening Aseprite
- animation_json
- merged_aseprite_json
- json_path
- report
In Aseprite, animation tags are how you say "these frames, in this order, looping this way, are the idle animation." GameAssets_AsepriteAnimationTags writes exactly those tags - meta.frameTags in Aseprite's exported JSON - without you ever opening Aseprite. If you already have a sprite atlas and just need the animation metadata bolted on, this is the node.
It's from comfyui-game-assets-maker, the pack quinteroac shared on r/comfyui as playground nodes for GPT Image 2 sprite generation. It overlaps with Aseprite Animation Atlas, but they're for different moments: that node builds frames and tags together; this one adds tags to an atlas you already have (or produces tags standalone).
How it works
You set the total frame_count and animation_count, and the frontend replaces the raw JSON with one editable block per animation - name, first frame, last frame, direction, and color. Directions use Aseprite's real exported values: forward, reverse, or pingpong. Changing frame_count or animation_count rebuilds the widgets on the fly.
The useful mode is when you feed it an existing atlas through the optional aseprite_json input. It then returns a merged JSON: your original frames plus the new meta.frameTags, ready for any engine or importer that reads animations from Aseprite frame tags. That's the mode you'll actually want for real projects - the other mode just emits the tags payload on its own.
Inputs
frame_count- total frames on the sheet; the tagfrom/tofields are indices into this.animation_count- how many tag widgets to show.animation_tags- the hidden JSON the widgets write, defaulting to oneidletag (0..3, forward).aseprite_json(optional) - paste or wire in an existing atlas to merge tags into it.save_json/filename_prefix- whether to write the merged JSON to ComfyUI's output directory and what to call it.
Outputs
animation_json (just the frameTags payload), merged_aseprite_json (the original atlas + tags, when you fed one in), json_path, and report (the resolved tag list). The merged JSON is what you want to save or hand to your engine.
Installing
ComfyUI Manager (search "comfyui-game-assets-maker") or:
cd ComfyUI/custom_nodes
git clone https://github.com/quinteroac/ComfyUI-GameAssetsMaker.git
cd ComfyUI-GameAssetsMaker
pip install -r requirements.txt
Then restart. The only dependency is opencv-python - no models, no downloads.
Where people get burned
The tag from/to are inclusive frame indices, and there's no clamping between tags - two tags can overlap and the node won't complain. If your idle is frames 0–3 and run is frames 4–7, that's fine; if you fat-finger run to 2–7, you'll find out in the preview or the engine, not here. Also, "Animation" vs "Visual Novel" matters in the sibling atlas nodes, but this one is agnostic - it just writes tags, so it works on either kind of sheet.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| frame_count | INT | 41–10000 | — |
| animation_count | INT | 11–128 | — |
| animation_tags | STRING | [{"name":"idle","from":0,"to":3,"direction":"forward","color":"#000000ff"}] | — |
| save_json | BOOLEAN | true | — |
| filename_prefix | STRING | aseprite_animation_tags | — |
| aseprite_jsonopt | STRING | — |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| animation_json | STRING | — |
| merged_aseprite_json | STRING | — |
| json_path | STRING | — |
| report | STRING | — |