toon
Token-Oriented Object Notation(TOON)は、JSONデータモデルのコンパクトで人間が読みやすいエンコーディング形式です。トークン数を最小化しながら、構造をLLMが容易に処理できるようにします。既存のJSONをそのまま置き換える、情報損失のない表現方法として、LLMへの入力に適しています。
description の原文を見る
Token-Oriented Object Notation is a compact, human-readable encoding of the JSON data model that minimizes tokens and makes structure easy for models to follow. It's intended for LLM input as a drop-in, lossless representation of your existing JSON.
SKILL.md 本文

Token-Oriented Object Notation (TOON)
Token-Oriented Object Notation は JSON データモデルのコンパクトで人間が読みやすいエンコーディングで、トークンを最小化し、モデルが構造を追跡しやすくします。既存の JSON をロスレスで表現する LLM 入力 の置き換えを目的としています。
TOON は、ネストされたオブジェクト用の YAML のインデントベースの構造と、均一な配列用の CSV 形式の表形式レイアウトを組み合わせています。TOON の最適な使い場面は、オブジェクトの均一な配列(行ごとに複数のフィールド、アイテム間で同じ構造)で、CSV のようなコンパクト性を達成しながら、LLM がデータを確実に解析・検証できるようにする明示的な構造を追加します。深くネストされたまたは不均一なデータの場合は、JSON の方が効率的です。
CSV との類似性は意図的です。CSV はシンプルで普遍的であり、TOON はその親しみやすさを保ちながら、Large Language Model 向けの JSON のロスレスで置き換え可能な表現であることを目指しています。
これは翻訳層と考えてください。プログラムでは JSON を使用し、LLM 入力として TOON にエンコードします。
[!TIP] TOON フォーマットは安定していますが、同時に進行中の考え方でもあります。何も決まったものではありません。仕様への貢献やフィードバックを共有することで、進む方向を形作る手助けができます。
目次
- TOON が必要な理由
- 主な機能
- TOON を使用しない場合
- ベンチマーク
- インストール&クイックスタート
- プレイグラウンド
- エディタサポート
- CLI
- フォーマット概要
- LLM での TOON の使用
- ドキュメント
- その他の実装
- 📋 完全な仕様
TOON が必要な理由
AI はより安価で身近になってきていますが、より大きなコンテキストウィンドウはより大きなデータ入力も可能にします。LLM トークンはまだお金がかかります – 標準的な JSON は冗長でトークン代が高くつきます。
{
"context": {
"task": "Our favorite hikes together",
"location": "Boulder",
"season": "spring_2025"
},
"friends": ["ana", "luis", "sam"],
"hikes": [
{
"id": 1,
"name": "Blue Lake Trail",
"distanceKm": 7.5,
"elevationGain": 320,
"companion": "ana",
"wasSunny": true
},
{
"id": 2,
"name": "Ridge Overlook",
"distanceKm": 9.2,
"elevationGain": 540,
"companion": "luis",
"wasSunny": false
},
{
"id": 3,
"name": "Wildflower Loop",
"distanceKm": 5.1,
"elevationGain": 180,
"companion": "sam",
"wasSunny": true
}
]
}
<details>
<summary>YAML は既に <strong>より少ないトークン</strong> で同じ情報を伝えています。</summary>
context:
task: Our favorite hikes together
location: Boulder
season: spring_2025
friends:
- ana
- luis
- sam
hikes:
- id: 1
name: Blue Lake Trail
distanceKm: 7.5
elevationGain: 320
companion: ana
wasSunny: true
- id: 2
name: Ridge Overlook
distanceKm: 9.2
elevationGain: 540
companion: luis
wasSunny: false
- id: 3
name: Wildflower Loop
distanceKm: 5.1
elevationGain: 180
companion: sam
wasSunny: true
</details>
TOON は同じ情報を さらに少ないトークン で伝えます。YAML のようなインデントを CSV スタイルの表形式配列と組み合わせています。
context:
task: Our favorite hikes together
location: Boulder
season: spring_2025
friends[3]: ana,luis,sam
hikes[3]{id,name,distanceKm,elevationGain,companion,wasSunny}:
1,Blue Lake Trail,7.5,320,ana,true
2,Ridge Overlook,9.2,540,luis,false
3,Wildflower Loop,5.1,180,sam,true
主な機能
- 📊 トークン効率的で正確: TOON は 73.9% の精度を達成(JSON の 70% 対)し、混合構造ベンチマークで 4 つのモデル全体で約 40% 少ないトークンを使用します。
- 🔁 JSON データモデル: JSON と同じオブジェクト、配列、プリミティブをエンコードし、決定論的でロスレスなラウンドトリップを実現します。
- 🛤️ LLM フレンドリーなガードレール: 明示的な [N] 長と {fields} ヘッダは、モデルが従うべき明確なスキーマを提供し、解析の信頼性を向上させます。
- 📐 最小限の構文: インデントを使用して括弧を置き換え、クォーテーションを最小化し、YAML のような読みやすさと CSV のようなコンパクト性を実現します。
- 🧺 表形式配列: オブジェクトの均一な配列はフィールドを 1 回宣言して行値をストリーミングする表に縮小されます。
- 🌐 マルチ言語エコシステム: TypeScript、Python、Go、Rust、.NET、その他の言語での仕様駆動の実装。
メディアタイプとファイル拡張子
慣例により、TOON ファイルは .toon 拡張子と HTTP およびコンテンツタイプ対応コンテキスト用の仮置きのメディアタイプ text/toon を使用します。TOON ドキュメントは常に UTF-8 エンコードされています。charset=utf-8 パラメータを指定できますが、省略された場合は UTF-8 がデフォルトになります。規範的な詳細は SPEC.md §18.2 を参照してください。
TOON を使用しない場合
TOON はオブジェクトの均一な配列で優れていますが、他のフォーマットがより適切な場合があります。
- 深くネストされた、または不均一な構造(表形式適性 ≈ 0%):JSON コンパクト形式の方が少ないトークンを使用することがあります。例:多くのネストレベルを持つ複雑な構成オブジェクト。
- 半均一な配列(~40~60% の表形式適性):トークン削減効果が低下します。パイプラインが既に JSON に依存している場合は JSON を優先します。
- 純粋な表形式データ:CSV はフラットテーブルの場合 TOON より小さいです。TOON は LLM の信頼性を向上させる構造(配列長宣言、フィールドヘッダ、デリミタスコーピング)を提供するために最小限のオーバーヘッド(約 5~10%)を追加します。
- レイテンシが重要なアプリケーション:応答時間の全体が最優先の場合は、正確なセットアップでベンチマークを測定してください。一部のデプロイメント(特に Ollama などのローカル/量子化モデル)は、TOON がより低いトークン数を持っていても、コンパクト JSON をより高速に処理する可能性があります。TTFT、tokens/sec、両方のフォーマットの合計時間を測定し、より高速な方を使用します。
具体的な比較については、ベンチマークを参照してください。
ベンチマーク
ベンチマークは公平な比較を確保するために 2 つのトラックに整理されています。
- 混合構造トラック:ネストされた、または半均一な構造を持つデータセット(TOON 対 JSON、YAML、XML)。CSV は除外(これらの構造を適切に表現できないため)。
- フラットのみトラック:CSV が適用できるフラットな表形式構造を持つデータセット(CSV 対 TOON 対 JSON、YAML、XML)。
検索精度
<!-- automd:file src="./benchmarks/results/retrieval-accuracy.md" -->ベンチマークは 4 つのモデルで 209 個のデータ検索質問を使用して、異なる入力フォーマット全体での LLM 理解度をテストします。
<details> <summary><strong>データセットカタログを表示</strong></summary>データセットカタログ
| データセット | 行数 | 構造 | CSV サポート | 適性 |
|---|---|---|---|---|
| 均一な従業員レコード | 100 | uniform | ✓ | 100% |
| ネストされた構造を持つ電子商取引注文 | 50 | nested | ✗ | 33% |
| 時系列分析データ | 60 | uniform | ✓ | 100% |
| トップ 100 GitHub リポジトリ | 100 | uniform | ✓ | 100% |
| 半均一なイベントログ | 75 | semi-uniform | ✗ | 50% |
| 深くネストされた構成 | 11 | deep | ✗ | 0% |
| 有効な完全なデータセット(コントロール) | 20 | uniform | ✓ | 100% |
| 配列が短縮:末尾から 3 行削除 | 17 | uniform | ✓ | 100% |
| 宣言された長さを超える追加行 | 23 | uniform | ✓ | 100% |
| 不一貫なフィールド数(行 10 で給与が欠落) | 20 | uniform | ✓ | 100% |
| 必須フィールドが欠落(複数行でメールなし) | 20 | uniform | ✓ | 100% |
構造クラス:
- uniform:すべてのオブジェクトが同じフィールドを持つプリミティブ値
- semi-uniform:均一な構造と不均一な構造の混合
- nested:ネストされた構造を持つオブジェクト(ネストされたオブジェクトまたは配列)
- deep:最小限の表形式適性を持つ高度にネストされたもの
CSV サポート: ✓(サポート)、✗(非サポート – ロスフルフラット化が必要)
適性: TOON の表形式フォーマットに適格な配列の割合(プリミティブ値を持つ均一なオブジェクト)
</details>効率ランキング(1K トークンあたりの精度)
各フォーマットを効率(1,000 トークンあたりの精度パーセンテージ)でランク付け:
TOON ████████████████████ 26.9 acc%/1K tok │ 73.9% acc │ 2,744 tokens
JSON compact █████████████████░░░ 22.9 acc%/1K tok │ 70.7% acc │ 3,081 tokens
YAML ██████████████░░░░░░ 18.6 acc%/1K tok │ 69.0% acc │ 3,719 tokens
JSON ███████████░░░░░░░░░ 15.3 acc%/1K tok │ 69.7% acc │ 4,545 tokens
XML ██████████░░░░░░░░░░ 13.0 acc%/1K tok │ 67.1% acc │ 5,167 tokens
効率スコア = (精度 % ÷ トークン) × 1,000。高いほど良い。
[!TIP] TOON は 73.9% の精度を達成(JSON の 69.7% 対)し、39.6% 少ないトークン を使用します。
CSV に関する注釈: ランキングから除外(209 の質問のうち 109 のみサポート – フラットな表形式データのみ)。CSV はシンプルな表形式データで高いトークン効率を持ちますが、他のフォーマットが処理するネストされた構造を表現することができません。
モデル別精度
4 つの LLM で 209 個のデータ検索質問に対する精度:
claude-haiku-4-5-20251001
→ TOON ████████████░░░░░░░░ 59.8% (125/209)
JSON ███████████░░░░░░░░░ 57.4% (120/209)
YAML ███████████░░░░░░░░░ 56.0% (117/209)
XML ███████████░░░░░░░░░ 55.5% (116/209)
JSON compact ███████████░░░░░░░░░ 55.0% (115/209)
CSV ██████████░░░░░░░░░░ 50.5% (55/109)
gemini-2.5-flash
→ TOON ██████████████████░░ 87.6% (183/209)
CSV █████████████████░░░ 86.2% (94/109)
JSON compact ████████████████░░░░ 82.3% (172/209)
YAML ████████████████░░░░ 79.4% (166/209)
XML ████████████████░░░░ 79.4% (166/209)
JSON ███████████████░░░░░ 77.0% (161/209)
gpt-5-nano
→ TOON ██████████████████░░ 90.9% (190/209)
JSON compact ██████████████████░░ 90.9% (190/209)
JSON ██████████████████░░ 89.0% (186/209)
CSV ██████████████████░░ 89.0% (97/109)
YAML █████████████████░░░ 87.1% (182/209)
XML ████████████████░░░░ 80.9% (169/209)
grok-4-fast-non-reasoning
→ TOON ███████████░░░░░░░░░ 57.4% (120/209)
JSON ███████████░░░░░░░░░ 55.5% (116/209)
JSON compact ███████████░░░░░░░░░ 54.5% (114/209)
YAML ███████████░░░░░░░░░ 53.6% (112/209)
XML ███████████░░░░░░░░░ 52.6% (110/209)
CSV ██████████░░░░░░░░░░ 52.3% (57/109)
<details> <summary><strong>データセット、モデル、質問タイプ別のパフォーマンス</strong></summary>[!TIP] TOON は 73.9% の精度 を達成(JSON の 69.7% 対)し、これらのデータセットで 39.6% 少ないトークン を使用します。
質問タイプ別パフォーマンス
| 質問タイプ | TOON | JSON compact | JSON | CSV | YAML | XML |
|---|---|---|---|---|---|---|
| フィールド取得 | 99.6% | 99.3% | 99.3% | 100.0% | 98.2% | 98.9% |
| 集計 | 54.4% | 47.2% | 48.8% | 44.0% | 47.6% | 41.3% |
| フィルタリング | 56.3% | 57.3% | 50.5% | 49.1% | 51.0% | 47.9% |
| 構造認識 | 88.0% | 83.0% | 83.0% | 85.9% | 80.0% | 80.0% |
| 構造検証 | 70.0% | 45.0% | 50.0% | 80.0% | 60.0% | 80.0% |
データセット別パフォーマンス
均一な従業員レコード
| フォーマット | 精度 | トークン | 正解/合計 |
|---|---|---|---|
csv | 72.0% | 2,352 | 118/164 |
toon | 73.8% | 2,518 | 121/164 |
json-compact | 69.5% | 3,953 | 114/164 |
yaml | 68.3% | 4,982 | 112/164 |
json-pretty | 68.3% | 6,360 | 112/164 |
xml | 69.5% | 7,324 | 114/164 |
ネストされた構造を持つ電子商取引注文
| フォーマット | 精度 | トークン | 正解/合計 |
|---|---|---|---|
toon | 81.1% | 7,232 | 133/164 |
json-compact | 76.8% | 6,794 | 126/164 |
yaml | 75.6% | 8,347 | 124/164 |
json-pretty | 76.2% | 10,713 | 125/164 |
xml | 74.4% | 12,023 | 122/164 |
時系列分析データ
| フォーマット | 精度 | トークン | 正解/合計 |
|---|---|---|---|
csv | 73.3% | 1,406 | 88/120 |
toon | 72.5% | 1,548 | 87/120 |
json-compact | 71.7% | 2,349 | 86/120 |
yaml | 71.7% | 2,949 | 86/120 |
json-pretty | 68.3% | 3,676 | 82/120 |
xml | 68.3% | 4,384 | 82/120 |
トップ 100 GitHub リポジトリ
| フォーマット | 精度 | トークン | 正解/合計 |
|---|---|---|---|
toon | 62.9% | 8,779 | 83/132 |
csv | 61.4% | 8,527 | 81/132 |
yaml | 59.8% | 13,141 | 79/132 |
json-compact | 55.3% | 11,464 | 73/132 |
json-pretty | 56.1% | 15,157 | 74/132 |
xml | 48.5% | 17,105 | 64/132 |
半均一なイベントログ
| フォーマット | 精度 | トークン | 正解/合計 |
|---|---|---|---|
json-compact | 63.3% | 4,819 | 76/120 |
toon | 57.5% | 5,799 | 69/120 |
json-pretty | 59.2% | 6,797 | 71/120 |
yaml | 48.3% | 5,827 | 58/120 |
xml | 46.7% | 7,709 | 56/120 |
深くネストされた構成
| フォーマット | 精度 | トークン | 正解/合計 |
|---|---|---|---|
json-compact | 92.2% | 574 | 107/116 |
toon | 95.7% | 666 | 111/116 |
yaml | 91.4% | 686 | 106/116 |
json-pretty | 94.0% | 932 | 109/116 |
xml | 92.2% | 1,018 | 107/116 |
有効な完全なデータセット(コントロール)
| フォーマット | 精度 | トークン | 正解/合計 |
|---|---|---|---|
toon | 100.0% | 544 | 4/4 |
json-compact | 100.0% | 795 | 4/4 |
yaml | 100.0% | 1,003 | 4/4 |
json-pretty | 100.0% | 1,282 | 4/4 |
csv | 25.0% | 492 | 1/4 |
xml | 0.0% | 1,467 | 0/4 |
配列が短縮:末尾から 3 行削除
| フォーマット | 精度 | トークン | 正解/合計 |
|---|---|---|---|
csv | 100.0% | 425 | 4/4 |
xml | 100.0% | 1,251 | 4/4 |
toon | 0.0% | 474 | 0/4 |
json-compact | 0.0% | 681 | 0/4 |
json-pretty | 0.0% | 1,096 | 0/4 |
yaml | 0.0% | 859 | 0/4 |
宣言された長さを超える追加行
| フォーマット | 精度 | トークン | 正解/合計 |
|---|---|---|---|
csv | 100.0% | 566 | 4/4 |
toon | 75.0% | 621 | 3/4 |
xml | 100.0% | 1,692 | 4/4 |
yaml | 75.0% | 1,157 | 3/4 |
json-compact | 50.0% | 917 | 2/4 |
json-pretty | 50.0% | 1,476 | 2/4 |
不一貫なフィールド数(行 10 で給与が欠落)
| フォーマット | 精度 | トークン | 正解/合計 |
|---|---|---|---|
csv | 75.0% | 489 | 3/4 |
yaml | 100.0% | 996 | 4/4 |
toon | 100.0% | 1,019 | 4/4 |
json-compact | 75.0% | 790 | 3/4 |
xml | 100.0% | 1,458 | 4/4 |
json-pretty | 75.0% | 1,274 | 3/4 |
必須フィールドが欠落(複数行でメールなし)
| フォーマット | 精度 | トークン | 正解/合計 |
|---|---|---|---|
csv | 100.0% | 329 | 4/4 |
xml | 100.0% | 1,411 | 4/4 |
toon | 75.0% | 983 | 3/4 |
yaml | 25.0% | 960 | 1/4 |
json-pretty | 25.0% | 1,230 | 1/4 |
json-compact | 0.0% | 755 | 0/4 |
モデル別パフォーマンス
claude-haiku-4-5-20251001
| フォーマット | 精度 | 正解/合計 |
|---|---|---|
toon | 59.8% | 125/209 |
json-pretty | 57.4% | 120/209 |
yaml | 56.0% | 117/209 |
xml | 55.5% | 116/209 |
json-compact | 55.0% | 115/209 |
csv | 50.5% | 55/109 |
gemini-2.5-flash
| フォーマット | 精度 | 正解/合計 |
|---|---|---|
toon | 87.6% | 183/209 |
csv | 86.2% | 94/109 |
json-compact | 82.3% | 172/209 |
yaml | 79.4% | 166/209 |
xml | 79.4% | 166/209 |
json-pretty | 77.0% | 161/209 |
gpt-5-nano
| フォーマット | 精度 | 正解/合計 |
|---|---|---|
toon | 90.9% | 190/209 |
json-compact | 90.9% | 190/209 |
json-pretty | 89.0% | 186/209 |
csv | 89.0% | 97/109 |
yaml | 87.1% | 182/209 |
xml | 80.9% | 169/209 |
grok-4-fast-non-reasoning
| フォーマット | 精度 | 正解/合計 |
|---|---|---|
toon | 57.4% | 120/209 |
json-pretty | 55.5% | 116/209 |
json-compact | 54.5% | 114/209 |
yaml | 53.6% | 112/209 |
xml | 52.6% | 110/209 |
csv | 52.3% | 57/109 |
何を測定しているか
このベンチマークは LLM の理解度とデータ検索精度 を異なる入力フォーマット全体でテストします。各 LLM はフォーマットされたデータを受け取り、それについての質問に答える必要があります。これは、モデルが TOON 出力を生成する能力をテストするものではなく、それを読んで理解する能力のみをテストします。
テスト済みデータセット
異なる構造パターンと検証機能をテストするように設計された 11 個のデータセット:
主要データセット:
- 表形式(100 人の従業員レコード):同じフィールドを持つ均一なオブジェクト。TOON の表形式フォーマットに最適。
- ネストされた(50 件の電子商取引注文):ネストされた顧客オブジェクトとアイテム配列を持つ複雑な構造。
- 分析(60 日のメトリクス):日付と数値を持つ時系列データ。
- GitHub(100 個のリポジトリ):トップ GitHub リポジトリの実データ(スター数順)。
- イベントログ(75 個のログ):約 50% のフラットログと約 50% のネストされたエラーオブジェクトを持つ半均一なデータ。
- ネストされた構成(1 つの構成):最小限の表形式適性を持つ深くネストされた構成。
構造検証データセット:
- コントロール:有効な完全なデータセット(検証用ベースライン)
- 短縮:末尾から 3 行削除された配列(
[N]長検出をテスト) - 追加行:宣言された長さを超える 3 行の追加行
- 幅ミスマッチ:不一貫なフィールド数(行 10 で給与が欠落)
- 欠落フィールド:体系的なフィールド省略(複数行でメールがない)
質問タイプ
209 個の質問が 5 つのカテゴリ全体で動的に生成されます:
-
フィールド取得(33%):直接値の検索またはレコードから直接読み取れる値(ブール値や配列長などの単純な数)
- 例:「Alice の給与は?」→
75000 - 例:「注文 ORD-0042 に含まれるアイテムは何個ですか?」→
3 - 例:「注文 ORD-0042 の顧客名は?」→
John Doe
- 例:「Alice の給与は?」→
-
集計(30%):データセット レベルの合計と平均、および単一条件フィルタ(数、合計、最小/最大比較)
- 例:「エンジニアリング部門で働く従業員は何人ですか?」→
17 - 例:「すべての注文の合計収益はいくらですか?」→
45123.50 - 例:「給与が 80000 を超える従業員は何人ですか?」→
23
- 例:「エンジニアリング部門で働く従業員は何人ですか?」→
-
フィルタリング(23%):複合ロジックを必要とするマルチ条件クエリ(フィールド全体の AND 制約)
- 例:「営業部門で給与が 80000 を超える従業員は何人ですか?」→
5 - 例:「経験が 10 年を超える有効な従業員は何人ですか?」→
8
- 例:「営業部門で給与が 80000 を超える従業員は何人ですか?」→
-
構造認識(12%):フォーマット固有の構造機能をテスト(TOON の
[N]数と{fields}、CSV のヘッダ行)- 例:「データセットに何人の従業員がいますか?」→
100 - 例:「従業員のフィールド名をリストアップしてください」→
id, name, email, department, salary, yearsExperience, active - 例:「最後の従業員の部門は?」→
Sales
- 例:「データセットに何人の従業員がいますか?」→
-
構造検証(2%):構造メタデータを使用して不完全、短縮、または破損したデータを検出する能力をテスト
- 例:「このデータは完全で有効ですか?」→
YES(コントロール データセット)またはNO(破損したデータセット) - TOON の
[N]長検証と{fields}の一貫性チェックをテスト - CSV の構造検証機能の欠如を実証
- 例:「このデータは完全で有効ですか?」→
評価プロセス
- フォーマット変換:各データセットはすべての 6 つのフォーマット(TOON、JSON コンパクト、JSON、CSV、YAML、XML)に変換されます。
- LLM をクエリ:各モデルはフォーマット済みデータ + プロンプト内の質問を受け取り、答えを抽出します。
- 決定論的に検証:LLM ジャッジなしで、タイプ対応比較(例:
50000=$50,000、Engineering=engineering、2025-01-01=January 1, 2025)を使用して答えを検証します。
モデルと構成
- テスト済みモデル:
claude-haiku-4-5-20251001、gemini-2.5-flash、gpt-5-nano、grok-4-fast-non-reasoning - トークンカウント:
gpt-tokenizerを使用してo200k_baseエンコーディング(GPT-5 トークナイザー) - 温度:設定なし(モデルはデフォルトを使用)
- 合計評価:209 個の質問 × 6 つのフォーマット × 4 つのモデル = 5,016 LLM 呼び出し
トークン効率
トークン数は GPT-5 o200k_base トークナイザーを使用して gpt-tokenizer で測定されます。削減は、フォーマットされた JSON(2 スペースインデント)をプライマリベースラインとして計算され、コンパクト JSON(縮小)、YAML、XML への追加比較も含まれます。実際の削減はモデルとトークナイザーによって異なります。
ベンチマークは異なる構造パターン(均一、半均一、ネストされた、深くネストされた)のデータセット全体をテストして、TOON が優れているところと他のフォーマットの方が優れているかもしれない場所を示します。
<!-- automd:file src="./benchmarks/results/token-efficiency.md" -->混合構造トラック
ネストされた、または半均一な構造を持つデータセット。CSV は これらの構造を適切に表現できないため除外されます。
🛒 ネストされた構造を持つ電子商取引注文 ┊ 表形式: 33%
│
TOON █████████████░░░░░░░ 72,771 tokens
├─ vs JSON (−33.1%) 108,806 tokens
├─ vs JSON compact (+5.5%) 68,975 tokens
├─ vs YAML (−14.2%) 84,780 tokens
└─ vs XML (−40.5%) 122,406 tokens
🧾 半均一なイベントログ ┊ 表形式: 50%
│
TOON █████████████████░░░ 153,211 tokens
├─ vs JSON (−15.0%) 180,176 tokens
├─ vs JSON compact (+19.9%) 127,731 tokens
├─ vs YAML (−0.8%) 154,505 tokens
└─ vs XML (−25.2%) 204,777 tokens
🧩 深くネストされた構成 ┊ 表形式: 0%
│
TOON ██████████████░░░░░░ 631 tokens
├─ vs JSON (−31.3%) 919 tokens
├─ vs JSON compact (+11.9%) 564 tokens
├─ vs YAML (−6.2%) 673 tokens
└─ vs XML (−37.4%) 1,008 tokens
──────────────────────────────────── 合計 ────────────────────────────────────
TOON ████████████████░░░░ 226,613 tokens
├─ vs JSON (−21.8%) 289,901 tokens
├─ vs JSON compact (+14.9%) 197,270 tokens
├─ vs YAML (−5.6%) 239,958 tokens
└─ vs XML (−31.0%) 328,191 tokens
フラットのみトラック
CSV が適用できるフラットな表形式構造を持つデータセット。
👥 均一な従業員レコード ┊ 表形式: 100%
│
CSV ███████████████████░ 46,954 tokens
TOON ████████████████████ 49,831 tokens (+6.1% vs CSV)
├─ vs JSON (−60.7%) 126,860 tokens
├─ vs JSON compact (−36.8%) 78,856 tokens
├─ vs YAML (−50.0%) 99,706 tokens
└─ vs XML (−66.0%) 146,444 tokens
📈 時系列分析データ ┊ 表形式: 100%
│
CSV ██████████████████░░ 8,388 tokens
TOON ████████████████████ 9,120 tokens (+8.7% vs CSV)
├─ vs JSON (−59.0%) 22,250 tokens
├─ vs JSON compact (−35.8%) 14,216 tokens
├─ vs YAML (−48.9%) 17,863 tokens
└─ vs XML (−65.7%) 26,621 tokens
⭐ トップ 100 GitHub リポジトリ ┊ 表形式: 100%
│
CSV ███████████████████░ 8,512 tokens
TOON ████████████████████ 8,744 tokens (+2.7% vs CSV)
├─ vs JSON (−42.3%) 15,144 tokens
├─ vs JSON compact (−23.7%) 11,454 tokens
├─ vs YAML (−33.4%) 13,128 tokens
└─ vs XML (−48.9%) 17,095 tokens
──────────────────────────────────── 合計 ────────────────────────────────────
CSV ███████████████████░ 63,854 tokens
TOON ████████████████████ 67,695 tokens (+6.0% vs CSV)
├─ vs JSON (−58.8%) 164,254 tokens
├─ vs JSON compact (−35.2%) 104,526 tokens
├─ vs YAML (−48.2%) 130,697 tokens
└─ vs XML (−64.4%) 190,160 tokens
<details>
<summary><strong>詳細な例を表示</strong></summary>
📈 時系列分析データ
削減: 13,130 トークン(JSON と比較して 59.0% 削減)
JSON(22,250 トークン):
{
"metrics": [
{
"date": "2025-01-01",
"views": 5715,
"clicks": 211,
"conversions": 28,
"revenue": 7976.46,
"bounceRate": 0.47
},
{
"date": "2025-01-02",
"views": 7103,
"clicks": 393,
"conversions": 28,
"revenue": 8360.53,
"bounceRate": 0.32
},
{
"date": "2025-01-03",
"views": 7248,
"clicks": 378,
"conversions": 24,
"revenue": 3212.57,
"bounceRate": 0.5
},
{
"date": "2025-01-04",
"views": 2927,
"clicks": 77,
"conversions": 11,
"revenue": 1211.69,
"bounceRate": 0.62
},
{
"date": "2025-01-05",
"views": 3530,
"clicks": 82,
"conversions": 8,
"revenue": 462.77,
"bounceRate": 0.56
}
]
}
TOON(9,120 トークン):
metrics[5]{date,views,clicks,conversions,revenue,bounceRate}:
2025-01-01,5715,211,28,7976.46,0.47
2025-01-02,7103,393,28,8360.53,0.32
2025-01-03,7248,378,24,3212.57,0.5
2025-01-04,2927,77,11,1211.69,0.62
2025-01-05,3530,82,8,462.77,0.56
⭐ トップ 100 GitHub リポジトリ
削減: 6,400 トークン(JSON と比較して 42.3% 削減)
JSON(15,144 トークン):
{
"repositories": [
{
"id": 28457823,
"name": "freeCodeCamp",
"repo": "freeCodeCamp/freeCodeCamp",
"description": "freeCodeCamp.org's open-source codebase and curriculum. Learn math, programming,…",
"createdAt": "2014-12-24T17:49:19Z",
"updatedAt": "2025-10-28T11:58:08Z",
"pushedAt": "2025-10-28T10:17:16Z",
"stars": 430886,
"watchers": 8583,
"forks": 42146,
"defaultBranch": "main"
},
{
"id": 132750724,
"name": "build-your-own-x",
"repo": "codecrafters-io/build-your-own-x",
"description": "Master programming by recreating your favorite technologies from scratch.",
"createdAt": "2018-05-09T12:03:18Z",
"updatedAt": "2025-10-28T12:37:11Z",
"pushedAt": "2025-10-10T18:45:01Z",
"stars": 430877,
"watchers": 6332,
"forks": 40453,
"defaultBranch": "master"
},
{
"id": 21737465,
"name": "awesome",
"repo": "sindresorhus/awesome",
"description": "😎 Awesome lists about all kinds of interesting topics",
"createdAt": "2014-07-11T13:42:37Z",
"updatedAt": "2025-10-28T12:40:21Z",
"pushedAt": "2025-10-27T17:57:31Z",
"stars": 410052,
"watchers": 8017,
"forks": 32029,
"defaultBranch": "main"
}
]
}
TOON(8,744 トークン):
repositories[3]{id,name,repo,description,createdAt,updatedAt,pushedAt,stars,watchers,forks,defaultBranch}:
28457823,freeCodeCamp,freeCodeCamp/freeCodeCamp,"freeCodeCamp.org's open-source codebase and curriculum. Learn math, programming,…","2014-12-24T17:49:19Z","2025-10-28T11:58:08Z","2025-10-28T10:17:16Z",430886,8583,42146,main
132750724,build-your-own-x,codecrafters-io/build-your-own-x,Master programming by recreating your favorite technologies from scratch.,"2018-05-09T12:03:18Z","2025-10-28T12:37:11Z","2025-10-10T18:45:01Z",430877,6332,40453,master
21737465,awesome,sindresorhus/awesome,😎 Awesome lists about all kinds of interesting topics,"2014-07-11T13:42:37Z","2025-10-28T12:40:21Z","2025-10-27T17:57:31Z",410052,8017,32029,main
</details>
<!-- /automd -->
インストール&クイックスタート
CLI(インストール不要)
npx で TOON をすぐに試す:
# JSON を TOON に変換
npx @toon-format/cli input.json -o output.toon
# stdin からパイプ
echo '{"name": "Ada", "role": "dev"}' | npx @toon-format/cli
すべてのオプションと例については、CLI セクションを参照してください。
TypeScript ライブラリ
# npm
npm install @toon-format/toon
# pnpm
pnpm add @toon-format/toon
# yarn
yarn add @toon-format/toon
使用例:
import { encode } from "@toon-format/toon";
const data = {
users: [
{ id: 1, name: "Alice", role: "admin" },
{ id: 2, name: "Bob", role: "user" },
],
};
console.log(encode(data));
// users[2]{id,name,role}:
// 1,Alice,admin
// 2,Bob,user
大規模なデータセットのストリーミング:
import { encodeLines } from "@toon-format/toon";
const largeData = await fetchThousandsOfRecords();
// 大規模データのメモリ効率的なストリーミング
for (const line of encodeLines(largeData)) {
process.stdout.write(`${line}\n`);
}
[!TIP] ストリーミングデコード API については、
decodeFromLines()とdecodeStream()を参照してください。
replacer を使用した値の変換:
import { encode } from "@toon-format/toon";
// 機密フィールドを削除
const user = { name: "Alice", password: "secret", email: "alice@example.com" };
const safe = encode(user, {
replacer: (key, value) => (key === "password" ? undefined : value),
});
// name: Alice
// email: alice@example.com
// 値を変換
const data = { status: "active", count: 5 };
const transformed = encode(data, {
replacer: (key, value) =>
typeof value === "string" ? value.toUpperCase() : value,
});
// status: ACTIVE
// count: 5
[!TIP]
replacer関数はJSON.stringifyの replacer に似ていますが、パストトラッキング機能を持つエンコーディングへのきめ細かい制御を提供します。詳しくは API リファレンスを参照してください。
プレイグラウンド
これらのツールを使用して TOON フォーマットをインタラクティブに体験し、トークン比較、フォーマット変換、検証を行います。
公式プレイグラウンド
TOON プレイグラウンドでは、JSON を TOON にリアルタイムで変換し、トークン数を比較し、URL 経由で実験を共有できます。
コミュニティプレイグラウンド
エディタサポート
VS Code
TOON Language Support - 構文ハイライト、検証、変換、トークン分析。
code --install-extension vishalraut.vscode-toon
Tree-sitter グラマー
tree-sitter-toon - Tree-sitter 互換エディタ(Neovim、Helix、Emacs、Zed)用グラマー。
Neovim
toon.nvim - Lua ベースプラグイン。
その他のエディタ
YAML 構文ハイライトを近似として使用してください。
CLI
JSON ↔ TOON 変換、トークン分析、パイプライン統合用のコマンドラインツール。ファイル拡張子からフォーマットを自動検出し、stdin/stdout ワークフローをサポートし、最大効率のためにデリミタオプションを提供します。
# JSON を TOON にエンコード(自動検出)
npx @toon-format/cli input.json -o output.toon
# TOON を JSON にデコード(自動検出)
npx @toon-format/cli data.toon -o output.json
# stdin からパイプ(引数は不要)
cat data.json | npx @toon-format/cli
echo '{"name": "Ada"}' | npx @toon-format/cli
# stdout に出力
npx @toon-format/cli input.json
# トークン削減を表示
npx @toon-format/cli data.json --stats
[!TIP] すべてのオプション、例、高度な使用法については、完全な CLI ドキュメントを参照してください。
フォーマット概要
詳細な構文リファレンス、実装ガイド、TOON フォーマットの理解と使用に関するクイックルックアップ。
- フォーマット概要 – 完全な構文ドキュメント
- 構文チートシート – クイックリファレンス
- API リファレンス – エンコード/デコード使用法(TypeScript)
LLM での TOON の使用
TOON は、説明するのではなくフォーマットを示すときに最適です。構造は自己説明的です。モデルはパターンを見たら自然に解析します。入力用に ```toon コードブロックでデータをラップし、モデルが TOON を生成するように求める場合は予想されるヘッダテンプレートを表示してください。さらに優れたトークン効率のためにタブデリミタを使用してください。
詳細な LLM 統合ガイドで戦略、例、検証手法を参照してください。
ドキュメント
TOON フォーマットとツールを最大限に活用するための包括的なガイド、リファレンス、リソース。
入門
- イントロダクション&インストール – TOON とは何か、いつ使用するか、最初のステップ
- フォーマット概要 – 完全な構文と例
- ベンチマーク – 精度とトークン効率の結果
ツールと統合
- CLI – JSON ↔ TOON 変換用コマンドラインツール
- LLM での TOON の使用 – プロンプティング戦略と検証
- プレイグラウンド – インタラクティブツール
リファレンス
- API リファレンス – TypeScript/JavaScript エンコード/デコード API
- 構文チートシート – クイックフォーマット検索
- 仕様 – 実装者向けの規範的ルール
その他の実装
TOON には、Python、Rust、Go、Java、Swift、.NET、その他多くの言語を含む複数の言語の公式および コミュニティ実装があります。
ドキュメントで実装の完全なリストを参照してください。
クレジット
- ロゴデザイン:鈴木ックス(SZKX)
ライセンス
MIT License © 2025-PRESENT Johann Schopplich
ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- butttons
- リポジトリ
- butttons/dora
- ライセンス
- MIT
- 最終更新
- 2026/3/10
Source: https://github.com/butttons/dora / ライセンス: MIT
関連スキル
agent-browser
AI エージェント向けのブラウザ自動化 CLI です。ウェブサイトとの対話が必要な場合に使用します。ページ遷移、フォーム入力、ボタンクリック、スクリーンショット取得、データ抽出、ウェブアプリのテスト、ブラウザ操作の自動化など、あらゆるブラウザタスクに対応できます。「ウェブサイトを開く」「フォームに記入する」「ボタンをクリックする」「スクリーンショットを取得する」「ページからデータを抽出する」「このウェブアプリをテストする」「サイトにログインする」「ブラウザ操作を自動化する」といった要求や、プログラマティックなウェブ操作が必要なタスクで起動します。
anyskill
AnySkill — あなたのプライベート・スキルクラウド。GitHubを基盤としたリポジトリからエージェントスキルを管理、同期、動的にロードできます。自然言語でクラウドスキルを検索し、オンデマンドでプロンプトを自動ロード、カスタムスキルのアップロードと共有、スキルバンドルの一括インストールが可能です。OpenClaw、Antigravity、Claude Code、Cursorに対応しています。
engram
AIエージェント向けの永続的なメモリシステムです。バグ修正、意思決定、発見、設定変更の後はmem_saveを使用してください。ユーザーが「覚えている」「記憶している」と言及した場合、または以前のセッションと重複する作業を開始する際はmem_searchを使用します。セッション終了前にmem_session_summaryを使用して、コンテキストを保持してください。
skyvern
AI駆動のブラウザ自動化により、任意のウェブサイトを自動化できます。フォーム入力、データ抽出、ファイルダウンロード、ログイン、複数ステップのワークフロー実行など、ユーザーがウェブサイトと連携する必要があるときに使用します。Skyvernは、LLMとコンピュータビジョンを活用して、未知のサイトも自動操作可能です。Python SDK、TypeScript SDK、REST API、MCPサーバー、またはCLIを通じて統合できます。
pinchbench
PinchBenchベンチマークを実行して、OpenClawエージェントの実世界タスクにおけるパフォーマンスを評価できます。モデルの機能テスト、モデル間の比較、ベンチマーク結果のリーダーボード提出、またはOpenClawのセットアップがカレンダー、メール、リサーチ、コーディング、複数ステップのワークフローにどの程度対応しているかを確認する際に使用します。
openui
OpenUIとOpenUI Langを使用してジェネレーティブUIアプリを構築できます。これらはLLM生成インターフェースのためのトークン効率的なオープン標準です。OpenUI、@openuidev、ジェネレーティブUI、LLMからのストリーミングUI、AI向けコンポーネントライブラリ、またはjson-render/A2UIの置き換えについて述べる際に使用します。スキャフォルディング、defineComponent、システムプロンプト、Renderer、およびOpenUI Lang出力のデバッグに対応しています。