lark-workflow-doc-perm

Installation
SKILL.md

文档权限管家工作流

CRITICAL — 开始前 MUST 先用 Read 工具读取 ../lark-shared/SKILL.md,其中包含认证、权限处理

适用场景

  • "把文档XXX分享给张三、李四,可编辑" / "设置文档权限"
  • "项目文档权限批量设置:工程组只读,产品组可编辑" / "批量授权"
  • "把这篇文档的编辑权限给整个团队" / "文档权限管理"
  • "分享文档给团队" / "文档权限配置"

前置条件

需要 user 身份(操作自己文档的权限)和 bot 身份(发消息通知)。执行前确保已授权:

lark-cli auth login --domain drive,wiki,contact,im

工作流

{文档 URL 或 file_token + 授权人列表 + 权限级别}
  ├── [wiki 链接] wiki spaces get_node ──► 解析真实 token + obj_type
  ├── drive permission.members create ──► 批量授权(逐个,间隔 1s)
  └── im +messages-send ────────────────► 通知被授权用户

Step 1: 解析文档 token

wiki 链接处理

如果用户提供的是知识库链接(https://xxx.feishu.cn/wiki/xxx),先解析获取真实文档 token:

lark-cli wiki spaces get_node \
  --params '{"token":"<wiki_token>"}' \
  --as user

从返回结果中提取 obj_token(真实文档 token)和 obj_type(文档类型)。

直接 token

如果用户直接提供了文档 token(doccnXXXsheetXXXbascnXXX 等),可直接使用。

确定文档类型

obj_type 说明 type 参数
docx 新版文档 docx
sheet 电子表格 sheet
bitable 多维表格 bitable
doc 旧版文档 doc
mindnote 思维导图 mindnote
file 文件 file

Step 2: 查找授权目标用户

lark-cli contact +search-user --query "<用户姓名>" --as user

记录每个用户的 open_id。支持批量查找多个用户。

Step 3: 设置权限

查看参数结构

lark-cli schema drive.permission.members.create

逐个授权

对每个用户调用一次(间隔 1 秒,避免频率限制):

lark-cli drive permission.members create \
  --params '{"token":"<file_token>","type":"<doc_type>"}' \
  --data '{
    "member_type": "openid",
    "member_id": "ou_xxx",
    "perm": "edit"
  }' \
  --as user

权限级别:

perm 值 说明 适用场景
full_access 完整权限 文档管理员、核心协作者
edit 可编辑 需要修改文档的协作者
view 只读 仅需查看的成员

按角色批量设置示例

# 工程组:只读
for user_id in "ou_aaa" "ou_bbb" "ou_ccc"; do
  lark-cli drive permission.members create \
    --params '{"token":"<file_token>","type":"docx"}' \
    --data "{\"member_type\":\"openid\",\"member_id\":\"$user_id\",\"perm\":\"view\"}" \
    --as user
  sleep 1
done

# 产品组:可编辑
for user_id in "ou_ddd" "ou_eee"; do
  lark-cli drive permission.members create \
    --params '{"token":"<file_token>","type":"docx"}' \
    --data "{\"member_type\":\"openid\",\"member_id\":\"$user_id\",\"perm\":\"edit\"}" \
    --as user
  sleep 1
done

重要

  • 设置 full_access 前必须与用户确认(安全规则)
  • 每次调用间隔至少 1 秒
  • 如果提示"无权限操作",需要确认当前用户是文档所有者或管理员

Step 4: 通知被授权用户

lark-cli im +messages-send \
  --user-id "<user_open_id>" \
  --markdown "已为您开通文档「{文档标题}」的{权限级别}权限。

文档链接:{文档URL}

如有问题,请联系文档管理员。" \
  --as bot

注意:通知消息间隔 1 秒发送。如果授权人数超过 20 人,分批发送。

降级策略

场景 降级方案
wiki 链接解析失败 询问用户直接提供文档 token
用户查不到 提示确认姓名,或直接使用 open_id
权限设置失败 检查当前用户是否有文档管理权限
通知发送失败 列出已授权用户,让用户手动通知
频率限制 降低速度到每 2 秒一次

权限表

命令 所需 scope
wiki spaces get_node wiki:node:read
contact +search-user contact:user.base:readonly
drive permission.members create drive:drive:write
im +messages-send im:message

参考

Weekly Installs
2
GitHub Stars
20
First Seen
Apr 13, 2026