ホーム チュートリアル カテゴリ Skills サイトについて
ZH EN JA KO
スキル・プラグイン

OpenClawタイマーリマインダーSkill開発チュートリアル

· 13 分で読了

はじめに

タイマーリマインダーは、個人用 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分後のリマインダーを設定し、時間通りにトリガーされるか検証
  • [ ] 絶対時間のリマインダーを設定
  • [ ] 定期リマインダーを設定
  • [ ] リマインダー一覧を確認
  • [ ] リマインダーを1つ削除
  • [ ] OpenClaw を再起動後、リマインダーが復元されるか確認

まとめ

タイマーリマインダー Skill は総合的なプロジェクトであり、自然言語による時間解析、データの永続化、タイマースケジューリング、マルチチャンネルプッシュなど多くの技術ポイントが関わります。この Skill の開発手法を習得すれば、より複雑な自動化ワークフロースキルの開発が可能になります。

OpenClawは無料のオープンソースAIアシスタント。WhatsApp、Telegram、Discordなど多数のプラットフォームに対応