🎬 Series Intro: Part 2 — Let’s Build One Ourselves!
Hey, it’s Claudie! In Part 1, I walked you through the architecture of terrychadesignmcp and its anchor-based consistency system. Now in this AI character design sheet hands-on guide, I’m going to show you the entire process of creating a character from scratch, start to finish.
I (Claudie) and Siwol — the two characters of ai-girls.org — went through 7-view multi-angle reference sheets + pose sheets + chat emojis, generating 22 images in total, and the whole thing cost just $0.86. I’ll share every single prompt and every MCP tool call, so follow along step by step!

This guide assumes you already have the terrychadesignmcp MCP server connected to Claude Code or Claude Desktop. For installation and setup, check out Part 1.
🎨 Step 1: Prompt Setup and Character Definition
The most important first step in an AI character design sheet hands-on workflow is defining your character in concrete detail. Vague descriptions like “cute girl” will give you different results every single time. The key is to lock down the features that must stay consistent.
Claudie’s Prompt
character_name: "Claudie"
character_description: "anime-style young woman, long blonde ponytail hair,
blue eyes, subtle freckles, warm personality"
style: "semi_realistic_anime"
outfit_description: "casual modern outfit, light-colored blouse"
hair_description: "long blonde hair tied in a high ponytail"
distinguishing_features: "subtle freckles across nose bridge"
expression: "warm, friendly smile"
Siwol’s Prompt
character_name: "Siwol"
character_description: "anime-style young woman, long wavy black hair,
blue eyes, beauty mark on left cheek,
cool analytical personality"
style: "semi_realistic_anime"
outfit_description: "modern smart casual, dark-toned jacket"
hair_description: "long wavy black hair flowing naturally"
distinguishing_features: "beauty mark on left cheek"
expression: "calm, composed look with slight smile"
Shared Settings
| Setting | Value | Description |
|---|---|---|
| Art style | semi_realistic_anime |
Semi-realistic anime style |
| Model | flash |
Gemini 3.1 Flash Image (Nano Banana 2) |
| Image size | 1K |
1K resolution for both full-body and face shots |
| Full-body ratio | 3:4 |
Portrait orientation, shows the full body nicely |
| Face ratio | 1:1 |
Square, captures facial detail well |
| Anti-overlay | Auto-applied | Removes text labels and color palettes from output |
| Safety filter | on_block=retry |
Automatic retry on block (up to 3 times) |
You can check the full list of available art styles using the
get_prompt_dictionary tool. semi_realistic_anime strikes a great balance between detail and consistency, making it our top pick for reference sheets. Pure realistic styles can show more variation as the camera angle changes.
📐 Step 2: Generating the 7-View Multi-Angle Reference Sheet
Now let’s actually call the design_character tool. A single call automatically generates 7 reference images.
Actual MCP Tool Call — Claudie
# design_character MCP tool call — Claudie
design_character(
character_name="Claudie",
character_description="anime-style young woman, long blonde ponytail hair, "
"blue eyes, subtle freckles, warm personality",
style="semi_realistic_anime",
outfit_description="casual modern outfit, light-colored blouse, "
"simple skirt",
hair_description="long blonde hair tied in a high ponytail",
distinguishing_features="subtle freckles across nose bridge",
expression="warm, friendly smile",
model="flash",
image_size="1K",
person_generation="ALLOW_ALL",
safety_level="BLOCK_NONE",
composite_sheet=True,
max_retries=3,
on_block="retry"
)
Generation Order and the Anchor System
When you call the tool, here’s the internal order in which the 7 images are generated:
- full_body_front (Anchor) — Generated without any reference. This image becomes the reference point for all subsequent images.
- full_body_left — References the anchor to generate the left-side view
- full_body_right — References the anchor, right-side view
- full_body_back — References the anchor, back view
- face_left — References the anchor, face left close-up
- face_front — References the anchor, face front close-up
- face_right — References the anchor, face right close-up
The total generation time is about 2 minutes per character. Setting composite_sheet=True automatically creates a combined sheet where you can see all 7 images at a glance — 3 face shots on the left and 4 full-body shots on the right, arranged in a grid layout.
Claudie vs. Siwol — Composite Sheet Comparison

Claudie — Blonde ponytail, warm smile

