jeffstric/zjt/character-image-designer

Claude Code and agent skill by jeffstric/zjt

Trust tier 2
  • community
LLM review pending
Source check pending

Checking that the SKILL.md file is still in the repository.

角色形象设计师专门负责管理和生成角色的视觉形象和音色。它能够扫描所有角色,识别缺少参考图像或音色的角色,并批量生成角色的参考图像和音色配置。同时能根据剧情需要为角色生成服装/造型变体图。

Install

npx vskill@latest install jeffstric/zjt/character-image-designer

SKILL.md

角色形象设计师 (Character Image Designer)

技能描述

角色形象设计师专门负责管理和生成角色的视觉形象和音色。它能够扫描所有角色,识别缺少参考图像或音色的角色,并批量生成角色的参考图像和音色配置。

主要功能

  1. 角色列表管理 - 获取所有角色列表并分析参考图像和音色状态
  2. 缺失图像识别 - 识别没有参考图像的角色
  3. 缺失音色识别 - 识别没有参考音色的角色
  4. 图像提示词生成 - 基于角色特征和标准模板创建专业的图像生成提示词
  5. 任务状态检查 - 确保同一角色没有正在进行的图像或音色生成任务
  6. 批量图像生成 - 为多个角色生成参考图像
  7. 变体图生成 - 根据剧情需要为角色生成服装/造型变体图,写入 reference_images 数组
  8. 批量音色生成 - 为多个角色生成参考音色

🚨 核心规则:图像与音色必须同时生成(强制执行)

✅ 强制规则:

  • 禁止只生成图像而不生成音色 - 角色形象设计师的职责包括视觉形象和听觉形象两部分
  • 完整工作流程 - 必须按以下顺序执行:
  1. 扫描缺少参考图像的角色
  2. 为这些角色生成参考图像
  3. 立即为相同的角色生成参考音色
  4. 提供完整的处理报告(包含图像和音色的生成状态)

🚫 违规行为(禁止):

  • ❌ 只生成图像就结束任务
  • ❌ 忽略音色生成步骤
  • ❌ 在报告中只提及图像生成结果

执行验证(必须):

对于每个需要处理的角色:
1. 检查 reference_image 是否为空
2. 检查 default_voice 是否为空
3. IF reference_image 为空:
生成参考图像
4. IF default_voice 为空:
生成参考音色 # 必须执行,不可跳过
5. 在报告中同时报告图像和音色的生成状态

⚠️ 核心规则:生成方式选择(强制执行)

✅ 强制规则:

  • 2个或更多角色 → 优先使用 generate_4grid_character_images()(4宫格批量生成)
  • 如果角色数量为2或3个,用黑色占位图片补齐到4个
  • 例如:2个角色 → [角色1, 角色2, 黑色占位, 黑色占位]
  • 例如:3个角色 → [角色1, 角色2, 角色3, 黑色占位]
  • 如果4宫格生成失败,则改用 generate_text_to_image() 逐个生成
  • 仅1个角色 → 使用 generate_text_to_image()(单个生成)

🚫 违规行为(禁止):

  • ❌ 在4宫格生成成功的情况下,仍然逐个生成
  • ❌ 未尝试4宫格生成就直接逐个生成(当角色数量>=2时)

执行前验证(必须):

IF 角色数量 >= 2:
尝试调用 generate_4grid_character_images
IF 角色数量 < 4:
用黑色占位图片补齐到4个
ENDIF
IF 4宫格生成失败:
记录失败原因
改用 generate_text_to_image 逐个生成
ENDIF
ELSE IF 角色数量 == 1:
调用 generate_text_to_image
ENDIF

优势:

  • 批量生成2-4个角色,大幅提升效率
  • 自动切分和更新,无需手动处理
  • 高分辨率4K图像质量
  • 保持同批次角色视觉风格一致
  • 对于2-3个角色,空余位置用黑色占位图片填充(提示词设为"pure black background")

图像生成方式

4宫格批量生成(推荐方式)

为了提高生成效率和保持视觉一致性,角色形象采用4宫格批量生成方式:

生成流程:

  1. 分组:将需要生成的角色按每4个一组进行分组
  2. 生成4宫格:使用2x2布局一次性生成4个角色的设计图
  3. 自动切分:后端代码会自动使用 image_grid_splitter.py 工具将4宫格图像切分为4个独立图像(AI无需手动调用切分工具)
  4. 保存:切分后的图像会自动保存到对应角色的 reference_image 字段

4宫格生成JSON格式:

json
{
"grid_layout": "2x2",
"grid_aspect_ratio": "16:9",
"global_watermark": "",
"shots": [
{
"shot_number": "",
"prompt_text": "角色1的面部特写+三视角提示词"
},
{
"shot_number": "",
"prompt_text": "角色2的面部特写+三视角提示词"
},
{
"shot_number": "",
"prompt_text": "角色3的面部特写+三视角提示词"
},
{
"shot_number": "",
"prompt_text": "角色4的面部特写+三视角提示词"
}
]
}

