---
name: kids-english-script-production
description: 用英语母语儿童思维生成自然地道的分级英文台词（不是翻译！）。触发方式：(1) `/英文台词` 命令 (2) 消息包含"英文台词生产"。不会误触发：仅含"台词"或"翻译"的消息不触发。支持中英混合/纯英文/纯中文输入，通过意群拆解+英语思维重构生成分级英文台词，适配S1-S4难度等级。典型场景：飞书剧本表格列F补英文台词、动画/课程台词批量生产。
---

# 儿童英文台词生产技能

## ⚡ 触发方式（防误触发机制）

| 触发方式 | 格式 | 说明 |
|---------|------|------|
| 命令触发（推荐） | **`/英文台词`** + 参数 | 精确匹配，绝不会误触发 |
| 短语触发 | 消息包含 **"英文台词生产"** | 第二通道，等效于命令触发 |

**不会触发的情况：**
- ❌ 仅说"翻译"、"翻译台词" → 不触发（这是翻译工具的概念，不是本技能）
- ❌ 仅说"台词"、"对话" → 不触发（太模糊）
- ❌ 仅说"英文"、"英语" → 不触发（太泛化）
- ✅ 正确使用：`/英文台词 --feishu-url https://... --stage S2`

## 核心功能
- ✅ 智能输入分流：支持中英混合（主要）/纯英文/纯中文输入，自动检测语言类型并走不同处理路径
- ✅ 意群拆解：将台词拆解为最小语义意群，为英语思维重构做准备，不丢剧情
- ✅ 英语思维重构：不是翻译，而是用英语母语儿童的思维方式重构意群，生成自然地道的英文
- ✅ 分级生成：支持4个难度等级（S1-S4），完全匹配4-8岁不同水平儿童
- ✅ 自动校验：内置句长/连接词/从句/时态/超纲词/重复等多维度校验+L1核心词表
- ✅ 文本规范校验：禁止 Markdown 标记、英式拼写优先（colour/centre/travelling）、英文半角标点
- ✅ 自动修正：校验不通过时自动触发LLM修正，无需手动干预
- ✅ 科幻词自动降级：内置可配置科幻词映射表，复杂词汇自动转换成儿童易懂表达
- ✅ 批量处理：支持单个文件/目录批量处理，自动保存结果到指定路径

## 执行流程（6个可观测节点，按语言类型自动分流）
每个节点独立运行，输出中间产物+状态，可逐步审查定位问题：
1. **输入解析**（纯代码）：检测输入语言类型、角色、行数 → 决定后续处理路径
2. **输入归一**（LLM #1，按语言分流）：
   - 中英混合（主要场景）→ 归一为标准中文「角色: 台词」
   - 纯英文 → 只做格式标准化，保留英文（避免英→中→英的语义折损）
   - 纯中文 → 直接保留
3. **意群拆解 / AR预处理**（LLM #2）：
   - 中文路径：拆解为最小语义意群，为英语思维重构做准备
   - 英文路径：直接在英文上拆分+难度标注
4. **英语思维重构 / 难度适配**（LLM #3）：
   - 中文路径：用英语母语儿童思维重构意群（不是翻译！）
   - 英文路径：直接在英文上调整词汇/句法/句长难度
5. **代码侧校验**（纯代码）：句长/连接词/从句/时态/超纲词/重复等自动校验
6. **自动修正**（LLM #4，可选）：仅在校验不通过时触发

## 参数说明
| 参数 | 必须 | 格式 | 说明 |
| ---- | ---- | ---- | ---- |
| --input | 三选一 | 字符串 | 直接输入待处理的剧本文本 |
| --path | 三选一 | 文件/目录路径 | 待处理的单个剧本txt文件，或包含多个txt剧本的目录（批量处理） |
| --feishu-url | 三选一 | 飞书链接 | 飞书文档链接，从表格读取台词列 → pipeline处理 → 写回英文列 |
| --stage | 是 | S1/S2/S3/S4 | 目标难度等级：<br>S1=4-5岁零基础<br>S2=5-6岁入门<br>S3=6-7岁进阶<br>S4=7-8岁提升 |
| --output | 否 | 目录路径 | 结果输出目录，指定后自动保存所有结果到该目录，不指定则直接打印到控制台 |
| --quiet | 否 | 无 | 静默模式，关闭节点过程日志，只输出最终结果 |
| --trace | 否 | 无 | 保存每个节点的中间产物到output目录（需配合--output使用） |
| --source-col | 否 | 字符串 | 飞书模式：源列名称（默认"中文台词"） |
| --target-col | 否 | 字符串 | 飞书模式：目标列名称（默认"英文台词"） |
| --table-index | 否 | 整数 | 飞书模式：文档中第几个表格，从0开始（默认0） |

