Skills feishu-media

飞书媒体文件发送技能。适用于:发送文件、图片、URL图片、视频、音频、语音消息,以及打包压缩后发送。当用户要求在飞书中发送任何类型的媒体文件时激活此技能。

install
source · Clone the upstream repo
git clone https://github.com/openclaw/skills
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/openclaw/skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/a1024708231/feishu-media-new" ~/.claude/skills/openclaw-skills-feishu-media && rm -rf "$T"
OpenClaw · Install into ~/.openclaw/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/openclaw/skills "$T" && mkdir -p ~/.openclaw/skills && cp -r "$T/skills/a1024708231/feishu-media-new" ~/.openclaw/skills/openclaw-skills-feishu-media && rm -rf "$T"
manifest: skills/a1024708231/feishu-media-new/SKILL.md
source content

飞书媒体发送技能

通过

message
工具向飞书发送各类媒体文件。

核心用法

所有媒体发送都通过

message
工具的
action=send
,关键参数:

  • channel
    : feishu
  • target
    :
    chat:群ID
    user:open_id
    (省略则回复当前会话)
  • message
    : 附带的文字说明(可选)
  • filePath
    : 本地文件路径(注意:飞书频道可能不支持)
  • media
    : URL 地址(网络图片/文件)

1. 发送本地文件(PDF/DOC/XLS/PPT/TXT等)

message action=send channel=feishu filePath=/path/to/file.pdf message="文件说明"

支持格式:pdf, doc/docx, xls/xlsx, ppt/pptx, txt, csv, zip, tar.gz 等。

2. 发送本地图片

message action=send channel=feishu filePath=/path/to/image.png message="图片说明"

支持格式:jpg, jpeg, png, gif, webp, bmp。

3. 发送 URL 图片

message action=send channel=feishu media=https://example.com/image.png message="网络图片"

4. 发送视频(重要:需要用 exec+curl 方式)

⚠️ 注意:OpenClaw 飞书频道的

filePath
参数不支持本地视频文件。 需要用以下 exec+curl 方式发送视频:

# 1. 获取 tenant_access_token(需要飞书应用的 appId 和 appSecret)
TOKEN_RESP=$(curl -s -X POST "https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internal" \
  -H "Content-Type: application/json" \
  -d '{"app_id":"你的appId","app_secret":"你的appSecret"}')
TOKEN=$(echo $TOKEN_RESP | grep -o '"tenant_access_token":"[^"]*"' | cut -d'"' -f4)

# 2. 上传视频文件(必须用 file_type=stream)
curl -s -X POST "https://open.feishu.cn/open-apis/im/v1/files" \
  -H "Authorization: Bearer $TOKEN" \
  -F "file_type=stream" \
  -F "file_name=视频文件名.mp4" \
  -F "file=@/path/to/video.mp4"

# 3. 用返回的 file_key 发送消息
curl -s -X POST "https://open.feishu.cn/open-apis/im/v1/messages?receive_id_type=open_id" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "receive_id": "用户的open_id",
    "msg_type": "file",
    "content": "{\"file_key\":\"返回的file_key\"}"
  }'

关键点

  • 上传时
    file_type
    必须用
    stream
    ,不能用
    mp4
  • 发送时
    msg_type
    file
  • 视频会以文件附件形式发送(不是内嵌播放)

支持格式:mp4, mov, avi。

5. 发送音频(非语音)

MP3 等音频文件作为普通文件发送:

message action=send channel=feishu filePath=/path/to/audio.mp3 message="音频文件"

6. 发送语音消息(可播放的语音条)

语音消息需要 Ogg/Opus 格式。飞书会显示为可播放的语音条。

6.1 直接发送 opus/ogg 文件

message action=send channel=feishu filePath=/path/to/voice.opus message="语音消息"

6.2 从 MP3 转换后发送

先用 ffmpeg 转换格式:

ffmpeg -i input.mp3 -ar 16000 -ac 1 -acodec libopus output.ogg -y

然后发送 output.ogg。

6.3 技术细节

语音消息的底层流程:

  1. 上传:
    im.file.create
    file_type: "opus"
    ,需带
    duration
    (毫秒)
  2. 发送:
    msg_type: "audio"
    ,content:
    {"file_key":"xxx","duration":3007}
  3. duration 由 ffprobe 自动获取,无需手动指定

7. 打压缩包后发送

当需要发送多个文件或不支持的格式时,先打包再发送:

7.1 打 zip 包

zip -j /tmp/archive.zip /path/to/file1 /path/to/file2

7.2 打 tar.gz 包

tar czf /tmp/archive.tar.gz -C /path/to/dir .

7.3 发送压缩包

message action=send channel=feishu filePath=/tmp/archive.zip message="打包文件"

格式支持速查表

类型格式发送方式飞书显示
图片jpg/png/gif/webpfilePath 或 media(URL)内嵌图片
文档pdf/doc/xls/pptfilePath文件卡片
视频mp4/mov/aviexec+curl (file_type=stream)文件卡片
音频mp3/wav/flacfilePath文件卡片
语音opus/oggfilePath可播放语音条
压缩包zip/tar.gzfilePath文件卡片
网络图片URLmedia内嵌图片

注意事项

  • 文件大小限制:默认 30MB
  • 语音必须是 Ogg/Opus 格式才能显示为语音条,其他音频格式只能作为文件发送
  • 需要 ffmpeg/ffprobe 支持语音格式转换和时长检测
  • 飞书应用需要
    im:message
    im:resource
    权限
  • 视频发送:OpenClaw 飞书频道的
    filePath
    不支持本地视频,必须用 exec+curl 方式上传后发送