back
loading skill details...
飞书图片发送工具,支持系统截屏、区域截图和本地图片文件发送到飞书工作区,方便快速分享屏幕内容。
# feishu-image-sender - 飞书图片发送技能
**飞书图片发送工具,支持系统截图和本地图片发送到飞书。**
## 📌 技能位置
**统一管理目录**: `/opt/homebrew/lib/node_modules/openclaw/skills/feishu-image-sender/`
## 功能特性
- 🖥️ **系统截图** - 截取整个电脑屏幕
- 📐 **区域截图** - 支持指定截图区域
- 🖼️ **本地图片发送** - 发送本地图片文件到飞书
- 📱 **即时发送** - 截图后可直接发送到飞书
- 🎯 **自动化流程** - 标准化的图片发送流程
## 使用场景
- 需要分享当前屏幕内容
- 截取错误界面或问题截图
- 制作教程或演示截图
- 发送本地图片文件到飞书
- 远程协助时分享屏幕
## 核心功能
### 1. 系统截图并发送
```python
# 完整的截图并发送流程
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. 发送本地图片
```python
# 发送本地图片文件
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. 交互式截图
```python
# 交互式区域截图
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: 快速截图并发送
```python
# 使用feishu-image-screenshot命令快速截图并发送
exec(command="feishu-image-screenshot")
```
### 方法2: 发送指定图片
```python
# 发送指定路径的图片
exec(command="feishu-image-send /path/to/image.png")
```
### 方法3: 交互式截图
```python
# 交互式选择区域截图
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 上使用完整路径:
```bash
/usr/sbin/screencapture -t png /tmp/screenshot.png
```
## 示例脚本
### feishu-image-screenshot (截图并发送)
```bash
#!/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 (发送指定图片)
```bash
#!/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 (交互式截图)
```bash
#!/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脚本中使用
```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. **缓存机制** - 避免重复发送相同图片
---
**注意**: 此技能优先使用系统级截图方法,确保截图的真实性和完整性,并遵循标准化的图片发送流程。don't have the plugin yet? install it then click "run inline in claude" again.