🧪 Skills

feishu-image-sender

飞书图片发送工具,支持系统截屏、区域截图和本地图片文件发送到飞书工作区,方便快速分享屏幕内容。

v0.0.2
❤️ 1
⬇️ 55
👁 1
Share

Description

feishu-image-sender - 飞书图片发送技能

飞书图片发送工具,支持系统截图和本地图片发送到飞书。

📌 技能位置

统一管理目录: /opt/homebrew/lib/node_modules/openclaw/skills/feishu-image-sender/

功能特性

  • 🖥️ 系统截图 - 截取整个电脑屏幕
  • 📐 区域截图 - 支持指定截图区域
  • 🖼️ 本地图片发送 - 发送本地图片文件到飞书
  • 📱 即时发送 - 截图后可直接发送到飞书
  • 🎯 自动化流程 - 标准化的图片发送流程

使用场景

  • 需要分享当前屏幕内容
  • 截取错误界面或问题截图
  • 制作教程或演示截图
  • 发送本地图片文件到飞书
  • 远程协助时分享屏幕

核心功能

1. 系统截图并发送

# 完整的截图并发送流程
def screenshot_and_send():
    # 1. 系统截图
    exec(command="/usr/sbin/screencapture -t png /tmp/screenshot.png")
    
    # 2. 移动到工作空间
    exec(command="cp /tmp/screenshot.png /Users/bornforthis/.openclaw/workspace/")
    
    # 3. 发送到飞书
    message(action="send", media="/Users/bornforthis/.openclaw/workspace/screenshot.png")

2. 发送本地图片

# 发送本地图片文件
def send_local_image(image_path):
    # 检查文件是否存在
    if not os.path.exists(image_path):
        return "图片文件不存在"
    
    # 移动到工作空间(如果需要)
    workspace_path = "/Users/bornforthis/.openclaw/workspace/" + os.path.basename(image_path)
    exec(command=f"cp '{image_path}' '{workspace_path}'")
    
    # 发送到飞书
    message(action="send", media=workspace_path)
    return "图片发送成功"

3. 交互式截图

# 交互式区域截图
def interactive_screenshot():
    exec(command="/usr/sbin/screencapture -i -c -t png /tmp/interactive_screenshot.png")
    exec(command="cp /tmp/interactive_screenshot.png /Users/bornforthis/.openclaw/workspace/")
    message(action="send", media="/Users/bornforthis/.openclaw/workspace/interactive_screenshot.png")

使用方法

方法1: 快速截图并发送

# 使用feishu-image-screenshot命令快速截图并发送
exec(command="feishu-image-screenshot")

方法2: 发送指定图片

# 发送指定路径的图片
exec(command="feishu-image-send /path/to/image.png")

方法3: 交互式截图

# 交互式选择区域截图
exec(command="feishu-image-interactive")

参数说明

截图参数

  • 格式: PNG (推荐,无损压缩)
  • 质量: PNG 保持最佳质量,适合技术截图
  • 延迟: 可添加延迟避免截取到快照界面
  • 区域: 支持全屏、交互式选择区域

发送参数

  • 文件路径: 必须是工作空间目录下的文件
  • 文件格式: 支持 PNG、JPEG、GIF 等常见图片格式
  • 文件大小: 建议不超过 10MB

最佳实践

  1. 使用 PNG 格式 - 保持最佳质量,适合技术截图
  2. 添加适当延迟 - 避免截取到过渡状态
  3. 文件命名规范 - 使用时间戳避免重复
  4. 智能压缩 - 如果图片过大,会自动先压缩上传一次,再原图上传一次。小图片则不压缩直接发送。
  5. 路径规范 - 文件必须保存到工作空间目录

常见问题

Q: 截图为空白

A: 确保使用系统级截图命令,而不是浏览器截图

Q: 截图模糊

A: 使用 PNG 格式,避免 JPEG 压缩

Q: 截图不完整

A: 检查屏幕分辨率设置,使用全屏截图模式

Q: 文件路径被拒绝

A: 飞书发送时需要将文件移动到允许的目录,如工作空间目录

Q: screencapture 命令找不到

A: 在 macOS 上使用完整路径:

/usr/sbin/screencapture -t png /tmp/screenshot.png

示例脚本

