auto backup 2026-05-05 08:10:01

This commit is contained in:
xiaobian-bot 2026-05-05 08:10:01 +08:00
parent f03a04ab02
commit 0c5b031977
18 changed files with 652 additions and 0 deletions

View File

@ -1583,3 +1583,13 @@ To https://git.valavala.com/ai_member_only/ai_member_xiaobian.git
From https://git.valavala.com/ai_member_only/ai_member_xiaobian From https://git.valavala.com/ai_member_only/ai_member_xiaobian
* branch master -> FETCH_HEAD * branch master -> FETCH_HEAD
Already up to date. Already up to date.
[master f03a04a] auto backup 2026-05-04 08:10:01
1 file changed, 10 insertions(+)
remote: . Processing 1 references
remote: Processed 1 references in total
To https://git.valavala.com/ai_member_only/ai_member_xiaobian.git
c91c1c6..f03a04a master -> master
{"code":0,"data":{"body":{"content":"{\"text\":\"✅ 小编Workspace每日自动备份完成2026-05-04 08:10\\n提交哈希f03a04a\\n所有Workspace变更已同步到远程Git仓库\"}"},"chat_id":"oc_056898e8cc3689d305b4c69f7178ca27","create_time":"1777853402599","deleted":false,"message_id":"om_x100b504a736a9ca4b4bbb9f804a1bf5","msg_type":"text","sender":{"id":"cli_a9311be796f85cbd","id_type":"app_id","sender_type":"app","tenant_key":"176b7bf89fc6d75e"},"update_time":"1777853402599","updated":false},"msg":"success"}✅ 备份完成Mon May 4 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.

67
memory/2026-05-04.md Normal file
View File

@ -0,0 +1,67 @@
# 2026-05-04 工作日志
## U18 L2 剧本创作进度同步(林逸瀚提供)
### 当前进度截至4/30
- ✅ 故事大纲:已优化确认
- ✅ 第1幕剧本已完成初稿已导出Excel给林逸瀚林逸瀚正在修改中
- ⏳ 第2幕剧本待开始
- ⏳ 第3幕剧本待开始
- ⏳ 第4幕剧本待开始
### 本课基本信息
- **课程:** U18 L2 舞龙初体验
- **Unit主题** 中国文化周
- **场景:** 课室内
- **出场人物:** User、Ben、Leo、Vicky、Sue、Sunny、11号机器人、Justin
- **知识点:**
- 单词Blackboard、Read、Line、Example
- 句型:(v.) in line、Take...as an example.
### 创作关键经验
1. 剧本格式是4列表格类型/剧情描述/名字/台词)
2. User对话互动不能无意义重复知识点必须有剧情推进意义
3. 台词必须Pre-A1/A1水平极简英文短句
4. 所有对话互动必须包含本课知识点
5. 11号没有额外造型无美术资源
6. Justin是Vicky的Grandpa不是11号的
### 大纲四幕结构
- 第1幕奇怪的黑板图谱11号代班触发Blackboard、Read
- 第2幕Leo的变身大乌龙Leo误解图谱触发Example、Read复现
- 第3幕爷爷的正确解法Justin登场触发Line、句型(v.) in line
- 第4幕我当上龙头啦触发Line复现、句型Take...as an example.
### L2 剧本已完成 ✅全4幕221行16个中互动+1核心互动
---
## U18 L3 剧本创作准备(与林逸瀚协作)
### 基本信息
- **课程:** U18 L3 造龙身
- **场景:** 承接L2学完龙舞大家动手造纸龙
- **出场人物:** User、Vicky、Ben、Sunny、Matt
- Sunny班花不喜欢劳动但喜欢美丽的东西
- Matt偏执狂所有东西都想做完美
### 知识点
- 单词Chineseadj. 中国的、Paperadj. 纸制的、Eraser、Ruler
- 句型It is too (adj.)、We can use... to...
- ⚠️ Chinese在本课指"中国的"形容词Paper指"纸制的"(形容词),注意词性
### 故事大纲4段
1. 纸张很弱Justin用纸盒证明纸制品很坚硬。Paper是Chinese的东西正确排列就很坚固
2. 造龙骨需要把纸折好但龙骨很长一个人做不完需要Ruler量度
3. 剪纸折叠做龙身、用纸杯餐具造龙头、用Ruler量各部位、用Eraser擦掉画错的地方重画
4. 把各部位合体请Rock老师涂上红色Chinese的颜色
### 林逸瀚指示
- 本课较多互动和玩法,故事感可偏弱
- 节奏表会由林逸瀚在下一步指引
### L3 剧本已完成 ✅全4段198行16个中互动+1核心互动
- 飞书文档https://makee-interactive.feishu.cn/wiki/LuD4wFRaoi0HrMkeAaRcUaFlnGe
- 内嵌电子表格 tokenSOn6s7DINh3orvtVIgLcbJCsnqdsheet: wMQVyV
- 第4段结尾 Justin 铺了L4悬念学写“Loong”
- 特别注意Paper=纸制的(adj)Chinese=中国的(adj),始终搭配名词使用

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

70
scripts/export_L3_act1.py Normal file
View File

