튜토리얼 카테고리 Skills 소개
ZH EN JA KO
스킬 플러그인

OpenClaw 예약 알림 Skill 개발 튜토리얼

· 10 분 소요

소개

예약 알림은 개인 AI 어시스턴트의 가장 실용적인 기능 중 하나입니다. 채팅 창에서 "내일 아침 9시에 회의 참석 알려줘"라고 간단히 말하면, 해당 시간에 알림을 받을 수 있다고 상상해 보십시오. 이것이 바로 이 튜토리얼에서 구현할 Skill입니다.

이 튜토리얼에서는 자연어 시간 파싱, 주기적 알림, 영구 저장소를 지원하는 완전한 기능의 예약 알림 Skill을 개발합니다.

기능 기획

알림 Skill은 다음 기능을 갖추어야 합니다:

기능 설명 우선순위
알림 설정 자연어를 통한 일회성 알림 설정 필수
주기적 알림 매일, 매주, 매월 반복 알림 필수
알림 조회 대기 중인 모든 알림 목록 확인 필수
알림 삭제 지정된 알림 취소 필수
영구 저장 재시작 후에도 알림이 유지됨 필수
다중 채널 푸시 알림을 설정한 채널에서 알림 전송 권장

MCP 도구 설정

알림 기능에는 파일 읽기/쓰기와 예약 스케줄링 기능이 필요합니다. ~/.config/openclaw/openclaw.json5에서 MCP 도구를 설정합니다:

{
  mcp: {
    servers: {
      "filesystem": {
        command: "npx",
        args: ["-y", "@modelcontextprotocol/server-filesystem",
               "--allow-read", "--allow-write",
               "~/.openclaw/data/reminders/"],
      },
      "scheduler": {
        command: "npx",
        args: ["-y", "@openclaw-mcp/scheduler"],
      }
    }
  }
}

알림 데이터 디렉토리를 생성합니다:

mkdir -p ~/.openclaw/data/reminders/

SKILL.md 작성

~/.openclaw/skills/ 디렉토리에 reminder.SKILL.md를 생성합니다:

---
name: reminder
version: 1.0.0
description: 定时提醒技能,支持自然语言设置提醒、周期任务和持久化存储
triggers:
  - 提醒
  - remind
  - 闹钟
  - alarm
  - 定时
  - 待办
  - 记得
  - 别忘了
  - 到时候
mcp_tools:
  - filesystem
  - scheduler
---

# 定时提醒技能

## Description

这是一个定时提醒技能,让用户可以通过自然语言设置、管理提醒事项。
提醒到期时,自动在用户所在的频道发送通知。

## Core Behavior

### 设置提醒

当用户想设置提醒时:

1. **解析时间**:从用户消息中提取时间信息,支持以下格式:
   - 绝对时间:"明天早上9点"、"3月15日下午3点"、"2026-03-20 14:00"
   - 相对时间:"5分钟后"、"1小时后"、"3天后"
   - 自然语言:"今天晚上"、"这周五"、"下周一上午"

2. **提取内容**:识别提醒内容,即用户想被提醒做什么。

3. **确认信息**:向用户确认提醒的时间和内容。

4. **保存提醒**:使用 filesystem 工具将提醒保存到
   `~/.openclaw/data/reminders/reminders.json`。

5. **注册调度**:使用 scheduler 工具注册定时任务。

### 查看提醒

当用户要查看提醒列表时,读取 reminders.json 并按时间排序展示。

### 删除提醒

当用户要取消提醒时,根据编号或内容匹配找到提醒并删除。

### 触发提醒

当提醒时间到达时,scheduler 会回调 OpenClaw,在对应频道发送提醒消息。

## Data Schema

提醒数据使用 JSON 格式存储:

```json
{
  "reminders": [
    {
      "id": "rem_20260328_001",
      "content": "参加下午的产品会议",
      "triggerTime": "2026-03-28T14:00:00+08:00",
      "repeat": null,
      "channelType": "telegram",
      "channelId": "12345678",
      "userId": "user_001",
      "createdAt": "2026-03-28T09:00:00+08:00",
      "status": "pending"
    }
  ]
}

字段说明

字段 类型 说明
id string 唯一标识,格式 rem_YYYYMMDD_NNN
content string 提醒内容
triggerTime string 触发时间,ISO 8601 格式
repeat object/null 重复规则(见下方)
channelType string 来源频道类型
channelId string 来源频道/用户 ID
userId string 设置提醒的用户
createdAt string 创建时间
status string 状态:pending/triggered/cancelled

重复规则

{
  "repeat": {
    "type": "daily",
    "interval": 1,
    "endDate": "2026-12-31T23:59:59+08:00"
  }
}

type 可选值:

  • daily:每天重复
  • weekly:每周重复(可指定周几)
  • monthly:每月重复(可指定几号)
  • cron:自定义 cron 表达式

Output Format

设置提醒成功

✅ 提醒已设置!

📋 内容:{提醒内容}
⏰ 时间:{YYYY年MM月DD日 HH:mm}
🔁 重复:{重复规则,无则显示"一次性"}
🆔 编号:{ID}

到时候我会在这里通知你。

查看提醒列表

📝 你的提醒列表:

1. ⏰ {时间1} - {内容1} [编号: {ID1}]
2. ⏰ {时间2} - {内容2} [编号: {ID2}]
3. 🔁 {时间3} - {内容3}(每天重复)[编号: {ID3}]

共 {N} 个待触发提醒。
输入"取消提醒 {编号}"可删除指定提醒。

提醒触发通知

🔔 提醒时间到!

📋 {提醒内容}
⏰ 当前时间:{HH:mm}

---
这是你在 {设置时间} 设置的提醒。

删除提醒成功

❌ 已取消提醒:{提醒内容}

Error Handling

  • 如果无法解析时间,请用户用更明确的方式表述
  • 如果时间已经过去,提醒用户设置的时间已过期
  • 如果 reminders.json 不存在,自动创建空文件
  • 如果 scheduler 不可用,告知用户提醒功能暂时不可用

Example Interactions

用户:明天早上8点提醒我买咖啡 助手:✅ 提醒已设置! 📋 内容:买咖啡 ⏰ 时间:2026年03月29日 08:00 🔁 重复:一次性 🆔 编号:rem_20260328_001

用户:每周五下午5点提醒我写周报 助手:✅ 提醒已设置! 📋 内容:写周报 ⏰ 时间:每周五 17:00(下次:2026年03月28日) 🔁 重复:每周五 🆔 编号:rem_20260328_002

用户:看看我有哪些提醒 助手:📝 你的提醒列表: 1. ⏰ 03/29 08:00 - 买咖啡 [编号: rem_20260328_001] 2. 🔁 每周五 17:00 - 写周报 [编号: rem_20260328_002] 共 2 个待触发提醒。

用户:取消买咖啡的提醒 助手:❌ 已取消提醒:买咖啡


## 영구 저장 메커니즘

### 저장 전략

알림 데이터는 `~/.openclaw/data/reminders/reminders.json`에 저장됩니다. 각 작업(추가, 삭제, 수정) 후 즉시 파일에 기록됩니다.

### 재시작 복구

OpenClaw 재시작 후 reminder 스킬은 다음을 수행해야 합니다:

1. reminders.json에서 status가 `pending`인 모든 알림을 읽습니다
2. scheduler에 다시 등록합니다
3. 만료되었지만 트리거되지 않은 알림을 정리합니다 (`missed`로 표시하고, 다음 사용자 상호작용 시 알림)

## 시간대 처리

시간 파싱과 저장 시 시간대를 고려해야 합니다:

```markdown
## Timezone Rules

- 默认使用用户所在频道配置的时区
- 如果未配置时区,默认使用 Asia/Shanghai (UTC+8)
- 所有存储时间使用 ISO 8601 带时区格式
- 显示时间使用用户本地时区

테스트 체크리스트

개발 완료 후 다음 체크리스트에 따라 테스트합니다:

# 1. 재시작하여 스킬 로드
openclaw restart

# 2. 스킬 로드 확인
openclaw skill list

그런 다음 채팅에서 순서대로 테스트합니다:

  • [ ] 1분 후 알림을 설정하여 제시간에 트리거되는지 확인
  • [ ] 절대 시간 알림 설정
  • [ ] 주기적 알림 설정
  • [ ] 알림 목록 조회
  • [ ] 알림 하나 삭제
  • [ ] OpenClaw 재시작 후 알림이 복구되는지 확인

마무리

예약 알림 Skill은 자연어 시간 파싱, 데이터 영구 저장, 예약 스케줄링, 다중 채널 푸시 등 여러 기술 포인트를 포함하는 종합적인 프로젝트입니다. 이 Skill의 개발 방법을 익히면 더 복잡한 자동화 워크플로우 스킬을 개발할 수 있습니다.

OpenClaw는 무료 오픈소스 개인 AI 어시스턴트로, WhatsApp, Telegram, Discord 등 다양한 플랫폼을 지원합니다