feishu-image-screenshot (截图并发送)

#!/bin/bash
# 飞书图片发送 - 系统截图并发送

TIMESTAMP=$(date +%Y%m%d_%H%M%S)
FILENAME="/tmp/screenshot_${TIMESTAMP}.png"

# 截图
/usr/sbin/screencapture -x -t png "$FILENAME"

# 移动到工作空间
cp "$FILENAME" "/Users/bornforthis/.openclaw/workspace/screenshot_${TIMESTAMP}.png"

# 发送到飞书
message(action="send", media="/Users/bornforthis/.openclaw/workspace/screenshot_${TIMESTAMP}.png")

# 清理临时文件
rm "$FILENAME"

echo "截图已发送到飞书"

feishu-image-send (发送指定图片)

#!/bin/bash
# 飞书图片发送 - 发送指定图片

if [ $# -eq 0 ]; then
    echo "请提供图片路径"
    exit 1
fi

IMAGE_PATH="$1"
if [ ! -f "$IMAGE_PATH" ]; then
    echo "图片文件不存在: $IMAGE_PATH"
    exit 1
fi

# 获取文件名
FILENAME=$(basename "$IMAGE_PATH")
WORKSPACE_PATH="/Users/bornforthis/.openclaw/workspace/$FILENAME"

# 复制到工作空间
cp "$IMAGE_PATH" "$WORKSPACE_PATH"

# 发送到飞书
message(action="send", media="$WORKSPACE_PATH")

echo "图片已发送到飞书: $FILENAME"

feishu-image-interactive (交互式截图)

#!/bin/bash
# 飞书图片发送 - 交互式截图

TIMESTAMP=$(date +%Y%m%d_%H%M%S)
FILENAME="/tmp/interactive_${TIMESTAMP}.png"

# 交互式截图
/usr/sbin/screencapture -i -t png "$FILENAME"

if [ -f "$FILENAME" ]; then
    # 移动到工作空间
    cp "$FILENAME" "/Users/bornforthis/.openclaw/workspace/interactive_${TIMESTAMP}.png"
    
    # 发送到飞书
    message(action="send", media="/Users/bornforthis/.openclaw/workspace/interactive_${TIMESTAMP}.png")
    
    # 清理临时文件
    rm "$FILENAME"
    
    echo "交互式截图已发送到飞书"
else
    echo "用户取消截图"
fi

集成到OpenClaw

在Python脚本中使用

import subprocess

def send_image_to_feishu(image_path):
    """发送图片到飞书"""
    # 复制到工作空间
    workspace_path = "/Users/bornforthis/.openclaw/workspace/" + os.path.basename(image_path)
    subprocess.run(["cp", image_path, workspace_path])
    
    # 发送到飞书
    message(action="send", media=workspace_path)

def take_screenshot_and_send():
    """截图并发送到飞书"""
    import time
    timestamp = int(time.time())
    temp_path = f"/tmp/screenshot_{timestamp}.png"
    workspace_path = f"/Users/bornforthis/.openclaw/workspace/screenshot_{timestamp}.png"
    
    # 截图
    subprocess.run(["/usr/sbin/screencapture", "-x", "-t", "png", temp_path])
    
    # 移动并发送
    subprocess.run(["cp", temp_path, workspace_path])
    message(action="send", media=workspace_path)
    
    # 清理
    subprocess.run(["rm", temp_path])

支持的图片格式

  • PNG - 无损压缩,推荐用于技术截图
  • JPEG - 有损压缩,适合照片类图片
  • GIF - 动图支持
  • WebP - 现代图片格式
  • BMP - 无压缩格式

性能优化

  1. 文件大小控制 - 大图片建议压缩到10MB以内
  2. 格式选择 - 技术截图用PNG,照片类用JPEG
  3. 批量处理 - 支持批量发送多张图片
  4. 缓存机制 - 避免重复发送相同图片

注意: 此技能优先使用系统级截图方法,确保截图的真实性和完整性,并遵循标准化的图片发送流程。

Reviews (0)

Sign in to write a review.

No reviews yet. Be the first to review!

Comments (0)

Sign in to join the discussion.

No comments yet. Be the first to share your thoughts!

Compatible Platforms

Pricing

Free

Related Configs