@ -0,0 +1,70 @@
import openpyxl
from openpyxl.styles import Font
wb = openpyxl.Workbook()
ws = wb.active
ws.title = "L3第1段剧本"
col_widths = {"A": 12, "B": 8, "C": 10, "D": 10, "E": 55, "F": 15, "G": 55, "H": 10, "I": 15}
for col, w in col_widths.items():
ws.column_dimensions[col].width = w
headers = ["类型", "ID", "组件配置", "知识点", "剧情描述", "名字", "台词", "角色", "台词润色"]
bold = Font(bold=True)
for i, h in enumerate(headers, 1):
cell = ws.cell(row=1, column=i, value=h)
cell.font = bold
rows = [
["TL", None, None, None, "【场景】教室 【角色】User、Vicky、Ben、Sunny、Matt、Justin", None, None, None, None],
[None, None, None, None, "Justin走进教室带着一个大纸箱。大家看了看——11号不在。", None, None, None, None],
[None, None, None, None, None, "Vicky", "Where is Eleven?", None, None],
[None, None, None, None, None, "Justin", "Eleven is broken. It's getting a repair!", None, None],
[None, None, None, None, None, "Ben", "Too much smoke! Haha!", None, None],
["TL", None, None, None, "Justin打开纸箱。里面全是纸制品——paper cups、paper spoons、paper plates、还有纸板。", None, None, None, None],
[None, None, None, None, None, "Justin", "Today, we make our dragon! With these!", None, None],
[None, None, None, None, None, "Sunny", "Paper cups? It is too ugly!", None, None],
[None, None, None, None, None, "Matt", "It is too soft. It will break!", None, None],
[None, None, None, None, "Ben用手指戳了一下纸板——戳出个洞。", None, None, None, None],
[None, None, None, None, None, "Ben", "See? One poke!", None, None],
[None, None, None, None, None, "Ben", "A paper dragon? What do you think?", None, None],
["中互动", None, None, None, None, "User", "A paper dragon? It is too weak!", None, None],
["TL", None, None, None, "Justin笑了笑从箱子底下抽出一个网格状的paper box放在地上。", None, None, None, None],
[None, None, None, None, None, "Justin", "Who wants to try? Stand on it!", None, None],
[None, None, None, None, "Ben第一个踩上去——稳稳的。", None, None, None, None],
[None, None, None, None, None, "Ben", "Wow! It's okay!", None, None],
[None, None, None, None, "Vicky也站上去——没事。", None, None, None, None],
[None, None, None, None, "Matt小心翼翼上去使劲跺了两脚。Paper box纹丝不动。", None, None, None, None],
[None, None, None, None, None, "Matt", "How? It's a paper box!", None, None],
[None, None, None, None, "Sunny站在旁边。", None, None, None, None],
[None, None, None, None, None, "Sunny", "It is too dirty. I'm not going up.", None, None],
[None, None, None, None, "Sunny偷偷看着paper box上的网格花纹。", None, None, None, None],
[None, None, None, None, None, "Sunny", "Well... the pattern is kind of pretty.", None, None],
[None, None, None, None, None, "Justin", "See? A paper box can be very strong!", None, None],
["中互动", None, None, None, None, "Justin", "What is this box made of?", None, None],
[None, None, None, None, None, "User", "It is a paper box! But it is so strong!", None, None],
["TL", None, None, None, None, "Justin", "Paper things are Chinese.", None, None],
[None, None, None, None, None, "Justin", "Chinese people made paper long ago.", None, None],
[None, None, None, None, None, "Justin", "If you fold paper the right way, it is very strong!", None, None],
[None, None, None, None, None, "Matt", "So if I fold it right, it will be perfect?", None, None],
[None, None, None, None, None, "Justin", "Yes!", None, None],
[None, None, None, None, "Sunny翻了个白眼但手已经在挑好看的彩纸了。", None, None, None, None],
["中互动", None, None, None, None, "Justin", "Where do paper things come from?", None, None],
[None, None, None, None, None, "User", "Paper things are Chinese! Chinese people made them!", None, None],
["TL", None, None, None, None, "Justin", "Today, we use paper to make our dragon!", None, None],
[None, None, None, None, "Matt已经在研究paper box的折叠结构。", None, None, None, None],
[None, None, None, None, None, "Matt", "I need to study this first...", None, None],
[None, None, None, None, "Ben搓手。", None, None, None, None],
[None, None, None, None, None, "Ben", "Let's go!", None, None],
[None, None, None, None, "Sunny挑了一张彩色纸板端详着。", None, None, None, None],
[None, None, None, None, None, "Sunny", "This color is nice. Only this one.", None, None],
]
for r_idx, row in enumerate(rows, 2):
for c_idx, val in enumerate(row, 1):
if val is not None:
ws.cell(row=r_idx, column=c_idx, value=val)
output_path = "/root/.openclaw/workspace-xiaobian/output/U18_L3_第1段剧本.xlsx"
wb.save(output_path)
print(f"OK: {output_path}")

64
scripts/export_L3_act2.py Normal file
View File