## 错误处理规则
- 输入路径不存在/无txt文件：直接报错退出，给出明确提示
- 配置文件加载失败：报错退出，提示检查配置文件格式
- LLM调用失败：单个剧本生成失败不影响其他批量任务，给出错误提示
- 参数不合法：直接输出参数说明，提示正确用法
- 飞书写回失败：自动备份结果到本地 JSON 文件，不丢数据

## 飞书模式执行规则（强制执行）

### 0. 目录下多文档时必须确认目标文档

**问题：** 用户发的飞书链接可能是目录节点（包含多个子文档），如果目录下有原始文档 + 副本等多份文档，直接盲选会导致写到错误的文档。

**规则：**
1. 遍历目录子节点后，列出所有文档给用户确认
2. 如果目录下只有 1 个 docx 文档 → 自动选择
3. 如果目录下有多个 docx 文档 → 列出标题和 obj_token，让用户指定目标
4. 禁止在有多份文档时自行猜测选择

### 1. 写入前必须验证行号连续性

**问题：** 飞书 Sheets API 的 range 写入按连续区域覆盖，不关心行号是否对应。剧本表格中 E 列有内容的行号通常不连续（中间有剧情描述空行），连续 range 写入会导致全列偏移。

**规则：**
- 写入前统计目标行号列表，检查连续性
- 行号连续 → 可用 range 批量写入
- 行号不连续 → 必须逐行写入（每个行号单独 range）
- 写入后抽样验证 E/F 列行号对齐（前5行+中间5行+末尾5行）

详见 `feishu-embedded-sheet` 技能中的「批量写入前必须验证行号连续性」章节。

### 2. 完成后必须输出结果统计与变更明细（强制执行）

**目的：** 给教研提供可量化的生产质量参考，同时作为执行者的自检手段——如果统计结果显示"改动极少"或"改动类型单一"，说明可能没有严格执行 S2 适配规则。

**输出格式（飞书模式写入完成后必须输出）：**

```
📊 英文台词生产结果统计

| 指标 | 数值 |
|------|------|
| 源列总行数 | 153 |
| 已写入目标列 | 153 |
| 无需改动（已达目标级别） | 114 |
| 已适配 | 39 |

📝 变更明细：

| 变更类型 | 数量 | 示例 |
|----------|------|------|
| 词汇降级 | 8 | in a hurry→fast, by myself→alone, must speak of→will tell them |
| 英式拼写 | 4 | favorite→favourite, practice→practise, Mom→Mum |
| 引号规范 | 4 | 弯引号 "..."→直引号 '...' |
| 长句拆分 | 22 | 一句拆两句，降低 S2 句长 |
| 拼写修正 | 1 | It's→it's（句中小写） |

💡 适配说明：
- 原文已是儿童英文剧本，BoBo 台词为婴儿语（BoBo free! / Mess! Mess!），无需改动
- User 台词大量为短句（Thank you. / I miss her. / Don't worry.），已达 S2 标准
- 主要适配集中在：长句拆分（降低句长）、词汇降级（简化表达）、英式拼写统一
```

**自检规则（强制执行）：**
1. 如果"已适配"行数 < 总行数的 10%，检查是否遗漏了需要适配的行
2. 如果变更类型只有 1-2 种，检查是否忽略了其他适配维度（词汇/句法/拼写/引号/标点）
3. 如果所有行都是"无需改动"，说明没有执行适配——纯英文路径也必须逐行 LLM 审查
4. 输出统计后，逐项确认变更明细与 S2 适配规则（句长/词汇/英式拼写/引号规范）的对应关系

### 3. 长时间运行任务必须主动反馈进度

