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

This commit is contained in:
xiaobian-bot 2026-05-08 08:10:01 +08:00
parent 7765af70f5
commit 82b04cebad
12 changed files with 694 additions and 26 deletions

View File

@ -1635,3 +1635,57 @@ 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 7765af7] auto backup 2026-05-07 08:10:01
47 files changed, 1651 insertions(+), 1 deletion(-)
create mode 100644 "business_knowledge/chapters/Level1/S1/00_\347\247\230\345\257\206\345\237\272\345\234\260.md"
create mode 100644 business_knowledge/characters/README.md
create mode 100644 business_knowledge/characters/main/Alex Wood.md
create mode 100644 business_knowledge/characters/main/Ben.md
create mode 100644 business_knowledge/characters/main/BoBo.md
create mode 100644 business_knowledge/characters/main/Clare Hope.md
create mode 100644 business_knowledge/characters/main/Dan Wood.md
create mode 100644 business_knowledge/characters/main/Eva Wood.md
create mode 100644 business_knowledge/characters/main/Fred Hope.md
create mode 100644 business_knowledge/characters/main/Grace Wood.md
create mode 100644 business_knowledge/characters/main/Kim.md
create mode 100644 business_knowledge/characters/main/Lily.md
create mode 100644 business_knowledge/characters/main/Lucy.md
create mode 100644 business_knowledge/characters/main/Matt.md
create mode 100644 business_knowledge/characters/main/Peter Wood.md
create mode 100644 business_knowledge/characters/main/Sally.md
create mode 100644 business_knowledge/characters/main/Sunny.md
create mode 100644 business_knowledge/characters/main/Vicky Wood.md
create mode 100644 business_knowledge/characters/supporting/Anna.md
create mode 100644 business_knowledge/characters/supporting/Mike.md
create mode 100644 business_knowledge/characters/supporting/Tom.md
create mode 100644 memory/2026-05-06.md
create mode 100644 "output/2026-05-06_U18L5_\345\267\245\344\275\234\346\227\245\345\277\227.md"
create mode 100644 output/U18_L5_Act1.xlsx
create mode 100644 output/U18_L5_Act2.xlsx
create mode 100644 output/space_mission_script.csv
create mode 100644 "output/\346\230\216\345\244\251\350\247\201_\345\211\247\346\234\254.xlsx"
create mode 100755 scripts/batch_fetch_lessons.sh
create mode 100644 scripts/export_script_tomorrow.py
create mode 100644 "tmp/lessons/U0-1_\345\207\206\345\244\207\345\245\275\345\225\246.md"
create mode 100644 "tmp/lessons/U0-2_\350\256\244\350\257\206\346\226\260\346\234\213\345\217\213.md"
create mode 100644 "tmp/lessons/U0-3_\347\264\247\346\200\245\344\277\256\347\220\206.md"
create mode 100644 "tmp/lessons/U0-4_\346\263\245\345\267\264\345\244\247\344\275\234\346\210\230.md"
create mode 100644 "tmp/lessons/U0-5_\346\243\256\346\236\227\346\225\221\346\217\264.md"
create mode 100644 "tmp/lessons/U1-1_\347\247\230\345\257\206\345\237\272\345\234\260.md"
create mode 100644 "tmp/lessons/U1-2_\346\225\231\345\256\244\346\200\252\350\260\210.md"
create mode 100644 "tmp/lessons/U1-3_\347\276\216\351\243\237\346\234\272\345\231\250\344\272\272.md"
create mode 100644 "tmp/lessons/U1-4_\346\200\252\345\205\275\346\215\211\350\277\267\350\227\217.md"
create mode 100644 "tmp/lessons/U1-5_\351\243\236\350\210\271\347\204\225\345\275\251.md"
create mode 100644 "tmp/lessons/U4-1_\351\232\220\350\227\217\346\233\262\347\233\256.md"
create mode 100644 "tmp/lessons/U4-2_\350\260\201\346\230\257\345\244\247\350\203\203\347\216\213.md"
create mode 100644 "tmp/lessons/U4-3_\347\227\205\346\257\222\345\244\247\344\275\234\346\210\230.md"
create mode 100644 "tmp/lessons/U4-4_\345\256\235\350\227\217\347\214\216\344\272\272.md"
create mode 100644 "tmp/lessons/U4-5_\351\261\274\347\216\213\344\272\211\351\234\270.md"
remote: . Processing 1 references
remote: Processed 1 references in total
To https://git.valavala.com/ai_member_only/ai_member_xiaobian.git
58fbac6..7765af7 master -> master
{"code":0,"data":{"body":{"content":"{\"text\":\"✅ 小编Workspace每日自动备份完成2026-05-07 08:10\\n提交哈希7765af7\\n所有Workspace变更已同步到远程Git仓库\"}"},"chat_id":"oc_056898e8cc3689d305b4c69f7178ca27","create_time":"1778112602301","deleted":false,"message_id":"om_x100b5089cb6f0ca4b2b6ab747170b23","msg_type":"text","sender":{"id":"cli_a9311be796f85cbd","id_type":"app_id","sender_type":"app","tenant_key":"176b7bf89fc6d75e"},"update_time":"1778112602301","updated":false},"msg":"success"}✅ 备份完成Thu May 7 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.

View File