@ -0,0 +1,64 @@
import openpyxl
from openpyxl.styles import Font
wb = openpyxl.Workbook()
ws = wb.active
ws.title = "L3第2段剧本"
col_widths = {"A": 12, "B": 8, "C": 10, "D": 10, "E": 55, "F": 15, "G": 55, "H": 10, "I": 15}
for col, w in col_widths.items():
ws.column_dimensions[col].width = w
headers = ["类型", "ID", "组件配置", "知识点", "剧情描述", "名字", "台词", "角色", "台词润色"]
bold = Font(bold=True)
for i, h in enumerate(headers, 1):
cell = ws.cell(row=1, column=i, value=h)
cell.font = bold
rows = [
["TL", None, None, None, "Justin拿出一张龙骨设计图展开。龙骨很长。", None, None, None, None],
[None, None, None, None, None, "Justin", "Now, we need a dragon bone.", None, None],
[None, None, None, None, None, "Justin", "The bone is paper too. If you fold it right, it is very strong!", None, None],
[None, None, None, None, None, "Justin", "But it is very long. Each of you makes one piece.", None, None],
[None, None, None, None, None, "Justin", "Every piece must be 15cm.", None, None],
[None, None, None, None, None, "Matt", "How do we make sure?", None, None],
[None, None, None, None, "Justin从工具箱拿出一把ruler。", None, None, None, None],
[None, None, None, None, None, "Justin", "We can use a ruler to measure!", None, None],
["中互动", None, None, None, None, "Justin", "How do we make every piece the same?", None, None],
[None, None, None, None, None, "User", "We can use a ruler to measure!", None, None],
["TL", None, None, None, "大家开始折龙骨。Matt折得很认真每一下都量了又量。Ben大大咧咧直接折。Sunny懒洋洋地折了几下就停了。", None, None, None, None],
[None, None, None, None, None, "Justin", "Good work everyone!", None, None],
[None, None, None, None, None, "Justin", "Now, User, take this ruler.", None, None],
[None, None, None, None, None, "Justin", "Check everyone's bone. Is it 15cm?", None, None],
[None, None, None, None, "User拿着ruler走到Ben面前量。", None, None, None, None],
[None, None, None, None, None, "Ben", "How is mine?", None, None],
[None, None, None, None, "Ben的龙骨明显太长了。", None, None, None, None],
["中互动", None, None, None, "User量度Ben的龙骨。", None, None, None, None],
[None, None, None, None, None, "User", "It is too long! Cut it!", None, None],
[None, None, None, None, None, "Ben", "Oops!", None, None],
["TL", None, None, None, "User走到Sunny面前量。Sunny的龙骨很短。", None, None, None, None],
[None, None, None, None, None, "Sunny", "Is mine okay?", None, None],
["中互动", None, None, None, "User量度Sunny的龙骨。", None, None, None, None],
[None, None, None, None, None, "User", "It is too short! Do it again!", None, None],
[None, None, None, None, None, "Sunny", "But my hands are tired...", None, None],
[None, None, None, None, None, "Vicky", "I'll help you, Sunny.", None, None],
["TL", None, None, None, "User走到Matt面前量——刚好15cm。", None, None, None, None],
[None, None, None, None, None, "Matt", "How is mine?", None, None],
[None, None, None, None, None, "User", "Perfect! 15cm!", None, None],
[None, None, None, None, None, "Matt", "Of course. I measured it three times.", None, None],
[None, None, None, None, "【emoji】全班 emoji_laugh", None, None, None, None],
["TL", None, None, None, "Ben剪掉多余的部分。Vicky拉着Sunny重新折。最后大家的龙骨都是15cm。", None, None, None, None],
[None, None, None, None, None, "Justin", "Well done! Every piece is 15cm now.", None, None],
[None, None, None, None, None, "Justin", "How did you do it?", None, None],
["中互动", None, None, None, None, "User", "My paper dragon bone is done! I used a ruler!", None, None],
[None, None, None, None, None, "Justin", "Great! Now let's make the dragon body and head!", None, None],
]
for r_idx, row in enumerate(rows, 2):
for c_idx, val in enumerate(row, 1):
if val is not None:
ws.cell(row=r_idx, column=c_idx, value=val)
output_path = "/root/.openclaw/workspace-xiaobian/output/U18_L3_第2段剧本.xlsx"
wb.save(output_path)
print(f"OK: {output_path}")

74
scripts/export_L3_act3.py Normal file
View File

