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

Midjourney Translate (Ace Data Cloud)

Write the Prompt in Chinese, Generate in English

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

    What it is

    Midjourney is an English-first model. You can hand it Chinese and get something back, but the model's prompt understanding is trained around English phrasing, and its own tooling includes a translate step for exactly that reason. This node exposes it: Chinese content in, English prompt out.

    That's a narrow tool, and it's worth being honest that most people reading this won't need it. If you write prompts in English anyway, there's nothing here for you. But if your working language is Chinese and you've been round-tripping through a browser tab - or copy-pasting into Google Translate and getting prose that reads like a novel instead of a prompt - this is the cleaner path, and it stays inside the graph so the output can feed straight into Imagine.

    There's a second, less obvious use: as a normalisation step. Prompt text assembled from a local LLM, a caption node, or a random-prompt generator arrives in whatever shape it arrives in. Running it through a translator that's tuned for image prompts tends to produce tighter, more model-shaped English than the original source did.

    How it works

    One POST to /midjourney/translate, one required field. The call has no async mode in the shipped contract, so it's synchronous: no task_id, no polling, no second graph run. The translated text is in result_json, alongside status: succeeded.

    As with the other text-returning tool in this pack (Shorten), media_urls_json and first_media_url will normally be empty strings - there's no media in the response, so the pack's URL harvesting finds nothing. That's expected, not a failure. If you want the translated string as a feed for another node, pull it out of result_json with a JSON-extracting node; don't try to string-split your way out of it.

    Contract validation runs locally before the request, so an empty content never reaches the network. Given that every call in this pack is billable, that's a small kindness worth appreciating.

    Inputs and outputs

    • content (required) - the text to translate. Despite the name it's a plain string field, not a JSON field.
    • parameters_json - the pack-wide JSON hatch, default {}, merged into the request body with any non-empty widget winning the conflict. Leave it empty unless the published contract has a field the node doesn't expose.
    • Outputs: status, task_id, media_urls_json, first_media_url, result_json, trace_id, all STRINGs. result_json is the one that matters; trace_id is there if you ever need to reference the call to the vendor.

    Install

    ComfyUI Manager → search Midjourney → confirm publisher acedatacloud and package Midjourney by Ace Data Cloud (Registry ID midjourney) → install → restart. Manual install:

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

    Then, in the environment that launches ComfyUI:

    export ACEDATACLOUD_API_KEY=your-key-here
    

    Restart ComfyUI so the process picks it up. ACEDATACLOUD_API_TOKEN is accepted interchangeably. Dependencies are requests and jsonschema, and there's nothing to download model-wise.

    Common issues

    Missing key error. "Set ACEDATACLOUD_API_KEY in the ComfyUI process environment and restart." The usual cause is exporting the variable in a terminal that isn't the one running ComfyUI, or doing it after launch. There's deliberately no key field on the node - the README makes the point that keys belong in the process environment, not in workflow JSON where they get shared, screenshotted and committed.

    Nothing appears in the outputs panel but the translation worked. You're looking at the wrong output. The node prints a short status block in its own UI panel (status, task ID line, media count), and the actual text lives in result_json. Open the node's output in the UI or pipe the socket somewhere you can read it.

    It translated more than your prompt. If you paste five sentences of scene description, you'll get five sentences back - this isn't a prompt compactor. Pair it with Shorten when the input is chatty and you want something the model will actually read.

    Expecting Japanese, Korean or Spanish support. The tool is documented as Chinese-to-English, and that's what it's for. It may well handle other languages; the pack doesn't claim it, so don't build a pipeline on the assumption.

    One more billable call. Cheap, synchronous, and easy to forget about in a loop. If you're translating hundreds of prompts in a scripted run, do it once and cache the output rather than paying per queue.

    CategoryAce Data Cloud/Midjourney

    Inputs (2)

    NameTypeDefaultDescription
    parameters_jsonSTRING{}—
    contentSTRING—

    Outputs (6)

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