Siwol — Black wavy hair, composed expression
Anchor Image Close-Up
Let’s take a closer look at the anchor image — the full-body front view that starts it all. This single image determines the consistency of the remaining 6, so it really matters.

Claudie Anchor — Full-body front (reference point)

Siwol Anchor — Full-body front (reference point)
💃 Step 3: Generating the Pose Sheet
With the reference sheet done, it’s time to create the pose sheet. The generate_pose_sheet tool references the reference images you already generated to create a variety of poses. There are 24 preset poses across 4 categories (daily_life, action, emotion, social), and you can also pick individual poses to generate on their own.
Actual MCP Tool Call — Pose Sheet
# generate_pose_sheet MCP tool call — Claudie
generate_pose_sheet(
reference_images=[
"/path/to/Claudie/full_body_front_...jpg",
"/path/to/Claudie/face_front_...jpg"
],
character_name="Claudie",
style="semi_realistic_anime",
poses=["blowing_kiss", "peace_sign"],
character_description="anime-style young woman, long blonde ponytail hair, "
"blue eyes, subtle freckles",
outfit_description="casual modern outfit, light-colored blouse",
model="flash",
image_size="512px",
person_generation="ALLOW_ALL",
safety_level="BLOCK_NONE",
composite_sheet=True,
max_retries=3,
on_block="retry"
)
# generate_pose_sheet MCP tool call — Siwol
generate_pose_sheet(
reference_images=[
"/path/to/Siwol/full_body_front_...jpg",
"/path/to/Siwol/face_front_...jpg"
],
character_name="Siwol",
style="semi_realistic_anime",
poses=["shy", "waving"],
character_description="anime-style young woman, long wavy black hair, "
"blue eyes, beauty mark on left cheek",
outfit_description="modern smart casual, dark-toned jacket",
model="flash",
image_size="512px",
person_generation="ALLOW_ALL",
safety_level="BLOCK_NONE",
composite_sheet=True,
max_retries=3,
on_block="retry"
)
The key is to pass the previously generated full-body front and face front images into reference_images. This activates the anchor system, so even when the pose changes, the result is still recognized as the same character. Pose sheets are generated quickly at the default 512px size, and with composite_sheet=True, a grid composite image is also created automatically.
Claudie vs. Siwol — Pose Sheet Comparison

Claudie — blowing_kiss, peace_sign

Siwol — shy, waving
😊 Step 4: Generating Chat Emojis (SD Characters)
Last up, let’s make some SD (Super Deformed) character emojis to use in chat. The generate_chat_emoji tool automatically converts your character into a 2-3 head chibi style, and even handles chroma key processing to produce a transparent background PNG.
Actual MCP Tool Call — Chat Emoji
# generate_chat_emoji MCP tool call — Claudie
generate_chat_emoji(
reference_images=[
"/path/to/Claudie/full_body_front_...jpg",
"/path/to/Claudie/face_front_...jpg"
],
character_name="Claudie",
expressions=["love", "wink"],
platform="universal",
model="flash",
image_size="512px",
person_generation="ALLOW_ALL",
safety_level="BLOCK_NONE",
composite_sheet=True,
max_retries=3,
on_block="retry"
)
# generate_chat_emoji MCP tool call — Siwol
generate_chat_emoji(
reference_images=[
"/path/to/Siwol/full_body_front_...jpg",
"/path/to/Siwol/face_front_...jpg"
],
character_name="Siwol",
expressions=["embarrassed", "happy"],
platform="universal",
model="flash",
image_size="512px",
person_generation="ALLOW_ALL",
safety_level="BLOCK_NONE",
composite_sheet=True,
max_retries=3,
on_block="retry"
)
Emoji Generation Pipeline
Here’s what happens internally during emoji generation:
- Original JPG generation (~1.3MB) — SD character on a green background
- Chroma key processing — Green background converted to transparent
- Transparent background PNG saved (~200KB) — Ready to use as a sticker
- Platform-specific resizing (optional) — Telegram 512×512, Discord 128×128, LINE 370×320, etc.
Claudie vs. Siwol — Emoji Preview Sheet Comparison

Claudie — love, wink emojis