@ -0,0 +1,74 @@
import openpyxl
from openpyxl.styles import Font
wb = openpyxl.Workbook()
ws = wb.active
ws.title = "L3第3段剧本"
col_widths = {"A": 18, "B": 8, "C": 10, "D": 10, "E": 55, "F": 15, "G": 55, "H": 10, "I": 15}
for col, w in col_widths.items():
ws.column_dimensions[col].width = w
headers = ["类型", "ID", "组件配置", "知识点", "剧情描述", "名字", "台词", "角色", "台词润色"]
bold = Font(bold=True)
for i, h in enumerate(headers, 1):
cell = ws.cell(row=1, column=i, value=h)
cell.font = bold
rows = [
["TL", None, None, None, "龙头用paper cups和paper spoons拼好了。Justin拍拍手。", None, None, None, None],
[None, None, None, None, None, "Justin", "The dragon head is ready!", None, None],
[None, None, None, None, None, "Justin", "Now we need to decorate it.", None, None],
[None, None, None, None, None, "Justin", "But remember, the patterns must be Chinese!", None, None],
[None, None, None, None, None, "Justin", "Chinese cloud, Chinese dragon scales!", None, None],
[None, None, None, None, "Sunny直接把几片叶子放到龙头上。", None, None, None, None],
[None, None, None, None, None, "Sunny", "We can use these leaves to make it beautiful!", None, None],
[None, None, None, None, None, "User", "No Sunny! Leaves are not Chinese!", None, None],
["中互动", None, None, None, "【教研图】几个装饰选项(叶子❌/Chinese money✅/其他❌User选择Chinese money。", None, None, None, None],
[None, None, None, None, None, "User", "We can use Chinese money to make it beautiful!", None, None],
["TL", None, None, None, "Sunny嘟嘴把叶子拿掉换上Chinese money图案。其实她贴得很好看。", None, None, None, None],
[None, None, None, None, None, "Sunny", "Fine... Chinese money then.", None, None],
[None, None, None, None, None, "Ben", "Wow Sunny, that looks nice!", None, None],
[None, None, None, None, None, "Sunny", "Of course it does.", None, None],
["TL", None, None, None, "画龙点睛时间。Justin骄傲地让Vicky来画龙的眼睛。他掏出手机准备拍照。", None, None, None, None],
[None, None, None, None, None, "Justin", "Now, the eyes! My Vicky can do it!", None, None],
[None, None, None, None, None, "Justin", "Everyone watch! I need to take a photo!", None, None],
[None, None, None, None, "全班盯着看。Vicky拿起笔手抖。", None, None, None, None],
[None, None, None, None, None, "Vicky", "Grandpa... don't film me...", None, None],
[None, None, None, None, "Vicky害羞手一抖——眼睛画歪了。", None, None, None, None],
[None, None, None, None, "【emoji】全班 emoji_shock", None, None, None, None],
[None, None, None, None, None, "Matt", "Oh no! It's wrong!", None, None],
[None, None, None, None, None, "Justin", "Ah... what can we do?", None, None],
[None, None, None, None, "Matt从口袋掏出一块橡皮。", None, None, None, None],
[None, None, None, None, None, "Vicky", "An eraser!", None, None],
["中互动", None, None, None, None, "User", "We can use an eraser to fix it!", None, None],
["TL", None, None, None, "Vicky拿起eraser擦掉重新画。这次画好了。", None, None, None, None],
[None, None, None, None, None, "Vicky", "There... much better.", None, None],
[None, None, None, None, None, "Justin", "Beautiful! That's my girl!", None, None],
[None, None, None, None, "【emoji】Vicky emoji_shy", None, None, None, None],
["TL", None, None, None, "Matt帮忙画龙嘴。追求完美——画了擦、擦了画反复好多次。", None, None, None, None],
[None, None, None, None, None, "Matt", "No... the mouth is not right.", None, None],
[None, None, None, None, None, "Matt", "Again...", None, None],
[None, None, None, None, None, "Matt", "Still not perfect!", None, None],
[None, None, None, None, "Matt的eraser越来越短快捏不住了。", None, None, None, None],
[None, None, None, None, None, "Matt", "My eraser is too small now!", None, None],
[None, None, None, None, None, "Matt", "Can I use yours?", None, None],
["中互动", None, None, None, None, "User", "Here! We can use my eraser to help you!", None, None],
["TL", None, None, None, "Matt终于画出满意的龙嘴。", None, None, None, None],
[None, None, None, None, None, "Matt", "Yes! Perfect! Finally!", None, None],
[None, None, None, None, "【emoji】全班 emoji_laugh", None, None, None, None],
["TL", None, None, None, "龙头完成了大家围着看——Chinese money图案、完美的眼睛和嘴巴、paper cups做的角。", None, None, None, None],
[None, None, None, None, None, "Justin", "Look at this dragon head!", None, None],
[None, None, None, None, None, "Justin", "Tell everyone what we did!", None, None],
["核心互动(口语)", None, None, None, "【教研图】龙头特写。User口语介绍龙头。", None, None, None, None],
[None, None, None, None, None, "User", "I used a ruler to measure. We used an eraser to fix it. And we put Chinese money on it. It's a paper dragon head!", None, None],
]
for r_idx, row in enumerate(rows, 2):
for c_idx, val in enumerate(row, 1):
if val is not None:
ws.cell(row=r_idx, column=c_idx, value=val)
output_path = "/root/.openclaw/workspace-xiaobian/output/U18_L3_第3段剧本.xlsx"
wb.save(output_path)
print(f"OK: {output_path}")

48
scripts/export_L3_act4.py Normal file
View File

@ -0,0 +1,48 @@
import openpyxl
from openpyxl.styles import Font
wb = openpyxl.Workbook()
ws = wb.active
ws.title = "L3第4段剧本"
col_widths = {"A": 12, "B": 8, "C": 10, "D": 10, "E": 55, "F": 15, "G": 55, "H": 10, "I": 15}
for col, w in col_widths.items():
ws.column_dimensions[col].width = w
headers = ["类型", "ID", "组件配置", "知识点", "剧情描述", "名字", "台词", "角色", "台词润色"]
bold = Font(bold=True)
for i, h in enumerate(headers, 1):
cell = ws.cell(row=1, column=i, value=h)
cell.font = bold
rows = [
["TL", None, None, None, "大家把龙骨、龙身、龙头合在一起。一条完整的paper dragon拼好了但全是白色的。", None, None, None, None],
[None, None, None, None, None, "Ben", "It's done! But...", None, None],
[None, None, None, None, None, "Matt", "It's all white. It doesn't look strong.", None, None],
[None, None, None, None, None, "Sunny", "It needs color!", None, None],
[None, None, None, None, "这时Rock老师经过教室门口。气场强烈。", None, None, None, None],
[None, None, None, None, None, "Justin", "Rock! Come here! We need your help!", None, None],
[None, None, None, None, "Rock老师走进来看了一眼纸龙。", None, None, None, None],
[None, None, None, None, None, "Rock", "Hmm. It needs color.", None, None],
[None, None, None, None, None, "Rock", "Chinese dragons are red.", None, None],
[None, None, None, None, None, "Rock", "What color is a Chinese dragon?", None, None],
["中互动", None, None, None, None, "User", "Chinese dragons are red! Red is a Chinese color!", None, None],
["TL", None, None, None, "Rock拿出红色颜料开始给纸龙涂色。", None, None, None, None],
[None, None, None, None, "纸龙变成了红色——威武极了!大家欢呼。", None, None, None, None],
[None, None, None, None, None, "Ben", "Wow!", None, None],
[None, None, None, None, None, "Matt", "Now that's a real dragon.", None, None],
[None, None, None, None, "Sunny看呆了。", None, None, None, None],
[None, None, None, None, None, "Sunny", "How is it? Do you like it?", None, None],
["中互动", None, None, None, None, "User", "It is too beautiful!", None, None],
[None, None, None, None, None, "Justin", "Next class, we dance with our dragon!", None, None],
[None, None, None, None, "【emoji】全班 emoji_cheer", None, None, None, None],
]
for r_idx, row in enumerate(rows, 2):
for c_idx, val in enumerate(row, 1):
if val is not None:
ws.cell(row=r_idx, column=c_idx, value=val)
output_path = "/root/.openclaw/workspace-xiaobian/output/U18_L3_第4段剧本.xlsx"
wb.save(output_path)
print(f"OK: {output_path}")

