ホーム チュートリアル カテゴリ Skills サイトについて
ZH EN JA KO
チャンネル連携

OpenClawでiMessageを接続するチュートリアル

· 16 分で読了

はじめに

iMessage は Apple エコシステムのネイティブメッセージサービスで、エンドツーエンド暗号化と豊富なメッセージフォーマットを備えています。OpenClaw は macOS 上の AppleScript ブリッジを通じて iMessage への接続をサポートしており、iMessage 内で直接 AI と対話できます。本記事では、設定方法と注意事項を詳しくご紹介します。

重要な前提条件

開始する前に、以下の主要な制限事項をご確認ください。

条件 要件
OS macOS のみ対応(iMessage ブリッジは Messages.app に依存)
macOS バージョン macOS 13 Ventura 以降
Apple ID iMessage にログイン済みの Apple ID が必要
実行方式 OpenClaw は macOS ローカルで実行する必要あり(Docker は不可)
アクセシビリティ権限 ターミナル/Node.js にアクセシビリティ権限の付与が必要
注意:iMessage ブリッジは macOS プラットフォームのみに対応しています。
Linux や Windows をお使いの場合は、他のメッセージチャンネル(WhatsApp、Telegram など)をご検討ください。

動作原理

OpenClaw の iMessage 連携は以下のアーキテクチャを採用しています。

ユーザーが iMessage を送信
       ↓
macOS Messages.app がメッセージを受信
       ↓
OpenClaw が AppleScript で新着メッセージを読み取り
       ↓
メッセージを AI モデルに送信して処理
       ↓
AI が返信を生成
       ↓
OpenClaw が AppleScript で iMessage 返信を送信
       ↓
ユーザーが返信を受信

コアメカニズムは macOS の AppleScript インターフェースを利用して Messages.app と対話することです。OpenClaw は Messages.app のデータベースを定期的にポーリングして新着メッセージを検出し、AppleScript コマンドで返信を送信します。

ステップ1:システム権限の設定

1.1 アクセシビリティ権限の有効化

OpenClaw が Messages.app を制御するにはアクセシビリティ権限が必要です。

  1. システム設定プライバシーとセキュリティアクセシビリティ を開く
  2. ロックアイコンをクリックし、管理者パスワードを入力
  3. + ボタンをクリックし、ターミナルアプリ(Terminal.app または iTerm)を追加
  4. グローバルインストールの Node.js で OpenClaw を実行している場合、Node.js も追加が必要:
# Node.js のパスを確認
which node
# 通常は /usr/local/bin/node または /opt/homebrew/bin/node

1.2 オートメーション権限の付与

初回実行時、macOS はターミナルが Messages.app を制御することを許可するかどうかのダイアログを表示します。許可 をクリックしてください。

ダイアログを見逃した場合は、以下の場所で手動設定できます。

システム設定プライバシーとセキュリティオートメーション → ターミナルアプリを見つける → Messages にチェック

1.3 Messages.app のログイン確認

  1. Messages.app を開く
  2. Apple ID でログインしていることを確認
  3. iMessage の送受信が正常にできることを確認
# Messages.app が AppleScript でアクセス可能か検証
osascript -e 'tell application "Messages" to get name'

「Messages」と返ってくれば、権限設定は正しいです。

ステップ2:OpenClaw の設定

2.1 設定ファイル

~/.config/openclaw/openclaw.json5 を編集します。

{
  channels: {
    imessage: {
      enabled: true,

      // ポーリング間隔(秒)、新着メッセージをチェックする頻度
      pollInterval: 3,

      // Messages.app のデータベースパス(通常変更不要)
      dbPath: "~/Library/Messages/chat.db",

      // セキュリティ設定
      security: {
        // メッセージ受信を許可する連絡先リスト(空配列は全員許可)
        allowedContacts: [],
        // または電話番号/メールアドレスでフィルタリング
        allowedIdentifiers: [
          "+8613800138000",
          "[email protected]"
        ],
        // グループメッセージを許可するか
        groupChatEnabled: false,
        // 不明な連絡先を許可するか
        allowUnknown: false
      },

      // トリガー設定
      trigger: {
        // プライベートチャットですべてのメッセージに自動返信するか
        autoReply: true,
        // トリガーキーワード(すべてのメッセージに自動返信したくない場合)
        keywords: [],
        // グループチャットのトリガー方式
        groupTrigger: "keyword",
        groupKeywords: ["@AI", "/ask"]
      },

      // 返信設定
      reply: {
        // メッセージの最大長
        maxLength: 10000,
        // 長いコードブロックを添付ファイルとして送信するか
        codeAsAttachment: false,
        // 送信遅延(ミリ秒)、タイピング効果の模倣
        sendDelay: 500
      }
    }
  }
}

2.2 最小構成

簡単にテストしたい場合の最小構成は以下の通りです。

{
  channels: {
    imessage: {
      enabled: true,
      security: {
        // 特定の連絡先のみ許可(設定を強くお勧めします)
        allowedIdentifiers: ["+8613800138000"]
      }
    }
  }
}

2.3 サービスの再起動

openclaw restart

# iMessage チャンネルのログを確認
openclaw logs -f --component channel:imessage

正常に起動した場合のログ:

[INFO] [channel:imessage] iMessage 桥接已启动
[INFO] [channel:imessage] Messages.app 连接正常
[INFO] [channel:imessage] 轮询间隔: 3秒
[INFO] [channel:imessage] 允许的联系人: 1 个
[INFO] [channel:imessage] 等待新消息...

