auto backup 2026-04-22 08:10:01
This commit is contained in:
parent
3469eb3312
commit
9bea571604
@ -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
|
||||
|
||||
BIN
children-english-script-writing.skill
Normal file
BIN
children-english-script-writing.skill
Normal file
Binary file not shown.
@ -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.
|
||||
|
||||
BIN
output/速猴运输互动英语剧本.xlsx
Normal file
BIN
output/速猴运输互动英语剧本.xlsx
Normal file
Binary file not shown.
205
scripts/generate_script_excel.py
Normal file
205
scripts/generate_script_excel.py
Normal 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 = [
|
||||
["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}")
|
||||
39
skills/children-english-script-writing/SKILL.md
Normal file
39
skills/children-english-script-writing/SKILL.md
Normal 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级别英语水平
|
||||
- 【 】符合所有通用撰写规范要求
|
||||
|
||||
@ -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 个知识点(全单词,或单词/句子混搭)。*
|
||||
可选形式及参数规范:
|
||||
<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文档,并在文末附上《知识点输入输出数量统计表》。
|
||||
Loading…
Reference in New Issue
Block a user