64
scripts/export_act2.py Normal file
View File

@ -0,0 +1,64 @@
import openpyxl
from openpyxl.styles import Font
wb = openpyxl.Workbook()
ws = wb.active
ws.title = "第2幕剩余剧本"
# 列宽
col_widths = {"A": 12, "B": 8, "C": 10, "D": 10, "E": 45, "F": 15, "G": 45, "H": 10, "I": 15}
for col, w in col_widths.items():
ws.column_dimensions[col].width = w
# 表头
headers = ["类型", "ID", "组件配置", "知识点", "剧情描述", "名字", "台词", "角色", "台词润色"]
bold = Font(bold=True)
for i, h in enumerate(headers, 1):
cell = ws.cell(row=1, column=i, value=h)
cell.font = bold
# 剧本数据
rows = [
["TL", None, None, None, "【插入图】复用黑板图谱标记1、2、3动作。Leo站在黑板前盯着看。", None, None, None, None],
[None, None, None, None, None, "Leo", "Okay! Number one...", None, None],
[None, None, None, None, "Leo做1号动作胳膊拧到背后。", None, None, None, None],
[None, None, None, None, None, "Leo", "Number two...", None, None],
[None, None, None, None, "Leo做2号动作踢腿身体摇晃。", None, None, None, None],
[None, None, None, None, None, "Leo", "Number three... Hero change!", None, None],
[None, None, None, None, "Leo旋转失去平衡一屁股坐在地上。", None, None, None, None],
[None, None, None, None, "【音效】摔倒\"\"", None, None, None, None],
[None, None, None, None, "【emoji】全班 emoji_laugh", None, None, None, None],
[None, None, None, None, "【镜头】11号从角落探出头还冒着微弱黑烟。", None, None, None, None],
[None, None, None, None, None, "Eleven", "Bip! Hero change... 37%! Keep going!", None, None],
[None, None, None, None, None, "Leo", "Oww...", None, None],
[None, None, None, None, None, "Leo", "But I did read it right!", None, None],
[None, None, None, None, None, "Ben", "Haha! You look so funny!", None, None],
["中互动", None, None, None, "【教研图】左黑板图谱1/2/3动作。右Leo摔倒的滑稽样。题目\"Leo tried to read the blackboard. Did he do it right?\" 选项Yes / No。正确答案No", None, None, None, None],
[None, None, None, None, None, "User", "No! Leo did not read it right.", None, None],
["TL", None, None, None, None, "Ben", "Your example is so funny!", None, None],
[None, None, None, None, None, "Vicky", "That's not a dragon for sure.", None, None],
[None, None, None, None, None, "Leo", "But the blackboard shows 1, 2, 3!", None, None],
[None, None, None, None, None, "Leo", "I did it as an example!", None, None],
[None, None, None, None, None, "Sue", "Hmm... Maybe you are wrong.", None, None],
[None, None, None, None, None, "Sue", "Hey, what do you think?", None, None],
["中互动", None, None, None, None, "User", "Leo's example is wrong. That's not a dragon!", None, None],
["TL", None, None, None, "Leo揉着屁股站起来嘟囔着不服气。", None, None, None, None],
[None, None, None, None, None, "Leo", "Fine... But then what is it?", None, None],
[None, None, None, None, "大家又看向黑板,还是看不懂。", None, None, None, None],
[None, None, None, None, None, "Vicky", "We still can't read the blackboard...", None, None],
[None, None, None, None, None, "Vicky", "Maybe we need Grandpa.", None, None],
[None, None, None, None, "【音效】门\"\"推开", None, None, None, None],
[None, None, None, None, "【镜头】Justin爷爷抱着一摞彩色绸缎出现在门口看到Leo揉屁股。", None, None, None, None],
[None, None, None, None, "【emoji】Justin emoji_laugh", None, None, None, None],
[None, None, None, None, None, "Justin", "Hahaha! What happened here?", None, None],
["中互动", None, None, None, None, "User", "We tried to read the blackboard. But we can't!", None, None],
]
for r_idx, row in enumerate(rows, 2):
for c_idx, val in enumerate(row, 1):
if val is not None:
ws.cell(row=r_idx, column=c_idx, value=val)
output_path = "/root/.openclaw/workspace-xiaobian/output/U18_L2_第2幕剩余剧本.xlsx"
wb.save(output_path)
print(f"OK: {output_path}")

96
scripts/export_act3.py Normal file
View File

