Lark-workflow-feishu-cli lark-im
飞书即时通讯:收发消息和管理群聊。发送和回复消息、搜索聊天记录、管理群聊成员、上传下载图片和文件、管理表情回复。当用户需要发消息、查看或搜索聊天记录、下载聊天中的文件、查看群成员时使用。
install
source · Clone the upstream repo
git clone https://github.com/liangdabiao/lark-workflow-feishu-cli
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/liangdabiao/lark-workflow-feishu-cli "$T" && mkdir -p ~/.claude/skills && cp -r "$T/.claude/skills/lark-im" ~/.claude/skills/liangdabiao-lark-workflow-feishu-cli-lark-im && rm -rf "$T"
manifest:
.claude/skills/lark-im/SKILL.mdsource content
im (v1)
CRITICAL — 开始前 MUST 先用 Read 工具读取
,其中包含认证、权限处理../lark-shared/SKILL.md
Core Concepts
- Message: A single message in a chat, identified by
(om_xxx). Supports types: text, post, image, file, audio, video, sticker, interactive (card), share_chat, share_user, merge_forward, etc.message_id - Chat: A group chat or P2P conversation, identified by
(oc_xxx).chat_id - Thread: A reply thread under a message, identified by
(om_xxx or omt_xxx).thread_id - Reaction: An emoji reaction on a message.
Resource Relationships
Chat (oc_xxx) ├── Message (om_xxx) │ ├── Thread (reply thread) │ ├── Reaction (emoji) │ └── Resource (image / file / video / audio) └── Member (user / bot)
Important Notes
Identity and Token Mapping
means user identity and uses--as user
. Calls run as the authorized end user, so permissions depend on both the app scopes and that user's own access to the target chat/message/resource.user_access_token
means bot identity and uses--as bot
. Calls run as the app bot, so behavior depends on the bot's membership, app visibility, availability range, and bot-specific scopes.tenant_access_token- If an IM API says it supports both
anduser
, the token type changes who the operator is. The same API can succeed with one identity and fail with the other because owner/admin status, chat membership, tenant boundary, or app availability are checked against the current caller.bot
Sender Name Resolution with Bot Identity
When using bot identity (
--as bot) to fetch messages (e.g. +chat-messages-list, +threads-messages-list, +messages-mget), sender names may not be resolved (shown as open_id instead of display name). This happens when the bot cannot access the user's contact info.
Root cause: The bot's app visibility settings do not include the message sender, so the contact API returns no name.
Solution: Check the app's visibility settings in the Lark Developer Console — ensure the app's visible range covers the users whose names need to be resolved. Alternatively, use
--as user to fetch messages with user identity, which typically has broader contact access.
Card Messages (Interactive)
Card messages (
interactive type) are not yet supported for compact conversion in event subscriptions. The raw event data will be returned instead, with a hint printed to stderr.
Shortcuts(推荐优先使用)
Shortcut 是对常用操作的高级封装(
lark-cli im +<verb> [flags])。有 Shortcut 的操作优先使用。
| Shortcut | 说明 |
|---|---|
| Create a group chat with bot identity; bot-only; creates private/public chats, invites users/bots, optionally sets bot manager |
| List messages in a chat or P2P conversation; user/bot; accepts --chat-id or --user-id, resolves P2P chat_id, supports time range/sort/pagination |
| Search visible group chats by keyword and/or member open_ids (e.g. look up chat_id by group name); user/bot; supports member/type filters, sorting, and pagination |
| Update group chat name or description; user/bot; updates a chat's name or description |
| Batch get messages by IDs; user/bot; fetches up to 50 om_ message IDs, formats sender names, expands thread replies |
| Reply to a message (supports thread replies) with bot identity; bot-only; supports text/markdown/post/media replies, reply-in-thread, idempotency key |
| Download images/files from a message; user/bot; downloads image/file resources by message-id and file-key to a safe relative output path |
| Search messages across chats (supports keyword, sender, time range filters) with user identity; user-only; filters by chat/sender/attachment/time, enriches results via mget and chats batch_query |
| Send a message to a chat or direct message with bot identity; bot-only; sends to chat-id or user-id with text/markdown/post/media, supports idempotency key |
| List messages in a thread; user/bot; accepts om_/omt_ input, resolves message IDs to thread_id, supports sort/pagination |
API Resources
lark-cli schema im.<resource>.<method> # 调用 API 前必须先查看参数结构 lark-cli im <resource> <method> [flags] # 调用 API
重要:使用原生 API 时,必须先运行
查看schema/--data参数结构,不要猜测字段格式。--params
chats
— 创建群。Identity:create
only (bot
).tenant_access_token
— 获取群信息。Identity: supportsget
anduser
; the caller must be in the target chat to get full details, and must belong to the same tenant for internal chats.bot
— 获取群分享链接。Identity: supportslink
anduser
; the caller must be in the target chat, must be an owner or admin when chat sharing is restricted to owners/admins, and must belong to the same tenant for internal chats.bot
— 获取用户或机器人所在的群列表。Identity: supportslist
anduser
.bot
— 更新群信息。Identity: supportsupdate
anduser
.bot
chat.members
— 将用户或机器人拉入群聊。Identity: supportscreate
anduser
; the caller must be in the target chat; forbot
calls, added users must be within the app's availability; for internal chats the operator must belong to the same tenant; if only owners/admins can add members, the caller must be an owner/admin, or a chat-creator bot withbot
.im:chat:operate_as_owner
— 获取群成员列表。Identity: supportsget
anduser
; the caller must be in the target chat and must belong to the same tenant for internal chats.bot
messages
— 撤回消息。Identity: supportsdelete
anduser
; forbot
calls, the bot must be in the chat to revoke group messages; to revoke another user's group message, the bot must be the owner, an admin, or the creator; for user P2P recalls, the target user must be within the bot's availability.bot
— 转发消息。Identity:forward
only (bot
).tenant_access_token
— 合并转发消息。Identity:merge_forward
only (bot
).tenant_access_token
— 查询消息已读信息。Identity:read_users
only (bot
); the bot must be in the chat, and can only query read status for messages it sent within the last 7 days.tenant_access_token
reactions
— 批量获取消息表情。Identity: supportsbatch_query
anduser
.Must-readbot
— 添加消息表情回复。Identity: supportscreate
anduser
; the caller must be in the conversation that contains the message.Must-readbot
— 删除消息表情回复。Identity: supportsdelete
anduser
; the caller must be in the conversation that contains the message, and can only delete reactions added by itself.Must-readbot
— 获取消息表情回复。Identity: supportslist
anduser
; the caller must be in the conversation that contains the message.Must-readbot
images
— 上传图片。Identity:create
only (bot
).tenant_access_token
pins
— Pin 消息。Identity: supportscreate
anduser
.bot
— 移除 Pin 消息。Identity: supportsdelete
anduser
.bot
— 获取群内 Pin 消息。Identity: supportslist
anduser
.bot
权限表
| 方法 | 所需 scope |
|---|---|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |