describe#
Right-click a message -> Apps -> describe
describe reads an image back to you as text. Depending on the style you pick you get flowing prose, a comma-separated booru tag string, or a ready-made prompt aimed at a particular model. Each result carries a ๐ฒ button that turns it straight into a new generation.
There is no /describe slash command. The right-click menu is the only way in.
Running it#
- Right-click the message, Apps -> describe (long-press on mobile).
- Eimi checks your bot access. No access gets you "Access denied." and nothing opens.
- If the message has exactly one image, the run starts immediately as a private reply.
- If it has several, an ephemeral picker appears first.
- While the provider works, the reply cycles a moon emoji and a rotating status line.
- The finished descriptions replace the status message in place.
The multi-image picker#
Shown only when the message holds more than one usable image. It is a blurple panel headed ### Describe image, with a line telling you how many images were found and a second line reminding you which provider, style and count are about to be used, in the shape Will use **Gemini 3.1 Flash Lite** โข Krea (natural language) โข ร2.
The dropdown is labelled "Pick which image to describe" and lists up to 25 sources by filename, each with a {source type} โข {width}ร{height} subtitle. Picking one starts the run. It lives for 5 minutes, and anyone else clicking it gets "โ Not your describe."
See what counts as an image in that message for what the picker will find.
The waiting message#
While the provider is working, the reply shows a rotating moon phase plus a random silly line ("Squinting at the image...", "Trying to name that color...", "Workshopping a better verb..."). It updates on a jittered interval of 2.2 to 4.5 seconds so it does not tick like a metronome. There is no percentage, because there is nothing to measure -- an API call is opaque until it returns.
Videos and GIFs are not handled the way they are elsewhere
tweak, waldo and animate pull the first frame out of a video before working on it. describe does not -- it hands the file over as-is. Still images and animated GIFs are usually fine. An .mp4, .webm or .mov generally comes back as "returned no descriptions". Point describe at a still.
What controls it#
Every choice comes from your saved settings, under /settings -> ๐ Describe. There are no per-run options; if you want a different style, change it in settings and run describe again.
| Setting | What it picks | Range | Default |
|---|---|---|---|
describe_model |
Which backend reads the image | 4 entries in the dropdown, one of which does nothing | Gemini 3.1 Flash Lite |
describe_style |
What shape the output takes | 6 styles | Krea (natural language) |
describe_count |
How many descriptions per run | 1 to 4, cycled with the ๐ข Cycle button | 2 |
inline_prompts |
Whether each description renders inline or in a code block | on/off, shared with the rest of the bot | off |
inline_prompts lives on the main settings screen rather than the Describe sub-screen, because it is the same preference used by /imagine and Remix.
A describe_model or describe_style that no longer exists silently falls back to the default. describe_count is clamped to 1-4 whatever is in the database.
There is a 3-second per-user cooldown on the menu itself. Clicking again too soon gives "Please wait a moment before describing again." Nobody is exempt from it.
Providers#
Four entries appear in the backend dropdown. Three of them work.
| Provider | Runs | Styles it can do | Typical wait | Best for |
|---|---|---|---|---|
| Gemini 3.1 Flash Lite | Google's API | All six | A few seconds | The default. Fast, cheap, and good enough for everyday prompt-writing |
| Gemini 3 Flash | Google's API | All six | Slower than Lite | When you want a more considered read of a complicated picture |
| WD Tagger v3 (Booru tags) | Locally, on the CPU | Booru only | About 5-10 seconds | Anime and illustration, where the exact Danbooru tag vocabulary matters more than prose |
| JoyCaption Beta One | Nothing | -- | -- | Nothing. See the warning below |
The two Gemini backends#
Both call Google's API with the image and a long style-specific system prompt. The only difference between the two entries is which model id is used -- Gemini 3 Flash currently runs against a preview endpoint, so it can break without warning when Google shuffles model names.
Things worth knowing:
- Your
describe_countcalls run in parallel, so asking for four descriptions takes about as long as asking for one. - Each call has a 45-second ceiling. A call that overruns is dropped.
- Failed calls are dropped rather than retried or padded, which is why a count of 4 sometimes returns 3 results. If every call fails you get the "returned no descriptions" error.
- Sampling is deliberately loose (temperature 0.85) so parallel calls come back different rather than as four copies of each other.
- Output is capped at 2048 tokens per call, which is far more than any style needs.
Describing needs a Gemini API key configured on the bot. If the maintainer has not set one, both Gemini backends return nothing.
WD Tagger v3#
A purpose-built Danbooru tagger (SmilingWolf's eva02-large v3) rather than a language model. It does not write sentences and cannot be talked into it.
- It runs on the CPU of the machine hosting the bot, not on a GPU and not on an API. That is why it takes 5-10 seconds rather than 2.
- The first use after a bot restart downloads a roughly 600 MB model, so the first run is much slower than the rest. After that it is cached on disk.
- It keeps general tags scoring above 0.35 and character tags above 0.85. The high character threshold is deliberate -- it stops the tagger confidently naming a character who is not actually there. Rating tags are thrown away entirely.
- Character tags come first, then general tags sorted by confidence. Underscores are kept, Danbooru-style.
- It is deterministic. The same image gives the same tags, so a
describe_countabove 1 just repeats the same string that many times. - If no tag clears its threshold you get the "returned no descriptions" error.
WD Tagger ignores your style setting
WD Tagger v3 only supports the booru style. Whatever describe_style you have saved, this backend returns Danbooru tags. If you set the style to Krea and the backend to WD Tagger, you get tags.
JoyCaption Beta One does not work
JoyCaption Beta One (self-hosted) appears in the backend dropdown, labelled there as "Self-hosted ยท not yet wired". It is a placeholder with nothing behind it. Selecting it makes every describe run fail with "returned no descriptions" until you change the setting back. Stay on one of the other three.
Two labels in the settings dropdown are wrong
WD Tagger v3 is described in the dropdown as "API ยท fast". It is neither -- it runs locally and is the slowest of the three working backends. The style screen also claims "Booru-style output always uses WD Tagger v3 internally"; it does not. Picking booru style with a Gemini backend gets you tags written by Gemini, which are looser and more willing to guess than the tagger's.
Output styles#
Six styles. They change the system prompt handed to the backend, and they change which model the ๐ฒ button pre-selects afterwards.
| Style | Output shape | Model ๐ฒ pre-selects |
|---|---|---|
| Krea (natural language) | One flowing 50-150 word paragraph | Krea 2 |
| Ideogram (text-aware) | Prose paragraph with the typography spelled out | Ideogram 4 |
| Booru (Danbooru tags) | Lowercase underscored comma-separated tags | mystery i32 (SDXL Illustrious) |
| SD prompt (civitai mix) | Comma-separated mix of phrases and tags | Krea 2 |
| MidJourney prompt | Short dense prompt ending in -- parameters |
Krea 2 |
| Plain description | Neutral factual paragraph, no art direction | Krea 2 |
The blocks below are format sketches
They show the shape each style produces, not real output from any particular picture.
Krea (natural language)#
The default, and the one to use if you are unsure. Written for Krea 2, which rewards concrete nouns and ignores decoration.
The rules it works under: name materials rather than calling things beautiful, name lights directionally ("rim light from camera-left", "golden hour backlight"), use lens and film language on photos, commit to exactly one medium instead of hedging with "stylized realism", call out scale contrasts, quote any visible text verbatim, and stay between 50 and 150 words. No quality tags, no tag lists, no markdown.
A weathered fisherman mends a net on wet black stone, rim light from camera-left
catching the salt crust on his forearms. 85mm, shallow depth of field, fog rolling
off the water behind him. Photograph, cold overcast light, heavy film grain.
Best for Krea 2, Z-Image, Anima, and as a general-purpose starting point you can paste anywhere.
Krea style deliberately varies between runs
Krea is the only style with a pool of prompt variants. Each call picks at random from six observational stances -- a neutral baseline plus photographic (lens, light direction, film character), illustrative (medium, line weight, palette), atmospheric (weather, fog, particulates, time of day), cinematic (blocking, framing, scale relationships) and editorial (pose, wardrobe, styling, set design). Set describe_count to 3 or 4 and you get genuinely different readings of the same picture instead of near-identical paragraphs. Every other style uses one fixed prompt, which is on purpose -- tag output should stay consistent.
Ideogram (text-aware)#
The same prose shape as Krea, but the system prompt makes typography the priority. Any text in the picture is reproduced exactly, inside quote marks, with its visual treatment described (serif, neon, hand-lettered, embossed). Lighting, palette, mood and medium follow.
A diner window at night, the sign reading "OPEN 24/7" in warm pink neon script above
a hand-painted "PIE" in cream serif lettering. Rain on the glass, sodium streetlight
behind, deep blue shadow. Photograph, wide angle, saturated.
Best for Ideogram 4, which is the model in the catalogue built around rendering legible text. Use it on posters, signage, book covers, packaging, memes -- anything where the words are the point.
Booru (Danbooru tags)#
Comma-separated lowercase underscored tags, no sentences. The ordering is fixed: count first (1girl, 2boys), then recognisable character identities, then physical traits, clothing, pose, expression, action, setting, and finally style or medium meta tags.
1girl, solo, long_hair, blue_eyes, school_uniform, pleated_skirt, sitting,
looking_at_viewer, smile, classroom, window, sunlight, anime_style
Best for SDXL Illustrious, Pony and NoobAI checkpoints and for anime models generally, since those were trained on exactly this vocabulary. For real accuracy use the WD Tagger v3 backend with this style; a Gemini backend will produce tags too, but it is guessing at Danbooru's vocabulary rather than predicting it.
SD prompt (civitai mix)#
The comma-separated hybrid you see on Civitai model pages: descriptive fragments and tag-style fragments in the same list, medium hint near the front.
photograph of a young woman with flowing blonde hair, leather jacket, neon-lit alley,
rain, studio lighting, soft focus, shallow depth of field, cinematic color grade
Best for older SDXL checkpoints and Flux.1 D, which respond well to this middle ground between prose and tags. Explicitly forbidden from adding "masterpiece, best quality, 8k" style padding.
MidJourney prompt#
Short and dense: subject, style, lighting, composition, then whatever -- parameters fit, such as --ar 16:9 on a landscape image or --style raw on a photo.
brutalist concrete cathedral at dawn, volumetric god rays through dust,
cinematic photography, symmetrical wide shot --ar 16:9 --style raw
Best for pasting into MidJourney itself. If you generate it on Eimi, the -- parameters are just words in the prompt -- no model here reads them. Use the Aspect control instead.
Plain description#
Not a prompt. A neutral factual paragraph of what is in the picture: subject, colours, lighting, composition, apparent medium. It is explicitly told to describe what is rather than what should be, and to add no art direction.
A photograph of two people sitting on a wooden bench facing away from the camera,
overlooking a lake at midday. Overcast light, muted greens and greys, the horizon
placed roughly a third of the way up the frame.
Best when you want something to edit into a prompt yourself, or when you are describing an image for reference rather than to regenerate it. It is also the style Flux 2, Qwen Image and ERNIE get automatically when the bot describes an image on your behalf.
The result#
The descriptions arrive as an ephemeral card. It is yours alone; anyone else clicking a button on it gets "โ Not your describe."
### Description
Provider: Gemini 3.1 Flash Lite โข Style: Krea (natural language) โข
Suggested model on Generate: krea2_raw_int8_convrot.safetensors
**#1**
<the first description> [๐ฒ]
**#2**
<the second description> [๐ฒ]
Each description is its own block with its own ๐ฒ button, numbered in the order the calls returned. Each one is capped at 3500 characters and rendered inline or in a code block according to your inline_prompts setting.
The card stays usable for 15 minutes, which is as long as Discord keeps the interaction alive anyway.
A bot restart kills the ๐ฒ buttons
The buttons on a describe card do not survive a restart -- the card stays on screen but ๐ฒ stops responding. Eimi runs on one machine and gets restarted fairly often. If a card has gone quiet, run describe again.
Messages you might see instead of results:
| Message | What happened |
|---|---|
| "โ No image found in that message." | Nothing usable in the message you right-clicked |
| "โ Could not download that image. The CDN attachment may have expired." | Discord's signed link for the image had expired and the re-fetch did not recover it |
| "โ {provider} returned no descriptions." | Every call failed. An API hiccup, a missing API key, a picture the provider refused, or JoyCaption |
| "Please wait a moment before describing again." | You are inside the 3-second cooldown |
| "โ Not your describe." | Someone else's card |
The ๐ฒ Conjure button#
๐ฒ next to a description hands it to the generator. It opens a private Conjure panel headed ### Remix (from /describe ยท {style}).
Conjure is the same panel as the ๐ฒ Remix button on a finished result card, with one difference: there is no parent job, because the description is not from a generation. Everything on the Remix page applies here -- model picker, LoRAs, prompt and negative editors, aspect, batch, seed, and the Quality, Sampling and Flags submenus. Back from any submenu returns to Conjure, not to Remix.
What arrives pre-filled#
| Field | Where it comes from |
|---|---|
| Prompt | The description you clicked, verbatim |
| Model | The style's suggested model from the table above |
| Aspect ratio | The supported ratio closest to the source image's actual shape, then your /settings default, then the model's own default |
| Negative prompt | Your default_negative setting |
| Extra positive | Your default_positive setting |
| NSFW / raw flags | Your settings |
| Upscaler | Your setting, if you have one |
| Embeddings | Your saved embeddings |
| Enhancement | On if your ai_features is enhance_only or both. Always on for Ideogram 4, which needs its magic-prompt pass |
| Everything else | Model defaults, marked unchanged |
LoRAs are deliberately not carried over from your settings. The style's suggested model may be a completely different architecture from the one your default LoRAs target, and a LoRA on the wrong base model produces garbage. Attach them from the LoRA submenu once you can see which model got picked.
The source image toggle#
Conjure can feed the image you described back in as an img2img reference, so you get a variation on the original rather than a fresh picture from its description.
The control is a ๐ผ๏ธ button reading Source image: OFF (text only) in grey, or Source image: ON (img2img) in green. Off is the default -- the point of Conjure is the prompt-only route.
The toggle is hidden more often than it is shown
It only appears when the currently selected model actually accepts an input image. These model types do not, so the whole section including the Upload and Replace buttons disappears: Krea 2, Ideogram 4, Flux 2, Flux.1 D and ERNIE.
That covers the suggested model for five of the six styles. In practice the toggle is invisible on a default run, and shows up after you switch to something img2img-capable (SDXL, Anima, Z-Image, Neta Lumina, Mugen, Qwen Image) in the Model submenu. The section reappears the moment you do.
Toggling it on routes the source image into the input slot the same way an uploaded image would. Toggling it off clears the input entirely, so nothing leaks into a text-only run. The regular Upload / Replace / Clear buttons stay available on img2img-capable models, so you can point it at a different image instead.
Generating#
Press Generate and the job goes into the normal queue, charged to you, with your quota and limits applying as usual. The Conjure menu deletes itself as the job is submitted.
Whether the result posts publicly or only to you is decided by the original right-click, not by the button press -- this matters when Eimi is installed both to your account and to the server. See Delivery.
This is the shortest route from "I like this picture someone posted" to "I have my own version of it": describe it, hit ๐ฒ, adjust, generate.
Describing that happens without you asking#
The same machinery runs quietly in two other places, when you have given no prompt of your own:
- /upscale with the USDU upscaler
- High-res fix
Both need a prompt to guide the upscale. If you did not supply one, the image is described first and the description is used instead. It picks the style that matches the target model rather than your saved describe_style, so the model is handed a prompt in the format it was trained on:
| Target model | Style used |
|---|---|
| SDXL Illustrious / Pony / NoobAI, Neta Lumina | Booru tags |
| Other SDXL, Flux.1 D, Mugen | SD prompt |
| Ideogram 4 | Ideogram |
| Flux 2, Qwen Image, ERNIE | Plain description |
| Krea 2, Z-Image, Anima, anything unrecognised | Krea |
It uses your describe_model backend if you have one saved, otherwise Gemini 3.1 Flash Lite. It asks for one description, and if that fails the job carries on with whatever placeholder prompt it had.
See also#
- Remix -- the panel ๐ฒ opens, control by control
- tweak -- edit the image instead of describing it
- /settings -- the Describe sub-screen
- Prompting Tips -- what each model wants a prompt to look like
- Right-click menus -- the other four