CC逆引きリファレンス

ストリーミング JSON 出力したい

11. CI/CD・自動化

コマンド / 機能

--output-format stream-json

リアルタイム出力

概要

ストリーミング JSON は、応答を生成しながらリアルタイムで JSON オブジェクトを出力します。長い応答の逐次処理や、プログレス表示に適しています。

設定例

# ストリーミング JSON で出力
claude -p --output-format stream-json "長いドキュメントを生成して"

# 出力例(各行が独立した JSON オブジェクト)
# {"type":"assistant","message":{"content":[{"type":"text","text":"最初の"}]}}
# {"type":"assistant","message":{"content":[{"type":"text","text":"テキスト"}]}}
# {"type":"result","subtype":"success","result":"完全な応答...","cost_usd":0.01}

# リアルタイムでテキストを抽出
claude -p --output-format stream-json "説明して" | while read line; do
  echo "$line" | jq -r 'select(.type=="assistant") | .message.content[0].text // empty' 2>/dev/null
done

こんな時に使う

  • リアルタイムで結果を処理したい時
  • 長い応答を逐次処理したい時

使い方

  1. 1--output-format stream-json を追加
  2. 2各行が独立した JSON オブジェクト(NDJSON形式)
  3. 3type フィールドでイベント種別を判別
  4. 4最後に result タイプでサマリーが出力される

Tips

  • NDJSON(Newline Delimited JSON)形式
  • while read で1行ずつ処理可能
  • assistant タイプが応答テキスト、result タイプが最終結果
  • プログレスバーや逐次表示の実装に使える