MiniMax Prompt Report (Markdown)
See the exact prompt your ComfyUI song was actually built from
- markdown
When a song comes out nowhere near the brief you typed, the first question is always the same: what text actually reached the model? With image generation you can eyeball your prompt in a CLIP encode and judge by the picture. Music is worse - the prompt is assembled a couple of nodes upstream by an LLM, then disappears into a tokenizer you never see. MiniMaxPromptReport is the window into that black box. Feed it the caption and lyrics your workflow is about to send MiniMax Music 3, and it prints a Markdown report of exactly what the model is going to hear.
It comes from Johannes Plenio's MiniMax Music Production Toolkit, the "fill in a few fields, get a finished song" pack that runs a local LLM over your structured request, generates music with MiniMax Music 3, repairs the audio, makes a FLUX cover, and saves it all tagged. This node sits in the prompt subgraph, right after the LLM parse stage and before the strings hit the music encoder. It doesn't touch audio. It doesn't generate anything. It's a pure readout - which is exactly what makes it worth having when you're debugging why a track missed the brief or trying to reproduce one that didn't.
How it works
The clever part is that it doesn't just echo what you typed. It imports ComfyUI's own MiniMax prompt builder (comfy.ldm.minimax_music.prompt) and re-runs the same cleaning the tokenizer does. So the Caption and Lyrics sections show the text after clean_caption and normalize_lyrics, and the "Final prompt sent to MiniMax (verbatim)" block is character-for-character the string handed to the tokenizer - the whole <|caption_start|>…<|audio_start|> sandwich. That's the difference between "here's what I meant" and "here's what the model actually consumed," and for reproducibility it matters.
The report then appends a clearly separated Image Prompt section for the FLUX.2 cover, stamped as NOT sent to MiniMax. That separation is a genuinely thoughtful touch: the same LLM pass emits both a music prompt and an artwork prompt, and cover-art text has no business bleeding into the music tokenizer. This node makes it visually obvious when it would.
Inputs and outputs
All four inputs are required strings, wired from the parse node (MiniMaxParseExternalLLMOutputV16) in the reference workflow:
- caption - the musical brief; feeds MiniMax and lands in the reproducibility JSON
- lyrics - lyrics plus structural tags like
[Intro]/[Verse]; pure instrumentals carry only tags - title - shown in the report header (it never alters the audio)
- image_prompt - the FLUX cover prompt, reported but excluded from the MiniMax text
Output is a single markdown string. The pack ships a small frontend extension that attaches ComfyUI's Markdown preview widget to the node, so the report renders as formatted Markdown right in the node instead of raw text - no downstream connection needed to read it. And in the example workflow that markdown output is routed into MiniMaxSaveProductionJSON, which writes an Album - Title.md sidecar next to the per-song production JSON. Your prompt audit trail ends up on disk with the song.
Install
The usual two routes - ComfyUI Manager (search "MiniMax Music Production Toolkit") or:
cd ComfyUI/custom_nodes
git clone https://github.com/jplenio/ComfyUI-MiniMax-Music-Production-Toolkit
cd ComfyUI-MiniMax-Music-Production-Toolkit
pip install -r requirements.txt # with your ComfyUI's Python
Then restart and hard-refresh (Ctrl+F5). This node itself is dependency-free - the pack's heavier deps (SciPy, SoundFile, imageio-ffmpeg, Mutagen, Pillow) are for the audio and saving stages, and the local LLM chat needs llama-cpp-python plus a GGUF if you run that stage. MiniMax Music 3 and FLUX weights are gated and downloaded or provided separately; none are bundled.
Common issues
The main gotcha is upstream: this node only formats what it's fed, so a blank or empty report almost always means the LLM parse produced empty fields, not a node failure - check the parse stage first. On older ComfyUI builds that don't expose the MiniMax prompt module, you get the raw caption and lyrics plus a note instead of the exact final prompt, which the report itself tells you. And if the node shows raw text instead of formatted Markdown, your frontend is too old for ComfyUI's text-preview API - cosmetic only, the string output still works.
It has zero search impressions for a reason: it's a niche of a niche. But once you've had a track go off-brief and couldn't tell whether you or the prompt pipeline caused it, you'll be glad it's there.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| caption | STRING | Final structured MiniMax Music Caption generated or supplied for this song. Stored in the reproducibility JSON and fed to MiniMax Music. | |
| lyrics | STRING | Final MiniMax Music Lyrics/structure field. For pure instrumentals this should contain only supported structural tags; for vocal tracks it contains tags plus singable lyrics. | |
| title | STRING | Song title used for metadata, filenames or the reproducibility JSON, depending on the node. This does not alter the audio signal itself. | |
| image_prompt | STRING | Positive Flux artwork prompt associated with the song. It is stored for reproducibility and should describe visual content while avoiding requested text/logos if the workflow requires text-free covers. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| markdown | STRING | — |