SKILL.md 8.84 KB

description: 从素材(新闻、故事、段子等)自动生成 classic 互动剧本(含角色图、场景图)并写入数据库

create-drama — 从素材自动生成完整 classic 互动剧本

根据用户提供的内容素材(新闻、故事、段子、历史事件等),生成一个完整的 classic 类型互动剧本,包括:

  • 剧本数据(角色、台词、表情、动作)
  • 角色立绘图(AI 生图 → 去背景 → 上传 OSS)
  • 背景图和封面图(AI 生图 → 上传 OSS)
  • 写入数据库

输入

用户会在 $ARGUMENTS 中提供内容素材。素材可能是:

  • 一段新闻报道
  • 一个故事/段子
  • 一个历史事件描述
  • 一个创意想法
  • 一个文件路径(需要先读取文件内容)

执行步骤

第 1 步:分析素材

仔细阅读用户提供的素材内容。如果是文件路径,先用 Read 工具读取文件。

第 2 步:生成完整剧本 JSON

根据素材内容,你自己(Claude)直接生成剧本数据 JSON。不要调用任何外部 LLM API。

生成的 JSON 必须严格遵循以下格式:

{
  "name": "剧本名称(简短,2-6个字)",
  "title": "显示标题(可以带 emoji,稍微长一点)",
  "subtitle": "— 副标题 —",
  "description": "剧本简介(一句话概括)",
  "systemPrompt": "用于后续 AI 续写的系统提示词(详见下方规则)",
  "isPublic": false,
  "userId": 1,
  "tags": "标签1,标签2,标签3",
  "characters": [
    {
      "name": "角色名",
      "gender": "male 或 female",
      "voiceId": "从音色列表选择",
      "imagePrompt": "角色立绘生图 prompt(详见下方规则)"
    }
  ],
  "script": [
    {
      "character": "角色名(必须在 characters 中定义过)",
      "dialogue": "台词内容",
      "avatar": "表情文件名",
      "action": "动画效果",
      "position": "left 或 right"
    }
  ],
  "backgroundPrompt": "背景图生图 prompt",
  "coverPrompt": "封面图生图 prompt"
}

生成规则

角色 (characters)

  • 数量:2-5 个
  • 每个角色必须有 name、gender、voiceId、imagePrompt
  • voiceId 选择:参考 reference.md 中的完整音色列表
    • 优先使用多情感音色(支持 happy/sad/angry 等情绪切换,效果更好)
    • 根据角色性格、年龄、性别匹配合适的音色
    • 英文角色使用英文多情感音色(Candice, Serena, Glen, Sylus, Corey, Nadia)
    • 搞笑角色可用 IP 仿音(唐僧、猪八戒等)或趣味口音
    • 常用推荐:
    • 男主角: zh_male_yangguangqingnian_emo_v2_mars_bigtts(阳光青年)或 zh_male_junlangnanyou_emo_v2_mars_bigtts(俊朗男友)
    • 女主角: zh_female_roumeinvyou_emo_v2_mars_bigtts(柔美女友)或 zh_female_gaolengyujie_emo_v2_mars_bigtts(高冷御姐)
    • 反派/严肃: zh_male_lengkugege_emo_v2_mars_bigtts(冷酷哥哥)或 zh_male_aojiaobazong_emo_v2_mars_bigtts(傲娇霸总)
    • 搞笑: ICL_zh_male_youmodaye_tob(幽默大爷)或 zh_male_jingqiangkanye_emo_mars_bigtts(京腔侃爷)
    • 老年: zh_female_popo_mars_bigtts(婆婆)或 ICL_zh_male_youmodaye_tob(幽默大爷)
    • 英文男: en_male_sylus_emo_v2_mars_bigtts(Sylus)或 en_male_glen_emo_v2_mars_bigtts(Glen)
    • 英文女: en_female_candice_emo_v2_mars_bigtts(Candice)或 en_female_skye_emo_v2_mars_bigtts(Serena)

角色立绘 imagePrompt

每个角色必须生成 imagePrompt,遵循以下模板:

生成一张**[人物名字或身份]**的全身站立画像。
核心风格:沙雕动漫风格(meme style),2D简笔画,线条清晰粗犷,色彩平涂,带有幽默滑稽感,略微的大头小身体比例。
脸部要求(最重要):脸部必须是纯肉色的完全空白,绝对不要画眼睛、鼻子、嘴巴或眉毛等任何五官,保留一个干净完整的面部轮廓,方便后期添加表情包。
服装与动作:角色穿着**[根据角色描述填写服装特征],手里拿着[根据角色身份推断合适的道具],[一个有趣的站姿或动作]**。
背景要求:纯色干净背景(如浅蓝灰色),不要任何环境元素或杂物,边缘清晰,方便直接抠图。

根据角色具体描述,在 [] 处填入合适内容。

背景图 backgroundPrompt

横版宽屏场景背景图,卡通风格,适合互动剧背景。场景:[根据剧本内容描述场景]。不要人物,色彩鲜明,气氛感强。

