コンテンツにスキップ
Zenn Dev Ctxpack Ai Context Extractor

AIエージェントのコンテキスト消費を80%削減するCLIツール「ctxpack」を作った

  • URL: https://zenn.dev/pepabo/articles/ctxpack-ai-context-extractor
  • 日付: 2026-06-10
  • Tier: Tier 3
  • 要旨: Claude CodeなどのAIエージェントがURL読取時に消費するコンテキストを最大91%削減するCLI「ctxpack」をGMOペパボのエンジニアが開発・公開。Python公式ドキュメント1ページが81,506→20,495トークンに圧縮(74.9%削減)。Homebrew対応。

詳細

解決する問題

  • AIエージェントにURL読ませるとナビゲーション・広告・フッター・スクリプトタグ等のノイズがコンテキストを大量消費
  • Python公式ドキュメント1ページで80,000トークン超になることも

主な機能

  • HTML/Markdown/URLからノイズ除去してコンパクトなMarkdown/JSONを返すCLI
  • --stats: トークン節約量を出力末尾に表示
  • --query "キーワード": タスク関連セクションを先頭に並べ替え(重要部分が切り捨てられにくくなる)
  • --json: エージェントのツール呼び出し結果向けの構造化JSON出力
  • ctxpack stats: 累計節約量の確認

インストール

brew install atani/tap/ctxpack

実測値

  • Python argparse ページ: 81,506トークン → 20,495トークン(74.9%削減)
  • 9ページ累計: 573,028トークン → 51,565トークン(91.0%削減)

ノイズ除去の仕組み

  • <script><style><noscript><nav><footer><aside>をタグごと削除
  • class/id/roleでad、banner、breadcrumb、cookie、header、menu等をキーワードマッチで削除
  • 標準ライブラリのみで実装(外部依存なし)

トークン推定方式

  • CJK文字(ひらがな・カタカナ等): 1文字≒0.8トークン
  • その他: 4文字≒1トークン
  • モデル非依存の近似値(削減前後の相対比較用)

Claude Code連携 CLAUDE.mdに以下を追記することでClaude CodeがctxpackをWebFetchより優先使用するようになる:

URL読み込み前に `ctxpack <url> --json` でパックしてトークンを節約する

ロードマップ: Playwright対応、MCP/サーバーモード、モデル別トークナイザー対応など