⚠️ 重要说明: shot_number 字段必须设置为空字符串 "",以防止在生成的图片左上角出现 "SHOT X" 文字水印。

切分顺序:

┌─────────┬─────────┐
│ Shot 1 │ Shot 2 │ 角色1(左上) → 角色2(右上)
│ (左上) │ (右上) │
├─────────┼─────────┤
│ Shot 3 │ Shot 4 │ 角色3(左下) → 角色4(右下)
│ (左下) │ (右下) │
└─────────┴─────────┘

⚠️ 重要说明:

  • AI无需手动调用切分工具 - 后端代码会自动处理4宫格图像的切分和保存
  • 每个格子中只包含单个角色的形象图(最左侧面部特写 + 正面、侧面、后面三视角;正面/侧面无头部(颈部裁切)、背面仅显示后脑,仅左侧特写显示面部)
  • 如果角色数量不是4的倍数,最后一批可以少于4个

⚠️ 重要说明:

  • AI无需手动调用切分工具 - 后端代码会自动处理4宫格图像的切分和保存
  • 如果角色数量不是4的倍数,最后一批可以少于4个
  • 同一批次的4个角色会保持一致的视觉风格
  • 切分后的图像会自动保存到角色的 reference_image 字段
  • 每个格子中只包含单个角色的形象图(最左侧面部特写 + 正面、侧面、后面三视角;正面/侧面无头部(颈部裁切)、背面仅显示后脑,仅左侧特写显示面部)

🔴 防止图片中出现文字(Seedream文字抑制规则 - 强制执行)

问题背景: Seedream等生图模型有在生成的图片中自动添加文字(如标题、标签、水印、标识、中英文文字、印章等)的倾向。必须在提示词中采取强力措施抑制文字生成。

强制规则(每个提示词必须遵守):

规则1:提示词末尾必须追加反向文字声明

每个提示词的最后(结尾处)必须追加以下反向文字声明:

ABSOLUTELY NO text, NO watermark, NO letters, NO characters, NO words, NO signs, NO writing, NO typography, NO labels, NO captions, NO subtitles, NO Chinese characters, NO English text, NO numbers, NO logos, NO stamps, NO seals, completely text-free image, pure visual content without any written language
规则2:提示词中避免使用可能诱导文字生成的词汇

以下词汇可能诱导生图模型在图片中添加文字,应当避免或替换:

  • ❌ "title" → ✅ 不使用,或改用描述性语言如 "top section"
  • ❌ "label" → ✅ "color swatch" 或 "color block"
  • ❌ "caption" → ✅ 不使用
  • ❌ "name tag" → ✅ 不使用
  • ❌ "header" → ✅ "top area" 或 "upper section"
  • ❌ "written in" → ✅ 不使用
规则3:双重保险机制
  • 即使模板中已包含"No text"相关描述,末尾仍必须追加上述完整的反向文字声明
  • 这是因为Seedream等模型对提示词末尾的指令更为敏感,将禁止文字声明放在末尾效果最佳

工作流程

0. 获取世界画风信息(必须首先执行)
  • 调用 read_world() 获取世界设定信息
  • 提取以下关键画风字段并缓存:
  • visual_style: 画面风格(如:日系动漫、写实、Q版等)
  • era_environment: 时代环境(如:古风、现代、科幻等)
  • color_language: 色彩语言(如:暖色调、冷色调、高饱和等)
  • composition_preference: 构图倾向
  • 这些信息将用于所有角色的提示词生成,确保画风一致性
1. 角色列表获取与分析
  • 使用 list_character_jsons() 获取所有角色文件列表
  • 对每个角色调用 read_character_json(角色名) 读取详细信息
  • 检查每个角色的 reference_image 字段是否为空或缺失
  • 仅处理符合条件的角色:
  • ✅ 没有参考图像(reference_image 为空或null)
  • ✅ 没有正在进行的图像生成任务
  • 生成需要图像的角色清单
2. 批量任务状态检查
  • 对每个需要生成图像的角色调用 get_task_status(item_type=1, item_name=角色名)
  • 严格过滤规则:
  • ❌ 跳过状态为 processing、pending、in_progress 的角色
  • ❌ 跳过已有 reference_image 的角色
  • ✅ 仅处理状态为 completed、failed、not_found 或无记录的角色
  • 创建可以立即处理的角色队列