ステップ3:接続テスト

3.1 テストメッセージの送信

別のデバイス(iPhone または他の Mac)から、OpenClaw を実行している Apple ID に iMessage を送信します。

こんにちは、テストメッセージです

3.2 ログの確認

openclaw logs -f --component channel:imessage

以下のようなログが表示されるはずです。

[INFO] [channel:imessage] 收到新消息: from="+8613800138000", text="こんにちは、テストメッセージです"
[INFO] [channel:imessage] 发送给模型处理: claude
[INFO] [channel:imessage] 模型回复完成 (1.2s)
[INFO] [channel:imessage] 回复已发送到: +8613800138000

セキュリティに関する注意事項

iMessage 連携は個人のメッセージに関わるため、セキュリティ対策が非常に重要です。

連絡先ホワイトリストの設定は必須

{
  channels: {
    imessage: {
      security: {
        // ホワイトリストの設定を強くお勧めします。設定しないと、
        // 誰からのメッセージにも返信がトリガーされます
        allowedIdentifiers: [
          "+8613800138000",
          "[email protected]"
        ],
        allowUnknown: false
      }
    }
  }
}

データベースアクセスのセキュリティ

OpenClaw は ~/Library/Messages/chat.db を読み取る必要があります。これは Messages.app のローカルデータベースです。以下の点にご注意ください。

  • OpenClaw を実行する macOS ユーザーアカウントのセキュリティを確保
  • FileVault フルディスク暗号化を有効化
  • 強力なパスワードと自動画面ロックを設定

プライバシーへの配慮

iMessage の会話内容は AI モデル API に送信されて処理されます。
ご使用のモデルのデータプライバシーポリシーを必ずご確認ください。
機密情報が含まれる場合は、Ollama などのローカルモデルの使用をご検討ください。

メッセージタイプのサポート

メッセージタイプ 受信処理 送信返信 説明
テキスト 対応 対応 完全対応
画像 対応 非対応 マルチモーダルモデルによる認識が必要
リンク 対応 対応 URL プレビューの自動抽出
添付ファイル 部分的 非対応 テキスト系の添付ファイルのみ対応
Tapback リアクション 非対応 非対応 無視して処理
Memoji 非対応 非対応 無視して処理

常駐実行の設定

iMessage ブリッジを継続的に実行するには、macOS の launchd で OpenClaw プロセスを管理することをお勧めします。

launchd 設定の作成

cat > ~/Library/LaunchAgents/com.openclaw.agent.plist << 'EOF'
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>com.openclaw.agent</string>
    <key>ProgramArguments</key>
    <array>
        <string>/usr/local/bin/openclaw</string>
        <string>up</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
    <key>KeepAlive</key>
    <true/>
    <key>StandardOutPath</key>
    <string>/tmp/openclaw.stdout.log</string>
    <key>StandardErrorPath</key>
    <string>/tmp/openclaw.stderr.log</string>
</dict>
</plist>
EOF

設定のロード

launchctl load ~/Library/LaunchAgents/com.openclaw.agent.plist

サービスの管理

# サービスの停止
launchctl stop com.openclaw.agent

# サービスの起動
launchctl start com.openclaw.agent

# サービスのアンロード
launchctl unload ~/Library/LaunchAgents/com.openclaw.agent.plist

既知の制限事項

  1. macOS 限定 - これが最大の制限で、他の OS では使用できません
  2. GUI 環境が必要 - Messages.app はグラフィカル環境で実行する必要があり、純粋な SSH 環境には非対応
  3. ポーリング方式 - データベースのポーリングで新着メッセージを検出するため、数秒の遅延があります
  4. リッチメディア送信不可 - 返信はテキストのみで、画像やファイルの送信はできません
  5. シングルインスタンス制限 - 同一 Mac で iMessage ブリッジを1つしか実行できません
  6. macOS アップデートリスク - macOS のシステムアップデートにより AppleScript インターフェースの互換性が影響を受ける可能性があります

トラブルシューティング

Messages.app にアクセスできない

# アクセシビリティ権限をリセット
tccutil reset AppleEvents

# OpenClaw を再起動して、権限ダイアログを待つ
openclaw restart

データベースロックエラー

# "database is locked" エラーが発生した場合
# chat.db にアクセスしている可能性のある他のアプリを閉じる
# またはポーリング間隔を延長する
openclaw config set channels.imessage.pollInterval 5

メッセージ送信の失敗

# AppleScript がメッセージを送信できるかテスト
osascript -e 'tell application "Messages"
  set targetService to 1st account whose service type = iMessage
  set targetBuddy to participant "+8613800138000" of targetService
  send "テストメッセージ" to targetBuddy
end tell'

まとめ

iMessage 連携により、Apple エコシステム内で AI アシスタントをシームレスに利用できます。重要なポイント:

  • macOS プラットフォーム限定で、Messages.app とアクセシビリティ権限が必要
  • 連絡先ホワイトリストの設定を強くお勧めし、プライバシーを保護
  • launchd を使用して自動起動とプロセス監視を実現
  • 既知の制限事項を理解してください(特にポーリング遅延とリッチメディア非対応)
  • 機密性の高い会話には Ollama などのローカルモデルの使用をご検討ください
OpenClawは無料のオープンソースAIアシスタント。WhatsApp、Telegram、Discordなど多数のプラットフォームに対応