AgentStack
SKILL verified MIT Self-run

Feishu Doc Editing

skill-qiaoxuelin-mobile-game-research-toolkit-feishu-doc-editing · by qiaoxuelin

飞书云文档(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。

No reviews yet
0 installs
4 views
0.0% view→install

Install

$ agentstack add skill-qiaoxuelin-mobile-game-research-toolkit-feishu-doc-editing

✓ scanned · ✓ verified — works with Claude Code, Cursor, and more.

Security review

✓ Passed

No issues found. Passed automated security review. · v0.1.0 How review works →

  • Prompt-injection patterns
  • Secret / credential exfiltration
  • Dangerous shell & filesystem operations
  • Untrusted network calls
  • Known-malicious package signatures

What it can access

  • Network access Used
  • Filesystem access Used
  • Shell / process execution Used
  • Environment & secrets No
  • Dynamic code execution No

From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.

Are you the author of Feishu Doc Editing? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

飞书云文档编辑(lark-cli)

本 skill 封装飞书云文档的编辑操作流程与踩坑。飞书是研究交付面(专题报告/选题跟踪等交付物在飞书维护),本地只存过程与快照。需要编辑飞书文档时按本 skill 操作。

前置:安装 @larksuite/clinpm 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 flag(非 positional)。以 lark-cli docs +update --help 为准。

1. 核心编辑循环(必遵)

凡写操作后必须 fetch 验证--lark-cli 对 blockid 不存在/strreplace 0 命中 都返回 "ok": true(API 调用成功≠实际生效)。

1. fetch:  lark-cli docs +fetch --doc  --doc-format xml --detail with-ids
2. 定位:   从返回 XML 正则提 block_id()
3. 写:     lark-cli docs +update --doc  --command  --block-id  --content @file.xml
4. 验证:   再 fetch,核对实际文本/块结构(repr() 看精确字符、数 / 行数)
  • --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 **不包 `**(见踩坑①);@file 读多块 | | blockreplace | 整块替换 | 替换后旧 block_id 失效,继续 block 操作前重新 fetch;替换 触发 ol seq 重编号(rev 大跳,结构完好) | | strreplace | 行内文本替换 | --pattern **inline 字符串**,不支持 @file(见踩坑②);不能跨 block/段落;XML 模式只行内 | | block_delete` | 删块 | leaf 块(p/h/li)可删;逗号分隔批量;ol 内删 li 会塌缩 |

选型原则:外科式 1-2 处文本修补用 str_replace(带 --block-id 限块内);整段/整表重写用 block_replace;新增章节用 block_insert_after

3. 多块 XML 插入格式

block_insert_after --content @file.xml,文件内裸多块、不包 fragment

章节标题
正文,粗体内联。
表1 标题

  列头...
  单元格...

有序项
  • 块无需 id(自动生成);` 无需 seq`(ol 管理)。
  • ` 是真粗体元素;` 可空(self-closing)。
  • 链接 内联可用。

4. whiteboard SVG 图表

图表 = Python 生成 SVG -> lark-cli whiteboard 插入/更新飞书画板 -> 文档里 `` 内嵌。

# 新建画板(插文档):block_insert_after --content 'SVG内容'
# 更新已有画板(保 token):
lark-cli whiteboard +update --whiteboard-token  --input_format svg --source @chart.svg --overwrite
# 验证渲染:
lark-cli whiteboard +query --whiteboard-token  --output_as raw   # 数 data.nodes(非 SVG 标签)

踩坑③ 图表渲染

  • 插 SVG 用**纯 `**,勿包 `(会泄漏开闭标签成 2 垃圾段)。
  • 折线图用**逐段 `**,避顶点 r=8 圆弧扭曲(多点 /` 都中招)。
  • 验证渲染看 data.nodes 数组按 type 统计(textshape/connector/compositeshape),10+柱折线图约 40-80 节点=完整;/` 标签**(query 返 JSON 非 SVG)。

5. 评论读取

lark-cli drive file.comments list --file-token  --file-type docx --page-all
  • 返回 data.items[],每条含 comment_id/quote(引用的文档原文)/reply_list.replies[]/user_id(open_id)/is_solved
  • 回复正文在 reply.content.elements[].text_run.text(可能是 string 或 {content:...},两种都要处理)。
  • 评论者 open_id 经 lark-cli contact +get-user --user-id --user-id-type open_id 解析姓名。

6. classifier 阻塞 fallback

Claude Code 的 classifier 间歇阻塞 Bash/PowerShell 写操作(报 "auto mode cannot determine safety",只读命令仍可用),可持续 15+ 分钟。

  • Fallback:用 Write 工具写 python 脚本完成全部 lark-cli 操作,让用户用 半角 ! 前缀在 session 跑--! 命令不经工具审批、绕过 classifier。
  • 踩坑④! 必须半角 ASCII !(U+0021);用户打全角中文 (U+FF01) 不识别,消息走纯文本、命令不执行。指导用户时明确强调"半角!"。
  • python 调 lark-cli:Windows 上 lark-cli 是 .cmd shim,subprocessshutil.which("lark-cli") + shell=True,否则 WinError 2
  • 也可直接重试 lark-cli 命令(classifier 会恢复),简单单条命令比重试不透明的批量脚本更易通过。

7. 踩坑速查

| # | 坑 | 正确做法 | |---|---|---| | ① | ` 包裹多块 XML | 三宗罪:开闭标签泄漏成2段 + 内联压成空1×1壳 + 内联字面化成<b>。**裸多块不包裹** | | ② | str_replace --pattern @file | @file 被当字面量字符串匹配、0命中但 ok:true。**只有 --content 支持 @file**;--pattern 用 inline 双引号字符串(中文///./空格在 cmd.exe 双引号内安全,避开!) | | ②b | str_replace 跨 边界 | pattern 须落在单个 run 内,跨粗体边界易失败。跨段/跨块改用 block_replace | | ③ | whiteboard 折线扭曲/fragment泄漏 | 逐段;纯不包fragment;验证数 nodes 非 SVG 标签 | | ④ | 全角不执行 | 强调半角! | | ⑤ | block_replace 后 rev 大跳 | 触发 ol seq 重编号,结构完好,继续操作前重新 fetch(旧 id 失效) | | ⑥ | ok:true ≠ 生效 | 凡写后必 fetch 核对实际文本/行数/真假(<b>=字面坏,`=真好) |

8. 不做的事

  • 不在不 fetch 的情况下假设写操作生效(ok:true 骗人)。
  • 不用 `` 包多块。
  • 不用 --pattern @file
  • 不重试不透明的批量脚本等 classifier(改用单条命令或 ! fallback)。

Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet — be the first.

Versions

  • v0.1.0 Imported from the upstream source.