---
read_when:
    - Control UI でのアシスタント出力の表示方法の変更
    - '`[embed ...]`、構造化メディア、返信、または音声表示ディレクティブのデバッグ'
summary: 構造化メディア、埋め込み、音声ヒント、返信のためのリッチ出力プロトコル
title: リッチ出力プロトコル
x-i18n:
    generated_at: "2026-07-11T22:40:28Z"
    model: gpt-5.6
    postprocess_version: locale-links-v1
    provider: openai
    source_hash: cbfe68f38c871f5f6d2811eb52b18d0143606f30283023ae96db64543eed95a1
    source_path: reference/rich-output-protocol.md
    workflow: 16
---

アシスタントの出力は、いくつかの専用チャネルを通じて配信／レンダリング指示を伝達します。

- 添付ファイル配信用の構造化された `mediaUrl` / `mediaUrls` フィールド。
- 音声の表示方法を示す `[[audio_as_voice]]`。
- 返信メタデータ用の `[[reply_to_current]]` / `[[reply_to:<id>]]`。
- Control UI のリッチレンダリング用の `[embed ...]`。

構造化されたメディアフィールドと `[[...]]` タグは配信メタデータです。`[embed ...]` は別個のウェブ専用リッチレンダリング経路であり、メディアのエイリアスではありません。

## メディア添付ファイル

リモート添付ファイルには、公開されている `https:` URL を使用する必要があります。`http:`、ループバック、リンクローカル、プライベート、および内部ホスト名は添付ファイル指示として拒否されます。さらに、サーバー側のメディア取得機能が独自のネットワーク保護を適用します。

ローカル添付ファイルでは、絶対パス、ワークスペース相対パス、またはホーム相対の `~/` パスを使用できます。ただし、配信前にエージェントのファイル読み取りポリシーとメディアタイプの検査が適用されます。

<Warning>
ツール、Plugin、ストリーミングブロック、ブラウザー出力、またはメッセージアクションから、添付ファイル用のテキストコマンドを出力しないでください。代わりに、構造化されたメディアフィールドを使用します。

```json
{ "message": "画像はこちらです。", "mediaUrl": "/workspace/image.png" }
```

互換性のため、従来の最終返信テキストが引き続き正規化される場合がありますが、これは汎用的な Plugin／ツールプロトコルではありません。
</Warning>

通常の Markdown 画像構文（`![alt](url)`）は、デフォルトではテキストのままです。Markdown 画像をメディア返信として扱うチャネルは、送信アダプターでその動作を有効にします。Telegram ではこれが有効なため、`![alt](url)` はメディア添付ファイルになります。

ブロックストリーミングが有効な場合、メディアは構造化されたペイロードフィールドで送信する必要があります。同じメディア URL がストリーミングブロックと最終アシスタントペイロードの両方に含まれている場合、OpenClaw はそれを一度だけ配信し、最終ペイロードから重複分を削除します。

## `[embed ...]`

`[embed ...]` は、Control UI でエージェントが使用できる唯一のリッチレンダリング構文です。自己終了形式の例：

```text
[embed ref="cv_123" title="Status" /]
```

ルール：

- 新しい出力では `[view ...]` は使用できません。
- Embed ショートコードは、アシスタントメッセージ領域でのみレンダリングされます。
- URL に基づく Embed のみレンダリングされます。`ref="..."` または `url="..."` を使用してください。
- ブロック形式のインライン HTML Embed ショートコードはレンダリングされません。
- Web UI は表示テキストからショートコードを取り除き、Embed をインラインでレンダリングします。

## 保存時のレンダリング形式

正規化／保存されたアシスタントのコンテンツブロックは、構造化された `canvas` 項目です。

```json
{
  "type": "canvas",
  "preview": {
    "kind": "canvas",
    "surface": "assistant_message",
    "render": "url",
    "viewId": "cv_123",
    "url": "/__openclaw__/canvas/documents/cv_123/index.html",
    "title": "Status",
    "preferredHeight": 320
  }
}
```

`present_view` は認識されません。保存／レンダリングされるリッチブロックでは、常にこの `canvas` 形式を使用します。

## 関連項目

- [RPC アダプター](/ja-JP/reference/rpc)
- [Typebox](/ja-JP/concepts/typebox)