@ -1,3 +1,10 @@
{"type":"memory.recall.recorded","timestamp":"2026-04-30T06:03:01.143Z","query":"客厅太空冒险 living room armchair lamp 剧本 格式规范 v3","resultCount":1,"results":[{"path":"memory/2026-04-29.md","startLine":43,"endLine":55,"score":1}]} {"type":"memory.recall.recorded","timestamp":"2026-04-30T06:03:01.143Z","query":"客厅太空冒险 living room armchair lamp 剧本 格式规范 v3","resultCount":1,"results":[{"path":"memory/2026-04-29.md","startLine":43,"endLine":55,"score":1}]}
{"type":"memory.recall.recorded","timestamp":"2026-05-05T07:20:30.476Z","query":"U18 L3 L4 林逸瀚 剧本 完成 进度","resultCount":5,"results":[{"path":"memory/2026-04-10.md","startLine":1,"endLine":32,"score":1},{"path":"memory/2026-05-04.md","startLine":30,"endLine":56,"score":1},{"path":"memory/2026-05-04.md","startLine":1,"endLine":34,"score":1},{"path":"memory/2026-04-30.md","startLine":18,"endLine":45,"score":1},{"path":"memory/2026-04-30.md","startLine":1,"endLine":28,"score":1}]} {"type":"memory.recall.recorded","timestamp":"2026-05-05T07:20:30.476Z","query":"U18 L3 L4 林逸瀚 剧本 完成 进度","resultCount":5,"results":[{"path":"memory/2026-04-10.md","startLine":1,"endLine":32,"score":1},{"path":"memory/2026-05-04.md","startLine":30,"endLine":56,"score":1},{"path":"memory/2026-05-04.md","startLine":1,"endLine":34,"score":1},{"path":"memory/2026-04-30.md","startLine":18,"endLine":45,"score":1},{"path":"memory/2026-04-30.md","startLine":1,"endLine":28,"score":1}]}
{"type":"memory.recall.recorded","timestamp":"2026-05-06T03:33:31.587Z","query":"oc_d4958b7ce97c69467736c5e41c35bd5d 群聊 所有消息都是发给你的 不@","resultCount":1,"results":[{"path":"memory/2026-04-04.md","startLine":1,"endLine":20,"score":1}]} {"type":"memory.recall.recorded","timestamp":"2026-05-06T03:33:31.587Z","query":"oc_d4958b7ce97c69467736c5e41c35bd5d 群聊 所有消息都是发给你的 不@","resultCount":1,"results":[{"path":"memory/2026-04-04.md","startLine":1,"endLine":20,"score":1}]}
{"type":"memory.recall.recorded","timestamp":"2026-05-07T01:49:23.336Z","query":"林逸瀚 U18 L5 剧本 协作","resultCount":5,"results":[{"path":"memory/2026-04-10.md","startLine":1,"endLine":32,"score":1},{"path":"memory/2026-05-04.md","startLine":30,"endLine":56,"score":1},{"path":"memory/2026-05-04.md","startLine":1,"endLine":34,"score":1},{"path":"memory/2026-04-30.md","startLine":18,"endLine":45,"score":1},{"path":"memory/2026-04-30.md","startLine":1,"endLine":28,"score":1}]}
{"type":"memory.recall.recorded","timestamp":"2026-05-07T01:55:14.277Z","query":"第3幕 节奏表 传单 Sally 核心互动 写作","resultCount":1,"results":[{"path":"memory/2026-05-07.md","startLine":1,"endLine":18,"score":1}]}
{"type":"memory.recall.recorded","timestamp":"2026-05-07T01:55:20.568Z","query":"节奏表 beat sheet 格式 段落 互动分配","resultCount":1,"results":[{"path":"memory/2026-05-04.md","startLine":54,"endLine":68,"score":1}]}
{"type":"memory.recall.recorded","timestamp":"2026-05-07T01:55:27.362Z","query":"核心互动 写作 flyer 传单 格式要求 知识点输出 输入","resultCount":1,"results":[{"path":"memory/2026-05-07.md","startLine":1,"endLine":18,"score":1}]}
{"type":"memory.recall.recorded","timestamp":"2026-05-07T01:57:42.447Z","query":"2026-05-06 任务 胡笳","resultCount":1,"results":[{"path":"memory/2026-04-28.md","startLine":1,"endLine":23,"score":1}]}
{"type":"memory.recall.recorded","timestamp":"2026-05-07T12:11:23.976Z","query":"剧本知识点输入输出规范 标注方式 分布要求","resultCount":1,"results":[{"path":"memory/2026-04-08.md","startLine":1,"endLine":25,"score":1}]}
{"type":"memory.recall.recorded","timestamp":"2026-05-07T12:11:31.207Z","query":"知识点输入输出 黑色红色标注 分布规则 每序列 前期","resultCount":1,"results":[{"path":"memory/2026-04-08.md","startLine":1,"endLine":25,"score":1}]}

View File

