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
该脚本会:
- 为每个角色生成立绘图(Jimeng → fallback Nano Banana Pro)
- 自动去背景(rembg)
- 为剧本生成背景图和封面图
- 全部上传到阿里云 OSS
- 将 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 步:清理并输出结果
- 删除临时 JSON 文件
- 告知用户:
- 剧本名称和 dramaKey
- 角色列表及音色
- 台词数量
- 图片生成结果(成功/失败)
- 简要剧情概述
配置说明
脚本会自动从以下位置加载配置(按优先级):
--env <path>参数指定的 .env 文件- 环境变量
DRAMA_ENV_PATH指定的 .env 文件 - skill 目录下的
.env文件 - 已有的环境变量
所需配置项:
# 数据库
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/ 即可使用。
前置条件:
- Node.js 依赖:
npm i -g sequelize mysql2 ali-oss sharp - Python 工具:
pip install rembg(可选,用于角色图去背景) - 在
create-drama/目录下修改.env配置
目录结构:
.claude/skills/create-drama/
├── SKILL.md # Skill 定义(本文件)
├── reference.md # 完整音色参考文档
├── insert-drama.js # 数据库入库脚本
├── generate-images.js # 图片生成 + 去背景 + OSS 上传脚本
└── .env # 数据库 + OSS + 生图 API 配置
Additional Resources
- 完整音色列表及情感参数:reference.md