--- name: feishu-script-writer description: > 将儿童互动英语剧本写入飞书电子表格,支持8列标准格式、知识点富文本标注(粗体/红色)、 分段续写和新建Sheet。替代此前在对话框中发送表格的交付方式。 **触发场景:** (1) 剧本撰写完成需要输出到飞书表格供编剧审阅 (2) 需要在已有表格中续写新的「起/承/转/合」段落 (3) 用户提到「发到飞书表格」「更新表格」「写到表格里」 --- # 飞书剧本表格输出技能 ## 概述 将儿童互动英语剧本以8列标准格式写入飞书电子表格,支持知识点富文本标注,实现与编剧的实时协作编辑。 ## 工具 使用 `scripts/feishu_sheet_writer.py` Python 脚本,通过飞书 Sheets V2 API + Bot 身份操作。 --- ## 工作流 ### Step 1:创建表格(首次使用时) 为每个 Unit 创建一个电子表格: ```bash python3 scripts/feishu_sheet_writer.py create --title "U22 剧本" --credential xiaobian ``` 返回 `{"token": "...", "url": "...", "title": "..."}`,记录 token 和 url。 ### Step 2:创建 Sheet(每段剧本一个 Sheet) 为每个「起/承/转/合」创建独立 Sheet(方便编剧按段落审阅): ```bash python3 scripts/feishu_sheet_writer.py create-sheet \ --token --title "U22_L1_起" --credential xiaobian ``` 返回 `{"sheet_id": "...", "title": "..."}`,记录 sheet_id。 ### Step 3:写入剧本数据 将剧本数据保存为临时 JSON 文件,然后写入: ```bash python3 scripts/feishu_sheet_writer.py write \ --token --sheet \ --data /tmp/script_data.json --credential xiaobian ``` ### Step 4:追加后续内容 在已有 Sheet 中续写新的桥段: ```bash python3 scripts/feishu_sheet_writer.py append \ --token --sheet \ --data /tmp/new_data.json --start-row --credential xiaobian ``` --- ## 数据格式(JSON) ```json { "knowledge_points": ["afternoon", "adventure", "store", "add", "double", "sweet"], "rows": [ ["类型", "配置信息", "剧情描述", "角色名", "编剧台词", "英文台词", "组件配置", "知识点"], ["TL", "", "【场景】沙漠镇公交站\n【角色】User、Vicky、Peter、Eva", "", "", "", "", ""], ["", "", "Dad窝在扶手椅里。\n【emoji】Dad😌", "", "", "", "", ""], ["", "", "", "Dad", "We have the whole **afternoon**, dear.", "", "", ""], ["对话互动", "", "", "User", {"text": "Can we read the space **adventure**?", "is_user": true}, "", "", ""] ] } ``` ### 格式说明 - **前4列(类型/剧情描述/角色名/编剧台词)**:编剧填写 - **后4列(配置信息/英文台词/组件配置/知识点)**:预留空列 - **每行代表一个剧本单元格** - **普通文本**:直接用字符串,知识点用 `**文字**` 标记 - **User台词**:使用对象格式 `{"text": "...", "is_user": true}` 标记知识点为粗体+红色(#f54a45) - **NPC台词**:知识点自动识别为粗体(普通文本中的 `**文字**` 会自动转为粗体) ### 知识点自动格式化规则 1. NPC台词(D列非User):知识点 → **粗体** 2. User台词(D列=User,E列含知识点):知识点 → **粗体+红色(#f54a45)** 3. C列(剧情描述):纯文本,不做知识点标注 --- ## 表格结构规范 | 列序 | 列名 | 填写人 | 说明 | |------|------|--------|------| | A | 类型 | 编剧 | TL / 对话互动 / 图片互动-单选 等 | | B | 配置信息 | 保留 | 编剧不填 | | C | 剧情描述 | 编剧 | 场景/动作/音效/emoji标注 | | D | 角色名 | 编剧 | 英文角色名(User / Dad 等) | | E | 编剧台词 | 编剧 | 英文台词,知识点粗体/红色 | | F | 英文台词 | 保留 | 编剧不填 | | G | 组件配置 | 保留 | 编剧不填 | | H | 知识点 | 保留 | 编剧不填 | --- ## 协作模式 1. **小编写入**:剧本完成后写入表格,知识点已做富文本标注 2. **编剧编辑**:编剧直接在表格中修改台词、调整剧情描述 3. **小编续写**:使用 append 模式追加新内容,不覆盖编剧的修改 4. **版本追踪**:每个 Sheet 独立,起承转合各自演进 ## 注意事项 - 写入前确认 spreadsheet_token 和 sheet_id 正确 - append 时确保 start_row 不覆盖已有内容(可用 lark-cli `+read` 确认当前行数) - 首次写入一个 Sheet 使用 write(覆盖模式),后续使用 append(追加模式)