Nodes/MKRShift_Nodes/Publish Asset Manifest
ComfyUI Node

Publish Asset Manifest

Turn a batch of images into a ready-to-ship asset manifest

By criskb·Created 7 months ago·Updated 5 months ago· 0
Publish Asset Manifest
  • images
  • manifest_json
  • manifest_csv
  • manifest_md
  • summary_json
  • asset_count
projectMKRShift
asset_prefixasset
channelmain
extensionpng
start_index1
title_prefixRelease
tags_csv
notes
alt_template{project} {display_index:02d} | {title} | {ratio}
titles_csv
shot_labels_csv

You've generated a batch of assets - a product drop, a release, a set of promo variants - and now you need to actually deliver them, which means filenames, alt text, titles, tags, and a record of what's what. MKRPublishAssetManifest turns a batch of images into that record: feed it an IMAGE batch, get back a full manifest in JSON, CSV, and Markdown, with per-asset filenames, titles, alt text, and tags generated for you.

What it's for

It sits at the "ship it" end of a publish pipeline. The images are still yours to save - this node produces the metadata that describes them, consistently, so you're not hand-writing 24 alt texts after a batch generation. It's the delivery manifest half of the pack's Publish area, and it pairs naturally with a save node and the copy deck below it.

How it works

For each frame in the batch, it builds a manifest row: a computed filename from asset_prefix + channel + index, a title from titles_csv if you gave it one (otherwise a title_prefix-based default), alt text rendered from alt_template (default {project} {display_index:02d} | {title} | {ratio}), and tags from tags_csv. shot_labels_csv lets you give each frame its own label. The whole thing comes out in three formats: manifest_json, manifest_csv (spreadsheet-friendly), and manifest_md (for a README or shareable sheet).

Inputs that matter

  • images - the batch. Its width/height feed the {ratio} in alt text.
  • project, asset_prefix, channel - the naming pieces that become filenames.
  • start_index - where numbering begins (default 1).
  • title_prefix, titles_csv, shot_labels_csv, tags_csv, notes - content.
  • alt_template - the Python-format string that builds alt text. Default is a solid starting point.

Outputs: manifest_json, manifest_csv, manifest_md, summary_json, and asset_count (an INT, useful as a downstream sanity check).

Installing it

Pack install as usual:

cd ComfyUI/custom_nodes
git clone https://github.com/criskb/MKRShift_Nodes

restart ComfyUI, or Manager → MKRShift_Nodes. Pure string/JSON work - no ffmpeg, no extra deps.

Common issues

Two things to keep straight. First, it's metadata only: no files get written, so pair it with a save node or your assets exist only in a manifest. Second, alt_template uses Python format placeholders - if you put raw {title} into a CSV field expecting a literal brace, it'll be interpolated, and unknown placeholders can raise. And the manifest describes what would be delivered - if you change extension to jpg while the save node writes PNGs, the manifest and reality diverge. Keep them in sync.

CategoryMKRShift Nodes/Publish/Build

Inputs (12)

NameTypeDefaultDescription
imagesIMAGE
projectSTRINGMKRShift
asset_prefixSTRINGasset
channelSTRINGmain
extensionSTRINGpng
start_indexINT10–99999
title_prefixSTRINGRelease
tags_csvSTRING
notesSTRING
alt_templateSTRING{project} {display_index:02d} | {title} | {ratio}
titles_csvoptSTRING
shot_labels_csvoptSTRING

Outputs (5)

NameTypeDescription
manifest_jsonSTRING
manifest_csvSTRING
manifest_mdSTRING
summary_jsonSTRING
asset_countINT