Nodes/MidjourneyComfyUI/Midjourney Shorten (Ace Data Cloud)
ComfyUI Node

Midjourney Shorten (Ace Data Cloud)

The Cheapest Way to Learn What Prompts Matter

By AceDataCloud·Created 3 days ago·Updated 2 days ago· 0
Midjourney Shorten (Ace Data Cloud)
    • status
    • task_id
    • media_urls_json
    • first_media_url
    • result_json
    • trace_id
    ◄parameters_json{}►
    ◄prompt►

    What it is

    /shorten takes whatever rambling prompt you wrote and returns tighter versions of it. That's the entire node. It generates no image, saves no file, and produces nothing you can look at - it produces text, and that text is the point.

    The reason to care is that prompt bloat is the most common self-inflicted wound in image generation. Twelve comma-separated style words, three of which are fighting each other, and a "masterpiece, best quality" tail that most 2026 models ignore. Throwing your prompt at Shorten and reading what survives is a cheap, concrete lesson in which words were actually doing work. It's the mirror image of Describe: one turns images into prompt text, this one turns prompt text into a cleaner prompt text.

    The evidence that this is worth caring about is unglamorous and consistent: generations past roughly 75–100 effective tokens start to drift, and the advice that keeps showing up from people who ran hundreds of test images is blunt - three to five strong concepts, subject first, everything else is gravy. Shorten shows you what your prompt looks like under that rule.

    In a graph, it also has a mechanical use: draft a long messy prompt with a local LLM, run it through this, and feed the shortened version into Imagine. Less paid per-token guesswork, tighter generations.

    How it works

    The node merges its widgets with parameters_json, validates against the published /midjourney/shorten contract, and POSTs. prompt is required - an empty one is rejected locally, before the network call, which is the pack's consistent habit and a genuinely nice one when you're iterating.

    This tool has no async mode in the shipped contract, so it behaves differently from Imagine: the answer comes back on the same call. You'll see status: succeeded with an empty task_id, and the shortened prompt options sit inside result_json. media_urls_json and first_media_url will normally be empty strings - there are no media in a text response, and the pack's URL extraction only picks up URL-shaped fields. Don't wire first_media_url into a loader and wonder why nothing happens.

    Note that task_id, media_urls_json, first_media_url and trace_id are still there as sockets on the node, because all nine tool nodes in this pack share the same six-string signature. That uniformity is convenient for building generic workflows and slightly confusing the first time you meet it.

    Inputs and outputs

    • prompt (multiline, required) - the prompt to slim down. Paste the long one.
    • parameters_json - defaults to {}. Leave it unless the contract has a field the widgets don't expose.
    • Outputs: status, task_id, media_urls_json, first_media_url, result_json, trace_id - all STRINGs. Read result_json. If you want the shortened text to drive another node, run that JSON through a JSON-extract node rather than trying to string-split your way out of it.

    Install

    ComfyUI Manager → search Midjourney → publisher acedatacloud, package Midjourney by Ace Data Cloud (Registry ID midjourney) → install → restart. Or, from a shell in your ComfyUI install:

    cd ComfyUI/custom_nodes
    git clone https://github.com/AceDataCloud/MidjourneyComfyUI
    cd MidjourneyComfyUI
    python -m pip install -r requirements.txt
    

    Then make the key visible to the ComfyUI process and restart it:

    export ACEDATACLOUD_API_KEY=your-key-here
    

    No models, no GPU work - dependencies are requests and jsonschema.

    Common issues

    Nothing to look at. Not a bug. This node's output is text in result_json and the status lines the node prints in its own UI panel. There is no image.

    Missing key. Without ACEDATACLOUD_API_KEY in the process environment you get a clean "Set ACEDATACLOUD_API_KEY in the ComfyUI process environment and restart." - which is what you want: no half-authenticated request, no mystery 401.

    Bad JSON in parameters_json. The node raises parameters_json must contain a JSON object. before it touches the network or the key. Same for anything the contract disallows - validation is client-side, so mistakes here are free.

    It's a paid call, and the cheap ones add up. Shorten costs a fraction of an Imagine, which is exactly why it's tempting to loop it over a folder of prompts. Set a budget before you do; the pack's pricing lives on Ace Data Cloud's platform page, not in the node.

    Where the real lesson is. Don't treat the shortened prompt as gospel. Read the difference between your version and Midjourney's and notice which descriptors it kept - that tells you what the model is actually reacting to, which is more useful than the shortened string itself.

    CategoryAce Data Cloud/Midjourney

    Inputs (2)

    NameTypeDefaultDescription
    parameters_jsonSTRING{}—
    promptSTRING—

    Outputs (6)

    NameTypeDescription
    statusSTRING—
    task_idSTRING—
    media_urls_jsonSTRING—
    first_media_urlSTRING—
    result_jsonSTRING—
    trace_idSTRING—