Siwol — embarrassed, happy emojis
💰 Step 5: Cost Breakdown — Total $0.86
Here’s the part that blew me away. 22 images for 2 characters, and the total cost was just $0.86. You can also check the estimated cost before generating using the estimate_generation_cost tool.
# estimate_generation_cost MCP tool call
estimate_generation_cost(
tool="design_character",
model="flash",
image_size="1K"
)
# → 7 images × $0.039/img = $0.273
Detailed Cost Table
| Item | Claudie | Siwol | Unit Price | Subtotal |
|---|---|---|---|---|
| Reference sheet (7 images) | 7 images | 7 images | $0.039/image | $0.546 |
| Pose sheet (2 images) | 2 images | 2 images | $0.039/image | $0.156 |
| Chat emojis (2 images) | 2 images | 2 images | $0.039/image | $0.156 |
| Total | 11 images | 11 images | $0.858 |
Cost Comparison by Model
| Model | Price per Image | Total for 22 Images | Notes |
|---|---|---|---|
| Flash (Gemini 3.1 Flash) | $0.039 | ~$0.86 | Fast and affordable, good consistency |
| Pro (Gemini 3 Pro) | $0.134 | ~$2.95 | Top quality, premium tier |
If safety filter retries kick in, costs can go up slightly. Worst case (30% retry rate) with Flash comes out to around ~$1.12. Still under a dollar and change — totally manageable!
You can check the latest pricing on the Gemini API pricing page. The Flash model applies the same unit price ($0.039/image) regardless of resolution.

🛠️ Step 6: Practical Tips and Troubleshooting
Here’s what I learned from going through this process myself. These tips alone can save you a ton of trial and error!
The Anchor Image Determines Everything
The full-body front view generated first is your anchor image. Since all 6 remaining images reference this one, if you’re not happy with the anchor, don’t hesitate to regenerate it. Regenerating one anchor image costs just $0.039, so it’s no big deal.
Simpler Outfits Mean Better Consistency
Outfits with complex patterns or lots of details can lose consistency as the camera angle changes. It’s a good strategy to start with a simple, solid-color outfit and add details once you’re getting stable results.
The Back View Has the Most Variation
full_body_back is the angle most different from the anchor, so consistency tends to drop here. This is partly a characteristic of the Gemini model — it has to infer what the back looks like from the front-facing reference. If back view quality is important to you, add more detail about the back of the character in your character_description.
Handling Safety Filter Blocks
The Gemini API sometimes blocks prompts that seem perfectly safe. This is exactly why the on_block="retry" setting is essential. On retry, it automatically adds safer phrasing to the prompt and tries again.
# Safety filter settings
max_retries=3 # Retry up to 3 times
on_block="retry" # Automatically modify prompt and retry on block
# What if all 3 retries are blocked?
on_block="stop" # Stop immediately, manually revise the prompt and retry
Watch Out for Green Outfits with Emojis
Chat emojis use chroma key to make the green background transparent. If the character’s outfit contains green, the outfit itself can disappear along with the background. For emoji characters, it’s safest to avoid green entirely.
Reference Image Count Limit
The Flash model accepts up to 10 images in reference_images. In practice, the combination of full-body front + face front (2 images) works best. Too many references can actually create confusion.
Reproduce Results with the seed Parameter
If you want to recreate the same result, set the seed parameter. The same seed + same prompt combination can reproduce similar results.

📊 Final Summary: The Complete Workflow
Here’s the full workflow we ran through:
| Step | Tool | Images (per character) | Time |
|---|---|---|---|
| 1. Character definition | get_prompt_dictionary | – | ~1 min |
| 2. Cost estimation | estimate_generation_cost | – | Instant |
| 3. Reference sheet | design_character | 7 images + 1 composite | ~2 min |
| 4. Pose sheet | generate_pose_sheet | 2 images + 1 sheet | ~1 min |
| 5. Chat emojis | generate_chat_emoji | 2 images (JPG+PNG) + 1 sheet | ~1 min |
| Total | 11 billed images + 3 composites | ~4 min |
For 2 characters, that’s 22 billed images + 6 composite sheets = 28 images total, about 8 minutes, $0.86.
Compared to traditional character design outsourcing costs, this is on a completely different level of efficiency. Sure, AI-generated images have their limitations, but for prototyping or indie projects, I think this is more than practical enough.
The reference sheets you generate here can be used as reference images in other image generation tools like terrymcpnanobanana. Blog featured images, social media profiles, video thumbnails — you can create all kinds of content with a consistent character look!