**问题：** 英文台词生产涉及 LLM 调用 + 飞书 API 写入，批量处理 100+ 行可能需要数分钟。如果不给进度反馈，用户不知道是卡住了还是在运行中。

**规则：**
- 每处理 20 行或每完成一个阶段（输入解析/意群拆解/英语重构/写入），向用户发送进度消息
- 格式：`📝 英文台词生产进度：已处理 40/153 行，当前阶段：英语思维重构`
- 写入阶段：每批写入完成后报告 `📝 写入进度：第 3/5 批完成（60/153 行已写入）`
- 如果单次操作预计超过 30 秒，先告知用户预估时间
- 遇到异常（API 超时/LLM 失败）立即告知用户，不要静默重试超过 2 次

## 飞书模式输入规范
- 飞书表格中的多行台词必须使用真实换行符 `\n`，不要使用 HTML 的 `<br>`、`<br/>`、`<p>` 等标签
- 如果把多句台词写成 `<br>` 连接，飞书读取后可能会变成单行粘连文本，破坏 `角色: 台词` 结构，影响后续意群拆解和英语思维重构
- 推荐单元格内容格式：
 ```text
 Tom: Oh my!
 Dan: We are fine.
 Grace: Thank you for asking, Tom.
 ```
- 飞书模式内置两层兜底：
   - 读取层会自动把历史 `<br>` / `<br/>` 清洗为 `\n`
   - 进入 pipeline 前会再做一次粘连台词智能拆分
- 但兜底不等于标准输入，最佳实践始终是：写入飞书时直接使用 `\n`

## 使用示例
```bash
# 1. 中英混合剧本（最常见）→ 意群拆解+英语思维重构
openclaw skill run kids-english-script-production --input "Ben: 好的，我去拿毛巾，顺便把water bucket也拿过来。" --stage S2

# 2. 纯英文剧本 → 难度适配（不经过中文，直接降级）
openclaw skill run kids-english-script-production --input "Ben: Let me go fetch the towel and bring the water bucket as well." --stage S1

# 3. 处理单个文件，结果保存到output目录
openclaw skill run kids-english-script-production --path ./script.txt --stage S3 --output ./result

# 4. 批量处理目录下所有txt剧本
openclaw skill run kids-english-script-production --path ./scripts_dir --stage S1 --output ./batch_result

# 5. 飞书模式：从飞书文档表格读取 → 处理 → 写回（最完整的工作流）
openclaw skill run kids-english-script-production --feishu-url "https://xxx.feishu.cn/wiki/xxx" --stage S2

# 6. 飞书模式：自定义源列和目标列名称
openclaw skill run kids-english-script-production --feishu-url "https://xxx.feishu.cn/wiki/xxx" --stage S1 --source-col "原始台词" --target-col "英文翻译" --output ./local_backup
```

## 输入输出对照样例

### 输入台词
```
Peter: Hey, do you want to see what I found?
Peter: Do you? Do you？
Vicky: Alex, look after your little brother！
Alex: He wants to be a train. He is not our little brother.
Peter: But... 万一火车很快，停不下来怎么办？
Vicky: Peter...
```

### 输出台词（S1）
```
Peter: Hey, guess what I found?
Peter: Wanna see? Wanna see?
Vicky: Alex, look at your little brother!
Alex: He wants to be a train.
Alex: Just let him be.
Peter: But...
Peter: I am the train! I can't stop!
Vicky: Peter...
```

### 样例解读
| 变化 | 说明 |
| ---- | ---- |
| `do you want to see` → `guess what` / `Wanna see` | 口语化替换，更符合儿童表达习惯 |
| `look after` → `look at` | 降低词汇难度（look after 对 S1 偏难） |
| `He is not our little brother` → `Just let him be` | 英语思维重构：不是逐词翻译，而是用孩子会说的方式表达同样的意思 |
| 一句拆两句：`He wants to be a train. He is not...` | 一句一意，符合 S1 句长要求 |
| 中文意群重构：`万一火车很快停不下来` → `I am the train! I can't stop!` | 不是翻译中文，而是用英语孩子的方式重新表达这个情境 |
| `Vicky: Peter...` 保持不变 | 忠实度：不新增不删减，语气词原样保留 |
