首页 教程 分类 Skills下载 关于
ZH EN JA KO
进阶玩法

OpenClaw自动化工作流搭建完整教程

· 23 分钟

前言

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
响应超时 任务处理时间过长 增加超时设置

八、安全注意事项

  1. Webhook 签名验证:确保启用 Webhook Secret,防止伪造请求
  2. API 认证:为 OpenClaw API 设置认证 Token
  3. 输入过滤:对外部输入进行清理,防止提示注入
  4. 频率限制:为自动化任务设置合理的执行频率
  5. 日志审计:记录所有自动化操作,便于事后审查

通过以上方案,你可以将 OpenClaw 打造成一个强大的自动化工作流中心,大幅提升工作效率。

OpenClaw 是开源免费的个人AI助手,支持 WhatsApp、Telegram、Discord 等多平台接入