Install
openclaw skills install feishu-toolkitComplete Feishu (Lark) integration toolkit for AI agents. Read/write documents, fetch chat history, send files & screenshots, manage permissions, and create...
openclaw skills install feishu-toolkitA comprehensive Feishu (Lark) integration skill for AI agents. Covers 6 major capabilities:
im:message:send_as_bot — Send messagesim:resource — Upload files/imagesdocx:document — Read/write documentsdrive:permission — Manage permissions (optional)FEISHU_APP_ID and FEISHU_APP_SECRET environment variablesAll API calls use Feishu's tenant access token:
import requests
def get_tenant_token(app_id, app_secret):
r = requests.post(
'https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internal',
json={'app_id': app_id, 'app_secret': app_secret}
)
return r.json()['tenant_access_token']
# Fetch document content as Markdown
# Supports: doc, docx, sheet, bitable, wiki
GET /open-apis/docx/v1/documents/{document_id}/raw_content
POST /open-apis/docx/v1/documents
Body: {"title": "My Document"}
# Overwrite entire document content with Markdown
POST /open-apis/docx/v1/documents/{document_id}/blocks/batch_update
For documents exceeding LLM output limits:
doc_tokenWiki URLs need to be resolved to actual document tokens first:
POST /open-apis/wiki/v2/spaces/get_node
Body: {"token": "wiki_token"}
# Returns the actual doc_token and doc_type
Fetch and summarize messages from a Feishu group chat.
# GET /open-apis/im/v1/messages
params = {
'container_id_type': 'chat',
'container_id': chat_id,
'page_size': 50
}
| Type | Handling |
|---|---|
text | Extract .body.content JSON → text field |
interactive | Extract text nodes from elements array |
image | Note as [图片] |
system | Filter out unless relevant |
If has_more=true, fetch more pages using page_token. Default: 50 messages per page.
Send files to Feishu chats via REST API.
# POST /open-apis/im/v1/files
headers = {'Authorization': f'Bearer {token}'}
data = {'file_type': 'stream', 'file_name': 'filename.ext'}
files = {'file': ('filename.ext', open(path, 'rb'), 'application/octet-stream')}
Supported file_type: opus, mp4, pdf, doc, xls, ppt, stream (generic)
# POST /open-apis/im/v1/messages
json = {
'receive_id': chat_id,
'msg_type': 'file',
'content': json.dumps({'file_key': file_key})
}
Capture macOS screenshots and send to Feishu.
# 1. Capture screenshot
SCREENSHOT_PATH="$TMPDIR/screenshot_$(date +%s).png"
screencapture -x "$SCREENSHOT_PATH"
# 2. Upload image
# POST /open-apis/im/v1/images
# data: image_type=message, file=screenshot
# 3. Send image message
# POST /open-apis/im/v1/messages
# msg_type: image, content: {"image_key": "..."}
Note: Use
$TMPDIRnot/tmpon macOS.
Manage document/file permissions.
| Action | Description |
|---|---|
list | List all collaborators |
add | Add collaborator with permission level |
remove | Remove a collaborator |
doc, docx, sheet, bitable, folder, file, wiki, mindnote
email, openid, userid, unionid, openchat, opendepartmentid
| Level | Description |
|---|---|
view | View only |
edit | Can edit |
full_access | Full access (can manage permissions) |
# POST /open-apis/drive/v1/permissions/{token}/members
params = {'type': 'docx'}
json = {
'member_type': 'email',
'member_id': 'user@company.com',
'perm': 'edit'
}
Note: Permission management is sensitive. Use with caution.
Create recurring scheduled reminders to Feishu chats.
Always confirm with the user:
cron add \
--name "<task_name>" \
--every "<interval>" \
--session main \
--system-event "[CRON] <task_name>. Send message to Feishu: '<reminder_content>'"
| Interval | Description |
|---|---|
1m | Every minute |
5m | Every 5 minutes |
30m | Every 30 minutes |
1h | Every hour |
*/30 * * * * | Cron expression (with --tz) |
cron list # List all tasks
cron edit <id> # Edit task
cron rm <id> # Delete (ask user first!)
cron runs --id <id> # View execution history
cron run <id> # Manual trigger
| API | Method | Path |
|---|---|---|
| Tenant Token | POST | /auth/v3/tenant_access_token/internal |
| Read Document | GET | /docx/v1/documents/{id}/raw_content |
| Create Document | POST | /docx/v1/documents |
| Send Message | POST | /im/v1/messages |
| Upload File | POST | /im/v1/files |
| Upload Image | POST | /im/v1/images |
| List Messages | GET | /im/v1/messages |
| Manage Permissions | POST | /drive/v1/permissions/{token}/members |
| Resolve Wiki | POST | /wiki/v2/spaces/get_node |
Base URL: https://open.feishu.cn/open-apis
tenant_access_token in the Authorization headermultipart/form-dataapplication/json