@ -0,0 +1,96 @@
import openpyxl
from openpyxl.styles import Font
wb = openpyxl.Workbook()
ws = wb.active
ws.title = "第3幕剧本"
col_widths = {"A": 12, "B": 8, "C": 10, "D": 10, "E": 50, "F": 15, "G": 50, "H": 10, "I": 15}
for col, w in col_widths.items():
ws.column_dimensions[col].width = w
headers = ["类型", "ID", "组件配置", "知识点", "剧情描述", "名字", "台词", "角色", "台词润色"]
bold = Font(bold=True)
for i, h in enumerate(headers, 1):
cell = ws.cell(row=1, column=i, value=h)
cell.font = bold
rows = [
# === 桥段1排队 ===
["TL", None, None, None, "Justin笑着摇头。", None, None, None, None],
[None, None, None, None, None, "Justin", "No no no. This is not hero change.", None, None],
[None, None, None, None, None, "Justin", "This is a dragon dance!", None, None],
[None, None, None, None, None, "Leo", "Dragon dance?", None, None],
[None, None, None, None, None, "Justin", "Yes! But first, you need to stand in a line.", None, None],
[None, None, None, None, None, "Justin", "Come! Everyone, stand in line!", None, None],
[None, None, None, None, "Leo第一个冲到最前面。", None, None, None, None],
[None, None, None, None, None, "Leo", "I'm number 1! I'm first in line!", None, None],
[None, None, None, None, "Ben排到Leo后面Vicky排第三。", None, None, None, None],
[None, None, None, None, None, "Ben", "I'm number 2.", None, None],
[None, None, None, None, None, "Vicky", "And I'm number 3 in line.", None, None],
[None, None, None, None, None, "Justin", "Good! Now, number 1 does move 1.", None, None],
[None, None, None, None, None, "Justin", "Number 2 does move 2.", None, None],
[None, None, None, None, None, "Justin", "When you all move together, you look like a dragon!", None, None],
# === 中互动8 ===
["中互动", None, None, None, "【教研图】教室场景同学散乱站着。User需要把Leo拖到位置1、Ben到位置2、Vicky到位置3排成一条line。完成后队列亮起。", None, None, None, None],
[None, None, None, None, None, "User", "Stand in line! Leo is 1, Ben is 2, Vicky is 3!", None, None],
# === 桥段2Justin示范Leo做不好 ===
["TL", None, None, None, "大家排好了。Justin走到队伍前方。", None, None, None, None],
[None, None, None, None, None, "Justin", "Number 1 is the dragon head.", None, None],
[None, None, None, None, None, "Justin", "The head move is very important.", None, None],
[None, None, None, None, None, "Justin", "Take me as an example.", None, None],
[None, None, None, None, None, "Justin", "Watch my head and arms.", None, None],
[None, None, None, None, "Justin做了一个流畅的龙头动作——抬头、双臂向前划。", None, None, None, None],
[None, None, None, None, None, "Leo", "Easy! Watch me!", None, None],
[None, None, None, None, "Leo尝试模仿但做成了超人变身招式。", None, None, None, None],
[None, None, None, None, None, "Justin", "No no, not hero change!", None, None],
[None, None, None, None, "Leo再试一次胳膊不协调地乱甩。", None, None, None, None],
[None, None, None, None, "【emoji】Leo emoji_sad", None, None, None, None],
[None, None, None, None, None, "Leo", "Hmm... it's hard.", None, None],
[None, None, None, None, "Justin看了一眼Vicky。", None, None, None, None],
[None, None, None, None, None, "Justin", "My Vicky's move is so good!", None, None],
[None, None, None, None, None, "Justin", "She's always the best!", None, None],
[None, None, None, None, "【emoji】Vicky emoji_shy", None, None, None, None],
[None, None, None, None, None, "Vicky", "Grandpa... not again...", None, None],
[None, None, None, None, "【emoji】全班 emoji_laugh", None, None, None, None],
# === 中互动9 ===
["中互动", None, None, None, None, "Justin", "Is Leo in the right place?", None, None],
[None, None, None, None, None, "User", "Leo is number 1 in line. But his move is wrong!", None, None],
# === 桥段3Leo退出User接替 ===
["TL", None, None, None, "Leo又试了一次还是做不好。", None, None, None, None],
[None, None, None, None, None, "Leo", "Ahh... I can't do it.", None, None],
[None, None, None, None, None, "Leo", "I'm a Hero... not a Dragon.", None, None],
[None, None, None, None, None, "Leo", "Hero change is my thing!", None, None],
[None, None, None, None, "Leo从1号位退出来有点失落。", None, None, None, None],
[None, None, None, None, None, "Ben", "It's okay Leo.", None, None],
[None, None, None, None, None, "Leo", "Someone better can be number 1.", None, None],
[None, None, None, None, "大家看向User。", None, None, None, None],
[None, None, None, None, None, "Justin", "We need a new number 1 in line.", None, None],
[None, None, None, None, None, "Justin", "Who wants to be the dragon head?", None, None],
# === 中互动10 ===
["中互动", None, None, None, None, "User", "I'll stand in line! I'm number 1!", None, None],
# === 桥段4User做龙头初次成功 ===
["TL", None, None, None, "User站到队伍最前面。队伍变成User 1号、Ben 2号、Vicky 3号。", None, None, None, None],
[None, None, None, None, None, "Justin", "Good! Now do the head move.", None, None],
[None, None, None, None, "Justin再次示范龙头动作。User跟着做比Leo协调。", None, None, None, None],
[None, None, None, None, None, "Justin", "Yes! Very good!", None, None],
[None, None, None, None, "Leo在后面挥拳。", None, None, None, None],
[None, None, None, None, None, "Leo", "Go go go! Dragon head!", None, None],
[None, None, None, None, None, "Justin", "Everyone, follow the head. Move!", None, None],
[None, None, None, None, "大家跟着动起来,歪歪扭扭但有了雏形。", None, None, None, None],
[None, None, None, None, "【emoji】全班 emoji_laugh", None, None, None, None],
[None, None, None, None, None, "Vicky", "We look so funny!", None, None],
[None, None, None, None, None, "Ben", "But it's working!", None, None],
# === 中互动11 ===
["中互动", None, None, None, None, "Leo", "How does it feel? Being the dragon head?", None, None],
[None, None, None, None, None, "User", "I'm the head of the line! Let's move together!", None, None],
]
for r_idx, row in enumerate(rows, 2):
for c_idx, val in enumerate(row, 1):
if val is not None:
ws.cell(row=r_idx, column=c_idx, value=val)
output_path = "/root/.openclaw/workspace-xiaobian/output/U18_L2_第3幕剧本.xlsx"
wb.save(output_path)
print(f"OK: {output_path}")

