Claude Codeのprintモード(claude -p)には、出力形式を切り替える --output-format オプションがあります。デフォルトのテキスト出力だけでなく、JSON形式やストリームJSON形式を選べることで、自動化パイプラインの幅が大きく広がります。この記事では3つの出力形式の違いを整理し、jqと組み合わせた実践的な使い方まで紹介します。
Claude Codeのプリントモードについて知りたい人は、【Claude Code】printモード入門|パイプ連携とスクリプト活用の基本 を参考にしてください。
output-formatはprintモード専用
output-formatはprintモード(-p)でのみ使えます。対話モードで指定するとエラーになります。必ず-pと組み合わせて使ってください。
3つの出力形式の比較
| 形式 | 説明 | 主な用途 |
|---|---|---|
| text | 平文テキスト(デフォルト) | 人間が直接読む場合 |
| json | 完了時に1つのJSONオブジェクトを出力 | プログラムでの後処理 |
| stream-json | 逐次JSONチャンクをストリーム出力 | リアルタイム処理 |
text形式(デフォルト)
シンプルで読みやすいですが、プログラムから解析しようとすると構造が曖昧です。
作業結果を人間が知りたいような時は、textで出力するのが便利です。
json形式
応答テキスト(result)に加えてコスト情報、所要時間、エラー有無などのメタデータが含まれます。後続のスクリプト処理に最適です。
json形式の出力例:
{
"type": "result",
"subtype": "success",
"cost_usd": 0.003,
"is_error": false,
"result": "応答テキスト...",
"session_id": "abc123..."
}
stream-json形式
複数行のJSONが逐次出力されます。1行1JSONなのでgrepやjqのselectで特定行を抽出できます。
jqと組み合わせてJSON出力を加工する
応答テキストだけを取り出すにはjq -r '.result'を使います。コスト情報だけならjq '.cost_usd'で取得できます。
エラー判定もプログラム的に行えます。is_errorフィールドを確認することで、エラーと正常結果を明確に区別でき、自動化パイプラインの信頼性が向上します。
どの形式を選ぶべきか
- 人間が目で確認 → text
- スクリプトで後処理 → json
- リアルタイム進捗表示 → stream-json
迷ったらjsonを選んでおけば、jqでテキストだけ取り出すこともできるので柔軟です。
さらに深く学びたい方へ
Claude Codeの Skills・MCP・Agent・Hooks・Plugin を体系的に学べる有料教材を Zenn で公開しています。
Claude Code 実践ガイド(Zenn Book)






