lark-cli
飞书官方 CLI 工具 (lark-cli),在终端中操作飞书。覆盖消息、文档、多维表格、电子表格、 日历、邮箱、任务、会议、审批等 12 大业务域,提供 200+ 命令。 当需要通过 CLI 方式操作飞书(而非飞书 OAuth API)时使用此 Skill。 触发词:"lark-cli"、"飞书CLI"、"飞书命令行"、"lark命令"。 适用场景: (1) 需要通过命令行执行飞书操作(发消息、
Files105
View on GitHub- lark-approval/1 files
- lark-attendance/1 files
- lark-base/93 files
- lark-calendar/9 files
- lark-contact/
- lark-doc/
- lark-drive/
- lark-event/
- lark-im/
- lark-mail/
- lark-markdown/
- lark-minutes/
- lark-okr/
- lark-openapi-explorer/
- lark-shared/
- lark-sheets/
- lark-skill-maker/
- lark-slides/
- lark-task/
- lark-vc/
- lark-vc-agent/
- lark-whiteboard/
- lark-wiki/
- lark-workflow-meeting-summary/
- lark-workflow-standup-report/
- templates/
- SKILL.md7.4 KB
SKILL.mdskills/lark-cli/SKILL.md
GitHub飞书官方 CLI (lark-cli)
版本: 1.0.3 | 仓库: https://github.com/larksuite/cli | 协议: MIT
安装与配置
# 安装(已完成)
npm install -g @larksuite/cli
# 调用方式
npx lark-cli <command>
初始配置(仅需一次)
# 1. 配置应用凭证(后台运行,会输出授权链接发给用户)
npx lark-cli config init --new
# 2. 登录授权(后台运行,会输出授权链接发给用户)
npx lark-cli auth login --recommend
# 3. 验证状态
npx lark-cli auth status
身份切换
所有命令支持 --as user 或 --as bot 切换身份:
npx lark-cli calendar +agenda --as user
npx lark-cli im +messages-send --as bot --chat-id "oc_xxx" --text "Hello"
三层命令体系
| 层级 | 前缀 | 说明 | 示例 |
|---|---|---|---|
| 快捷命令 | + |
人机友好,智能默认值 | lark-cli calendar +agenda |
| API 命令 | 无 | 平台同步,精选 100+ | lark-cli calendar calendars list |
| 通用调用 | api |
全 API 覆盖 2500+ | lark-cli api GET /open-apis/... |
核心命令速查
📅 日历 (calendar)
npx lark-cli calendar +agenda # 今日日程
npx lark-cli calendar +create --summary "会议" # 创建日程
npx lark-cli calendar +freebusy --user-ids "ou_xxx" # 忙闲查询
npx lark-cli calendar calendars list # 日历列表
💬 即时通讯 (im)
npx lark-cli im +messages-send --chat-id "oc_xxx" --text "Hello"
npx lark-cli im +messages-send --open-id "ou_xxx" --text "私聊"
npx lark-cli im chats list # 群列表
npx lark-cli im +messages-list --chat-id "oc_xxx" # 消息列表
npx lark-cli im +messages-search --query "关键词" # 搜索消息
npx lark-cli im +resource-download --message-id "om_xxx" --file-key "img_xxx" --type image
📄 文档 (docs)
npx lark-cli docs +create --title "标题" --markdown "# 内容"
npx lark-cli docs +read --doc-id "doc_xxx"
npx lark-cli docs +update --doc-id "doc_xxx" --markdown "# 新内容"
npx lark-cli docs +search --query "关键词"
📁 云空间 (drive)
npx lark-cli drive files list --folder-token ""
npx lark-cli drive files upload --file-path "/local/file.pdf"
npx lark-cli drive files download --file-token "xxx" --output-path "/local/"
📊 多维表格 (base)
npx lark-cli base +tables-list --app-token "xxx"
npx lark-cli base +records-list --app-token "xxx" --table-id "xxx"
npx lark-cli base +records-create --app-token "xxx" --table-id "xxx" --fields '{"字段":"值"}'
📈 电子表格 (sheets)
npx lark-cli sheets +read --spreadsheet-token "xxx"
npx lark-cli sheets +write --spreadsheet-token "xxx" --values '[[1,2],[3,4]]'
npx lark-cli sheets +append --spreadsheet-token "xxx" --values '[[5,6]]'
npx lark-cli sheets +export --spreadsheet-token "xxx" --format xlsx
✅ 任务 (task)
npx lark-cli task +tasks-list
npx lark-cli task +create --summary "任务标题"
npx lark-cli task +update --task-guid "xxx" --completed true
📚 知识库 (wiki)
npx lark-cli wiki spaces list
npx lark-cli wiki nodes list --space-id "xxx"
npx lark-cli wiki nodes get --token "xxx"
👤 通讯录 (contact)
npx lark-cli contact +search-user --query "姓名"
npx lark-cli contact +get-user --user-id "ou_xxx"
📧 邮箱 (mail)
npx lark-cli mail +list
npx lark-cli mail +search --query "关键词"
npx lark-cli mail +send --to "user@example.com" --subject "标题" --body "内容"
✍️ 审批 (approval)
npx lark-cli approval +list-tasks
npx lark-cli approval +approve --instance-id "xxx"
npx lark-cli approval +reject --instance-id "xxx"
通用参数
--format json|pretty|table|ndjson|csv # 输出格式(默认 json)
--page-all # 自动翻页获取所有数据
--page-limit N # 最多 N 页
--dry-run # 预览请求,不实际执行
--no-wait # Agent 模式,立即返回不阻塞
Schema 查询(探索 API)
npx lark-cli schema # 所有 API
npx lark-cli schema calendar.events.create # 指定 API 详情
通用 API 调用
npx lark-cli api GET /open-apis/calendar/v4/calendars
npx lark-cli api POST /open-apis/im/v1/messages \
--params '{"receive_id_type":"chat_id"}' \
--body '{"receive_id":"oc_xxx","msg_type":"text","content":"{\"text\":\"Hello\"}"}'
多维表格 (base) 完整命令
# 字段管理
lark-cli base +field-create --base-token <token> --table-id <tid> --json '{"type":"text","name":"字段名"}'
lark-cli base +field-list --base-token <token> --table-id <tid>
# 记录管理
lark-cli base +record-get --base-token <token> --table-id <tid> --record-id <rid>
lark-cli base +record-list --base-token <token> --table-id <tid> --limit 50
lark-cli base +record-upsert --base-token <token> --table-id <tid> --record-id <rid> --json '{"字段":"值"}'
lark-cli base +record-batch-create --base-token <token> --table-id <tid> --json '{"fields":["f1","f2"],"rows":[["v1","v2"]]}'
lark-cli base +record-delete --base-token <token> --table-id <tid> --record-id <rid> --yes
# 附件管理
lark-cli base +record-upload-attachment --base-token <token> --table-id <tid> --record-id <rid> --field-id <fid> --file "filename.png"
常见陷阱
1. 参数名是 --base-token,不是 --base
# ❌ lark-cli base +record-list --base xxx
# ✅ lark-cli base +record-list --base-token xxx
2. --name 参数已废弃
上传附件时不传 --name,文件名自动使用本地文件名。
3. 附件上传必须用相对路径
必须先 cd 到文件目录,再用 --file "filename.png"(不要用绝对路径)。
4. upsert 的行为差异
- 带
--record-id→ 更新已有记录 - 不带
--record-id→ 创建新记录
5. Python subprocess 的 PATH 问题
lark-cli 是 Node.js 脚本,子进程不继承 shell 环境。必须传 PATH:
import os
env = os.environ.copy()
env['PATH'] = '/opt/homebrew/bin:' + env.get('PATH', '')
subprocess.run(["lark-cli", ...], env=env)
6. 删除必须加 --yes
不加会阻塞等待交互确认,在脚本/子进程场景会挂起。
注意事项
- 安全:操作会以用户身份执行,写操作前建议先用
--dry-run预览 - 超时:CLI 命令建议设置
timeout=30,批量操作设timeout=120 - 授权:首次使用需完成
config init+auth login,结果存储在系统密钥链中 - 环境:不需要额外 API Key,通过 OAuth 登录获取权限