smallnest

feishu-upload-image

Upload images to Feishu/Lark. Returns image_key for use in messages.

smallnest 586 115 Updated 3mo ago

Resources

2
GitHub

Install

npx skillscat add smallnest/goclaw/feishu-upload-image

Install via the SkillsCat registry.

SKILL.md

Feishu Upload Image

Upload images to Feishu/Lark and get the image_key for use in messages.

Usage

Upload from Local File

python3 ./scripts/upload_image.py /path/to/image.jpg

Upload via HTTP

python3 ./scripts/upload_image.py --type message --image-type message https://example.com/image.jpg

Upload from Base64

python3 ./scripts/upload_image.py --base64 "iVBORw0KGgoAAAANS..."

Options

Option Description Default
`--type message avatar` Image usage type
`--image-type message avatar` Same as --type

Limits

  • Max file size: 10MB
  • Supported formats: JPEG, PNG, WEBP, GIF, TIFF, BMP, ICO
  • GIF resolution ≤ 2000×2000
  • Other formats ≤ 12000×12000

Response

Returns image_key which can be used in Feishu messages:

{
  "code": 0,
  "data": {
    "image_key": "img_v2_xxx"
  }
}

发送图片消息指南

获取必要信息

  1. 飞书访问令牌 (tenant_access_token 或 app_access_token)
  2. 接收者ID (open_id, user_id, chat_id, 或 email)

发送图片消息API

方式1:直接发送图片消息

curl -X POST https://open.feishu.cn/open-apis/im/v1/messages \
  -H "Authorization: Bearer {access_token}" \
  -H "Content-Type: application/json" \
  -d '{
    "receive_id": "{chat_id}",
    "msg_type": "image",
    "content": "{\"image_key\":\"{image_key}\"}"
  }'

方式2:在富文本中嵌入图片

curl -X POST https://open.feishu.cn/open-apis/im/v1/messages \
  -H "Authorization: Bearer {access_token}" \
  -H "Content-Type: application/json" \
  -d '{
    "receive_id": "{chat_id}",
    "msg_type": "post",
    "content": "{\"post\":{\"zh_cn\":{\"title\":\"图片消息\",\"content\":[[{\"tag\":\"img\",\"image_key\":\"{image_key}\"}]]}}}"
  }'

获取群聊chat_id

  1. 在飞书中打开群聊,查看URL中的chat_id
  2. 或者通过API查询群聊列表:
curl -X GET https://open.feishu.cn/open-apis/im/v1/chats \
  -H "Authorization: Bearer {access_token}"

实践经验

  • 上传图片后获得 image_key,有效期通常为7天
  • 使用前需确保有正确的访问令牌权限
  • 发送消息需要 im:message:send_as_bot 权限
  • 建议先上传图片,再发送消息,两步操作分离