AQ_CoverPrompt
Turn half-baked album-cover ideas into a full prompt (with a free negative prompt)
- prompt
- negative_prompt
The name is honest and slightly boring: this node builds prompts. Give it rough art direction and the text you want on the cover, and it hands you a ready-to-use positive prompt plus a decent hardcoded negative prompt. No API, no model, no key - it's a fancy string template, and that's exactly the right tool for the job.
It's part of this pack's music pipeline. The sibling acestep nodes (AQ_Gemini_acstep15, AQ_OpenAI_acstep15) produce a coverImage art-direction string, and this is the thing that turns that raw description into something an image model can actually draw. But it stands alone fine: YouTube thumbnail, album art, poster, any "put legible text on an image" job.
How it works
The mechanism is dead simple: the node reads a Markdown template (prompts/cover.md inside the pack) and fills in your inputs with Python's .format(). What makes it good is the template, not the code. It's a carefully written "stunning album cover" spec that tells the model the style, the exact format (16:9 YouTube is described as "1280x720 thumbnail, readable at 320px"), the art direction, and - the part most prompts botch - that the title, tagline, and headline are text to render into the image, in a high-contrast typeface. The negative prompt is a fixed string covering text errors, distorted letters, watermarks, logos, anatomy, bad lighting, oversaturation. It's a genuinely serviceable default, better than the empty one most people run.
The inputs that matter
cover_prompt- your art direction, multiline. "Neon-drenched rooftop at midnight" goes here.title,tagline,headline- the three text elements to bake into the art. Headline is the dominant text, tagline the small subtitle.tags- genre/mood context ("deep house, nocturnal, analog warmth").keyscale- 34 musical keys (default C major). It's a mood hint for the template's "genre & mood" section, not a technical instruction.style- 7 presets, defaultcinematic photo; also digital illustration, oil painting, neon art, minimalist, watercolor, 3D render.aspect_ratio- 16:9 YouTube, 1:1 Square, or 4:5 Portrait.template_override(optional) - paste your own template.
Outputs
Both are STRINGs: prompt and negative_prompt. Wire them into the positive and negative conditioning of whatever text-to-image model you're using.
Install
It ships in AQnodes, so:
cd ComfyUI/custom_nodes
git clone https://github.com/2frames/ComfyUI-AQnodes
cd ComfyUI-AQnodes
pip install -r requirements.txt
or just search "AQnodes" in ComfyUI Manager, then restart. Note the requirements file is a kitchen sink (transformers, qwen-vl-utils, insightface, onnxruntime-gpu, google-genai…) - overkill for a node that just formats text, but the pack imports everything at startup, so installing all of it is the safe path.
Gotchas
template_override must keep every {placeholder} the original template had, or you'll get a KeyError at run time. And remember that image models garble text - the template's "readable at thumbnail size" instruction helps, but it won't save you on a weak model; keep the title short. For this kind of work, text-rendering quality is 90% of the outcome, so pick a model that's good at it.
Inputs (9)
| Name | Type | Default | Description |
|---|---|---|---|
| cover_prompt | STRING | — | |
| title | STRING | — | |
| tagline | STRING | — | |
| headline | STRING | — | |
| tags | STRING | — | |
| keyscale | COMBO | C major | 34 options: C major, C# major, Db major, D major, D# major, Eb major, +28 |
| style | COMBO | cinematic photo | 7 options: cinematic photo, digital illustration, oil painting, neon art, minimalist, watercolor, +1 |
| aspect_ratio | COMBO | 16:9 YouTube | 3 options: 16:9 YouTube, 1:1 Square, 4:5 Portrait |
| template_overrideopt | STRING | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| prompt | STRING | — |
| negative_prompt | STRING | — |