auto backup 2026-04-22 08:10:01

This commit is contained in:
xiaobian-bot 2026-04-22 08:10:01 +08:00
parent 3469eb3312
commit 9bea571604
7 changed files with 556 additions and 0 deletions

View File

@ -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

Binary file not shown.

View File

@ -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.

Binary file not shown.

View File

@ -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 = [
["motorbiken. 摩托车)", 4, 3, "✅ 符合输入≥2输出2-3"],
["peoplen. 人)", 3, 3, "✅ 符合输入≥2输出2-3"],
["holdv. 抓住)", 4, 3, "✅ 符合输入≥2输出2-3"],
["showv. 显示)", 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}")

View File

@ -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级别英语水平
- 【 】符合所有通用撰写规范要求

View File

@ -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 Units1 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 个知识点(全单词,或单词/句子混搭)。*
可选形式及参数规范:
<sheet token="DPJmsDUCHhESSntWXLWcJHEanib_6yx1O9"/>
## 五、 剧本格式规范 (Script Formatting Rules)
剧本必须使用 **4列表格** 进行撰写,以便于系统导入和开发阅读。
- **第 1 列:类型**
- 标准填法:`TL`(即玩家无法操作的剧情表演)、`对话互动`、`图片互动`、`信息互动`、`核心互动`。
- 细分互动可指定子类别:例如 `图片互动-拖拽``核心互动-阅读理解`
- **第 2 列:剧情描述**
- 内容用于描述动作、表情、音效或系统UI以编剧视角的第三方叙述呈现。
- 特殊标注:除常规描述外,某些特殊的描述需在行首添加`【标注】` ,具体包含以下几种:
- 【场景】 = 场景地图名称(如需要改动场景物件,写在括号里)
- 【角色】 = 将会在这张地图上登场的所有角色(英文名)
- 【教研图】 = 需在教研组件中出现的图片。如果是复用前面出现过的图,则标注【复用】
- 【插入图】/【全屏插入图】 = 与教研组件无关的图片。如果是复用前面出现过的图,则标注【复用】
- 【spine动画】 = 明确需要提需的重要角色/物件的spine动画
- 【emoji】 = 建议策划使用的emoji小表情参看<mention-doc token="X3lHweh3hi2XBokgA6rcRhTRnvg" type="wiki">Emoji</mention-doc>),不需要额外复杂的动作提需
- 【镜头】 = 明确的运镜处理
- 【画外音】 = 当前说话的角色spine没有出现在画面中仅出现立绘
- 【音效】 = 明确需要提需的音效
- 【音乐/儿歌】
- **第 3 列:名字**
- 说话角色的 `名字`(英文)
- **第 4 列:台词**
- 具体的 `英文台词`需要用符合5-9岁非英语母语小朋友的语言水平的单词和句型来撰写
- 需要注意在所有角色台词中都不得直呼“User”或“User的名字”。你可以用类似“Hey”或“Kid”这样的男女通用泛指称呼来代替
- **📝 剧本表格撰写示例:**
<lark-table rows="17" cols="4" column-widths="100,342,100,309">
<lark-tr>
<lark-td>
**类型**
</lark-td>
<lark-td>
**剧情描述**
</lark-td>
<lark-td>
**名字**
</lark-td>
<lark-td>
**台词**
</lark-td>
</lark-tr>
<lark-tr>
<lark-td>
TL
</lark-td>
<lark-td>
【场景】棒球场
【角色】User、Matt、Ben、Vicky、Lucy、Tom、Amber、Vala运动社三兄弟资源ID684、685、686
</lark-td>
<lark-td>
</lark-td>
<lark-td>
</lark-td>
</lark-tr>
<lark-tr>
<lark-td>
</lark-td>
<lark-td>
操场上Matt身着棒球服正叉腰准备开始对User和Ben进行魔鬼训练
</lark-td>
<lark-td>
</lark-td>
<lark-td>
</lark-td>
</lark-tr>
<lark-tr>
<lark-td>
</lark-td>
<lark-td>
</lark-td>
<lark-td>
Matt
</lark-td>
<lark-td>
Listen carefully. Baseball is a hard game.
</lark-td>
</lark-tr>
<lark-tr>
<lark-td>
</lark-td>
<lark-td>
</lark-td>
<lark-td>
Matt
</lark-td>
<lark-td>
Today, we must train!
</lark-td>
</lark-tr>
<lark-tr>
<lark-td>
</lark-td>
<lark-td>
</lark-td>
<lark-td>
Matt
</lark-td>
<lark-td>
Are you ready?
</lark-td>
</lark-tr>
<lark-tr>
<lark-td>
</lark-td>
<lark-td>
</lark-td>
<lark-td>
User
</lark-td>
<lark-td>
I'm ready!
</lark-td>
</lark-tr>
<lark-tr>
<lark-td>
</lark-td>
<lark-td>
</lark-td>
<lark-td>
Ben
</lark-td>
<lark-td>
I'm ready, too.
</lark-td>
</lark-tr>
<lark-tr>
<lark-td>
</lark-td>
<lark-td>
</lark-td>
<lark-td>
Matt
</lark-td>
<lark-td>
Good.
</lark-td>
</lark-tr>
<lark-tr>
<lark-td>
</lark-td>
<lark-td>
Matt转向Ben指向一旁的球筐
</lark-td>
<lark-td>
</lark-td>
<lark-td>
</lark-td>
</lark-tr>
<lark-tr>
<lark-td>
</lark-td>
<lark-td>
</lark-td>
<lark-td>
Matt
</lark-td>
<lark-td>
Ben, go and get the baseball.
</lark-td>
</lark-tr>
<lark-tr>
<lark-td>
</lark-td>
<lark-td>
</lark-td>
<lark-td>
Ben
</lark-td>
<lark-td>
Okay.
</lark-td>
</lark-tr>
<lark-tr>
<lark-td>
</lark-td>
<lark-td>
Ben向球筐走去User跟上
</lark-td>
<lark-td>
</lark-td>
<lark-td>
</lark-td>
</lark-tr>
<lark-tr>
<lark-td>
</lark-td>
<lark-td>
</lark-td>
<lark-td>
User
</lark-td>
<lark-td>
Let me help you.
</lark-td>
</lark-tr>
<lark-tr>
<lark-td>
</lark-td>
<lark-td>
两人来到球筐前
</lark-td>
<lark-td>
</lark-td>
<lark-td>
</lark-td>
</lark-tr>
<lark-tr>
<lark-td>
图片多选
</lark-td>
<lark-td>
【教研图】从球筐里的各种球类中挑出所有的棒球baseball
</lark-td>
<lark-td>
</lark-td>
<lark-td>
</lark-td>
</lark-tr>
<lark-tr>
<lark-td>
</lark-td>
<lark-td>
</lark-td>
<lark-td>
Matt
</lark-td>
<lark-td>
Get all the baseballs.
</lark-td>
</lark-tr>
</lark-table>
## 六、 自检清单 (Checklist)
【 】故事是否是在解决孩子日常生活中的“小危机”?
【 】是否是由孩子来主导局面?
【 】本课的 4词2句 是否全部满足了“先输入后输出2-3次”的原则并且词性、释义绝对准确
【 】核心互动是否自然融入了剧情高潮是否包含了至少3个知识点
【 】语言和句式是否足够简单,方便翻译为 Pre-A1/A1 级别的英文?
## 七、 AI工作流
由用户提供一个故事大纲和对应的知识点包含4个单词+2个句型请按以下步骤处理
- 步骤 1诊断分析
阅读用户提供的大纲,指出哪里偏向低幼、缺乏自主性或说教感过强,并评估教研容量是否合理。
- 步骤 2结构与体量规划
按照已有的剧情段落划分,为每个段落分配大致合适的句数和字数估算,并规划好每个知识点的输入和输出互动点所在的位置。
- 步骤 3分段剧本生成
根据步骤 2 的规划分段逐个撰写剧本。撰写时严格使用规定的“4列表格”格式。分段撰写完成后需要向用户确认只有当用户说Pass才算本段结束。
- 步骤 4 剧本整合
最终,将步骤 3 中生成的所有分段剧本整合成一个完整剧本,并做最终的检查审核,必须确保所有知识点满足“先输入后输出”及频次和词性要求。
将整合完成后的剧本导出为一份本地的Excel文档并在文末附上《知识点输入输出数量统计表》。