← ClaudeAtlas

feishu-doc-editinglisted

飞书云文档(lark-cli)编辑操作 skill。覆盖文档增删改查的核心循环:fetch(with-ids) -> 定位 block_id -> block_insert_after/block_replace/str_replace -> fetch 验证;含 whiteboard SVG 图表插入/更新、评论读取、classifier 阻塞时的 fallback。汇总实际踩坑(fragment 泄漏、@file 仅 --content、block_replace 触发 ol seq 重编号、ok:true≠生效、半角!)。触发词:编辑飞书文档 / 飞书文档插入 / block_insert_after / block_replace / str_replace / 飞书图表 / whiteboard / 飞书评论 / lark-cli。
qiaoxuelin/mobile-game-research-toolkit · ★ 1 · AI & Automation · score 72
Install: claude install-skill qiaoxuelin/mobile-game-research-toolkit
# 飞书云文档编辑(lark-cli) 本 skill 封装飞书云文档的编辑操作流程与踩坑。**飞书是研究交付面**(专题报告/选题跟踪等交付物在飞书维护),本地只存过程与快照。需要编辑飞书文档时按本 skill 操作。 **前置**:安装 `@larksuite/cli`(`npm i -g @larksuite/cli`,提供 `lark-cli` 命令;⚠ 不是 `npm i -g lark-cli`,那是另一个不相关的 0.1.0 包)+ `lark-cli auth` 完成飞书 OAuth 授权。 lark-cli 1.0.66+:`docs +update` 操作名走 `--command <op>` flag(非 positional)。以 `lark-cli docs +update --help` 为准。 ## 1. 核心编辑循环(必遵) **凡写操作后必须 fetch 验证**--lark-cli 对 block_id 不存在/str_replace 0 命中 都返回 `"ok": true`(API 调用成功≠实际生效)。 ``` 1. fetch: lark-cli docs +fetch --doc <token> --doc-format xml --detail with-ids 2. 定位: 从返回 XML 正则提 block_id(<h2|p|table|li ... id="doxcn...">) 3. 写: lark-cli docs +update --doc <token> --command <op> --block-id <id> --content @file.xml 4. 验证: 再 fetch,核对实际文本/块结构(repr() 看精确字符、数 <tr>/<b> 行数) ``` - `--doc` 接文档 URL 或 token;wiki 页 token = obj_token/docx token(如 `doxcnABcdEFghIJklMNopQRst`,用 `docs +fetch` 时传此 token)。 - 写脚本统一 `os.chdir` 到脚本目录,`--content @file.xml` 用相对路径(绝对路径报 `unsafe file path`)。 - `--detail with-ids` 必带,否则拿不到 block_id。 ## 2. 四种写操作选型 | 指令 | 用途 | 关键点 | |---|---|---| | `block_insert_after` | 在锚点 block 后插新内容 | 多块 XML **不包 `<fragment>`**(见踩坑①);`@file` 读多块 | | `block_replace` | 整块替换 | 替换后旧 block_id 失效,继续 block 操作前重新 fetch;替换 `<li>` 触发 ol seq 重编号(rev 大跳,结构完好) | | `str_replace` | 行内文本替换 | `--pattern` **inline 字符串**,不支持 @file(见踩坑②);不能跨 block/段落;XML 模式只行内 | | `block_delete` | 删块 | leaf 块(p/h/li)可删;逗号分隔批量;ol 内删 li 会塌缩 | **选型原则**:外科式 1-2 处文本修补用 `str_replace`(带 `--block-id` 限块内);整段/整表重