はじめに
現代のインスタントメッセージングはテキストだけにとどまりません。ユーザーは画像を送信してAIに内容を説明してもらったり、音声を送信してAIに書き起こしてもらったり、ドキュメントをアップロードしてAIに分析してもらったりすることがあります。OpenClaw はマルチチャンネルAIゲートウェイとして、異なるプラットフォームからのマルチメディアメッセージを統一的に処理する必要があり、各プラットフォームのメディア機能もそれぞれ異なります。本記事では、OpenClaw のマルチメディアメッセージ処理メカニズムと設定方法を詳しく解説します。
サポートされるメディアタイプ
OpenClaw は現在、以下の4大カテゴリのマルチメディアコンテンツをサポートしています。
| メディアタイプ | サポート形式 | 処理方式 |
|---|---|---|
| 画像 | JPG, PNG, GIF, WebP | ビジョン対応モデルに直接渡す |
| 音声 | MP3, OGG, WAV, M4A | STTエンジンで書き起こした後テキスト入力として使用 |
| ドキュメント | PDF, TXT, DOCX, CSV | テキスト抽出後コンテキスト入力として使用 |
| 動画 | MP4, WebM | キーフレームを抽出し画像シーケンスとして処理 |
グローバルメディア設定
openclaw.json のメディア処理のグローバル設定は advanced.media セクションにあります。
{
"advanced": {
"media": {
"enabled": true,
"maxFileSize": "20mb",
"tempDir": "~/.openclaw/temp/media",
"cleanupInterval": "1h",
"image": {
"enabled": true,
"maxResolution": "2048x2048",
"autoResize": true,
"compressionQuality": 85
},
"audio": {
"enabled": true,
"sttProvider": "whisper",
"sttModel": "whisper-1",
"maxDuration": 300
},
"document": {
"enabled": true,
"maxPages": 50,
"ocrEnabled": false
},
"video": {
"enabled": false,
"maxDuration": 60,
"keyframeInterval": 5
}
}
}
}
主要パラメータの説明
maxFileSize:処理可能なファイルサイズの上限。超過ファイルは無視されメッセージが返されますautoResize:画像の解像度がモデルの制限を超えた場合に自動スケーリングsttProvider:音声テキスト変換サービスプロバイダー。whisper(OpenAI)とlocal(ローカルモデル)をサポートmaxDuration:音声と動画の最大時間制限(秒)
画像メッセージの処理フロー
ユーザーが画像を送信すると、OpenClaw は以下のフローで処理します。
- 受信:チャンネルAPIから画像を一時ディレクトリにダウンロード
- 前処理:形式とサイズをチェック。必要に応じて形式変換とリサイズ
- ルーティング:現在のAgentに設定されたモデルがビジョン入力をサポートするか確認
- 送信:Base64またはURL形式で画像をAPIリクエストに添付
- クリーンアップ:処理完了後、
cleanupIntervalの周期で一時ファイルを削除
現在のモデルがビジョン機能をサポートしていない場合、OpenClaw には2つの対応戦略があります。
{
"advanced": {
"media": {
"image": {
"fallbackOnNoVision": "describe",
"visionFallbackModel": "claude"
}
}
}
}
"describe":ビジョン対応モデルに自動切り替えて画像内容を記述し、記述テキストを元のモデルに渡す"reject":現在のモデルが画像入力に対応していないことをユーザーに直接通知
音声メッセージの処理
音声メッセージはまず音声テキスト変換(STT)で処理され、テキストメッセージとしてモデルに渡されます。
ユーザーが音声を送信 → 音声ファイルをダウンロード → STT書き起こし → テキストをユーザーメッセージとして → モデルに送信
STT結果はセッション記録の metadata フィールドに付加され、遡及に便利です。
{
"id": "msg_010",
"role": "user",
"content": "明日の午後3時に会議室を予約して",
"metadata": {
"originalType": "audio",
"sttConfidence": 0.95,
"audioDuration": 4.2
}
}
ドキュメントメッセージの処理
ユーザーがアップロードしたドキュメントはテキスト内容が抽出され、会話のコンテキストに注入されます。
{
"advanced": {
"media": {
"document": {
"enabled": true,
"maxPages": 50,
"extractionMethod": "auto",
"injectAs": "system"
}
}
}
}
injectAs はドキュメント内容のコンテキストでの役割を制御します。
"system":システムメッセージとして注入。モデルは背景知識として扱う"user":ユーザーメッセージの一部として、ユーザーのテキストの後に追加
各チャンネルのメディアサポートの違い
異なるメッセージングプラットフォームのメディアメッセージサポートには顕著な違いがあります。以下はOpenClawの対応状況です。
| チャンネル | 画像受信 | 画像送信 | 音声受信 | ドキュメント受信 | 備考 |
|---|---|---|---|---|---|
| Telegram | 完全サポート | 完全サポート | 完全サポート | 完全サポート | 最も包括的なメディアサポート |
| 完全サポート | 完全サポート | 完全サポート | 完全サポート | Business APIが必要 | |
| Discord | 完全サポート | 完全サポート | 限定的 | 完全サポート | 音声メッセージは追加設定が必要 |
| Slack | 完全サポート | 完全サポート | 非対応 | 完全サポート | ファイルはFiles API経由 |
| iMessage | 完全サポート | 完全サポート | 完全サポート | 限定的 | BlueBubblesブリッジに依存 |
| Signal | 完全サポート | 完全サポート | 完全サポート | 限定的 | signal-cli経由 |
| Web Dashboard | 完全サポート | 完全サポート | 非対応 | 完全サポート | ブラウザアップロード経由 |
| Matrix | 完全サポート | 完全サポート | 完全サポート | 完全サポート | 完全なMatrix Media API |
チャンネルレベルのメディアオーバーライド
特定のチャンネルで特定のメディア機能を無効にしたい場合は、チャンネル設定でグローバル設定をオーバーライドできます。
{
"channels": {
"telegram": {
"enabled": true,
"token": "your-token",
"mediaSupport": {
"image": true,
"audio": true,
"document": true,
"video": false
}
},
"slack": {
"enabled": true,
"mediaSupport": {
"image": true,
"audio": false,
"document": true,
"video": false
}
}
}
}
モデルのメディア能力
すべてのモデルがマルチメディア入力をサポートしているわけではありません。OpenClaw は内部的にモデル能力テーブルを管理しています。
| モデル | 画像入力 | 音声入力 | ドキュメント入力 |
|---|---|---|---|
| Claude Sonnet/Opus | サポート | 非対応(STT必要) | PDF対応 |
| GPT-4o | サポート | サポート(ネイティブ) | 非対応(抽出必要) |
| Gemini 2.0 Flash | サポート | サポート(ネイティブ) | サポート |
| Ollama (LLaVA) | サポート | 非対応 | 非対応 |
OpenClaw はモデルの能力に基づいて前処理が必要かどうかを自動判断します。例えば、GPT-4oに送信する音声は直接渡せますが、Claudeに送信する音声は先にSTTで書き起こす必要があります。
メディアファイルのクリーンアップ
一時ファイルの無制限な増大を防ぐため、OpenClaw は定期的にクリーンアップを行います。
# メディアキャッシュを手動でクリーンアップ
openclaw media cleanup
# メディアキャッシュの使用量を確認
openclaw media stats
まとめ
OpenClaw のマルチメディア処理システムは、統一的な抽象化をベースに、各チャンネルの差異化された能力に十分に対応しています。適切な設定により、AIアシスタントがさまざまなプラットフォームで画像、音声、ドキュメントをシームレスに処理しつつ、リソース消費を制御できます。重要なのは、実際に使用するチャンネルとモデルに応じて、適切なメディア処理パラメータとフォールバック戦略を設定することです。