lean-reader について
lean-readerは、URLからLLM向けのトークンを抑えたテキストを抽出するMCPサーバー兼ライブラリです。記事抽出に加え、トークン数と推定削減量を示すレシートを返します。
主な機能
- 01URLから読みやすいテキストを抽出
- 02Markdownまたはテキストを返却
- 03トークン数と削減量を表示
- 042種類の記事抽出器を併用
- 05静的HTMLの制限時に部分抽出を通知
活用シーン
- 01LLMのコンテキスト用にウェブ記事を準備
- 02ページ処理前にトークン削減量を確認
MCP 対応
`lean_read`ツールはURLと任意の形式を受け取り、整形済みテキストとトークン削減レシートを返します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
1掲載時のツール一覧 · 2 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| url | string | はい | 取得してクリーンアップする URL |
| format | enum | いいえ | 出力形式(デフォルト:markdown)markdown | text |
詳細
Lean Reader
あらゆる URL をLLM 向けのトークン最小化済みクリーンテキストに変換し、呼び出しのたびにトークン削減量のレシートを返します。MCP サーバー+ライブラリです。
LLM にナビゲーションバー、Cookie バナー、<script> タグ、200 KB のインライン SVG は不要です。しかし、生のページ HTML を使うと、そのすべてにコストがかかります。Lean Reader はページを記事だけに絞り込み、トークン数(および削減できた金額)を正確に示します。
231,276 → 15,735 tokens (93% saved · 14.7× vs raw HTML · ~$0.54 on gpt-4o) · cleaned by lean reader
MCP サーバーとして使う
クライアントの MCP 設定に追加します(Claude Desktop/Code、Cursor など)。
{
"mcpServers": {
"lean-reader": { "command": "npx", "args": ["-y", "lean-reader"] }
}
}
すると、lean_read(url, format?) ツールがクリーンテキストとレシートを返します。
ライブラリとして使う
import { leanRead } from 'lean-reader/lib/core.js';
const r = await leanRead('https://example.com/article', { format: 'markdown' });
console.log(r.content); // token-minimized text
console.log(r.receipt); // { beforeTokens, afterTokens, savedPct, ratio, estCostSavedUsd, ... }
どのくらい削減できますか?
宣伝ではなく、実測値です。オープンベンチマークには、コーパス、トークナイザー、すべての生出力が含まれており、Lean Reader が劣るケースも明示されています。
- Mozilla Readability(標準的な抽出ツール)と比べ、中央値でトークン数を約 29%削減しながら、本文テキストの約 99%を維持します。この差がどこから生じるかは正直に説明します。差を生んでいるのは、より賢い抽出ではなく、後処理の
minimize(リンク/画像/脚注/空白の除去)です。両方にminimizeを適用すると、ほぼ同等になります。実際、Lean は Readability を 2 つの抽出ツールの 1 つとして実行するため(「正直な制約」を参照)、Readability に負けることはありません。 - 生のページ HTMLと比べると、削減倍率は大幅に高くなります(中央値で約 8.7 倍、すでにクリーンなブログ本文では約 3.1 倍、スクリプトの多いドキュメントでは 100 倍以上)。ただし、LLM に渡されることのない HTML との比較なので、これは競争上の優位性ではなく「生のページをそのまま渡さないでください」という意味で捉えてください。
- Jina Reader(匿名枠で実測)と比べると、同条件の本文でトークン数を約 1.6 倍削減し、Jina が返すナビゲーションや参照情報のダンプも含めると約 4.3 倍削減します。Firecrawl は API キーが必要なため、まだ実測していません。
レシートでは o200k_base トークナイザー(GPT-4o/4.1 クラス)を使います。モデルとトークナイザーは常に表示され、トークン数は生のページ HTML との比較なので、計算を確認できます。
正直な制約
- 静的 HTML のみ(v1)。 本文がクライアント側でレンダリングされるページ(一部の SPA、GitHub のリポジトリランディングページなど)では、ほとんど何も返されません。Lean Reader は空のテキストを出す代わりに
partialのフラグを付けます。Jina/Firecrawl は JavaScript をレンダリングするため、このようなケースでは両者が優位です。 - 2 つの抽出ツールを使い、本文が多く得られる方を選択します。 Defuddle と Mozilla Readability は、それぞれ異なるページで本文をひそかに取りこぼします(Defuddle は一部の大規模な Wikipedia 記事で、Readability は一部のドキュメント/SPA で発生します)。Lean は両方を実行し、より多くの本文を抽出できた方を採用するため、どちらの弱点も気づかないままコンテンツを失うことはありません。14 ページを人手でラベル付けしたサンプルに対する ROUGE-L の正解データ検証は完了しており、本文の再現率は 0.99 で、同じ正解データに対する Readability と同等です。したがって、単語数の差は本文の欠落ではなくノイズの除去によるものです(ベンチマークのリポジトリを参照)。
- トークン数は
o200k_baseに基づいています。Claude/Gemini ではトークン化の方式が異なります。
オープンコア
抽出+トークン最小化のコア(lib/)と MCP サーバー(src/)は MIT ライセンスです。ホスト型サービス、共有 UI、使用量計測は別途提供されます。
MIT © 2026
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。