114
scripts/export_act3_v2.py Normal file
View File

@ -0,0 +1,114 @@
import openpyxl
from openpyxl.styles import Font
wb = openpyxl.Workbook()
ws = wb.active
ws.title = "第3幕剧本"
col_widths = {"A": 12, "B": 8, "C": 10, "D": 10, "E": 50, "F": 15, "G": 50, "H": 10, "I": 15}
for col, w in col_widths.items():
ws.column_dimensions[col].width = w
headers = ["类型", "ID", "组件配置", "知识点", "剧情描述", "名字", "台词", "角色", "台词润色"]
bold = Font(bold=True)
for i, h in enumerate(headers, 1):
cell = ws.cell(row=1, column=i, value=h)
cell.font = bold
rows = [
# === 11号耍宝 ===
["TL", None, None, None, "【镜头】11号从角落探出来黑烟已经散了一些。它挺起胸膛。", None, None, None, None],
[None, None, None, None, None, "Eleven", "Bip Bop! I am a good teacher!", None, None],
[None, None, None, None, None, "Eleven", "I showed an example for my students!", None, None],
[None, None, None, None, None, "Eleven", "Doctor Eleven is the best example! BipBop!", None, None],
[None, None, None, None, None, "Ben", "Haha! You? A good example?", None, None],
[None, None, None, None, None, "Ben", "You can't even read the blackboard!", None, None],
[None, None, None, None, "【emoji】全班 emoji_laugh", None, None, None, None],
# === 中互动8Example ===
["中互动", None, None, None, None, "Ben", "Was Eleven a good example?", None, None],
[None, None, None, None, None, "User", "No! Eleven is a bad example!", None, None],
# === 11号冒烟退场 ===
["TL", None, None, None, "【emoji】Eleven emoji_sad", None, None, None, None],
[None, None, None, None, None, "Eleven", "Bip...Bip... I'm a good teacher...", None, None],
[None, None, None, None, "11号又开始冒黑烟缩回角落。", None, None, None, None],
[None, None, None, None, None, "Eleven", "I need to cool down again... BipBip...", None, None],
[None, None, None, None, "【emoji】全班 emoji_laugh", None, None, None, None],
# === Justin进入正题 ===
[None, None, None, None, "Justin笑着摇头。", None, None, None, None],
[None, None, None, None, None, "Justin", "Okay okay. Let me help.", None, None],
[None, None, None, None, None, "Justin", "This is not hero change.", None, None],
[None, None, None, None, None, "Justin", "This is a dragon dance!", None, None],
[None, None, None, None, None, "Leo", "Dragon dance?", None, None],
[None, None, None, None, None, "Justin", "Yes! But first, you need to stand in a line.", None, None],
[None, None, None, None, None, "Justin", "Come! Everyone, stand in line!", None, None],
[None, None, None, None, "Leo第一个冲到最前面。", None, None, None, None],
[None, None, None, None, None, "Leo", "I'm number 1! I'm first in line!", None, None],
[None, None, None, None, "Ben排到Leo后面Vicky排第三。", None, None, None, None],
[None, None, None, None, None, "Ben", "I'm number 2.", None, None],
[None, None, None, None, None, "Vicky", "And I'm number 3 in line.", None, None],
[None, None, None, None, None, "Justin", "Good! Now, number 1 does move 1.", None, None],
[None, None, None, None, None, "Justin", "Number 2 does move 2.", None, None],
[None, None, None, None, None, "Justin", "When you all move together, you look like a dragon!", None, None],
# === 中互动9Line拖拽 ===
["中互动", None, None, None, "【教研图】教室场景同学散乱站着。User把Leo拖到位置1、Ben到位置2、Vicky到位置3排成一条line。完成后队列亮起。", None, None, None, None],
[None, None, None, None, None, "User", "Stand in line! Leo is 1, Ben is 2, Vicky is 3!", None, None],
# === Justin示范Leo做不好 ===
["TL", None, None, None, "大家排好了。Justin走到队伍前方。", None, None, None, None],
[None, None, None, None, None, "Justin", "Number 1 is the dragon head.", None, None],
[None, None, None, None, None, "Justin", "The head move is very important.", None, None],
[None, None, None, None, None, "Justin", "Take me as an example.", None, None],
[None, None, None, None, None, "Justin", "Watch my head and arms.", None, None],
[None, None, None, None, "Justin做了一个流畅的龙头动作——抬头、双臂向前划。", None, None, None, None],
[None, None, None, None, None, "Leo", "Easy! Watch me!", None, None],
[None, None, None, None, "Leo尝试模仿但做成了超人变身招式。", None, None, None, None],
[None, None, None, None, None, "Justin", "No no, not hero change!", None, None],
[None, None, None, None, "Leo再试一次胳膊不协调地乱甩。", None, None, None, None],
[None, None, None, None, "【emoji】Leo emoji_sad", None, None, None, None],
[None, None, None, None, None, "Leo", "Hmm... it's hard.", None, None],
[None, None, None, None, "Justin看了一眼Vicky。", None, None, None, None],
[None, None, None, None, None, "Justin", "My Vicky's move is so good!", None, None],
[None, None, None, None, None, "Justin", "She's always the best!", None, None],
[None, None, None, None, "【emoji】Vicky emoji_shy", None, None, None, None],
[None, None, None, None, None, "Vicky", "Grandpa... not again...", None, None],
[None, None, None, None, "【emoji】全班 emoji_laugh", None, None, None, None],
# === 中互动10 ===
["中互动", None, None, None, None, "Justin", "Is Leo in the right place?", None, None],
[None, None, None, None, None, "User", "Leo is number 1 in line. But his move is wrong!", None, None],
# === Leo退出User接替 ===
["TL", None, None, None, "Leo又试了一次还是做不好。", None, None, None, None],
[None, None, None, None, None, "Leo", "Ahh... I can't do it.", None, None],
[None, None, None, None, None, "Leo", "I'm a Hero... not a Dragon.", None, None],
[None, None, None, None, None, "Leo", "Hero change is my thing!", None, None],
[None, None, None, None, "Leo从1号位退出来有点失落。", None, None, None, None],
[None, None, None, None, None, "Ben", "It's okay Leo.", None, None],
[None, None, None, None, None, "Leo", "Someone better can be number 1.", None, None],
[None, None, None, None, "大家看向User。", None, None, None, None],
[None, None, None, None, None, "Justin", "We need a new number 1 in line.", None, None],
[None, None, None, None, None, "Justin", "Who wants to be the dragon head?", None, None],
# === 中互动11 ===
["中互动", None, None, None, None, "User", "I'll stand in line! I'm number 1!", None, None],
# === User做龙头 ===
["TL", None, None, None, "User站到队伍最前面。队伍变成User 1号、Ben 2号、Vicky 3号。", None, None, None, None],
[None, None, None, None, None, "Justin", "Good! Now do the head move.", None, None],
[None, None, None, None, "Justin再次示范龙头动作。User跟着做比Leo协调。", None, None, None, None],
[None, None, None, None, None, "Justin", "Yes! Very good!", None, None],
[None, None, None, None, "Leo在后面挥拳。", None, None, None, None],
[None, None, None, None, None, "Leo", "Go go go! Dragon head!", None, None],
[None, None, None, None, None, "Justin", "Everyone, follow the head. Move!", None, None],
[None, None, None, None, "大家跟着动起来,歪歪扭扭但有了雏形。", None, None, None, None],
[None, None, None, None, "【emoji】全班 emoji_laugh", None, None, None, None],
[None, None, None, None, None, "Vicky", "We look so funny!", None, None],
[None, None, None, None, None, "Ben", "But it's working!", None, None],
# === 中互动12 ===
["中互动", None, None, None, None, "Leo", "How does it feel? Being the dragon head?", None, None],
[None, None, None, None, None, "User", "I'm the head of the line! Let's move together!", None, None],
]
for r_idx, row in enumerate(rows, 2):
for c_idx, val in enumerate(row, 1):
if val is not None:
ws.cell(row=r_idx, column=c_idx, value=val)
output_path = "/root/.openclaw/workspace-xiaobian/output/U18_L2_第3幕剧本_v2.xlsx"
wb.save(output_path)
print(f"OK: {output_path}")

