- name
- anima-prompting
- disable-model-invocation
- true
- description
- Prompting rules for the CircleStone Labs **Anima** anime / illustration model. Use when the user asks to generate / draw / render an anime / illustration / non-photoreal image on an Anima workflow. Anima uses score tags and an `@artist` prefix syntax; it is for anime / illustration, not photorealism.
# Anima Prompting
[Anima](https://huggingface.co/circlestone-labs/Anima) is a 2B anime / illustration text-to-image model (CircleStone
Labs + Comfy Org), built on NVIDIA Cosmos with a qwen-text-encoder LLM adapter that has outsized influence on the
generated image. Write the `prompt` and `negative` you pass to the `generate_image` tool per the rules below to drive
Anima well on the first call. The score tags, `@artist` rule, and qwen-text-encoder behavior below are specific to
Anima.
Anima is trained on **Danbooru-style tags of the Gelbooru flavor, natural-language captions, and mixes of the two**
(anime training data cuts off September 2025). All three work; pick whichever fits the request and always lead with
quality + safety tags. Because of the qwen LLM text-encoder adapter, **natural language is a first-class input mode**,
not a fallback - prose (or a quality-tag prefix followed by prose) often captures a scene's composition, spatial layout,
and mood better than tags alone. The adapter is what makes detailed prompts pay off here far more than on a plain SDXL
model - terse prompts waste the model's strongest feature.
**Safe default when unsure:** use the `anima` workflow, begin the `prompt` with
`masterpiece, best quality, score_7, safe,`, describe the subject in roughly 12-25 lowercase tags (or 2+ sentences of
prose), and always pass the recommended `negative` from the [negative recipe](#negative-prompt-recipe). Short prompts
make Anima bland or unsafe, so spend the detail. Everything below is how to do better than this default when the request
calls for it.
## The `generate_image` call
| Arg | For Anima |
| ------------------ | ------------------------------------------------------------------------------------------------------- |
| `prompt` | Required. The full positive prompt **including** the `masterpiece, best quality, score_7, safe` prefix. |
| `negative` | Always pass one. Start from the recommended negative below. |
| `workflow` | Use `anima` when that workflow is configured; omit only if it is the `defaultWorkflow`. |
| `width` / `height` | 512-1536; default 1024x1024. Use portrait (e.g. 832x1216) for a single standing character. |
| `steps` | 30-50. Leave the workflow default (30) unless quality is lacking. |
| `cfg` | 4-5. Higher burns the image; do not push past ~5. |
| `seed` | Omit for a fresh random image; pass a prior seed to reproduce or vary one. |
You set the entire `prompt` string - it replaces the workflow's baked text, so the quality/safety prefix must be in your
prompt every time. Do not pass `inputImage` (Anima here is text-to-image only).
## Positive prompt recipe
1. **Lead with the prefix:** `masterpiece, best quality, score_7, safe,`
2. **Then the subject**, as tags, natural language, or a mix.
3. **Lowercase tags, spaces not underscores** - the only underscored tags are score tags (`score_7`). Prefer the
Gelbooru spelling when a tag differs between boorus.
4. **Be specific.** Anima's base style is plain; short prompts give bland or unexpected (sometimes unsafe) output. For
natural language aim for >=2 sentences. For tag style aim for >=8 substantive tags after the prefix. The model card
warns explicitly: "The model may generate undesired content, especially if the prompt is short or lacking details."
5. **Name then describe characters.**
`Fern from Sousou no Frieren, with long purple hair and purple eyes, wearing a black coat...` - especially with
multiple characters, describe each one's appearance or the model conflates them.
6. **Artists need `@`:** write `@artist name` (the `@` is mandatory; without it the style barely registers). You may put
quality/artist tags at the start of a natural-language prompt too. An `@artist` tag also **locks a consistent style
across seeds** - pin one when you want the same house look from image to image (verified: same `@artist` holds the
style steady across different seeds).
### Tag order (tag-style prompts)
```text
[quality / meta / year / safety] [1girl / 1boy / 1other] [character] [series] [@artist] [general tags]
```
Order only matters between sections; within a section tags are free-order. You do not need every relevant tag - the
model was trained with tag dropout.
## Natural-language and mixed prompts
Anima's qwen text-encoder adapter reads full sentences, not just tags, so natural language is a first-class way to
prompt it - often the better one for scenes, spatial relationships, mood, and multi-element compositions where a tag
list gets ambiguous. The model card ships a dedicated natural-language tips section; the rules that matter:
- **Keep the quality / safety prefix.** Lead with `masterpiece, best quality, score_7, safe,` (or `.`) even in a prose
prompt - the rating tag still carries safety - then write the description as prose. Quality and `@artist` tags are
fine at the start of a natural-language prompt.
- **Be descriptive: aim for >=2 sentences.** Pure natural language rewards detail; extremely short prose gives
unexpected (sometimes unsafe) results. Spend the same detail budget as the tag recipe (~12-25 depictable items), just
expressed as prose - appearance, wardrobe, setting, lighting, palette.
- **Mix tags and prose freely, in any order.** A hybrid is common and effective: open with quality + character / series
tags, then a sentence or two of prose for pose, framing, and scene. The tool takes one string; comma- or period-join
the two halves.
- **Name a character, then describe their appearance**
(`Fern from Sousou no Frieren, with long purple hair and purple eyes, wearing a black coat...`). With multiple
characters this is essential or the model conflates them.
The one caution: do not bury a single character under a wall of scenery prose - keep scene description to a short clause
and spend the detail on the character (see [Anti-patterns](#anti-patterns)).
## Expanding a terse user request
When the user asks for something short like "draw a cat girl" or "make me a witch", do **not** pass that string through.
Expand it before calling `generate_image`:
1. **Prefix:** add `masterpiece, best quality, score_7, safe,`.
2. **Subject count + type:** infer `1girl` / `1boy` / `1other`, plus `solo` if a single character.
3. **Character / series:** only if the user named one (`Frieren from Sousou no Frieren`); otherwise skip.
4. **Appearance:** invent 3-5 concrete details - hair color + length, eye color, outfit, distinctive accessory. Match
the user's vibe; ask only if their wording is genuinely ambiguous about a load-bearing detail (e.g. "anime girl in a
kimono - red or blue?").
5. **Pose / framing:** 1-2 tags - `looking at viewer`, `standing`, `upper body`, `cowboy shot`. Pick ONE framing tag.
6. **Setting:** 2-4 tags or a clause - `sunlit library, tall window, dust motes`, or
`simple background, white background` for a clean character shot.
7. **Lighting + palette:** 1-3 tags - `soft lighting`, `cinematic lighting`, `warm palette`, `muted colors`.
8. **Era (optional):** add `year 2025` or `newest` for a modern look; skip for timeless.
9. **Artist (optional):** only if the user named one - prepend `@` (e.g. `@some artist`).
10. **Negative:** always pass the recommended negative; add `extra fingers, text, watermark` for cleaner output.
The goal is roughly 12-25 substantive items in the positive prompt. If the user wants to iterate, pass the prior `seed`
back to vary by tweaking tags rather than restarting.
## When the user supplies tags directly
If the user hands you a tag list (or a tag list mixed with wildcards) instead of a terse English request, switch modes:
1. **Preserve every user-supplied tag verbatim.** Do not paraphrase, deduplicate, reorder across sections, or "improve"
their wording.
2. **Prepend the prefix if missing.** Add `masterpiece, best quality, score_7, safe,` only if the user did not already
include quality / safety tags.
3. **Add spatial / positional words only.** Insert framing words like `in the center of the frame`, `foreground`,
`background`, `in front of`, `surrounded by`, `on either side` to disambiguate where elements sit. Do not add
weather, lighting, palette, or outfit details the user did not ask for.
4. **Preserve dynamic-prompt wildcards exactly.** `{A|B}`, `{A,|B,|C}`, `{1-3$$ A|B|C}`, and `{A,B}_noun` are
wildcard-extension syntax (ComfyUI Impact-Pack, sd-dynamic-prompts) - they expand at generation time, not in your
prompt. Pass them through unchanged: never rewrite `{standing|sitting}` as `"standing or sitting"`, never pick one
branch, never delete a branch.
5. **Append a one-sentence natural-language clause** describing spatial relationships - Anima's qwen adapter benefits
from prose, so a single closing sentence on top of the tag list usually improves coherence without adding
embellishment.
```text
prompt: masterpiece, best quality, score_7, safe, 1girl, {standing|sitting}, classroom, desk, {morning|evening},
a young female student positioned in the center of the classroom in front of the desk, with the
{morning|evening} lighting implied by the scene
negative: worst quality, low quality, score_1, score_2, score_3, artist name
```
Concatenate the tag list and the natural-language clause into one `prompt` string (comma- or period-joined) - the tool
takes a single string, and Anima reads mixed input fine.
## Negative prompt recipe
Start from the official recommendation and add situational terms:
```text
worst quality, low quality, score_1, score_2, score_3, artist name
```
- Add `jpeg artifacts, blurry, lowres` to clean up artifacts.
- Add the specific thing you don't want (e.g. `multiple views, text, watermark, extra fingers`).
- **Do not put a rating word (`safe`, `sensitive`, `nsfw`, `explicit`) in the negative.** Safety is carried by the
rating tag in the _positive_ prefix, not by negating it here, and putting `nsfw` in the negative actively fights the
positive the moment the scene is `sensitive` or higher. Keep the negative rating-free; every example below does. (On a
`safe` shot, on a workflow that does **not** auto-scrub the negative, you _may_ reinforce with `nsfw` here - but never
above `safe`. When in doubt, leave it out and let the positive rating tag do the work.)
## Tag reference
| Group | Values |
| --------------- | ------------------------------------------------------------------------------------------------- |
| Quality (human) | `masterpiece`, `best quality`, `good quality`, `normal quality`, `low quality`, `worst quality` |
| Quality (Pony) | `score_9` ... `score_1` (use human, Pony, both, or neither - all work) |
| Safety | `safe`, `sensitive`, `nsfw`, `explicit` |
| Meta | `highres`, `absurdres`, `anime screenshot`, `official art`, `jpeg artifacts` |
| Time | `year 2025` (specific) or period: `newest`, `recent`, `mid`, `early`, `old` |
| Weighting | Parenthesis weighting; needs bigger numbers than SDXL: `(chibi:2)`, not `(chibi:1.2)`. See below. |
**Weighting syntax.** Anima runs on ComfyUI, which weights with **parentheses only**: `(tag:1.4)` to strengthen,
`(tag:0.6)` to weaken, bare `(tag)` for ~1.1x, and nesting (`((tag))` ~= 1.21x). Anima responds more weakly to a given
weight than SDXL, so reach for bigger moves - `(chibi:2)`, not `(chibi:1.2)`. **Square brackets are not weighting on
ComfyUI**: `[tag]` is parsed as `([tag]:1)`, i.e. the brackets become literal tokens at weight 1, not an A1111-style
de-emphasis. To push something down, use a fractional parenthesis weight like `(background:0.6)`, never `[background]`.
## Generation settings
| Setting | Value |
| ---------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Resolution | 512x512 to 1536x1536; 1024x1024 default. |
| Steps | 30-50. |
| CFG | 4-5. |
| Sampler | `er_sde` is the neutral default; `euler_a` for softer lines; `dpmpp_2m_sde_gpu` for more variety. |
| Scheduler | Workflow default (`simple`) is a good neutral pick. Valid options vary by install (commonly `simple`, `normal`, `karras`, `beta`, `kl_optimal`). NOTE: `beta57` is a custom-node scheduler and is NOT on a stock ComfyUI - do not assume it exists. |
Sampler/scheduler live in the workflow file, not the tool args - mention a sampler only if asking the user to retune the
workflow.
## Prompt enhancement (`enhance`)
The `generate_image` tool has an opt-in **`enhance`** option that routes your prompt through a separate model before the
render to rewrite it into Anima's native protocol - the score/safety-prefixed tag list this guide describes.
- **It is opt-in.** Pass `enhance: true` on the call (or a workflow/config default turns it on). When off, your `prompt`
is sent as-is.
- **Use it when** the incoming prompt is thin (a few words) and you want a one-shot upgrade to a full tagged prompt.
When you have already built a careful tagged prompt, leave `enhance` off - it only adds latency and risks drifting
from your intent.
- **Scene continuity.** Pass the `context` arg alongside `enhance` to hand the enhancer background to honour (character
facts, ongoing scene, wardrobe) without depicting it literally. It is ignored when `enhance` is off.
- **Negative.** The enhancer builds on whatever baseline `negative` you pass and returns a refined one - it should keep
GitHubで見る