封面图 coverPrompt

剧目封面海报。标题:[剧本标题]。展示[角色名]等角色的剪影轮廓,色彩鲜明,有标题感,卡通风格。

台词 (script)

  • 数量:10-20 句(根据素材丰富度调整,尽量多一些,让剧情完整)
  • avatar 可选值:normal.png, happy.png, very_happy.png, angry.png, sad.png, cry.png, shock.png, smirk.png, speechless.png
  • action 可选值:
    • none — 默认,无动画
    • shake — 震动,适合愤怒/惊吓/强调
    • jump — 跳跃,适合惊喜/激动
    • spin — 旋转,适合混乱/搞笑
    • zoom-in — 放大,适合重要台词/特写
  • position: 每个角色应该有固定站位(left/right),2个角色时一左一右,3个以上轮替
  • 台词要生动有趣,符合互动剧的沙雕风格
  • 对话要有戏剧冲突和反转
  • 每句台词不要太长,控制在 30 字以内

systemPrompt

  • 要详细描述世界观和角色设定
  • 包含语言风格指导(用于后续 AI 续写对话)
  • 至少 200 字

tags

  • 1-3 个标签,逗号分隔
  • 如:搞笑,职场,反转

第 3 步:写入临时 JSON 文件

将生成的 JSON 写入临时文件 /tmp/drama_<timestamp>.json

第 4 步:生成图片并上传 OSS

找到本 skill 的目录路径(即本文件 SKILL.md 所在目录),执行图片生成脚本:

node <skill目录>/generate-images.js /tmp/drama_<timestamp>.json

该脚本会:

  1. 为每个角色生成立绘图(Jimeng → fallback Nano Banana Pro)
  2. 自动去背景(rembg)
  3. 为剧本生成背景图和封面图
  4. 全部上传到阿里云 OSS
  5. 将 URL 写回 JSON 文件(更新 characters[].bodyUrl, coverUrl, backgroundUrl)

注意:该脚本需要 ali-oss, sharp npm 包以及 rembg Python 工具。如果 rembg 未安装,会跳过去背景步骤。

第 5 步:写入数据库

执行入库脚本:

node <skill目录>/insert-drama.js /tmp/drama_<timestamp>.json

脚本会在事务中创建:

  • dramas 表记录(剧本元数据)
  • drama_characters 表记录(角色配置 + 身体图 URL + 音色)
  • drama_emotions 表记录(默认表情映射)
  • drama_scripts 表记录(台词序列)

第 6 步:清理并输出结果

  1. 删除临时 JSON 文件
  2. 告知用户:
    • 剧本名称和 dramaKey
    • 角色列表及音色
    • 台词数量
    • 图片生成结果(成功/失败)
    • 简要剧情概述

配置说明

脚本会自动从以下位置加载配置(按优先级):

  1. --env <path> 参数指定的 .env 文件
  2. 环境变量 DRAMA_ENV_PATH 指定的 .env 文件
  3. skill 目录下的 .env 文件
  4. 已有的环境变量

所需配置项:

# 数据库
DB_HOST=127.0.0.1
DB_PORT=3306
DB_USER=root
DB_PASSWORD=xxx
DB_NAME=shadiao_drama

# 阿里云 OSS(图片上传)
OSS_REGION=oss-cn-beijing
OSS_ACCESS_KEY_ID=xxx
OSS_ACCESS_KEY_SECRET=xxx
OSS_BUCKET=xxx
OSS_ENDPOINT=https://oss-cn-beijing.aliyuncs.com

# 万界生图 API
WANJIE_API_KEY=xxx

注意事项

  • 默认使用英文:所有内容(name、title、subtitle、description、systemPrompt、台词、tags、imagePrompt、backgroundPrompt、coverPrompt)默认用英文生成,除非用户明确要求中文
  • 英文内容必须使用英文多情感音色(Candice, Serena, Glen, Sylus, Corey, Nadia)
  • 风格偏沙雕搞笑,但要保留素材的核心信息
  • 如果素材是严肃新闻,可以用吐槽/解说风格改编
  • 角色名字要有趣,符合素材主题
  • 如果用户明确要求中文,则使用中文音色

复用到其他项目

整个 create-drama/ 目录是自包含的,复制到其他项目的 .claude/skills/ 即可使用。

前置条件:

  1. Node.js 依赖:npm i -g sequelize mysql2 ali-oss sharp
  2. Python 工具:pip install rembg(可选,用于角色图去背景)
  3. 在 create-drama/ 目录下修改 .env 配置

目录结构:

.claude/skills/create-drama/
├── SKILL.md              # Skill 定义(本文件)
├── reference.md          # 完整音色参考文档
├── insert-drama.js       # 数据库入库脚本
├── generate-images.js    # 图片生成 + 去背景 + OSS 上传脚本
└── .env                  # 数据库 + OSS + 生图 API 配置

Additional Resources