---
name: script-post-check
description: 剧本英文台词后处理复核。纯代码规则链，逐项检查 F 列英文台词，零 LLM 参与。触发方式：消息包含"剧本复核"或"/剧本复核"。支持指定规则、查看规则列表。典型场景：英文台词生产完成后人工触发复核，或对任意剧本独立跑标点/长句检查。
---

# 剧本复核（script-post-check）

## 定位

英文台词生产的**第3步：代码规则复核**。不依赖 AI，全部由确定性规则执行，零误判。

```
英文台词/skills/
├── kids-english-script-production/   ← 第1步：AI 创作
├── feishu-table-translate-fill/      ← 第2步：I/O 回填
└── script-post-check/                ← 第3步：人工触发复核（本技能）
```

**触发方式：人工显式触发，绝不自动运行。**

## 触发词

| 触发词 | 效果 |
|--------|------|
| `剧本复核` + 飞书链接 | 对指定文档 F 列执行**全部规则** |
| `/剧本复核` + 飞书链接 | 同上 |
| `剧本复核 --rule 长句拆分` + 链接 | 只跑长句拆分 |
| `剧本复核 --rule 标点检查` + 链接 | 只跑标点检查 |
| `剧本复核 --list` | 列出当前所有可用规则 |

## 规则链

每个规则独立执行，互不影响。新增规则只需在规则链中追加，不影响已有规则。

### 规则1：长句拆分

**定义：** 同时满足以下两个条件即为长句，需要拆分：
1. 一行超过 1 句话
2. 所有句子单词总数 ≥ 7

**拆分方法：**
- 从第一句开始累加单词数，累加到 ≥7 时停止
- 已累加的句子保留在原行
- 剩余句子移到下一行（先插入空白行，再写入）

**示例：**
```
原文：I was not worried. You know him. Always on time.    （3句，10词）
保留：I was not worried. You know him.                     （2句，7词）
拆分：Always on time.                                      （1句，3词）
```

### 规则2：标点检查

逐行检查以下标点问题并自动修正：

| 检查项 | 规则 | 修正 |
|--------|------|------|
| `?!` 连用 | 句末同时出现 `?` 和 `!` | 根据句义保留一个：疑问语气保留 `?`，感叹语气保留 `!` |
| 全角标点 | 英文中出现 `！` `？` `，` `。` | 替换为半角 `!` `?` `,` `.` |
| 多余感叹号 | `!!` `!!!` 等连续感叹号 | 归一为单个 `!` |
| Markdown 残留 | `**` `__` `*` 等标记 | 清除 |

## 执行流程

```
用户发送 "剧本复核 <飞书链接>"
    │
    ├── 1. 解析飞书链接 → 获取文档 → 定位内嵌 Sheet
    ├── 2. 读取 F 列全部内容（含行号）
    ├── 3. 按规则链顺序执行：
    │     ├── 规则1：长句拆分（如需插入行，从下往上处理）
    │     └── 规则2：标点检查（逐行扫描 + 修正）
    ├── 4. 输出操作报告
    └── 5. 回读验证
```

## 输出格式

执行完成后输出结构化报告：

```
📋 剧本复核报告 — L1-S2-U21-L1 寻人启事

| 规则 | 检查行数 | 发现问题 | 已修正 |
|------|---------|---------|--------|
| 长句拆分 | 112 | 3 | 3 ✅ |
| 标点检查 | 112 | 1 | 1 ✅ |

📝 操作明细：

【长句拆分】
  第9行：I was not worried. You know him. Always on time.
    → 保留：I was not worried. You know him.
    → 拆分：Always on time.
  第190行：We said we would help a Pioneer. And we... we could not find him.
    → 保留：We said we would help a Pioneer.
    → 拆分：And we... we could not find him.
  第217行：These are not sunglasses! These are your glasses! They are just dirty!
    → 保留：These are not sunglasses! These are your glasses!
    → 拆分：They are just dirty!

【标点检查】
  第14行：Logi is lost?! → Logi is lost!（感叹语气，保留!）
```

## 技术实现

核心脚本：`scripts/check.py`

```bash
# 执行全部规则
python3 scripts/check.py --url "https://makee-interactive.feishu.cn/wiki/xxx"

# 执行指定规则
python3 scripts/check.py --url "https://..." --rule 长句拆分
python3 scripts/check.py --url "https://..." --rule 标点检查

# 列出可用规则
python3 scripts/check.py --list
```

## 依赖

- `feishu-embedded-sheet`：读写飞书文档内嵌 Sheet（Bot 身份）
- Python 3，标准库 + `requests`

## 权限要求

Bot 应用需对目标文档有编辑权限。
