Nodes/ComfyUI-emaki/emaki Generate Image
ComfyUI Node

emaki Generate Image

A cloud model in a box, no GPU, no weights

By hanshs474·Created 3 days ago·Updated 3 days ago· 0
emaki Generate Image
    • image
    • url
    ◄prompta paper-cut layered mountain range at dusk►
    ◄modelnano_banana_2_lite►
    ◄aspect_ratio16:9►
    ◄api_key►
    ◄seed0►

    The name is a lie in the most useful way: EmakiGenerateImage isn't a sampler. It doesn't load a checkpoint, doesn't touch your VRAM, and doesn't download anything on install. It's an HTTP client wearing a node's clothes - you type a prompt, it sends that prompt to emaki.ai, waits for a hosted image model to finish, and hands the pixels back as a normal IMAGE tensor so the rest of your graph can't tell the difference.

    Why bother? Because every model behind that dropdown is closed - Nano Banana 2, Seedream 5, GPT Image 2, lite variants included. None of them has weights to download, so calling them is the only door into a Comfy graph. That's what the KB files under API-wrapper nodes: a node that ships your prompt over the network and drops the result back as if a local sampler made it.

    How it actually works

    Under the hood it's a submit-and-poll loop over the standard library: POST {prompt, model, parameters} to emaki's generation endpoint, get a run id, check status every five seconds until the job reports completed, then download the result, convert it to an RGB float tensor and return it. The 15-minute deadline is sized for video; images come back in seconds.

    You also get a url output - the hosted copy - which is handy for keeping a link or feeding another API node that wants a URL rather than a tensor.

    The fields you'll actually set

    Three of them are required, and only one requires thought.

    • prompt - multiline, and honestly the only place quality comes from. The default is the author's own demo prompt, not a style guide.
    • model - nano_banana_2_lite (default, and the cheapest), nano_banana_2, seedream_5_lite, gpt_image_2. Three vendors' models wearing one key. Lite is the budget tier; step up when text rendering is the actual problem.
    • aspect_ratio - 1:1, 16:9, 9:16, 4:3, 3:4, 2:3, 3:2, 21:9, defaulting to 16:9. Your only framing control: no width/height, no resolution field, so you get whatever the model decides inside that ratio.

    Then two optional ones. api_key is self-explanatory - leave it empty and the node reads EMAKI_API_KEY; runs cost credits at the website price. seed deserves a warning.

    The seed is a cache-buster, not a seed

    The tooltip says "Change to force a new run," and that is literally all it does. Read the node source: seed is accepted as an argument and never forwarded - the model on emaki's side never sees it. ComfyUI also won't re-execute a node whose inputs haven't changed, so queueing the same prompt twice hands you the cached tensor and charges you nothing. Bump the seed and you force a fresh call to a model that's nondeterministic anyway - identical inputs are free but frozen, new seeds give variations you can't reproduce.

    Install

    ComfyUI Manager, search ComfyUI-emaki. Or the manual route:

    cd ComfyUI/custom_nodes
    git clone https://github.com/hanshs474/ComfyUI-emaki
    

    Restart ComfyUI and it appears under the emaki category. Nothing to pip install: the pack's dependencies list is empty, the client is stdlib-only, and the tensor code reuses the torch, numpy and Pillow ComfyUI already ships. No model downloads either. Get a key at emaki.ai/settings/apikeys, then paste it into api_key or export it before launch:

    export EMAKI_API_KEY=your_key_here
    

    Do that in the shell that starts ComfyUI; the variable is read from the server process, so another terminal's export won't reach a running instance.

    Where it goes wrong

    The client maps HTTP failures to named exceptions, which is unusually considerate, and the messages tell you what to fix:

    • Nothing generated, 401 - no key found. Empty api_key field plus no EMAKI_API_KEY in the server's environment.
    • 402 / 403 - out of credits, or the selected model needs a purchase on the account first. The lite models are the cheap test run.
    • 409 busy - another generation on this account is still running. One at a time, per account; a second workflow tab will trip this.
    • A content refusal - emaki's filter is upstream, at the model. Reword the prompt; there's nothing local to patch.

    One security note, generic to the category: a node whose job is to send your prompt and your key over the network is the one place where a malicious phone-home looks normal, and that's happened here before. The upside is that this pack is MIT and authored by emaki itself, not a random ComfyUI-something-API wrapper. Still glance at what a fresh pack does on import before pasting a key into it.

    The tradeoff: you pay per press and your prompt leaves the machine. As a first-frame picker ahead of an image-to-video run, that's a fair deal; at forty iterations, do the math first.

    Categoryemaki

    Inputs (5)

    NameTypeDefaultDescription
    promptSTRINGa paper-cut layered mountain range at dusk—
    modelCOMBOnano_banana_2_lite4 options: nano_banana_2_lite, nano_banana_2, seedream_5_lite, gpt_image_2
    aspect_ratioCOMBO16:98 options: 1:1, 16:9, 9:16, 4:3, 3:4, 2:3, +2
    api_keyoptSTRINGKey from emaki.ai/settings/apikeys. Leave empty to read EMAKI_API_KEY from the environment. Runs cost credits on your emaki account, the same price as on the website.
    seedoptINT00–4294967295Change to force a new run

    Outputs (2)

    NameTypeDescription
    imageIMAGE—
    urlSTRING—