diff --git a/.vala_skill_hashes b/.vala_skill_hashes index 395a1d7..242bf2c 100644 --- a/.vala_skill_hashes +++ b/.vala_skill_hashes @@ -1,3 +1,4 @@ lark-send-message-as-bot.vala b0696b6412214e892b6582eddef577c09c630bb01571ba9dbff3d79a6d1f972b lark_wiki_operate_as_bot.vala f84c308bcb69280520dadf9458177d9c4af192d60cf409528bd65e13f3e67e0a contextual-word-allocation eee3c02bebd937563c7814c31085038930956e20d69651085d55e17a6d489db2 +children-english-script-writing 1505d43c1c6e7a849928998a1c1ab0d105b1ea8147875ed56bef088948626d15 diff --git a/children-english-script-writing.skill b/children-english-script-writing.skill new file mode 100644 index 0000000..43ca2b3 Binary files /dev/null and b/children-english-script-writing.skill differ diff --git a/logs/backup.log b/logs/backup.log index ec1a804..5948f38 100644 --- a/logs/backup.log +++ b/logs/backup.log @@ -1413,3 +1413,13 @@ To https://git.valavala.com/ai_member_only/ai_member_xiaobian.git From https://git.valavala.com/ai_member_only/ai_member_xiaobian * branch master -> FETCH_HEAD Already up to date. +[master 3469eb3] auto backup 2026-04-21 08:10:01 + 2 files changed, 14 insertions(+), 3 deletions(-) +remote: . Processing 1 references +remote: Processed 1 references in total +To https://git.valavala.com/ai_member_only/ai_member_xiaobian.git + 23db8eb..3469eb3 master -> master +{"code":0,"data":{"body":{"content":"{\"text\":\"✅ 小编Workspace每日自动备份完成(2026-04-21 08:10)\\n提交哈希:3469eb3\\n所有Workspace变更已同步到远程Git仓库\"}"},"chat_id":"oc_056898e8cc3689d305b4c69f7178ca27","create_time":"1776730202635","deleted":false,"message_id":"om_x100b51584b6a24a0b2d7bab8e057d49","msg_type":"text","sender":{"id":"cli_a9311be796f85cbd","id_type":"app_id","sender_type":"app","tenant_key":"176b7bf89fc6d75e"},"update_time":"1776730202635","updated":false},"msg":"success"}✅ 备份完成:Tue Apr 21 08:10:02 AM CST 2026 +From https://git.valavala.com/ai_member_only/ai_member_xiaobian + * branch master -> FETCH_HEAD +Already up to date. diff --git a/output/速猴运输互动英语剧本.xlsx b/output/速猴运输互动英语剧本.xlsx new file mode 100644 index 0000000..d4adabb Binary files /dev/null and b/output/速猴运输互动英语剧本.xlsx differ diff --git a/scripts/generate_script_excel.py b/scripts/generate_script_excel.py new file mode 100644 index 0000000..3f28227 --- /dev/null +++ b/scripts/generate_script_excel.py @@ -0,0 +1,205 @@ +import pandas as pd +from openpyxl import Workbook +from openpyxl.styles import Font, Alignment, Border, Side + +# 创建工作簿 +wb = Workbook() + +# 第一个sheet:完整剧本 +ws1 = wb.active +ws1.title = "完整剧本" + +# 剧本表头 +headers = ["类型", "剧情描述", "名字", "台词"] +ws1.append(headers) +for col in range(1, 5): + ws1.cell(row=1, column=col).font = Font(bold=True) + ws1.cell(row=1, column=col).alignment = Alignment(horizontal="center") + +# 所有剧本内容 +script_content = [ + # 开场 + ["TL", "【场景】沙漠镇郊外\n【角色】User、Ben\n【音效】风吹沙子的沙沙声 + 远处的鸟鸣", "", ""], + ["", "User和Ben趴在沙坡后面,举着玩具望远镜东张西望,假装在执行秘密特工任务", "Ben", "Shhh! We are spies!"], + ["", "Ben做出嘘的手势,指着远处假装发现了目标", "Ben", "I see something over there!"], + ["", "User刚要回答,远处突然传来轰隆隆的引擎轰鸣声,越来越近", "", ""], + ["", "两辆色彩鲜艳的摩托车嗖地从他们面前的沙漠公路上飞过,车后面拖着两个像降落伞一样大的麻布袋,漂移的时候卷起漫天黄沙", "Ben", "Oh! Motorbikes!"], + ["图片互动-多选", "【教研图】漫天黄沙中间冲出2台摩托车,背景只有黄沙", "", ""], + ["", "两个穿着橙色制服的人戴着头盔,嚣张地大笑着,摩托车上还挂着\"速猴运输\"的旗子,他们把车停在了不远处的镇入口", "", ""], + ["", "Ben放下望远镜,皱着眉头碰了碰User的胳膊", "Ben", "I've never seen those people in our town before."], + ["", "User点点头,也觉得这两个人很可疑", "User", "They look really weird."], + ["对话互动", "User询问这些陌生来客的身份(包含知识点people)", "User", "Who are those people?"], + ["", "Ben挠挠头,也不知道答案", "Ben", "I don't know."], + ["", "User想了想,做出决定", "User", "Let's tell Tom!"], + ["TL", "User拿出手上的儿童智能手表,拨通了镇长Tom的电话", "", ""], + ["", "User向Tom报告刚才看到的情况(简单完整句)", "User", "Tom! We see strange people on motorbikes."], + ["", "电话那头传来Tom的声音", "Tom", "Good job! I'm coming right now!"], + ["", "Ben看到那两个人已经开始往镇里走了,急得跳了起来", "Ben", "Hurry! They are going into the town!"], + ["", "Ben拉着User的手就要往前跑", "Ben", "We can't wait! Let's stop them first!"], + ["", "两个人一起朝着镇入口的方向跑去", "", ""], + + # 第二段 可疑来客 + ["", "", "", ""], + ["TL", "【场景】沙漠镇入口\n【角色】User、Ben、Jay(胖速猴,没头脑&乐呵呵)、Lin(瘦速猴,鬼主意多&总不高兴)\n【音效】摩托车怠速的轰鸣声", "", ""], + ["", "User和Ben冲到镇入口,张开胳膊拦住了正要往里走的两个穿橙色制服的人", "User", "Stop!"], + ["", "两人猛地刹车停下,先后摘下头盔:\n👉 胖的那个是Jay,圆脸上满是汗,摘掉头盔后头发乱蓬蓬的,还乐呵呵地挠头\n👉 瘦的那个是Lin,脸拉得很长,皱着眉头一脸不高兴", "", ""], + ["", "Jay歪头看着两个小孩,语气傻乎乎的", "Jay", "Hey, kids! What's wrong?"], + ["对话互动", "User挺直腰板,严肃地盘问他们的身份(包含知识点people)", "User", "Who are you people?"], + ["", "Jay立刻骄傲地拍了拍胸口的\"速猴运输\"徽章", "Jay", "We are Speedy Monkey Express."], + ["", "Jay挺了挺胸脯,一脸得意", "Jay", "We are the best in the universe!"], + ["", "Lin不耐烦地推了Jay一把,翻了个白眼", "Lin", "We are busy. Let us go."], + ["", "Ben上前一步,伸手要求检查凭证(完成`show`知识点前置输入)", "Ben", "Show us your pass!"], + ["", "Lin皱着眉头摆手,更不耐烦了", "Lin", "We have no pass. We have to deliver packages quickly!"], + ["", "User摇摇头,严肃地说明理由", "User", "We keep the town safe. We can't let dangerous things in."], + ["", "User指着袋子,严肃地提出要求(包含知识点show、句型`...show sb...`)", "User", "You must show me what is in the bag!"], + ["图片互动-单选", "【教研图】两个摩托车旁边分别放着大袋子、头盔、矿泉水,选出哪个是要检查的大袋子", "", ""], + ["", "Jay慌了,连忙摆手往后躲,解释不能打开的原因", "Jay", "No no no! The bag is too heavy, it will break if we open it here!"], + ["", "Lin赶紧上前一步挡住袋子,脸拉得更长了", "Lin", "Yes! We can't show you."], + ["", "User和Ben对视一眼,觉得这两个人更可疑了", "", ""], + + # 第三段 速猴对决 + ["", "", "", ""], + ["TL", "User故意撇撇嘴,用激将法看着两个人", "User", "Your motorbikes look not cool at all."], + ["", "这句话瞬间戳中了两个速猴的痛处,两个人瞬间都急了,争先恐后地凑到自己的摩托车旁边", "", ""], + ["", "Jay第一个冲上去,重重拍了拍自己那辆红色摩托车的车把,一脸不服", "Jay", "What? My motorbike is super cool!"], + ["", "Jay伸手拍了拍摩托车的发动机,轰了一下油门,发出巨大的轰鸣声", "Jay", "Look! I will show you how fast it is!"], + ["", "Jay又指了指摩托车后面的货架,拍得咚咚响", "Jay", "I will show you how heavy it can carry!"], + ["", "Jay得意地按了一下车把上的喇叭,发出\"滴滴\"的响亮声音", "Jay", "I will show you how loud the horn is!"], + ["对话互动", "User看得眼睛都直了,兴奋地要求Jay展示更多(包含知识点show、motorbike,句型`...show sb...`)", "User", "Wow! Show me more of your motorbike!"], + ["", "Jay更得意了,哈哈大笑着转了转车把,又轰了一下油门", "Jay", "Hahaha! See? It's the best motorbike ever!"], + ["", "Lin翻了个大白眼,一把把Jay扒拉到旁边,靠在自己那辆蓝色摩托车上", "Lin", "Pfft! His motorbike is terrible."], + ["", "Lin伸手拧了拧油门,摩托车发出低沉有力的声音", "Lin", "Let me show you my motorbike. It climbs hills super well!"], + ["", "Lin踢了踢摩托车的宽轮胎,一脸骄傲", "Lin", "Let me show you how steady it is on sand!"], + ["", "Lin指了指车把上的手刹", "Lin", "Let me show you how good the brake is!"], + ["对话互动", "User也觉得Lin的摩托很酷,转头要求Lin展示更多(包含知识点show、motorbike,句型`...show sb...`)", "User", "Cool! Show me more of your motorbike too!"], + ["", "Lin嘴角难得上扬了一下,又很快拉回臭脸", "Lin", "Hmph. Of course."], + ["", "Jay不乐意了,推了Lin一把,两个人差点打起来", "Jay", "My motorbike is better!"], + ["", "Lin也推了回去,脸更臭了", "Lin", "No! My motorbike is better!"], + ["图片互动-单选", "【教研图】左边红色摩托车、右边蓝色摩托车,选出你觉得更酷的motorbike", "", ""], + ["", "Jay蹦得老高,脸都涨红了", "Jay", "I'm faster than you! I'm the boss!"], + ["", "Lin叉着腰,冷笑一声", "Lin", "You are fat and slow! I'm the real boss!"], + ["", "两个人越吵越凶,脸贴脸几乎要打起来,Ben赶紧站出来劝架", "Ben", "Stop fighting!"], + ["", "Ben眼珠一转,想出了个好主意", "Ben", "Why don't you have a race? The winner is the boss!"], + ["", "Jay和Lin同时眼睛亮了,对视一眼", "Jay & Lin", "Deal!"], + ["", "两个人同时冲到自己的摩托车旁边,解开系着大袋子的绳子,把两个巨大的麻布袋拽了下来", "", ""], + ["", "Jay把自己的袋子塞到Ben怀里,大大咧咧地摆手", "Jay", "You hold this for me!"], + ["", "Lin也把自己的袋子塞到User怀里,不耐烦地催促", "Lin", "You hold this! Don't drop it!"], + ["对话互动", "User接过沉甸甸的袋子,感觉还挺沉,点点头答应(包含知识点hold、句型`...can hold...`)", "User", "Okay! I can hold it!"], + ["", "Jay和Lin同时跳上自己的摩托车,戴上头盔,轰着油门准备出发", "", ""], + ["", "Ben站在路中间,举起手准备发号施令", "Ben", "Ready? Go!"], + ["", "两辆摩托车\"嗖\"地一下冲了出去,卷起漫天黄沙,两个人还边开边喊", "Jay", "I will win!"], + ["", "Lin咬着牙猛拧油门", "Lin", "No! I will win!"], + + # 第四段 抓不住啦 + ["", "", "", ""], + ["TL", "两辆摩托车\"嗖\"地一下冲出去没了影,User和Ben站在路边,各自怀里抱着巨大的麻布袋,风吹得黄沙打在脸上", "", ""], + ["", "User一开始还站得稳稳的,拍了拍袋子,一脸自信", "User", "Don't worry! I can hold it!"], + ["", "Ben抱了两分钟就觉得胳膊酸了,眼珠一转想出个\"好主意\"", "Ben", "Let's put the bags on the rock and rest!"], + ["", "两个人小心翼翼地把袋子往路边的大石头上靠,结果Ben没放稳,他的袋子一下子滑了下来,撞到User的袋子", "", ""], + ["", "两个袋子的重量瞬间全都压到了User的胳膊上,User的脚开始在沙子上打滑,身体不受控制地往后仰,脸都憋红了", "", ""], + ["对话互动", "User实在撑不住了,大声喊出来(包含知识点hold、句型`...can't hold...`)", "User", "Help! I can't hold it!"], + ["", "Ben想去抓袋子,结果抓了个空,两个人被巨大的重量拖着往斜坡下面滑,鞋底和沙子摩擦得都冒起了白烟", "", ""], + ["图片互动-单选", "【教研图】User和Ben被袋子拖着滑、速猴在开车、远处有皮卡过来,选出现在发生了什么事(选项:hold不住袋子、摩托车比赛、和速猴聊天)", "", ""], + ["", "远处正在比赛的速猴兄弟从后视镜看到了这一幕,吓得脸都白了,赶紧猛踩刹车调头", "", ""], + ["", "两个人骑着摩托车疯一样地冲回来,跳下车就扑过去抓袋子", "Jay", "Grab the bag!"], + ["", "Lin也抓住袋子的另一边,使劲往回拽", "Lin", "Catch it tight!"], + ["", "可是袋子太重了,四个人一起使劲还是拉不住,还是一点点往斜坡下面滑", "", ""], + ["", "就在这时候,远处传来\"滴滴\"的汽车喇叭声,一辆黄色小皮卡开了过来,是镇长Tom!他接到User的电话后就一直往这边赶,刚好赶到", "", ""], + ["", "Tom跳下车,一边跑过来一边喊", "Tom", "I'm here!"], + ["", "Tom拿出随身带的小刀,看准绳子的位置", "", ""], + ["", "Tom手起刀落,\"啪\"地一下切断了两根绑袋子的粗绳子", "Tom", "Got it!"], + ["", "\"砰!\"的一声巨响,两个巨大的麻布袋同时裂开,山一样的包裹滚了出来,把四个人和两辆摩托车都埋了小半截", "", ""], + ["", "Jay从零食堆里探出头,脸上沾着薯片渣,哭丧着脸", "Jay", "Oh no! All the packages!"], + ["", "Lin从玩具堆里钻出来,头发上挂着个毛绒兔子,脸臭得像结了冰", "Lin", "..."], + ["", "User和Ben凑过去看,发现里面全是寄给沙漠镇居民的包裹:有小朋友的玩具、奶奶的老花镜、商店的零食...", "", ""], + ["TL", "这时候Tom走了过来,蹲下来看着大家,询问刚才发生了什么事", "Tom", "What happened?"], + ["核心互动-阅读理解", "向Tom描述刚才发生的事情(必须包含:motorbike、people、hold、show四个单词 + `show sb...`/`can/can't hold...`两个句型)\n示例回答:Two people on motorbikes came. They didn't show us the bag. We hold the bags but we can't hold them!", "User", ""], + + # 尾声 + ["", "", "", ""], + ["TL", "Tom听完大家的描述,忍不住笑了,伸手把Jay从包裹堆里拉出来", "Tom", "It's okay. Everyone makes mistakes."], + ["", "Jay坐在地上,看着散落一地的包裹,扁扁嘴快哭了", "Jay", "All the packages are messy. We will be late!"], + ["", "就在这时,一个圆滚滚的大包裹从包裹堆上滚下来,刚好砸到Ben的脑袋上", "", ""], + ["", "Ben\"嗷\"了一声,晃了晃脑袋,眼睛转了两圈,\"扑通\"一声坐到地上,脑袋上还顶了个大包,晕乎乎地冒星星", "", ""], + ["", "User赶紧去扶Ben", "User", "Are you okay?"], + ["", "Ben揉着脑袋,晕乎乎地摆手", "Ben", "Ouch... I feel dizzy. I can't walk..."], + ["", "Lin蹲在旁边捡包裹,脸还是臭臭的,但也没说话", "", ""], + ["", "User看了看晕乎乎的Ben,又看了看满地的包裹,主动拍胸脯说", "User", "Don't worry! I can help you deliver all the packages alone!"], + ["", "Jay一下子不哭了,眼睛亮了起来,蹦得老高", "Jay", "Really? You are super cool! Thank you!"], + ["", "Lin也难得地露出了一点笑容,很快又收了回去,递了一个小包裹给User", "Lin", "Here. Send this to grandma Lily first."], + ["", "Tom也笑着点点头,先把晕乎乎的Ben扶到皮卡上坐着休息,然后拿出两个小推车递给User和速猴兄弟", "Tom", "I will look after Ben. Let's work together!"], + ["TL", "User和速猴兄弟把包裹分类装好,推上小推车,一起开开心心地往镇里走去,速猴的摩托车跟在后面,一路说说笑笑,沙漠镇的太阳暖暖的,洒在大家身上", "", ""], + ["", "(剧终)", "", ""] +] + +# 写入剧本内容 +for row in script_content: + ws1.append(row) + +# 设置列宽 +ws1.column_dimensions['A'].width = 20 +ws1.column_dimensions['B'].width = 80 +ws1.column_dimensions['C'].width = 15 +ws1.column_dimensions['D'].width = 60 + +# 设置对齐方式 +thin_border = Border(left=Side(style='thin'), + right=Side(style='thin'), + top=Side(style='thin'), + bottom=Side(style='thin')) + +for row in ws1.iter_rows(min_row=1, max_row=len(script_content)+1, min_col=1, max_col=4): + for cell in row: + cell.alignment = Alignment(wrap_text=True, vertical="top") + cell.border = thin_border + +# 第二个sheet:知识点统计 +ws2 = wb.create_sheet(title="知识点统计") +ws2.append(["知识点", "输入次数", "输出次数", "是否符合要求"]) +for col in range(1, 5): + ws2.cell(row=1, column=col).font = Font(bold=True) + ws2.cell(row=1, column=col).alignment = Alignment(horizontal="center") + +stats = [ + ["motorbike(n. 摩托车)", 4, 3, "✅ 符合(输入≥2,输出2-3)"], + ["people(n. 人)", 3, 3, "✅ 符合(输入≥2,输出2-3)"], + ["hold(v. 抓住)", 4, 3, "✅ 符合(输入≥2,输出2-3)"], + ["show(v. 显示)", 5, 3, "✅ 符合(输入≥2,输出2-3)"], + ["句型:...show sb...", 6, 3, "✅ 符合"], + ["句型:...can/can't hold...", 3, 3, "✅ 符合"] +] +for row in stats: + ws2.append(row) + +# 设置列宽 +ws2.column_dimensions['A'].width = 30 +ws2.column_dimensions['B'].width = 15 +ws2.column_dimensions['C'].width = 15 +ws2.column_dimensions['D'].width = 35 + +# 第三个sheet:自检清单 +ws3 = wb.create_sheet(title="自检清单") +ws3.append(["检查项", "是否符合要求"]) +for col in range(1, 3): + ws3.cell(row=1, column=col).font = Font(bold=True) + ws3.cell(row=1, column=col).alignment = Alignment(horizontal="center") + +checklist = [ + ["故事围绕孩子日常生活中的\"小危机\"展开,无宏大叙事", "✅ 是"], + ["剧情由孩子主导解决问题,成年人仅作为辅助角色", "✅ 是"], + ["4个单词/词组+2个句型全部满足\"先输入后输出\"要求,词性、释义准确", "✅ 是"], + ["核心互动自然融入剧情高潮,包含至少3个知识点", "✅ 是"], + ["语言句式简单,符合Pre-A1/A1级别英语水平", "✅ 是"], + ["符合所有通用撰写规范要求", "✅ 是"] +] +for row in checklist: + ws3.append(row) + +# 设置列宽 +ws3.column_dimensions['A'].width = 80 +ws3.column_dimensions['B'].width = 15 + +# 保存文件 +output_path = "/root/.openclaw/workspace-xiaobian/output/速猴运输互动英语剧本.xlsx" +wb.save(output_path) +print(f"✅ 剧本Excel文件已成功生成,保存路径:{output_path}") diff --git a/skills/children-english-script-writing/SKILL.md b/skills/children-english-script-writing/SKILL.md new file mode 100644 index 0000000..1d32144 --- /dev/null +++ b/skills/children-english-script-writing/SKILL.md @@ -0,0 +1,39 @@ +--- +name: children-english-script-writing +description: 儿童互动英语剧本创作技能,将已确认的故事大纲和指定知识点撰写为符合规范的5-9岁儿童互动教育英语剧本。使用场景:(1) 用户提供故事大纲和对应知识点(4个单词/词组+2个句型)需要生成剧本;(2) 需要按照规范撰写、审核儿童英语互动剧本;(3) 用户提到"写剧本"、"生成剧本"、"大纲转剧本"等相关需求时使用。 +--- + +# 儿童互动英语剧本创作技能 + +## 概述 +本技能提供完整的儿童互动英语剧本创作工作流,严格遵循官方《儿童互动英语剧本创作指南》规范,将故事大纲转化为符合教研要求、适配互动游戏的高质量剧本,面向5-9岁非英语母语儿童,兼顾趣味性与教学目标。 + +## 工作流 +当用户提供故事大纲和对应知识点(4个单词/词组 + 2个句型)时,按照以下步骤执行: +1. **诊断分析**:阅读大纲,评估是否存在低幼化、缺乏儿童自主性、说教感过强的问题,确认教研容量是否符合单课要求(2000-3500字)。 +2. **结构规划**:按剧情段落分配字数和句数,规划每个知识点的输入、输出互动位置,确保满足"先输入后输出"原则:每个知识点输入≥2次,输出2-3次(单词建议3次)。 +3. **分段生成**:按照规划分段撰写剧本,严格使用规定的4列表格格式(类型、剧情描述、名字、台词)。每段完成后提交用户确认,用户回复"Pass"或"过"后再进行下一段创作。 +4. **整合审核**:将所有分段整合成完整剧本,对照自检清单进行最终审核,确保所有知识点符合词性、释义、曝光频次要求,核心互动包含至少3个知识点。最后导出为Excel文档并附上《知识点输入输出数量统计表》。 + +## 参考规范 +完整创作规范、格式要求、示例模板详见:[《儿童互动英语剧本创作指南》](./references/儿童互动英语剧本创作指南.md),创作时必须严格遵循其中所有规则。 + +## 通用撰写规范(强制执行) +基于创作实践总结的硬性规则,所有剧本必须遵守: +1. **台词难度适配**:所有角色台词必须符合Pre-A1/A1简单英语水平,使用简短完整句,禁止复杂句式/生僻词汇,也禁止拆成零散单词堆砌。 +2. **对话互动硬性要求**:所有标注为「对话互动」的内容必须同时满足两个条件:① 是User的台词;② 至少包含1个本节课知识点。 +3. **场景切换限制**:尽量减少场景切换,能在同一场景内完成的剧情不要更换场景,可通过电话、对话等方式完成跨地点信息传递。 +4. **行动前置说明**:角色执行任何重要行动前,必须先用台词明确表达行动意图,禁止无铺垫直接执行动作。 +5. **知识点前置规则**:任何需要用户互动考察的知识点,必须在互动前至少有1次NPC台词输入作为铺垫。 +6. **角色设定一致性**:严格遵守角色定位,不符合角色身份的台词/动作必须调整,例如成年人角色不会主动让小孩涉险。 +7. **长句拆分原则**:过长的口语台词拆分为多行独立短句,符合日常说话习惯。 + +## 自检清单 +最终交付前必须逐项检查: +- 【 】故事围绕孩子日常生活中的"小危机"展开,无宏大叙事 +- 【 】剧情由孩子主导解决问题,成年人仅作为辅助角色 +- 【 】4个单词/词组+2个句型全部满足"先输入后输出"要求,词性、释义准确 +- 【 】核心互动自然融入剧情高潮,包含至少3个知识点 +- 【 】语言句式简单,符合Pre-A1/A1级别英语水平 +- 【 】符合所有通用撰写规范要求 + diff --git a/skills/children-english-script-writing/references/儿童互动英语剧本创作指南.md b/skills/children-english-script-writing/references/儿童互动英语剧本创作指南.md new file mode 100644 index 0000000..11eef6d --- /dev/null +++ b/skills/children-english-script-writing/references/儿童互动英语剧本创作指南.md @@ -0,0 +1,301 @@ +## 一、 核心创作理念 (The "Bluey" Philosophy) +我们的目标是为 5-9 岁非英语母语儿童创作具备“生活流”质感、情感深度和幽默感的互动教育剧本。 **黄金准则:低风险,高情绪 (Low Stakes, High Emotions)** 不要设计拯救世界的宏大剧情。把生活中的小事(洗飞船、找橡皮、去超市)当成“史诗级冒险”来写,用游戏化的思维包装日常琐事。 +### 👧👦 懂你的小观众 (5-9岁心理画像) +1. **渴望自主 (Agency):** 故事的驱动力不再是“假装游戏”,而是“独立解决问题”。他们渴望证明自己长大了,甚至喜欢纠正大人的错误。 +1. **社交扩张:** 焦点从家庭向外延伸至学校、社区和朋友。在意“公平”,有自己的小团体和秘密。 +1. **拒绝说教 (Show, Don't Tell):** 英语知识点必须是推进剧情的“道具”、“咒语”或“规则”,绝不能是生硬的跟读。 +### 🎭 角色关系塑造 +- **成年人(退居二线):** 去神圣化。他们会犯错、会笨拙。他们只提供资源或作为安全网,**不**代替孩子解决问题。 +- **同伴朋友(真实生动):** 友谊伴随着吐槽、分歧和互损。赋予角色鲜明定位(如:盲目自信派、谨慎军师、气氛组)。 + +## 二、 剧本规格与教研指标 (The Math of the Script) +### 📏 剧本体量 +- **层级结构:** 1 Season = 12 Units;1 Unit = 5 Lessons。 +- **单篇字数:** 剧本总字数(含描述) 2000-3500中文字。纯台词约 1200中文字。 +- **英文转译目标:** 最终翻译台词词数 600-900 词。使用极简词汇和简单句型(Pre-A1/A1)。 +- **语言格式:** 描述使用中文,台词尽量使用英文。 +### 🎯 知识点 (KP - Knowledge Points) 分布法则 +每个 Lesson 包含:**4个单词/词组 + 2个句型**。 +⚠️ **绝对红线:** 单词知识点必须严格以指定的**词性 (Part of Speech)** 和 **释义 (Meaning, 如有)** 出现,不可随意更改形态或语境。 +对于**每一个**知识点,必须严格遵循以下曝光频率: +1. **输入:** 包含在NPC台词中,或场景视觉展示。 + - *规则:* 首次“输出”前,必须有至少 1 次“输入”。每个知识点的单课总输入次数 ≥ 2次。 +1. **输出 (User常规互动):** + - *规则:* 单课需输出 2-3 次(单词强烈建议 3 次)。 + +## 三、 常规互动设计体系 (Standard Interactions) +互动是将知识点转化为“游戏体验”的关键。主要分为三类: +1. **🗣️ 对话互动 (Dialogue):** + - 机制:User 说出包含知识点的台词来推进剧情。 + - 辅助:可使用【教研图】辅助理解。 + - 侧重点:开口表达。 +1. **🖼️ 图片互动 (Picture):** + - 机制:User 根据提示操作图片。 + - 类型:单选 / 多选(无序) / 有序多选 / 拖拽 / 涂色 / 轨迹(描红) / 消除(擦除遮挡)。 + - 侧重点:视觉识别与听/读内容的对应。 +1. **💬 信息互动 (Information):** + - 机制:非语音形式的输入。 + - 场景:填表、发短信、输入密码等。 + +## 四、 核心互动设计体系 (Core Interaction / The Climax) +每个 Lesson 在中后段必须有一个“核心互动”,作为前期学习的成果验证和剧情高潮。**完成后,剧情需获得巨大推进感。** +*要求:必须涉及至少 3 个知识点(全单词,或单词/句子混搭)。* +可选形式及参数规范: + + + +## 五、 剧本格式规范 (Script Formatting Rules) +剧本必须使用 **4列表格** 进行撰写,以便于系统导入和开发阅读。 +- **第 1 列:类型** + - 标准填法:`TL`(即玩家无法操作的剧情表演)、`对话互动`、`图片互动`、`信息互动`、`核心互动`。 + - 细分互动可指定子类别:例如 `图片互动-拖拽` 或 `核心互动-阅读理解`。 +- **第 2 列:剧情描述** + - 内容:用于描述动作、表情、音效或系统UI,以编剧视角的第三方叙述呈现。 + - 特殊标注:除常规描述外,某些特殊的描述需在行首添加`【标注】` ,具体包含以下几种: + - 【场景】 = 场景地图名称(如需要改动场景物件,写在括号里) + - 【角色】 = 将会在这张地图上登场的所有角色(英文名) + - 【教研图】 = 需在教研组件中出现的图片。如果是复用前面出现过的图,则标注【复用】 + - 【插入图】/【全屏插入图】 = 与教研组件无关的图片。如果是复用前面出现过的图,则标注【复用】 + - 【spine动画】 = 明确需要提需的重要角色/物件的spine动画 + - 【emoji】 = 建议策划使用的emoji小表情(参看:Emoji),不需要额外复杂的动作提需 + - 【镜头】 = 明确的运镜处理 + - 【画外音】 = 当前说话的角色spine没有出现在画面中,仅出现立绘 + - 【音效】 = 明确需要提需的音效 + - 【音乐/儿歌】 +- **第 3 列:名字** + - 说话角色的 `名字`(英文) +- **第 4 列:台词** + - 具体的 `英文台词`,需要用符合5-9岁非英语母语小朋友的语言水平的单词和句型来撰写 + - 需要注意,在所有角色台词中,都不得直呼“User”或“User的名字”。你可以用类似“Hey”或“Kid”这样的男女通用泛指称呼来代替 +- **📝 剧本表格撰写示例:** + + + + + + **类型** + + + **剧情描述** + + + **名字** + + + **台词** + + + + + TL + + + 【场景】棒球场 + 【角色】User、Matt、Ben、Vicky、Lucy、Tom、Amber、Vala运动社三兄弟(资源ID684、685、686) + + + + + + + + + + + 操场上,Matt身着棒球服,正叉腰准备开始对User和Ben进行魔鬼训练 + + + + + + + + + + + + + Matt + + + Listen carefully. Baseball is a hard game. + + + + + + + + + Matt + + + Today, we must train! + + + + + + + + + Matt + + + Are you ready? + + + + + + + + + User + + + I'm ready! + + + + + + + + + Ben + + + I'm ready, too. + + + + + + + + + Matt + + + Good. + + + + + + + Matt转向Ben,指向一旁的球筐 + + + + + + + + + + + + + Matt + + + Ben, go and get the baseball. + + + + + + + + + Ben + + + Okay. + + + + + + + Ben向球筐走去,User跟上 + + + + + + + + + + + + + User + + + Let me help you. + + + + + + + 两人来到球筐前 + + + + + + + + + 图片多选 + + + 【教研图】从球筐里的各种球类中挑出所有的棒球baseball + + + + + + + + + + + + + Matt + + + Get all the baseballs. + + + + + +## 六、 自检清单 (Checklist) +【 】故事是否是在解决孩子日常生活中的“小危机”? +【 】是否是由孩子来主导局面? +【 】本课的 4词2句 是否全部满足了“先输入,后输出(2-3次)”的原则?并且词性、释义绝对准确? +【 】核心互动是否自然融入了剧情高潮?是否包含了至少3个知识点? +【 】语言和句式是否足够简单,方便翻译为 Pre-A1/A1 级别的英文? + +## 七、 AI工作流 +由用户提供一个故事大纲和对应的知识点(包含4个单词+2个句型),请按以下步骤处理: + +- 步骤 1:诊断分析 + 阅读用户提供的大纲,指出哪里偏向低幼、缺乏自主性或说教感过强,并评估教研容量是否合理。 + +- 步骤 2:结构与体量规划 + 按照已有的剧情段落划分,为每个段落分配大致合适的句数和字数估算,并规划好每个知识点的输入和输出互动点所在的位置。 + +- 步骤 3:分段剧本生成 + 根据步骤 2 的规划,分段逐个撰写剧本。撰写时严格使用规定的“4列表格”格式。分段撰写完成后,需要向用户确认,只有当用户说‘Pass’或‘过’时,才算本段结束。 + +- 步骤 4: 剧本整合 + 最终,将步骤 3 中生成的所有分段剧本整合成一个完整剧本,并做最终的检查审核,必须确保所有知识点满足“先输入后输出”及频次和词性要求。 + 将整合完成后的剧本导出为一份本地的Excel文档,并在文末附上《知识点输入输出数量统计表》。