Install
openclaw skills install @thcjp/mac-node-snapshot-tool-freeopenclaw skills install @thcjp/mac-node-snapshot-tool-free本工具为macOS用户提供屏幕截图与基础录屏能力,基于macOS原生的 screencapture 和 screencapture 命令行工具。免费版支持全屏截图、区域截图、窗口截图与基础屏幕录制,适合个人开发者快速捕获屏幕内容用于Bug报告、操作文档与内容存档.
| 能力维度 | 免费版 | 专业版 |
|---|---|---|
| 截图模式 | 全屏/区域/窗口 | +定时/多屏/光标控制 |
| 录屏功能 | 基础录屏 | +音频录制/区域录屏 |
| 批量处理 | 不支持 | 定时批量截图 |
| 图片格式 | PNG | PNG/JPG/HEIC/TIFF |
| 自动上传 | 不支持 | 云端自动上传 |
| OCR识别 | 不支持 | 截图文字识别 |
| 编辑标注 | 不支持 | 内置编辑器 |
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| input | string | 是 | macOS截图工具免费版处理的输入数据或指令 |
| options | object | 否 | 附加配置选项,如模式选择、格式偏好等 |
| callback_url | string | 否 | 异步处理完成后的回调通知URL |
#!/bin/bash
# 全屏截图
# ...
OUTPUT_DIR="${HOME}/Desktop/screenshots"
mkdir -p "$OUTPUT_DIR"
# ...
TIMESTAMP=$(date '+%Y%m%d_%H%M%S')
FILENAME="${OUTPUT_DIR}/fullscreen_${TIMESTAMP}.png"
# ...
# 全屏截图(保存到文件)
screencapture "$FILENAME"
# ...
echo "截图已保存: ${FILENAME}"
echo "文件大小: $(du -h "$FILENAME" | cut -f1)"
# ...
# 同时复制到剪贴板
screencapture -c
echo "截图已复制到剪贴板"
处理: 解析全屏截图的输入参数,完成核心逻辑,返回结构化响应. 输出: 返回全屏截图的响应数据,包含状态码、结果和日志.
input_params参数,支持创建/查询/导出操作#!/bin/bash
# 区域截图(交互式选择区域)
# ...
OUTPUT_DIR="${HOME}/Desktop/screenshots"
mkdir -p "$OUTPUT_DIR"
# ...
TIMESTAMP=$(date '+%Y%m%d_%H%M%S')
FILENAME="${OUTPUT_DIR}/region_${TIMESTAMP}.png"
# ...
# 区域截图(用户拖选区域)
screencapture -i "$FILENAME"
# ...
if [ -f "$FILENAME" ]; then
echo "区域截图已保存: ${FILENAME}"
echo "图片尺寸: $(sips -g pixelWidth -g pixelHeight "$FILENAME" 2>/dev/null | tail -2)"
else
echo "截图已取消"
fi
处理: 解析区域截图的输入参数,完成核心逻辑,返回结构化响应. 输出: 返回区域截图的响应数据,包含状态码、结果和日志.
input_params参数,支持创建/查询/导出操作#!/bin/bash
# 窗口截图(交互式选择窗口)
# ...
OUTPUT_DIR="${HOME}/Desktop/screenshots"
mkdir -p "$OUTPUT_DIR"
# ...
TIMESTAMP=$(date '+%Y%m%d_%H%M%S')
FILENAME="${OUTPUT_DIR}/window_${TIMESTAMP}.png"
# ...
# 窗口截图(点击选择窗口,包含窗口阴影)
screencapture -iW "$FILENAME"
# ...
if [ -f "$FILENAME" ]; then
echo "窗口截图已保存: ${FILENAME}"
else
echo "截图已取消"
fi
# ...
# 不含窗口阴影的版本
# screencapture -ioW "${OUTPUT_DIR}/window_noshadow_${TIMESTAMP}.png"
处理: 解析窗口截图的输入参数,完成核心逻辑,返回结构化响应. 输出: 返回窗口截图的响应数据,包含状态码、结果和日志.
input_params参数,支持创建/查询/导出操作#!/bin/bash
# 基础屏幕录制
# ...
OUTPUT_DIR="${HOME}/Desktop/recordings"
mkdir -p "$OUTPUT_DIR"
# ...
TIMESTAMP=$(date '+%Y%m%d_%H%M%S')
FILENAME="${OUTPUT_DIR}/recording_${TIMESTAMP}.mov"
# ...
echo "开始屏幕录制..."
echo "按 Ctrl+C 停止录制"
echo ""
# ...
# 录制全屏(无音频)
screencapture -v "$FILENAME"
# ...
echo ""
echo "录制完成: ${FILENAME}"
echo "文件大小: $(du -h "$FILENAME" | cut -f1)"
echo "视频时长: 可用 ffprobe 查看"
处理: 解析基础屏幕录制的输入参数,完成核心逻辑,返回结构化响应. 输出: 返回基础屏幕录制的响应数据,包含状态码、结果和日志. 能力覆盖范围:本skill的核心能力覆盖以下场景关键词:macOS、屏幕截图与录屏工、支持全屏截图、区域截图与基础录、适合个人开发者快、速捕获屏幕内容、截图工具免费版、为个人用户提供屏、幕截图与基础录屏、核心能力、适用场景、Bug、报告截图、操作步骤录制、屏幕内容存档、差异化、免费版聚焦核心截、图功能、原生工具、适合个人用户快速、适用关键词、screenrecord等。这些关键词对应description中声明的使用场景,均已在上述能力点中提供对应的操作支持.
input_params参数,支持创建/查询/导出操作#!/bin/bash
# Bug报告截图工具
# ...
OUTPUT_DIR="${HOME}/Desktop/bug-reports"
mkdir -p "$OUTPUT_DIR"
# ...
BUG_ID="${1:-bug}"
TIMESTAMP=$(date '+%Y%m%d_%H%M%S')
# ...
echo "=== Bug报告截图工具 ==="
echo "Bug ID: ${BUG_ID}"
echo ""
# ...
# 1. 全屏截图
echo "1. 截取全屏..."
screencapture "${OUTPUT_DIR}/${BUG_ID}_fullscreen_${TIMESTAMP}.png"
echo " 已保存"
# ...
# 2. 区域截图(选择Bug区域)
echo ""
echo "2. 请选择Bug所在区域..."
screencapture -i "${OUTPUT_DIR}/${BUG_ID}_region_${TIMESTAMP}.png"
echo " 已保存"
# ...
echo ""
echo "=== 截图完成 ==="
echo "文件位置:"
ls -la "${OUTPUT_DIR}/${BUG_ID}_"*"${TIMESTAMP}"*.png 2>/dev/null
#!/bin/bash
# 操作步骤录制(带倒计时)
# ...
OUTPUT_DIR="${HOME}/Desktop/tutorials"
mkdir -p "$OUTPUT_DIR"
# ...
TIMESTAMP=$(date '+%Y%m%d_%H%M%S')
FILENAME="${OUTPUT_DIR}/tutorial_${TIMESTAMP}.mov"
# ...
echo "=== 操作步骤录制 ==="
echo "3秒后开始录制..."
sleep 1; echo " 3..."
sleep 1; echo " 2..."
sleep 1; echo " 1..."
echo " 开始录制! 按 Ctrl+C 停止"
# ...
screencapture -v "$FILENAME"
# ...
echo ""
echo "录制完成: ${FILENAME}"
echo "文件大小: $(du -h "$FILENAME" | cut -f1)"
#!/bin/bash
# 定时截图(每隔N秒截图一次)
# ...
OUTPUT_DIR="${HOME}/Desktop/timed-screenshots"
mkdir -p "$OUTPUT_DIR"
# ...
INTERVAL="${1:-60}" # 默认60秒
COUNT="${2:-10}" # 默认10次
# ...
echo "=== 定时截图 ==="
echo "间隔: ${INTERVAL}秒"
echo "次数: ${COUNT}次"
echo ""
# ...
for i in $(seq 1 "$COUNT"); do
TIMESTAMP=$(date '+%Y%m%d_%H%M%S')
FILENAME="${OUTPUT_DIR}/timed_${i}_${TIMESTAMP}.png"
# ...
screencapture "$FILENAME"
echo " [${i}/${COUNT}] ${FILENAME}"
# ...
if [ "$i" -lt "$COUNT" ]; then
sleep "$INTERVAL"
fi
done
# ...
echo ""
echo "定时截图完成,共 ${COUNT} 张"
以下场景macOS截图工具免费版不适合处理:
需要代码生成、编程辅助、调试测试、开发部署时使用。不适用于非本工具能力范围的需求.
# 确认macOS版本
sw_vers
# ...
# 确认screencapture可用
which screencapture
# 全屏截图到桌面
screencapture ./Desktop/screenshot.png
# 截图直接复制到剪贴板(不保存文件)
screencapture -c
| 参数 | 说明 | 示例 |
|---|---|---|
| 无参数 | 全屏截图到文件 | screencapture out.png |
| -c | 复制到剪贴板 | screencapture -c |
| -i | 交互式区域选择 | screencapture -i out.png |
| -iW | 交互式窗口选择 | screencapture -iW out.png |
| -W | 交互式窗口(无阴影) | screencapture -ioW out.png |
| -v | 录制视频 | screencapture -v out.mov |
| -C | 包含光标 | screencapture -C out.png |
| -T N | 延迟N秒 | screencapture -T 5 out.png |
| -t format | 图片格式 | screencapture -t jpg out.jpg |
| 场景 | 命名格式 | 示例 |
|---|---|---|
| 全屏 | fullscreen_YYYYMMDD_HHMMSS.png | fullscreen_20260718_143022.png |
| 区域 | region_YYYYMMDD_HHMMSS.png | region_20260718_143022.png |
| 窗口 | window_YYYYMMDD_HHMMSS.png | window_20260718_143022.png |
| Bug | bug_ID_YYYYMMDD_HHMMSS.png | bug_1234_20260718_143022.png |
| 定时 | timed_N_YYYYMMDD_HHMMSS.png | timed_3_20260718_143022.png |
-c 复制到剪贴板,不产生文件.# 优秀实践:截图管理函数
screenshot() {
local mode=$1
local name=$2
local dir="${HOME}/Desktop/screenshots"
local ts=$(date '+%Y%m%d_%H%M%S')
# ...
mkdir -p "$dir"
local file="${dir}/${name:-screenshot}_${ts}.png"
# ...
case "$mode" in
full) screencapture "$file" ;;
region) screencapture -i "$file" ;;
window) screencapture -iW "$file" ;;
clip) screencapture -c; echo "已复制到剪贴板"; return ;;
*) screencapture "$file" ;;
esac
# ...
[ -f "$file" ] && echo "已保存: ${file}" || echo "截图取消"
}
在"系统设置 > 隐私与安全性 > 屏幕录制"中,为终端应用(Terminal/iTerm)授予屏幕录制权限,重启终端后生效.
免费版使用screencapture基础录屏,不支持音频录制。需要音频录制请使用专业版或QuickTime Player.
使用 screencapture -c 参数,截图直接复制到系统剪贴板,不生成文件.
免费版支持多显示器全屏截图。精确选择特定显示器需要专业版支持.
PNG格式文件较大,可使用 -t jpg 参数切换为JPG格式,或使用sips工具压缩:sips -s format jpeg -s formatOptions 80 input.png --out output.jpg.
| 依赖项 | 类型 | 是否必需 | 获取方式 |
|---|---|---|---|
| screencapture | 截图工具 | 必需 | macOS系统自带 |
| sips | 图片处理 | 推荐 | macOS系统自带 |
| LLM API | API | 必需 | 由Agent内置LLM提供 |
| 错误场景 | 原因 | 处理方式 |
|---|---|---|
| 配置错误 | 参数缺失或格式错误 | 检查依赖说明中的配置要求 |
| 运行时错误 | 运行环境不满足 | 确认运行环境符合依赖说明 |
| 网络错误 | 连接超时或不可达 | 执行ping命令测试网络连通性,检查防火墙和代理设置连接后执行ping命令测试网络连通性,检查防火墙和代理设置连接后重新执行命令,参考国内替代方案 |
{
"success": true,
"data": {
"result": "macOS截图工具免费版处理结果",
"execution_time": "0.5s",
"metadata": {
"version": "1.0",
"processor": "mac node snapshot"
}
},
"execution_log": ["解析输入参数", "执行核心处理", "格式化输出结果"],
"error": null
}