Lark/Feishu API integration for messaging, group management, contacts, and calendar. Use this skill to send messages, manage chats, query contacts, and sync calendar events with Lark/Feishu.
/plugin marketplace add vm0-ai/api0/plugin install api0@api0This skill inherits all available tools. When active, it can use any tool Claude has access to.
scripts/lark.shComplete Lark/Feishu integration for enterprise collaboration, including messaging, group management, contacts, and calendar.
Set the following environment variables:
export LARK_APP_ID=cli_xxxxx
export LARK_APP_SECRET=xxxxx
Get your credentials from: https://open.larkoffice.com/
Enable these API scopes in your Lark app:
im:message - Send and read messagesim:chat - Manage group chatscontact:user.base:readonly - Read contactscalendar:calendar - Manage calendarsThe script supports 6 modules: auth, message, chat, contact, calendar, bot
Obtain and cache tenant access token.
scripts/lark.sh auth
Token is cached to /tmp/lark/token.json and reused until expiration.
scripts/lark.sh message send --to "ou_xxx" --type "open_id" --text "Hello World"
scripts/lark.sh message send --to "oc_xxx" --type "chat_id" --text "Group message"
| Parameter | Required | Default | Description |
|---|---|---|---|
| --to | Yes | - | Recipient ID (user or chat) |
| --type | No | open_id | ID type: open_id, user_id, union_id, email, chat_id |
| --text | Yes* | - | Text message content |
scripts/lark.sh message send --to "ou_xxx" --type "open_id" --post '{
"zh_cn": {
"title": "Title",
"content": [[{"tag": "text", "text": "Content"}]]
}
}'
scripts/lark.sh message send --to "oc_xxx" --type "chat_id" --card '{
"header": {"title": {"tag": "plain_text", "content": "Alert"}},
"elements": [{"tag": "div", "text": {"tag": "plain_text", "content": "Message"}}]
}'
scripts/lark.sh message reply --message-id "om_xxx" --text "Reply content"
scripts/lark.sh message list --chat-id "oc_xxx" --limit 20
scripts/lark.sh chat create --name "Project Team" --members "ou_xxx,ou_yyy"
| Parameter | Required | Default | Description |
|---|---|---|---|
| --name | Yes | - | Group name |
| --members | No | - | Comma-separated member IDs |
| --description | No | - | Group description |
scripts/lark.sh chat list
scripts/lark.sh chat info --chat-id "oc_xxx"
scripts/lark.sh chat add-member --chat-id "oc_xxx" --members "ou_xxx,ou_yyy"
scripts/lark.sh chat remove-member --chat-id "oc_xxx" --members "ou_xxx"
scripts/lark.sh contact user --user-id "ou_xxx" --type "open_id"
| Parameter | Required | Default | Description |
|---|---|---|---|
| --user-id | Yes | - | User ID |
| --type | No | open_id | ID type: open_id, user_id, union_id |
scripts/lark.sh contact search --query "John"
scripts/lark.sh contact departments --parent-id "0"
scripts/lark.sh contact members --department-id "xxx"
scripts/lark.sh calendar list
scripts/lark.sh calendar create-event --calendar-id "xxx" --summary "Team Meeting" --start "2025-01-15T10:00:00+08:00" --end "2025-01-15T11:00:00+08:00" --description "Weekly sync"
| Parameter | Required | Default | Description |
|---|---|---|---|
| --calendar-id | Yes | - | Calendar ID |
| --summary | Yes | - | Event title |
| --start | Yes | - | Start time (ISO 8601) |
| --end | Yes | - | End time (ISO 8601) |
| --description | No | - | Event description |
scripts/lark.sh calendar events --calendar-id "xxx" --start "2025-01-01T00:00:00+08:00" --end "2025-01-31T23:59:59+08:00"
scripts/lark.sh bot info
Returns bot name, open_id, and capabilities.
| Type | Parameter | Example |
|---|---|---|
| Text | --text | --text "Hello" |
| Rich Text | --post | --post '{"zh_cn":{"title":"..."}}' |
| Image | --image | --image "img_xxx" |
| Card | --card | --card '{"header":...}' |
scripts/lark.sh message send --to "oc_xxx" --type "chat_id" --card '{
"header": {
"title": {"tag": "plain_text", "content": "System Alert"},
"template": "red"
},
"elements": [{
"tag": "div",
"text": {"tag": "lark_md", "content": "**Error:** Service down"}
}]
}'
scripts/lark.sh chat create --name "Q1 Project" --members "ou_abc,ou_def,ou_ghi" --description "Q1 project discussion"
# Get root departments
scripts/lark.sh contact departments --parent-id "0"
# Get members in a department
scripts/lark.sh contact members --department-id "od_xxx"
scripts/lark.sh calendar create-event --calendar-id "primary" --summary "Sprint Planning" --start "2025-01-20T09:00:00+08:00" --end "2025-01-20T10:30:00+08:00" --description "Sprint 5 planning session"
auth to refresh if expired.