前言
OpenClaw 不仅仅是一个聊天机器人,它还可以成为你的自动化工作流核心。通过定时任务、事件触发和第三方集成,你可以让 OpenClaw 自动完成日报汇总、内容监控、消息转发等工作。本文将介绍多种实用的自动化方案。
一、定时任务(Cron 集成)
1.1 基本原理
通过 cron 定时调用 OpenClaw 的 API,实现定时触发 AI 任务:
# OpenClaw Gateway API 发送消息
curl -X POST http://localhost:18789/api/v1/send \
-H "Content-Type: application/json" \
-d '{
"channel": "telegram",
"chatId": "YOUR_CHAT_ID",
"message": "请生成今日工作摘要"
}'
1.2 每日早报推送
创建一个每天早上 8 点推送新闻摘要的定时任务:
#!/bin/bash
# /usr/local/bin/openclaw-morning-brief.sh
API_URL="http://localhost:18789/api/v1/chat"
CHAT_ID="YOUR_TELEGRAM_CHAT_ID"
# 调用 OpenClaw 生成早报
RESPONSE=$(curl -sf -X POST "$API_URL" \
-H "Content-Type: application/json" \
-d '{
"channel": "telegram",
"chatId": "'"$CHAT_ID"'",
"message": "请根据今天的日期,生成一份包含以下内容的早报:1. 今天是什么日子 2. 天气提醒 3. 待办事项回顾 4. 一句励志格言",
"systemPrompt": "你是一个专业的每日早报助手,回复要简洁有条理,使用 emoji 增强可读性。"
}')
echo "[$(date)] 早报已发送: $RESPONSE" >> /var/log/openclaw-cron.log
# 设置 cron 定时任务
chmod +x /usr/local/bin/openclaw-morning-brief.sh
crontab -e
# 添加以下行(每天早上 8:00 执行)
# 0 8 * * * /usr/local/bin/openclaw-morning-brief.sh
1.3 定期系统巡检报告
#!/bin/bash
# /usr/local/bin/openclaw-system-report.sh
# 收集系统信息
DISK_USAGE=$(df -h / | tail -1 | awk '{print $5}')
MEMORY_USAGE=$(free -m | awk 'NR==2{printf "%.1f%%", $3*100/$2}')
CPU_LOAD=$(uptime | awk -F'load average: ' '{print $2}')
OPENCLAW_STATUS=$(curl -sf http://localhost:18789/health | jq -r '.status')
UPTIME=$(uptime -p)
# 构建报告内容
REPORT="服务器巡检报告:
- 运行时间:$UPTIME
- CPU 负载:$CPU_LOAD
- 内存使用:$MEMORY_USAGE
- 磁盘使用:$DISK_USAGE
- OpenClaw 状态:$OPENCLAW_STATUS
请分析以上数据,如果有异常指标请给出优化建议。"
# 发送给管理员
curl -sf -X POST http://localhost:18789/api/v1/send \
-H "Content-Type: application/json" \
-d '{
"channel": "telegram",
"chatId": "ADMIN_CHAT_ID",
"message": "'"$(echo "$REPORT" | sed 's/"/\\"/g')"'"
}'
# 每天晚上 22:00 生成巡检报告
# 0 22 * * * /usr/local/bin/openclaw-system-report.sh
二、事件触发式工作流
2.1 基于文件变化的触发
监控某个目录,有新文件时自动处理:
#!/bin/bash
# /usr/local/bin/openclaw-file-watcher.sh
# 使用 inotifywait 监控文件变化
WATCH_DIR="/home/user/incoming-docs"
API_URL="http://localhost:18789/api/v1/chat"
inotifywait -m -e create "$WATCH_DIR" --format '%f' | while read filename; do
echo "[$(date)] 检测到新文件: $filename"
# 读取文件内容(限制大小)
CONTENT=$(head -c 5000 "$WATCH_DIR/$filename")
# 发送给 OpenClaw 处理
curl -sf -X POST "$API_URL" \
-H "Content-Type: application/json" \
-d '{
"channel": "telegram",
"chatId": "ADMIN_CHAT_ID",
"message": "收到新文件 '"$filename"',请帮我总结要点:\n\n'"$(echo "$CONTENT" | jq -Rs .)"'"
}'
done
2.2 基于日志关键词的触发
监控系统日志中的异常,自动通知并分析:
#!/bin/bash
# /usr/local/bin/openclaw-log-monitor.sh
LOG_FILE="/var/log/syslog"
KEYWORDS="error|critical|failure|out of memory"
tail -F "$LOG_FILE" | grep --line-buffered -iE "$KEYWORDS" | while read logline; do
# 避免告警风暴:同一分钟内最多发送一次
CURRENT_MINUTE=$(date +%Y%m%d%H%M)
if [ "$CURRENT_MINUTE" != "$LAST_ALERT_MINUTE" ]; then
curl -sf -X POST http://localhost:18789/api/v1/send \
-H "Content-Type: application/json" \
-d '{
"channel": "telegram",
"chatId": "ADMIN_CHAT_ID",
"message": "⚠️ 系统日志异常:\n'"$(echo "$logline" | head -c 500)"'\n\n请分析可能的原因和建议处理方式。"
}'
LAST_ALERT_MINUTE="$CURRENT_MINUTE"
fi
done
三、Webhook 接收器
3.1 OpenClaw 内置 Webhook 支持
OpenClaw Gateway 可以接收外部 Webhook,并触发相应的动作:
// ~/.config/openclaw/openclaw.json5
{
"webhooks": {
"enabled": true,
"port": 18789,
"endpoints": {
"/webhook/github": {
"secret": "your-webhook-secret",
"action": "notify",
"channel": "telegram",
"chatId": "GROUP_CHAT_ID",
"template": "GitHub 事件:{% raw %}{{event}}{% endraw %} - {% raw %}{{payload.action}}{% endraw %}"
},
"/webhook/custom": {
"action": "process",
"handler": "custom-webhook-skill"
}
}
}
}
3.2 GitHub Webhook 集成
在 GitHub 仓库设置 Webhook 后,OpenClaw 可以接收推送通知:
# 测试 Webhook 接收
curl -X POST http://localhost:18789/webhook/github \
-H "Content-Type: application/json" \
-H "X-Hub-Signature-256: sha256=..." \
-d '{
"action": "opened",
"pull_request": {
"title": "Fix login bug",
"body": "Fixes the timeout issue on login page",
"user": {"login": "developer1"}
}
}'
3.3 自定义 Webhook 技能
创建一个处理 Webhook 的技能文件:
<!-- ~/.openclaw/skills/webhook-handler.SKILL.md -->
# Webhook Handler
当收到外部 Webhook 通知时,你需要:
1. 解析 Webhook 的内容
2. 提取关键信息
3. 用简洁的中文总结
4. 如果是紧急事件,标注为 "紧急"
## 支持的 Webhook 类型
- GitHub(PR、Issue、Push)
- 监控告警(服务器状态)
- 自定义业务事件
四、n8n 集成
n8n 是一个强大的开源工作流自动化工具,可以与 OpenClaw 深度集成。
4.1 安装 n8n
# Docker 方式安装 n8n
docker run -d \
--name n8n \
--restart=always \
-p 5678:5678 \
-v n8n_data:/home/node/.n8n \
n8nio/n8n
4.2 n8n 调用 OpenClaw 的工作流
在 n8n 中创建 HTTP Request 节点连接 OpenClaw:
{
"nodes": [
{
"name": "Schedule Trigger",
"type": "n8n-nodes-base.scheduleTrigger",
"parameters": {
"rule": {
"interval": [{"field": "hours", "hoursInterval": 1}]
}
}
},
{
"name": "Call OpenClaw",
"type": "n8n-nodes-base.httpRequest",
"parameters": {
"url": "http://localhost:18789/api/v1/chat",
"method": "POST",
"body": {
"message": "检查最近一小时的系统状态并生成报告",
"channel": "internal"
}
}
},
{
"name": "Send to Slack",
"type": "n8n-nodes-base.slack",
"parameters": {
"channel": "#ops-alerts",
"text": "={{$json.response}}"
}
}
]
}
4.3 常见 n8n + OpenClaw 工作流
| 工作流 | 触发方式 | 说明 |
|---|---|---|
| 邮件摘要 | 收到新邮件 | 用 AI 总结邮件要点并推送 |
| RSS 监控 | 定时轮询 | 监控 RSS,有新文章时生成摘要 |
| 表单处理 | Webhook | 收到表单提交后 AI 分析并回复 |
| 数据报表 | 每日定时 | 查询数据库生成日报 |
| 客服分流 | 收到消息 | AI 判断问题类型并分配处理 |
五、Make (Integromat) 集成
Make 提供了更直观的可视化界面来构建工作流。
5.1 创建 OpenClaw API 模块
在 Make 中使用 HTTP 模块连接 OpenClaw:
触发器(Schedule/Webhook)
↓
HTTP 模块 → POST http://your-server:18789/api/v1/chat
↓
解析响应(JSON Parse)
↓
发送结果(Email/Slack/Telegram)
六、实用工作流示例
6.1 自动化日报汇总
每天下午 6 点自动汇总当天所有频道的对话并生成日报:
#!/bin/bash
# /usr/local/bin/openclaw-daily-summary.sh
# 获取当天的对话统计
STATS=$(curl -sf http://localhost:18789/api/v1/stats/today)
# 请求 OpenClaw 生成汇总
curl -sf -X POST http://localhost:18789/api/v1/chat \
-H "Content-Type: application/json" \
-d '{
"channel": "telegram",
"chatId": "ADMIN_CHAT_ID",
"message": "请根据以下今日统计数据生成一份日报摘要:\n\n'"$STATS"'\n\n格式要求:1.总体概况 2.热门话题 3.待关注事项",
"systemPrompt": "你是一个专业的数据分析师,擅长从聊天数据中提取有价值的洞察。"
}'
6.2 内容监控和告警
监控特定网站的内容变化,发现更新时通知用户:
#!/bin/bash
# /usr/local/bin/openclaw-content-monitor.sh
URLS=(
"https://example.com/api/announcements"
"https://status.anthropic.com/api/v2/summary.json"
)
CACHE_DIR="/tmp/openclaw-monitor"
mkdir -p "$CACHE_DIR"
for url in "${URLS[@]}"; do
HASH_FILE="$CACHE_DIR/$(echo "$url" | md5sum | cut -d' ' -f1)"
CURRENT_CONTENT=$(curl -sf "$url")
CURRENT_HASH=$(echo "$CURRENT_CONTENT" | md5sum | cut -d' ' -f1)
if [ -f "$HASH_FILE" ]; then
OLD_HASH=$(cat "$HASH_FILE")
if [ "$CURRENT_HASH" != "$OLD_HASH" ]; then
echo "[$(date)] 内容变化检测: $url"
# 通知 OpenClaw 分析变化
curl -sf -X POST http://localhost:18789/api/v1/send \
-H "Content-Type: application/json" \
-d '{
"channel": "telegram",
"chatId": "ADMIN_CHAT_ID",
"message": "监控到内容变化:\nURL: '"$url"'\n\n新内容摘要:\n'"$(echo "$CURRENT_CONTENT" | head -c 2000)"'"
}'
fi
fi
echo "$CURRENT_HASH" > "$HASH_FILE"
done
# 每 30 分钟检查一次
# */30 * * * * /usr/local/bin/openclaw-content-monitor.sh
6.3 多频道消息同步
将一个频道的重要消息自动转发到其他频道:
// ~/.config/openclaw/openclaw.json5
{
"automation": {
"messageForwarding": {
"rules": [
{
"from": {"channel": "telegram", "chatId": "GROUP_A"},
"to": [
{"channel": "discord", "chatId": "CHANNEL_ID"},
{"channel": "slack", "chatId": "#general"}
],
"filter": {
"keywords": ["公告", "重要", "紧急"],
"fromUsers": ["admin"]
}
}
]
}
}
}
七、工作流调试技巧
7.1 日志排查
# 查看自动化相关日志
openclaw logs | grep -i "automation\|webhook\|cron\|schedule"
# 测试 API 调用
curl -v -X POST http://localhost:18789/api/v1/chat \
-H "Content-Type: application/json" \
-d '{"message":"test","channel":"internal"}'
7.2 常见问题
| 问题 | 原因 | 解决方案 |
|---|---|---|
| Cron 不执行 | 路径或环境变量问题 | 使用绝对路径,设置 PATH |
| Webhook 收不到 | 防火墙或端口未开放 | 检查防火墙规则 |
| API 返回 401 | 未配置认证 | 添加 API Key |
| 响应超时 | 任务处理时间过长 | 增加超时设置 |
八、安全注意事项
- Webhook 签名验证:确保启用 Webhook Secret,防止伪造请求
- API 认证:为 OpenClaw API 设置认证 Token
- 输入过滤:对外部输入进行清理,防止提示注入
- 频率限制:为自动化任务设置合理的执行频率
- 日志审计:记录所有自动化操作,便于事后审查
通过以上方案,你可以将 OpenClaw 打造成一个强大的自动化工作流中心,大幅提升工作效率。