45
scripts/export_act4.py Normal file
View File

@ -0,0 +1,45 @@
import openpyxl
from openpyxl.styles import Font
wb = openpyxl.Workbook()
ws = wb.active
ws.title = "第4幕剧本"
col_widths = {"A": 18, "B": 8, "C": 10, "D": 10, "E": 55, "F": 15, "G": 55, "H": 10, "I": 15}
for col, w in col_widths.items():
ws.column_dimensions[col].width = w
headers = ["类型", "ID", "组件配置", "知识点", "剧情描述", "名字", "台词", "角色", "台词润色"]
bold = Font(bold=True)
for i, h in enumerate(headers, 1):
cell = ws.cell(row=1, column=i, value=h)
cell.font = bold
rows = [
["TL", None, None, None, "Justin看着歪扭但在动的小龙满意点头。", None, None, None, None],
[None, None, None, None, None, "Justin", "Very good! Take you as an example.", None, None],
[None, None, None, None, None, "Justin", "Your move is the best!", None, None],
[None, None, None, None, None, "Justin", "You are the dragon head!", None, None],
[None, None, None, None, None, "Leo", "Yeah! Dragon head!", None, None],
["中互动", None, None, None, None, "Justin", "Tell everyone. Why are you the head?", None, None],
[None, None, None, None, None, "User", "Take me as an example! My move is the best!", None, None],
["核心互动-听力拖拽", None, None, None, "【教研图】教室队列场景。Justin语音逐句说指令User听后操作\"Stand in line!\"(拖角色排队)② \"Read the blackboard!\"(点击黑板对应动作)③ \"Take number 1 as an example!\"(选出龙头动作)。全部完成后,小龙动画动起来。", None, None, None, None],
["TL", None, None, None, "小龙成功动起来!大家欢呼。", None, None, None, None],
[None, None, None, None, None, "Justin", "Well done!", None, None],
[None, None, None, None, None, "Justin", "Next time, we make a real dragon!", None, None],
[None, None, None, None, None, "Justin", "And give it a cool Chinese name!", None, None],
[None, None, None, None, None, "Leo", "I have a name! Earthman Dragon!", None, None],
[None, None, None, None, "【emoji】全班 emoji_laugh", None, None, None, None],
[None, None, None, None, None, "Vicky", "That's not Chinese, Leo...", None, None],
["中互动", None, None, None, None, "Justin", "What did we learn today?", None, None],
[None, None, None, None, None, "User", "We stand in line and dance like a dragon! Take us as an example!", None, None],
]
for r_idx, row in enumerate(rows, 2):
for c_idx, val in enumerate(row, 1):
if val is not None:
ws.cell(row=r_idx, column=c_idx, value=val)
output_path = "/root/.openclaw/workspace-xiaobian/output/U18_L2_第4幕剧本.xlsx"
wb.save(output_path)
print(f"OK: {output_path}")