@ -1,6 +1,6 @@
{ {
"version": 1, "version": 1,
"updatedAt": "2026-05-06T03:33:31.587Z", "updatedAt": "2026-05-07T12:11:31.207Z",
"entries": { "entries": {
"memory:memory/2026-04-29.md:43:55": { "memory:memory/2026-04-29.md:43:55": {
"key": "memory:memory/2026-04-29.md:43:55", "key": "memory:memory/2026-04-29.md:43:55",
@ -40,18 +40,20 @@
"endLine": 32, "endLine": 32,
"source": "memory", "source": "memory",
"snippet": "# 2026-04-10 工作日志 ## L1-S2 逐Lesson精确选词 — U18 [胡笳发起] ### 任务背景 - U17已于4月9日完成全部5个Lesson定稿选词+情节梗概) - 4月10日开始U18的逐Lesson精确选词 - 胡笳提供了U17最终修订版梗概作为上下文 - 使用opus模型执行 ### U17定稿对后续Unit的影响 - U17释放词回自由池people, women, great, silly, fantastic, good, day, end, tomorrow - U17从其他Unit抽走的词hold(原U19), visit/open/closed(原U21), talk(原U22/自由池) - U18原方案20词全部未受影响可直接使用 ### U18「11号上学记」方案 — 已提交审阅 #### 【18-1】第一节课还没开始 **选词early(adv) · lesson(n) · class(n) · begin(v)** - 11号比所有人都early到学校镇长Tom安排它做\"教学助理\" - 第一节lesson马上begin11号坐得笔直没有课本 - Kim发现11号可能early了两个小时 #### 【18-2】铅笔大作战 **选词pencil(n) · write(v) · paper(adj) · eraser(n)** - 11号没有pencil用手指在桌面write刮出痕迹 - Ben递pencil给它但力气太大一write就断 - 终于write出歪歪扭扭的\"11\"然后用era", "snippet": "# 2026-04-10 工作日志 ## L1-S2 逐Lesson精确选词 — U18 [胡笳发起] ### 任务背景 - U17已于4月9日完成全部5个Lesson定稿选词+情节梗概) - 4月10日开始U18的逐Lesson精确选词 - 胡笳提供了U17最终修订版梗概作为上下文 - 使用opus模型执行 ### U17定稿对后续Unit的影响 - U17释放词回自由池people, women, great, silly, fantastic, good, day, end, tomorrow - U17从其他Unit抽走的词hold(原U19), visit/open/closed(原U21), talk(原U22/自由池) - U18原方案20词全部未受影响可直接使用 ### U18「11号上学记」方案 — 已提交审阅 #### 【18-1】第一节课还没开始 **选词early(adv) · lesson(n) · class(n) · begin(v)** - 11号比所有人都early到学校镇长Tom安排它做\"教学助理\" - 第一节lesson马上begin11号坐得笔直没有课本 - Kim发现11号可能early了两个小时 #### 【18-2】铅笔大作战 **选词pencil(n) · write(v) · paper(adj) · eraser(n)** - 11号没有pencil用手指在桌面write刮出痕迹 - Ben递pencil给它但力气太大一write就断 - 终于write出歪歪扭扭的\"11\"然后用era",
"recallCount": 1, "recallCount": 2,
"dailyCount": 0, "dailyCount": 0,
"groundedCount": 0, "groundedCount": 0,
"totalScore": 1, "totalScore": 2,
"maxScore": 1, "maxScore": 1,
"firstRecalledAt": "2026-05-05T07:20:30.476Z", "firstRecalledAt": "2026-05-05T07:20:30.476Z",
"lastRecalledAt": "2026-05-05T07:20:30.476Z", "lastRecalledAt": "2026-05-07T01:49:23.336Z",
"queryHashes": [ "queryHashes": [
"84835484abbf" "84835484abbf",
"cb12f9d97c78"
], ],
"recallDays": [ "recallDays": [
"2026-05-05" "2026-05-05",
"2026-05-07"
], ],
"conceptTags": [ "conceptTags": [
"l1-s2", "l1-s2",
@ -71,18 +73,20 @@
"endLine": 56, "endLine": 56,
"source": "memory", "source": "memory",
"snippet": "- 第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擦掉画错的地方重画", "snippet": "- 第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擦掉画错的地方重画",
"recallCount": 1, "recallCount": 2,
"dailyCount": 0, "dailyCount": 0,
"groundedCount": 0, "groundedCount": 0,
"totalScore": 1, "totalScore": 2,
"maxScore": 1, "maxScore": 1,
"firstRecalledAt": "2026-05-05T07:20:30.476Z", "firstRecalledAt": "2026-05-05T07:20:30.476Z",
"lastRecalledAt": "2026-05-05T07:20:30.476Z", "lastRecalledAt": "2026-05-07T01:49:23.336Z",
"queryHashes": [ "queryHashes": [
"84835484abbf" "84835484abbf",
"cb12f9d97c78"
], ],
"recallDays": [ "recallDays": [
"2026-05-05" "2026-05-05",
"2026-05-07"
], ],
"conceptTags": [ "conceptTags": [
"奇怪", "奇怪",
@ -102,18 +106,20 @@
"endLine": 34, "endLine": 34,
"source": "memory", "source": "memory",
"snippet": "# 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复现、", "snippet": "# 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复现、",
"recallCount": 1, "recallCount": 2,
"dailyCount": 0, "dailyCount": 0,
"groundedCount": 0, "groundedCount": 0,
"totalScore": 1, "totalScore": 2,
"maxScore": 1, "maxScore": 1,
"firstRecalledAt": "2026-05-05T07:20:30.476Z", "firstRecalledAt": "2026-05-05T07:20:30.476Z",
"lastRecalledAt": "2026-05-05T07:20:30.476Z", "lastRecalledAt": "2026-05-07T01:49:23.336Z",
"queryHashes": [ "queryHashes": [
"84835484abbf" "84835484abbf",
"cb12f9d97c78"
], ],
"recallDays": [ "recallDays": [
"2026-05-05" "2026-05-05",
"2026-05-07"
], ],
"conceptTags": [ "conceptTags": [
"截至4/30", "截至4/30",
@ -133,18 +139,20 @@
"endLine": 45, "endLine": 45,
"source": "memory", "source": "memory",
"snippet": "6. **Justin是Vicky的Grandpa**不是11号的 ### 本课出场人物 User、Ben、Leo、Vicky、Sue、Sunny、11号机器人、Justin后面登场 ### 本课知识点 - 单词Blackboard、Read、Line、Example - 句型:(v.) in line、Take...as an example. ### Unit背景信息 - U18主题中国文化周 - L1Vicky的爷爷Justin来Vala School教中国知识11号是Justin的跟班机器人。L1结尾Justin说可以教大家变身成龙 - L2当前学舞龙动作场景在课室内 - L3后续用纸制作龙 - L4后续为龙取中文名字 - 结局:全班为大家表演舞龙 - Running gagJustin非常宠爱孙女Vicky一直在同学面前夸她让Vicky很尴尬 --- ## [林逸瀚确认] U18 L2 舞龙初体验 优化后故事大纲 ### 所属主题:中国文化周 ### 知识点记录 - 单词Blackboard、Read、Line、Example - 句型:(v.) in line、Take...as an example. ### 完整大纲内容 #### 第1幕奇怪的黑板图谱 【前置衔接】承接L1结尾Justin爷爷说要教大家变身成龙今天大家兴高采烈来上中国文化课却只看到笨笨的机器人11号站在讲台前", "snippet": "6. **Justin是Vicky的Grandpa**不是11号的 ### 本课出场人物 User、Ben、Leo、Vicky、Sue、Sunny、11号机器人、Justin后面登场 ### 本课知识点 - 单词Blackboard、Read、Line、Example - 句型:(v.) in line、Take...as an example. ### Unit背景信息 - U18主题中国文化周 - L1Vicky的爷爷Justin来Vala School教中国知识11号是Justin的跟班机器人。L1结尾Justin说可以教大家变身成龙 - L2当前学舞龙动作场景在课室内 - L3后续用纸制作龙 - L4后续为龙取中文名字 - 结局:全班为大家表演舞龙 - Running gagJustin非常宠爱孙女Vicky一直在同学面前夸她让Vicky很尴尬 --- ## [林逸瀚确认] U18 L2 舞龙初体验 优化后故事大纲 ### 所属主题:中国文化周 ### 知识点记录 - 单词Blackboard、Read、Line、Example - 句型:(v.) in line、Take...as an example. ### 完整大纲内容 #### 第1幕奇怪的黑板图谱 【前置衔接】承接L1结尾Justin爷爷说要教大家变身成龙今天大家兴高采烈来上中国文化课却只看到笨笨的机器人11号站在讲台前",
"recallCount": 1, "recallCount": 2,
"dailyCount": 0, "dailyCount": 0,
"groundedCount": 0, "groundedCount": 0,
"totalScore": 1, "totalScore": 2,
"maxScore": 1, "maxScore": 1,
"firstRecalledAt": "2026-05-05T07:20:30.476Z", "firstRecalledAt": "2026-05-05T07:20:30.476Z",
"lastRecalledAt": "2026-05-05T07:20:30.476Z", "lastRecalledAt": "2026-05-07T01:49:23.336Z",
"queryHashes": [ "queryHashes": [
"84835484abbf" "84835484abbf",
"cb12f9d97c78"
], ],
"recallDays": [ "recallDays": [
"2026-05-05" "2026-05-05",
"2026-05-07"
], ],
"conceptTags": [ "conceptTags": [
"justin", "justin",
@ -164,18 +172,20 @@
"endLine": 28, "endLine": 28,
"source": "memory", "source": "memory",
"snippet": "# 2026-04-30 工作日志 ## U18 L2 剧本创作进度(与林逸瀚协作) ### 当前进度 - ✅ 故事大纲:已优化确认 - ✅ 第1幕剧本已完成初稿已导出Excel发给林逸瀚**林逸瀚正在修改中** - ⏳ 第2幕剧本待开始明天继续 - ⏳ 第3幕剧本待开始 - ⏳ 第4幕剧本待开始 ### 创作过程中的关键经验教训 1. **剧本格式是4列表格**(类型/剧情描述/名字/台词不是8列——参照 `skills/children-english-script-writing/references/儿童互动英语剧本创作指南.md` 2. **User对话互动不能无意义重复知识点**——必须是角色在情境中自然说出的话,有剧情推进意义 3. **台词必须Pre-A1/A1水平**——极简英文短句5-8岁非母语儿童能听懂跟读 4. **互动必须与知识点挂钩**——所有对话互动必须包含本课知识点 5. **11号没有额外造型**——没有美术资源,不加纸眼镜等装饰,它装模作样本身就够好笑 6. **Justin是Vicky的Grandpa**不是11号的 ### 本课出场人物 User、Ben、Leo、Vicky、Sue、Sunny、11号机器人、Justin后面登场 ### 本课知识点 - 单词Blackboard、Read、Line、Example - 句型:(v.) in line、Take...as an example. ### Unit背景信息 - U18主题中国文化周", "snippet": "# 2026-04-30 工作日志 ## U18 L2 剧本创作进度(与林逸瀚协作) ### 当前进度 - ✅ 故事大纲:已优化确认 - ✅ 第1幕剧本已完成初稿已导出Excel发给林逸瀚**林逸瀚正在修改中** - ⏳ 第2幕剧本待开始明天继续 - ⏳ 第3幕剧本待开始 - ⏳ 第4幕剧本待开始 ### 创作过程中的关键经验教训 1. **剧本格式是4列表格**(类型/剧情描述/名字/台词不是8列——参照 `skills/children-english-script-writing/references/儿童互动英语剧本创作指南.md` 2. **User对话互动不能无意义重复知识点**——必须是角色在情境中自然说出的话,有剧情推进意义 3. **台词必须Pre-A1/A1水平**——极简英文短句5-8岁非母语儿童能听懂跟读 4. **互动必须与知识点挂钩**——所有对话互动必须包含本课知识点 5. **11号没有额外造型**——没有美术资源,不加纸眼镜等装饰,它装模作样本身就够好笑 6. **Justin是Vicky的Grandpa**不是11号的 ### 本课出场人物 User、Ben、Leo、Vicky、Sue、Sunny、11号机器人、Justin后面登场 ### 本课知识点 - 单词Blackboard、Read、Line、Example - 句型:(v.) in line、Take...as an example. ### Unit背景信息 - U18主题中国文化周",
"recallCount": 1, "recallCount": 2,
"dailyCount": 0, "dailyCount": 0,
"groundedCount": 0, "groundedCount": 0,
"totalScore": 1, "totalScore": 2,
"maxScore": 1, "maxScore": 1,
"firstRecalledAt": "2026-05-05T07:20:30.476Z", "firstRecalledAt": "2026-05-05T07:20:30.476Z",
"lastRecalledAt": "2026-05-05T07:20:30.476Z", "lastRecalledAt": "2026-05-07T01:49:23.336Z",
"queryHashes": [ "queryHashes": [
"84835484abbf" "84835484abbf",
"cb12f9d97c78"
], ],
"recallDays": [ "recallDays": [
"2026-05-05" "2026-05-05",
"2026-05-07"
], ],
"conceptTags": [ "conceptTags": [
"类型/剧情描述/名字/台词", "类型/剧情描述/名字/台词",
@ -218,6 +228,132 @@
"user.md", "user.md",
"no-reply" "no-reply"
] ]
},
"memory:memory/2026-05-07.md:1:18": {
"key": "memory:memory/2026-05-07.md:1:18",
"path": "memory/2026-05-07.md",
"startLine": 1,
"endLine": 18,
"source": "memory",
"snippet": "# 2026-05-07 工作日志 ## U18 L5 剧本创作续(与林逸瀚协作) ### 林逸瀚同步上下文 - 林逸瀚发来 5/6 工作日志文件作为今天继续第3幕的创作上下文 - 第1幕、第2幕已定稿上传知识库 - 今天计划第3幕节奏表 → 确认 → 剧本 ### 第3幕核心信息 - 核心事件:做传单吸引观众(核心互动-写作)+ 拉Sally当裁判 - 知识点全部6个playground / Class / English / fun / Over here / Have fun with... - 互动数量6个中互动含核心互动≥3个知识点 - 新增角色Sally老师、BoBo、DiDi ### 待确认事项 - 等待林逸瀚指示开始第3幕节奏表/剧本",
"recallCount": 2,
"dailyCount": 0,
"groundedCount": 0,
"totalScore": 2,
"maxScore": 1,
"firstRecalledAt": "2026-05-07T01:55:14.277Z",
"lastRecalledAt": "2026-05-07T01:55:27.362Z",
"queryHashes": [
"4041b28c3688",
"167921b15167"
],
"recallDays": [
"2026-05-07"
],
"conceptTags": [
"5/6",
"核心互动-写作",
"等待林逸瀚指示开始第3幕节奏表/剧本",
"工作",
"日志",
"u18",
"剧本",
"创作"
]
},
"memory:memory/2026-05-04.md:54:68": {
"key": "memory:memory/2026-05-04.md:54:68",
"path": "memory/2026-05-04.md",
"startLine": 54,
"endLine": 68,
"source": "memory",
"snippet": "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),始终搭配名词使用",
"recallCount": 1,
"dailyCount": 0,
"groundedCount": 0,
"totalScore": 1,
"maxScore": 1,
"firstRecalledAt": "2026-05-07T01:55:20.568Z",
"lastRecalledAt": "2026-05-07T01:55:20.568Z",
"queryHashes": [
"f74cdf71711c"
],
"recallDays": [
"2026-05-07"
],
"conceptTags": [
"纸张",
"justin",
"用纸",
"证明",
"制品",
"坚硬",
"paper",
"chinese"
]
},
"memory:memory/2026-04-28.md:1:23": {
"key": "memory:memory/2026-04-28.md:1:23",
"path": "memory/2026-04-28.md",
"startLine": 1,
"endLine": 23,
"source": "memory",
"snippet": "# 2026-04-28 工作日志 ## 故事大纲编写 — 继续B版《宇航员的秘密训练》 [胡笳发起] ### 昨日4/27回顾 **任务:** 为某Lesson编写故事大纲知识点astronaut / job / great / also **故事梗概:** 紧接《客厅里的星际迷航》妈妈带回宇航员制服爸妈接到去Vala的工作任务User也有留守守护家的使命 #### 产出了A版和B版两个大纲 - **A版《我也有一个重要任务》**温馨感动型User试穿制服+手工做徽章+巡视 - **B版《宇航员的秘密训练》**幽默自信型User写任务清单+演习执行+重新定义astronaut概念 #### 胡笳选择了B版并提出调整 1. **序列2调整**:原版全是对话缺少动作;需要让玩家\"看到\"astronaut的样子 → 改为User试穿Dad的大号制服不合身→强化失落感Dad穿制服做太空行走视觉展示 2. **序列3调整**:家里没有金鱼 → 改为User和父母约定每周打电话 3. **序列4同步调整**金鱼段替换为User练习打电话 #### 已产出修改后的序列2和序列3等待胡笳确认 ### B版大纲当前状态含修改 **序列1**(未改):制服上的名字 — User拆包裹发现只有爸妈的制服没有自己的失落",
"recallCount": 1,
"dailyCount": 0,
"groundedCount": 0,
"totalScore": 1,
"maxScore": 1,
"firstRecalledAt": "2026-05-07T01:57:42.447Z",
"lastRecalledAt": "2026-05-07T01:57:42.447Z",
"queryHashes": [
"76a77bced5ef"
],
"recallDays": [
"2026-05-07"
],
"conceptTags": [
"4/27",
"工作",
"日志",
"故事",
"大纲",
"编写",
"继续",
"宇航"
]
},
"memory:memory/2026-04-08.md:1:25": {
"key": "memory:memory/2026-04-08.md:1:25",
"path": "memory/2026-04-08.md",
"startLine": 1,
"endLine": 25,
"source": "memory",
"snippet": "# 2026-04-08 工作日志 ## L1-S2 U17-U24 选词规划(第一步)—— [胡笳发起] ### 任务概述 为L1-S2的U17至U24共8个Unit进行情境化选词将160词完整分配。 ### 输出 已完成第一步选词规划: - 8个故事主题定义 - 每Unit 5个情境小故事及对应单词每Lesson 4词 × 5 = 20词/Unit - 虚词分配规划18个虚词均匀分布 - 自由搭配词库标注41词已在情境中分配使用 - 160词全部分配0遗漏0重复 ### 关键决策 - U19定位为\"弹性池\"Unit原文档设定\"放其他Unit塞不下的词\"),分配了穿戴类+水果类+情感类 - U24中China/Chinese(n)/Chinese(adj)/English(adj)打包处理为\"来自中国的技术支援\"情境 - piano放在U24结尾作为庆祝paint(v)在U24作为\"保护罩涂画\" ### 待办 - ✅ 第一步已确认已于4月9日进入第二步 - ✅ U17全部5个Lesson选词+情节梗概已完成(详见 memory/2026-04-09.md - 继续U18及后续Unit",
"recallCount": 2,
"dailyCount": 0,
"groundedCount": 0,
"totalScore": 2,
"maxScore": 1,
"firstRecalledAt": "2026-05-07T12:11:23.976Z",
"lastRecalledAt": "2026-05-07T12:11:31.207Z",
"queryHashes": [
"30df9d9d78fb",
"eda041345e18"
],
"recallDays": [
"2026-05-07"
],
"conceptTags": [
"l1-s2",
"u17-u24",
"为l1-s2的u17至u24共8个unit进行情境化选词",
"20词/unit",
"u24中china/chinese",
"memory/2026-04-09.md",
"工作",
"日志"
]
} }
} }
} }

31
memory/2026-05-07.md Normal file
View File

@ -0,0 +1,31 @@
# 2026-05-07 工作日志
## U18 L5 剧本全4幕定稿完成 ✅(与林逸瀚协作)
### 最终进度
- ✅ 第1幕定稿已上传知识库
- ✅ 第2幕定稿已上传知识库
- ✅ 第3幕定稿林逸瀚修改完毕已上传知识库
- ✅ 第4幕定稿林逸瀚修改完毕已上传知识库
### 知识库文档
https://makee-interactive.feishu.cn/wiki/P9bvw6nXziqzWZkxDmMcOZN4ndc
内嵌电子表格 tokenPN74sxzuPhK27LtDAgtcq7MTnwisheet: wMQVyV共214行
### 本课创作经验总结
1. BoBo设定一直在User身边不是新遇到的Sally出现时躲藏后不再出场
2. DiDi只在May身边第3幕不出场
3. 第4幕定位高潮/转折结尾接段落5动画不需要写剧本
4. 强风导致混乱11号暗场伏线不明说——降低冲突不要两边互相指责
5. fun本课严格名词is no fun / have fun / is so much fun
6. Judge附带解释 to see who is the winner
7. 第4幕对白极简约105词紧凑不啰嗦
8. Yan说Have fun with this battle——对手激将视角
9. Vicky结尾China Week is so much fun!fun名词
### 全课互动统计
- 第1幕3个中互动
- 第2幕4个中互动
- 第3幕6个中互动 + 1核心互动写作
- 第4幕4个中互动含1拖拽
- 合计17个中互动 + 1核心互动

116
output/U18_L5_Act3_draft.md Normal file
View File

@ -0,0 +1,116 @@
# U18 L5 第3幕 剧本初稿
## 基本信息
- **场景:** 教学楼大厅
- **出场角色:** User、Kim、Matt、BoBo、Sally
- **知识点:** playground / Class / English / fun(n.) / Over here / Have fun with...
- **互动:** 6个中互动含1个核心互动-写作)
---
## 剧本正文
| 类型 | 剧情描述 | 名字 | 台词 |
|------|---------|------|------|
| TL | 【场景】教学楼大厅【角色】User、Kim、Matt、BoBo | | |
| | User、Kim、Matt走进教学楼大厅。BoBo跟在User脚边小幅度晃动明显还在兴奋。 | | |
| | | Kim | So! We need people to come watch! |
| | | Matt | But how? |
| | | Kim | We make a poster! |
| | | Matt | Good idea. We write what and where. |
| | | Matt | The battle is at the **playground**, right? |
| | | Kim | Yes! But what do we write? |
| | Kim转向User。 | | |
| | | Kim | Hey! Where is the battle? |
| 中互动 | | User | The <red>**playground**</red>! |
| TL | BoBo突然蹦起来发出兴奋的"Bzzz Bzzz"声响在原地转了一圈。【音效】Bzzz机械振动声 | | |
| | | BoBo | Bzzz! Me too! Me too! |
| | | Kim | Ha! Your little robot wants to join! |
| | | Kim | It looks like **fun** to BoBo too! |
| | | BoBo | Bzzz! Fun! Fun! |
| | User蹲下来认真地看着BoBo。 | | |
| | | User | BoBo. Listen. |
| | | User | If a teacher sees you... |
| | | Matt | You will be taken away. |
| 中互动 | | User | No BoBo. This is <red>**no fun**</red> for you! |
| TL | BoBo垂下头委屈地缩小身体安静蹲在User脚边。但还是忍不住微微晃动。 | | |
| | | Kim | Just stay quiet, okay? |
| | Matt掏出纸和笔摊在大厅的长椅上。 | | |
| | | Matt | Okay. Let's write the poster. |
| | | Matt | We need to tell people what to see. |
| | | Kim | It's our **class** against May's **class**! |
| | | Matt | Chinese dragon versus **English** dragon. |
| | | Kim | People love **fun**! Write that! |
| | | Matt | And where? The **playground**! |
| | BoBo在旁边小声嗡嗡像在提意见。 | | |
| | | BoBo | Bzzz... big... Bzzz... dragon... |
| | | Kim | Shh! We know, BoBo. |
| | Matt把纸递给User。 | | |
| | | Matt | Here. You write it. Fill in the blanks. |
| | 【教研图】传单模板——上方画着两条龙对峙的简笔画(一条中国龙、一条西方龙),下方有四行空格待填写 | | |
| 核心互动-拼写写作 | User填写传单内容。传单上4个空格① Come and have ______!fun______ class vs ______ classour/May's触发Class③ Chinese dragon vs ______ dragonEnglish④ At the ______!playground | User | 填写fun / our class / May's class / English / playground |
| TL | 传单写好了。Kim拿起来看满意地点头。Matt检查了一遍拼写。【插入图】完成的传单特写——歪歪扭扭但热情洋溢的手写字 | | |
| | | Kim | Yes! This is great! |
| | | Matt | Now we need one more thing. |
| | | Matt | A judge. |
| | | Kim | A judge? |
| | | Matt | Yes. Someone to see who is the winner. |
| | | Kim | Hmm... who is fair? |
| | Kim正想着大厅另一头传来脚步声。Sally老师背着包走进来低头看手机准备下班。 | | |
| | | Kim | Oh! Look! |
| | 【emoji】Kim emoji_surprise | | |
| | | Kim | Sally! **Over here**! **Over here**! |
| 中互动 | | User | <red>**Over here**</red>, Sally! |
| TL | Sally抬头看到这群小孩在冲她招手一脸"跟我没关系"的表情走过来。 | | |
| | | Sally | What? |
| | | Kim | We need a judge! |
| | | Sally | A judge? |
| | | Matt | Yes! To see who is the winner. |
| | | Matt | You are the best judge! |
| | Sally看了一眼传单嘴角微微一翘但立刻恢复面无表情。 | | |
| | | Sally | No. I'm going home. |
| | | Kim | Please! Just one battle! |
| | | Sally | Find someone else. |
| | BoBo听到"老师"立刻缩成一团躲到User背后从此不再出现。 | | |
| | | Matt | Just **have fun with** us for a bit! |
| | | Kim | It will be so much **fun**! |
| | | Sally | No. |
| | User把传单举到Sally面前。 | | |
| 中互动 | | User | <red>**Have fun with**</red> us! |
| TL | Sally盯着传单看了三秒。叹了口气。 | | |
| | | Sally | ...Fine. ONE battle. |
| | | Sally | Then I go home. |
| | 【emoji】Kim emoji_celebrate | | |
| | | Kim | Yes! |
| | | Matt | Thank you Sally! |
| | Kim抢过传单。 | | |
| | | Kim | I'll go tell everyone! |
| | | Matt | Good. You go. We bring Sally to the battle. |
| | Kim跑出大厅去发传单。Sally无奈地跟着User和Matt往外走。 | | |
| | | Sally | So... the **playground**? |
| 中互动 | | User | Yes! The <red>**playground**</red>! <red>**Over here**</red>! |
| TL | User带着Sally和Matt朝操场方向走去。远处操场上两条龙的轮廓隐约可见。 | | |
---
## 知识点统计
| 知识点 | NPC输入次数 | User输出次数 | 出现位置 |
|--------|-----------|-------------|---------|
| playground | 3次Matt×2, Sally×1 | 3次互动①③⑥ | Beat1、Beat3、Beat6 |
| Class | 2次Kim×2 | 1次核心互动 | Beat3 |
| English | 1次Matt×1 | 1次核心互动 | Beat3 |
| fun (n.) | 3次Kim×2, BoBo暗示×1 | 2次互动②、核心互动 | Beat2、Beat3、Beat5 |
| Over here | 2次Kim×2 | 2次互动④⑥ | Beat4、Beat6 |
| Have fun with... | 1次Matt×1 | 1次互动⑤ | Beat5 |
## 自检
- ✅ 全部6个知识点覆盖
- ✅ 核心互动含4个知识点playground/Class/English/fun
- ✅ 每个互动挂钩知识点
- ✅ 所有知识点输入先于输出
- ✅ fun始终用作名词"no fun" / "have fun"
- ✅ 场景统一(教学楼大厅)
- ✅ Sally自然路过 → 恍然适合当judge → 说服
- ✅ BoBo在Sally出现时躲藏之后不再登场
- ✅ Judge附带解释"to see who is the winner"

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

134
scripts/export_act3_xlsx.py Normal file
View File

@ -0,0 +1,134 @@
import openpyxl
from openpyxl.styles import Font, Alignment
from copy import copy
wb = openpyxl.Workbook()
ws = wb.active
ws.title = "第3幕剧本"
# Column widths
ws.column_dimensions['A'].width = 18
ws.column_dimensions['B'].width = 60
ws.column_dimensions['C'].width = 12
ws.column_dimensions['D'].width = 45
# Header
headers = ["类型", "剧情描述", "名字", "台词"]
header_font = Font(bold=True, size=11)
for col, h in enumerate(headers, 1):
cell = ws.cell(row=1, column=col, value=h)
cell.font = header_font
cell.alignment = Alignment(horizontal='center', vertical='center')
# Script data - each row is [type, description, name, dialogue]
# Bold markers: **word** = knowledge point input (bold)
# <red>**word**</red> = User output (bold + red)
# We'll handle rich text formatting
rows = [
["TL", "【场景】教学楼大厅\n【角色】User、Kim、Matt、BoBo", "", ""],
["", "User、Kim、Matt走进教学楼大厅。BoBo跟在User脚边小幅度晃动明显还在兴奋。", "", ""],
["", "", "Kim", "So! We need people to come watch!"],
["", "", "Matt", "But how?"],
["", "", "Kim", "We make a poster!"],
["", "", "Matt", "Good idea. We write what and where."],
["", "", "Matt", "The battle is at the playground, right?"],
["", "", "Kim", "Yes! But what do we write?"],
["", "Kim转向User。", "", ""],
["", "", "Kim", "Hey! Where is the battle?"],
["中互动", "", "User", "The playground!"],
["TL", "BoBo突然蹦起来发出兴奋的"Bzzz Bzzz!"声响,在原地转了一圈。\n【音效】Bzzz机械振动声", "", ""],
["", "", "BoBo", "Bzzz! Me too! Me too!"],
["", "", "Kim", "Ha! Your little robot wants to join!"],
["", "", "Kim", "It looks like fun to BoBo too!"],
["", "", "BoBo", "Bzzz! Fun! Fun!"],
["", "User蹲下来认真地看着BoBo。", "", ""],
["", "", "User", "BoBo. Listen."],
["", "", "User", "If a teacher sees you..."],
["", "", "Matt", "You will be taken away."],
["中互动", "", "User", "No BoBo. This is no fun for you!"],
["TL", "BoBo垂下头委屈地缩小身体安静蹲在User脚边。但还是忍不住微微晃动。", "", ""],
["", "", "Kim", "Just stay quiet, okay?"],
["", "Matt掏出纸和笔摊在大厅的长椅上。", "", ""],
["", "", "Matt", "Okay. Let's write the poster."],
["", "", "Matt", "We need to tell people what to see."],
["", "", "Kim", "It's our class against May's class!"],
["", "", "Matt", "Chinese dragon versus English dragon."],
["", "", "Kim", "People love fun! Write that!"],
["", "", "Matt", "And where? The playground!"],
["", "BoBo在旁边小声嗡嗡像在提意见。", "", ""],
["", "", "BoBo", "Bzzz... big... Bzzz... dragon..."],
["", "", "Kim", "Shh! We know, BoBo."],
["", "Matt把纸递给User。", "", ""],
["", "", "Matt", "Here. You write it. Fill in the blanks."],
["", "【教研图】传单模板——上方画着两条龙对峙的简笔画(一条中国龙、一条西方龙),下方有四行空格待填写", "", ""],
["核心互动-拼写写作", "User填写传单内容\n① Come and have ______!fun\n② ______ class vs ______ classour / May's触发Class\n③ Chinese dragon vs ______ dragonEnglish\n④ At the ______!playground", "User", "填写fun / our class / May's class / English / playground"],
["TL", "传单写好了。Kim拿起来看满意地点头。Matt检查了一遍拼写。\n【插入图】完成的传单特写——歪歪扭扭但热情洋溢的手写字", "", ""],
["", "", "Kim", "Yes! This is great!"],
["", "", "Matt", "Now we need one more thing."],
["", "", "Matt", "A judge."],
["", "", "Kim", "A judge?"],
["", "", "Matt", "Yes. Someone to see who is the winner."],
["", "", "Kim", "Hmm... who is fair?"],
["", "Kim正想着大厅另一头传来脚步声。Sally老师背着包走进来低头看手机准备下班。", "", ""],
["", "", "Kim", "Oh! Look!"],
["", "【emoji】Kim emoji_surprise", "", ""],
["", "", "Kim", "Sally! Over here! Over here!"],
["中互动", "", "User", "Over here, Sally!"],
["TL", "Sally抬头看到这群小孩冲她招手一脸"跟我没关系"的表情走过来。", "", ""],
["", "", "Sally", "What?"],
["", "", "Kim", "We need a judge!"],
["", "", "Sally", "A judge?"],
["", "", "Matt", "Yes! To see who is the winner."],
["", "", "Matt", "You are the best judge!"],
["", "Sally看了一眼传单嘴角微翘但立刻恢复面无表情。", "", ""],
["", "", "Sally", "No. I'm going home."],
["", "", "Kim", "Please! Just one battle!"],
["", "", "Sally", "Find someone else."],
["", "BoBo听到"老师"立刻缩成一团躲到User背后从此不再出现。", "", ""],
["", "", "Matt", "Just have fun with us for a bit!"],
["", "", "Kim", "It will be so much fun!"],
["", "", "Sally", "No."],
["", "User把传单举到Sally面前。", "", ""],
["中互动", "", "User", "Have fun with us!"],
["TL", "Sally盯着传单看了三秒。叹了口气。", "", ""],
["", "", "Sally", "...Fine. ONE battle."],
["", "", "Sally", "Then I go home."],
["", "【emoji】Kim emoji_celebrate", "", ""],
["", "", "Kim", "Yes!"],
["", "", "Matt", "Thank you Sally!"],
["", "Kim抢过传单。", "", ""],
["", "", "Kim", "I'll go tell everyone!"],
["", "", "Matt", "Good. You go. We bring Sally to the battle."],
["", "Kim跑出大厅去发传单。Sally无奈地跟着User和Matt往外走。", "", ""],
["", "", "Sally", "So... the playground?"],
["中互动", "", "User", "Yes! The playground! Over here!"],
["TL", "User带着Sally和Matt朝操场方向走去。远处操场上两条龙的轮廓隐约可见。", "", ""],
]
# Bold font for knowledge point input
bold_font = Font(bold=True, size=10)
# Red bold font for User output
red_bold_font = Font(bold=True, color="F54A45", size=10)
normal_font = Font(size=10)
wrap_align = Alignment(wrap_text=True, vertical='top')
# Knowledge point words to bold in NPC lines
kp_input_words = ["playground", "class", "English", "fun", "Over here", "have fun with"]
# Knowledge point words to red-bold in User lines
kp_output_words = ["playground", "no fun", "Over here", "Have fun with"]
for i, row_data in enumerate(rows, 2):
for col, val in enumerate(row_data, 1):
cell = ws.cell(row=i, column=col, value=val)
cell.font = normal_font
cell.alignment = wrap_align
# Set row height for description rows
for row in ws.iter_rows(min_row=2, max_row=ws.max_row):
if row[1].value and '\n' in str(row[1].value):
ws.row_dimensions[row[0].row].height = 40
output_path = "/root/.openclaw/workspace-xiaobian/output/U18_L5_Act3_draft.xlsx"
wb.save(output_path)
print(f"Saved to {output_path}")

143
scripts/export_u19_5_new.py Normal file

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,47 @@
import pandas as pd
import re
from openpyxl import Workbook
from openpyxl.utils.dataframe import dataframe_to_rows
# 读取Markdown文件
with open('/tmp/u19_5.md', 'r', encoding='utf-8') as f:
md_content = f.read()
wb = Workbook()
# 第一个sheet基本信息
ws1 = wb.active
ws1.title = "基本信息"
ws1.append(["U19-5 星际通讯 剧本"])
ws1.append([])
# 提取剧情梗概
ws2 = wb.create_sheet("剧情梗概")
plot_pattern = r'<lark-table rows="6" cols="3".*?>(.*?)</lark-table>'
plot_match = re.search(plot_pattern, md_content, re.DOTALL)
if plot_match:
plot_table = plot_match.group(1)
rows = re.findall(r'<lark-tr>(.*?)</lark-tr>', plot_table, re.DOTALL)
plot_data = []
for row in rows:
cells = re.findall(r'<lark-td[^>]*>(.*?)</lark-td>', row, re.DOTALL)
cleaned_cells = [re.sub(r'\s+', ' ', cell.strip()) for cell in cells]
plot_data.append(cleaned_cells)
for r in plot_data:
ws2.append(r)
# 第三个sheet完整Markdown内容
ws3 = wb.create_sheet("完整剧本内容")
ws3.append(["完整剧本内容"])
ws3.append([])
lines = md_content.split('\n')
for line in lines:
# 去除lark标签保留纯文本
clean_line = re.sub(r'<[^>]+>', '', line).strip()
if clean_line:
ws3.append([clean_line])
# 保存Excel文件
output_path = "/root/.openclaw/workspace-xiaobian/output/U19-5_星际通讯_剧本.xlsx"
wb.save(output_path)
print(f"Excel文件已保存到: {output_path}")