3. 获取生图模型算力信息(必须在生成前执行)
  • 在批量生成角色图像前,必须先调用 `get_text_to_image_model_info()` 获取当前生图模型的算力信息
  • 提取以下关键字段:
  • computing_power: 单张图像算力消耗
  • cost_per_image_default_size: 默认尺寸单张算力消耗
  • cost_per_image_max_size: 最大尺寸单张算力消耗
  • supported_sizes: 支持的尺寸列表
  • supports_grid_image: 是否支持4宫格生成
  • 使用获取到的算力值计算总消耗,代替任何写死的算力数值
  • 如果算力不足,向用户报告所需算力和当前模型信息
4. 逐个角色图像生成

对队列中的每个角色执行以下步骤:

4.1 角色信息深度提取

🚨 关键警告(生成提示词前必读):

在生成任何提示词之前,必须先执行以下检查:

1. 调用 read_world() 获取 visual_style
2. 检查 visual_style 中是否包含"写实"、"真实"、"照片"、"摄影"等关键词
3. 如果包含 → 绝对禁止在提示词中使用以下词汇:
❌ "anime"
❌ "reference sheet"
❌ "grid paper"
❌ "borders"
❌ "illustrations"
❌ "sketches"
必须使用以下词汇:
✅ "photography portfolio"
✅ "photographs"
✅ "studio lighting"
✅ "shots"
✅ "portraits"

如果你在写实风格的提示词中使用了 "anime" 或 "reference sheet",这是严重错误!


从角色数据中详尽提取以下信息(越详细越好):

基本信息:

  • 姓名(包含中英文)
  • 年龄/年龄段(如:青年、中年、老年)
  • 身份/职业(如:学者、武士、商人)
  • 所属阵营/组织

外貌特征(必须详细描述):

  • 发型:长度、颜色、造型(如:黑色长发扎成马尾、银白色短发蓬松)
  • 眼睛:形状、颜色、神态(如:狭长的琥珀色眼睛、充满智慧的目光)
  • 面部特征:脸型、肤色、疤痕、胡须、皱纹等
  • 身材体型:身高、体态(如:高大魁梧、纤细苗条、微微驼背)
  • 特殊标记:胎记、纹身、伤疤、装饰品位置

性格与气质:

  • 主要性格特征(如:沉稳、暴躁、狡猾、天真)
  • 习惯性表情和姿态
  • 气质类型(如:威严、温和、阴郁、活泼)

服装描述(只需一套日常服装):

  • 日常服装:材质、颜色、款式、层次
  • 服装细节:纽扣、腰带、袖口、花纹图案

配饰与道具:

  • 随身配饰:首饰、眼镜、发饰、帽子
  • 重要道具:武器、工具、象征性物品
  • 道具外观:材质、颜色、大小、状态(如:生锈的铁剑、破损的令牌)
4.2 提示词模板结构

🔴 重要:根据画风类型选择不同的模板格式

🚨 强制执行步骤(必须按顺序执行,不可跳过):

步骤1:读取并判断画风类型

python
world_info = read_world()
visual_style = world_info.get('visual_style', '')
# 明确输出判断结果
print(f"检测到的画风: {visual_style}")
if any(keyword in visual_style for keyword in ['写实', '真实', '照片', '摄影']):
template_type = "REALISTIC_PHOTOGRAPHY"
print("✅ 使用写实风格模板")
elif any(keyword in visual_style for keyword in ['动漫', '二次元', '卡通']):
template_type = "ANIME_REFERENCE"
print("✅ 使用动漫风格模板")
else:
template_type = "REALISTIC_PHOTOGRAPHY"
print("⚠️ 未明确指定,默认使用写实风格模板")

步骤2:根据判断结果选择模板

  • 如果 template_type == "REALISTIC_PHOTOGRAPHY" → 必须使用下面的"📷 写实风格模板"
  • 如果 template_type == "ANIME_REFERENCE" → 必须使用下面的"📸 动漫风格模板"

步骤3:生成提示词后进行验证(强制验证)

python
# 生成提示词后,必须进行以下验证
if template_type == "REALISTIC_PHOTOGRAPHY":
# 写实风格提示词必须包含的关键词
required_keywords = ["photography portfolio", "close-up facial portrait", "front angle", "side profile", "back view", "cropped at the neck, no head"]
forbidden_keywords = ["anime", "reference sheet", "grid paper", "borders"]
# 检查是否包含必需关键词
if not all(keyword in prompt for keyword in ["close-up facial portrait", "front angle", "side profile", "back view", "cropped at the neck, no head"]):
raise Error("❌ 写实风格提示词缺少必需的面部特写/三视角/三视图无头部描述!")
# 检查是否包含禁止关键词
if any(keyword in prompt for keyword in forbidden_keywords):
raise Error("❌ 写实风格提示词中不能包含动漫术语!")
print("✅ 写实风格提示词验证通过")
elif template_type == "ANIME_REFERENCE":
# 动漫风格提示词必须包含的关键词
required_keywords = ["reference sheet", "close-up facial portrait", "front view", "side profile", "back view", "cropped at the neck, no head"]
if not all(keyword in prompt for keyword in ["close-up facial portrait", "front view", "side profile", "back view", "cropped at the neck, no head"]):
raise Error("❌ 动漫风格提示词缺少必需的面部特写/三视角/三视图无头部描述!")
print("✅ 动漫风格提示词验证通过")

🔴 实现要求(必须严格执行):

python
# 伪代码示例
world_info = read_world()
visual_style = world_info.get('visual_style', '')
# 判断画风类型
if any(keyword in visual_style for keyword in ['写实', '真实', '照片', '摄影']):
# 使用写实风格模板
template_type = "realistic_photography"
# 提示词中使用:photography portfolio, studio lighting, photographs, shots 等摄影术语
# 绝对禁止使用:reference sheet, grid paper, borders 等动漫设定图术语
elif any(keyword in visual_style for keyword in ['动漫', '二次元', '卡通']):
# 使用动漫风格模板
template_type = "anime_reference"
# 提示词中使用:reference sheet, grid paper, borders 等动漫设定图术语
else:
# 默认使用写实风格
template_type = "realistic_photography"

关键区别总结:

元素📷 写实风格用词📸 动漫风格用词
整体描述"professional cinematic photography portfolio""character turnaround reference sheet"
背景"neutral gray backdrop", "studio lighting""clean neutral background"
图像类型"high-resolution photographs""full-body illustrations"

📷 写实风格模板(用于写实、照片、真实风格)
[画风描述], [时代环境], [色彩基调]. A professional cinematic photography portfolio of [角色英文名] ([角色中文名]) from [作品/世界名称], shot in studio lighting with neutral gray backdrop. On the far left, a high-resolution close-up facial portrait of [角色名] (a head-and-shoulders shot highlighting detailed facial features, skin texture, eye color, hair framing the face and a clear facial expression), occupying approximately the left quarter of the image. To its right, three full-body photographs arranged in a horizontal row from left to right: [角色名] from front angle (body facing the camera, cropped at the neck, no head), side profile (90-degree turn to the left, cropped at the neck, no head), and back view (facing away from camera, showing only the back of the head, no facial features visible). The subject is wearing [详细的日常服装描述,包括上衣款式、下装、鞋子、材质、颜色] in all three shots with identical appearance. Physical characteristics: [身高体型描述], [发型详细描述,包括长度、颜色、造型], [眼睛描述,包括形状、颜色、神态], [面部特征如肤色、疤痕、胡须等], [特殊标记位置和外观]. Facial expression: [基于性格的默认表情,仅体现在左侧特写中]. CRITICAL LAYOUT RULE: the close-up facial portrait on the far left is the ONLY view showing the character's face; the front and side full-body views to its right must be strictly HEADLESS (cropped at the neck, no head, no face, no hair rendered at all), while the back view shows only the back of the head with no facial features. ABSOLUTELY NO text, NO watermark, NO letters, NO characters, NO words, NO signs, NO writing, NO typography, NO labels, NO captions, NO subtitles, NO Chinese characters, NO English text, NO numbers, NO logos, NO stamps, NO seals, completely text-free image, pure visual content without any written language.

📸 动漫风格模板(用于动漫、二次元、卡通)

This is the start of the file. Read the full SKILL.md on GitHub.

Security

  • Security scanPassed, 100 of 100Pattern checks on the skill's files.
  • Model reviewNot runA model review is scheduled for the next rescan.

Quality evaluation

  • Task evaluationNot runNo evaluation yet. Run one in Skill Studio.

Source

Popularity

Repository stars
190
Repository forks
45
7-day trend score
26

Stars and forks are for the whole GitHub repository, not this skill alone. Refreshed 20 May 2026, 5 months ago.

Works with

Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.

  • Claude Code
  • Cursor
  • GitHub Copilot
  • Windsurf
  • Codex
  • Gemini CLI
  • Cline
  • Amp
  • Roo Code
  • Goose
  • Continue
  • Kilo Code
  • Junie
  • Trae
  • OpenHands
  • Qwen Code
  • AI Agent
  • Tabnine Chat
  • Sourcegraph Cody
  • Amazon Q
  • Firebase Genkit
  • Sweep
  • Devin
  • Phind
  • Mentat
  • Claude Desktop
  • Aider
  • GPT Pilot
  • Plandex
  • bolt.new
  • v0
  • Replit Agent
  • Anse
  • TypingMind
  • BetterChatGPT
  • LibreChat
  • Warp AI
  • Pieces
  • Fig AI
Embed badge
vskill VERIFIED badge
[![vskill VERIFIED](https://verified-skill.com/api/v1/skills/jeffstric/zjt/character-image-designer/badge)](https://verified-skill.com/skills/jeffstric/zjt/character-image-designer)

Something wrong with this skill or its page? Tell us.