Taprun について
Taprunはブラウザー操作を決定論的な`.flow.json`プログラムに変換し、繰り返し実行しながらサイトの変化を検出します。ログインが必要なサイトや例外の多い処理を、ユーザーのブラウザーまたはPlaywrightで扱うエージェント向けです。
主な機能
- 01ブラウザー操作を`.flow.json`にコンパイル
- 02コンパイル済みプログラムの決定論的な再実行
- 03スナップショットでサイトの変化を検出
- 04ChromeまたはPlaywrightで実行
- 05ウェブサイトの読み取り、書き込み、監視
- 06オンデマンドで自動化を作成
活用シーン
- 01ウェブサイトから情報を抽出
- 02ログイン後のブラウザーワークフローを自動化
- 03サイトの構造変化を監視
- 04実行ごとのLLMトークン消費なしでブラウザー操作を反復
MCP 対応
対応するMCPホストからブラウザー自動化を作成するためのMCPサーバーを提供します。コンパイル済みプログラムはブラウザーランタイムで実行され、再実行のたびにLLMを必要としません。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
https://mcp.taprun.dev/mcpclaude mcp add --transport http tap https://mcp.taprun.dev/mcp{"mcpServers":{"tap":{"type":"http","url":"https://mcp.taprun.dev/mcp"}}}Cursor で開く{"servers":{"tap":{"type":"http","url":"https://mcp.taprun.dev/mcp"}}}VS Code で開く{"mcpServers":{"tap":{"type":"http","url":"https://mcp.taprun.dev/mcp"}}}{"mcpServers":{"tap":{"serverUrl":"https://mcp.taprun.dev/mcp"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
ツール
4| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| url | string | いいえ | |
| intent | string | いいえ |
詳細
Taprun
エージェントがログイン済みの自分のブラウザーで操作するアクションレイヤーです。クリーンな API では対応できない、例外が多くコンプライアンスが重要な最後の 20%を担います。一度コンパイルすれば、LLM トークンを消費せず、何度でも再生できます。
ホームページ | ブログ | 検証済みの主張 | 📬 ドリフトアラート | 中文
ブラウザー向けの、エージェントのクローズドループ型アクションレイヤーです。クリーンな API やクラウドエージェントでは対応できない、ログイン必須で例外が多く、コンプライアンスが重要な最後の 20%を担います。自分の Chrome で操作し、一度記録すれば、LLM トークンを消費せず何度でも再生できます。
API が壁に阻まれ、従量課金されるようになるにつれて、残された作業はログイン、OTP の壁、人間のジェスチャーを必要とするゲートの向こう側にあります。つまり、クラウドエージェントではアーキテクチャ上対応できない例外処理、承認、コンプライアンス手順です。Taprun は、まさにそのためのアクションレイヤーです。エージェントが実際にログイン済みの自分の Chrome を操作してループを完了し(操作 → 効果を検証 → ドリフト時に再実行)、自分で管理できる決定論的なリプレイを生成します。
ほかのブラウザーエージェントはすべて、実行のたびにライブ LLM を再実行し、トークンを再び消費します。Taprun の AI エージェントはページを一度だけ調べて、決定論的な .flow.json プログラムを生成します。それ以降のリプレイはすべて純粋なデータのディスパッチとなり、毎回同じ結果が得られ、トークン消費は 0 ドルで、エージェントは介在しません。実際の Chrome で動作するため、設計上、Cookie とログインセッションは自分のマシン上にとどまります。tap verify が破損を検出し、データが古くなる前に知らせます。
Claude Code、CodeBuddy、Cursor、Cline、Windsurf、およびあらゆる MCP ホストで利用できます。チャットウィンドウから直接インストールできます。カタログは不要で、任意の URL から必要に応じて tap を作成できます。
Capture: AI inspects the site → compiles a .flow.json program (one-time cost)
Run: The program executes instantly, same result every time ($0, zero AI)
Verify: tap verify checks the snapshot equivalence predicate (catches drift)
Repair: re-run capture against the same site/name; the next (only when needed)
verify rebaselines after human review
Taprun の比較
| Taprun | AI ブラウザーエージェント | 従来のスクレイパー | |
|---|---|---|---|
| 1 回の実行あたりの AI コスト | $0(1 回コンパイルするだけ) | 実行のたびにトークンを消費 | 無料 |
| 正確性 | 決定論的 | 実行ごとに変動 | 決定論的 |
| サイレントな失敗の検出 | タップごとの CEL snapshot_equivalent 述語 + 4 種類の判定 | なし | なし |
| 故障の診断 | tap verify — 変更箇所の正確な差分 | なし | 手動でのスポットチェック |
| 検出リスク | 低い(実際のブラウザーセッション) | 高い | 高い |
| ランタイム | 2(Chrome 拡張機能 + Playwright) | 1 | 1 |
| コードの検査可能性 | .flow.json — プレーンな JSON、18 個の操作からなる閉じた語彙、git diff | ブラックボックス/一時的 | 壊れやすいスクリプト |
| MCP ネイティブ | はい(作成レイヤーのみ — 実行時のトークン消費はゼロ) | いいえ | いいえ |
はじめに
1. チャットウィンドウからエージェントに接続する
Claude Code / CodeBuddy — チャットに 2 行貼り付けるだけで、ほかには何も必要ありません。
/plugin marketplace add LeonTing1010/taprun
/plugin install tap@taprun
これにより、Taprun MCP サーバーに加えて、エージェントに使用タイミングを教えるスキルと、ウォールでブロックされた fetch を Taprun に振り分けるフックがインストールされます。ターミナルも設定ファイルも不要です。(CodeBuddy は起動時にのみプラグイン MCP サーバーを接続するため、インストール後に一度完全に再起動してください。Claude Code では /reload-plugins で読み込めます。)
その他の MCP ホスト(Cursor · VS Code · Claude Desktop)— コマンドを 1 つ実行するだけで、設定が書き込まれます。
npx -y @taprun/cli embed cursor # or: vscode | claude-desktop | claude-code | codebuddy | qwen
バイナリは ~/.tap/bin に自動コピーされ、エージェントの MCP 設定が書き込まれます。tap embed --verify でいつでも確認できます。
この一覧にないコーディングエージェントを使っていますか?
tap embedのターゲットはコードではなくデータです。~/.tap/embed-targets.jsonに行を追加すれば、新しいエージェントをすぐに使えます。エンジンのリリースは不要です。各行では、4 種類のインストール種別(Claude Code プラグイン対応ホスト用のcc-plugin、<cli> mcp addを備えた CLI 用のcli-mcp-add、ide-deeplink、desktop-bundle)のいずれかを指定します。例:[{"id":"kode","kind":"cc-plugin","display":"Kode CLI","tier":1,"cli":"kode"}]。Taprun のほかの部分と同じ方針です。エンジンは閉じたまま機械的に動作し、ローカルデータで拡張できます。
次にランタイムを選びます。拡張機能が必要なのは、現在ログイン中の Chrome をそのまま再利用する場合のみです。
- 公開ページ/オープン API/CI — 追加のインストールは不要です。 MCP サーバーは
npx経由で動作するため、これで完了です。--no-extensionを追加すると、専用の分離プロファイルを使った、完全にチャット内で完結する Playwright ランタイムになります(ブラウザー上の操作もクリックも不要です)。 - ログインが必要なサイト(銀行/社内ダッシュボード/小紅書/知乎)— チャット内でエージェントに 「ログインが必要なサイト用に tap をセットアップして」と伝えるだけです。tap-setup スキルがチャットからブリッジ全体を設定します。エンジンがすでに
npxでダウンロードした安定版バイナリを配置し(2 回目のダウンロードは不要)、ネイティブメッセージングのマニフェストを登録してから、拡張機能ページを開きます。必要な手順のうち、唯一チャット内で完結しないのは、Add to Chrome を 1 回クリックすることです。これは Taprun が既存のログイン状態を再利用するための信頼確認ゲートであり、完了すると処理中の呼び出しが自動的に再開します。 - Claude Desktop:
tap.mcpbをダウンロードし、ダブルクリックします。
その他のインストール方法(brew · curl · 手動での MCP JSON 設定 · 生のバイナリ)
brew install LeonTing1010/tap/taprun # Homebrew (macOS / Linux)
curl -fsSL https://taprun.dev/install.sh | sh # permanent binary
npx -y @taprun/cli --version # zero-install (any Node host)
自分で記述する場合の手動 MCP 設定:
{ "mcpServers": { "tap": { "command": "npx", "args": ["-y", "@taprun/cli", "mcp", "stdio"] } } }
| プラットフォーム | ダウンロード |
|---|---|
| macOS(Apple Silicon) | tap-macos-arm64 |
| macOS(Intel) | tap-macos-x64 |
| Linux | tap-linux-x64 |
| Windows | tap-windows-x64.exe |
クレーム台帳の最初の項目を実行します。夜間CIで実行される検証とまったく同じです。
mkdir -p ~/.tap/flows/github
curl -fsSL https://raw.githubusercontent.com/LeonTing1010/tap-skills/main/claims/2026-07-11-github-trending-has-no-api/plan.json \
-o ~/.tap/flows/github/trending-no-api.flow.json
tap github/trending-no-api
"state": "committed"と、今日のトレンドリポジトリがトークン消費ゼロで取得できれば、インストールが機能しており、主張も正しいことがわかります。
3. 独自のTapを作成する
tap capture https://news.ycombinator.com hn/front --intent "front-page stories with points"
tap hn/front # replay forever, $0
または、AI エージェントにそのまま頼んでください。
You: What's trending on GitHub today?
Agent: Here are today's top repos — React compiler hit 734 stars...
You: Capture a tap for Douban top 250 movies
Agent: Done. Run `tap douban/top250` anytime — $0 per run.
オプション:独自のコード(TypeScript / Python)からバイナリを操作する
MCPを介さず、独自のループからtapバイナリを呼び出します。
tap capture <url> hackernews/top --intent "front-page top stories"
tap hackernews/top --args '{}' # JSON-on-stdout, exit 0 on success
tap verify hackernews/top # 3-arm verdict (live / drifted / unreachable)
CLIはJSONとしてToolResult<T>エンベロープを出力します。これはMCPインターフェースが返すものと同じ形式なので、サブプロセスライブラリがある言語ならどれでも操作できます。動詞の一覧はtap --helpを参照してください。
既存のPlaywright / Puppeteer / Stagehandスクリプトをお持ちですか?
書き直す必要はありません。オープンソースのアダプターを使って変換できます。既存のソースを入力すると、Taprun互換の.flow.jsonプランが出力されます。
# Existing Playwright script (47M weekly npm downloads — most likely the one you have)
npm install @taprun/from-playwright @taprun/spec
node -e "import('@taprun/from-playwright').then(m => console.log(m.playwrightToTap(require('fs').readFileSync('tests/login.spec.ts','utf8'), {site:'example', name:'login'})))"
# Or scaffold a new starter from scratch
npx create-tap-script github/trending https://github.com/trending
| アダプター | ソース形式 | 対応範囲 |
|---|---|---|
@taprun/from-playwright | .ts/.js Playwrightテスト | 8つのpage.* API(goto/click/fill/type/press/waitForSelector/waitForTimeout/screenshot) |
@taprun/from-puppeteer | .ts/.js Puppeteerスクリプト | 7つのpage.* APIとpage.keyboard.press |
@taprun/from-stagehand | .ts/.js Stagehandスクリプト | ハイブリッド:決定論的なpage.*はプラン操作にマッピングされ、自然言語のact/extract/observeは、検証結果を誠実に判定するためのフラグが付けられます |
create-tap-script | (なし — スキャフォルダー) | <site>/<name> <url>からスターター用の.flow.jsonエンベロープを生成します |
形式自体のドキュメントは@taprun/specにあります。これは公開プロトコルインターフェースのパッケージで、v2 Plan用のTypeScript型(18種類の操作からなる閉じたユニオンと、判別可能な読み取り/書き込みPlanユニオン)と、taprun.dev/spec/plan-v1/schema.jsonで解決できる$idを含むJSON Schema 2020-12を提供します。両者のずれは双方向に防止されています。サードパーティ製ツール(IDEの$schemaオートコンプリート、Python/Ruby/Goのajv相当バリデーター、ガバナンスレイヤー、代替ランタイム、プランを認識した権限スコープ設定が可能なMCPホスト)は、独自仕様のTaprunエンジンに依存せず、このパッケージを基盤に構築できます。Plan-v1のリファレンス:taprun.dev/spec/plan-v1。5つのパッケージすべてのソースはpackages/にあります(ワークスペースの概要はpackages/README.mdを参照してください)。
何ができますか?
読み取り — あらゆるウェブサイトからデータを抽出します
tap reddit/hot # Reddit front page
tap bilibili/trending # Bilibili trending
tap arxiv/search --keyword "LLM" # arXiv papers
書き込み — あらゆるウェブサイトを操作します
tap xiaohongshu/publish --title "My Note" --images photo.jpg
tap zhihu/publish --title "My Article" --content "..."
監視 — 変更を監視します
tap verify github/trending # spot drift; schedule via cron / launchd
合成 — Unixパイプのように連結します
tap github/trending | tap filter --field stars --gt 500 | tap table
作成 — AIで新しい自動化を作成します
tap capture https://news.ycombinator.com hackernews/hot --intent "top stories" # API detected — compiled without AI
tap capture https://example.com mysite/home --intent "..." # BYOK Claude / GPT for the long tail
モデルは自由に選べます。Claude、OpenAI、DeepSeek、またはOpenAI互換のあらゆるエンドポイントに対応しています。完全オフラインでの作成には、ローカルのOllama / LM Studioも使えます。
tap config set ai.baseUrl http://localhost:11434/v1
tap config set ai.key ollama
tap config set ai.model llama3.1
tap capture https://arxiv.org/list/cs.AI/recent arxiv/recent --intent "recent papers" # 0 bytes leave your machine
仕組み
┌─ Chrome extension (your real browser sessions)
You → AI → Taprun ──────┤
capture └─ Playwright (headless, server, CI/CD)
- 希望を説明します(URL × 自然言語の意図)
- AIがコンパイルします。.flow.jsonプログラム(JSONのみ、18種類の操作からなる閉じた語彙、バージョン管理可能)に変換します。
- Taprunが実行します。どちらのランタイムでも、ずっと無料で実行できます。
コンパイルが成功するたびに、次のコンパイルが速くなります。新しいサイト用のTapが必要ですか?エージェントがcaptureを使ってその場で作成するため、カタログは必要ありません。
検証済みの主張
tap-skills は、もはやスキルカタログではありません。主張台帳です。公開ウェブに関する、日付付きで反証可能な主張を掲載し、それぞれが独自の決定論的なプランを備えています。CI により毎晩、LLM トークンを一切使わずに再検証されます。変化が生じた主張は、その晩のうちに公開ステータスが 🟡 に変わります。
最初の主張をご自身で検証してみてください(約 2 分、ログインもブラウザーも不要です)。
mkdir -p ~/.tap/flows/github
curl -fsSL https://raw.githubusercontent.com/LeonTing1010/tap-skills/main/claims/2026-07-11-github-trending-has-no-api/plan.json \
-o ~/.tap/flows/github/trending-no-api.flow.json
npx -y @taprun/cli github/trending-no-api
毎晩の CI とまったく同じ検証を実行できます。決定論的な再生により、同じ結果が得られます。140 個のスキルを収録した v1 カタログは、v1-archive ブランチにそのまま保存されています。事前構築されたカタログは陳腐化するだけなので、代わりに capture を使って必要に応じてプランを作成します。
tap verify <site>/<name> # Snapshot equivalence — catches silent failures before your data goes stale
tap list # See everything available
tap show <site>/<name> # Print the saved tap's plan as JSON
アーキテクチャからローカルファースト
トークンを一切使わない再生が最大の特徴であり、その基盤にあるのがローカルファーストという保証です。Taprun はお使いのブラウザーで動作します。Chrome 拡張機能は現在のログインセッションを再利用するため、Cookie、認証トークン、認証情報がお使いのマシンの外に出ることはありません。これはマーケティング上の主張ではなく、構造上の選択です。
| 懸念事項 | クラウドファーストのブラウザー SDK | Taprun(ローカルファースト) |
|---|---|---|
| ログイン済みの Cookie はどこに保存されますか? | クラウドベンダーのサーバー | ローカルブラウザー内のみ |
| AI は何を確認できますか? | セッション全体とお客様のデータ | forge 時のページ DOM のみ |
noindex / robots.txt / TOS への準拠 | ベンダーがお客様に代わって ToS に同意 | お客様のアカウントと利用規約が適用 |
| 社内/イントラネットのサイト | VPN トンネリングが必要 | ページを開くだけ |
| サービス終了のリスク | ベンダーが停止するとスクレイパーも停止 | ローカルコードは動作を継続 |
| レイヤー | 保護 |
|---|---|
| サンドボックス | プログラムは権限ゼロで実行されます。ファイル、ネットワーク、システムへのアクセスはできません |
| 静的解析 | CI が危険なパターンをユーザーに届く前にブロックします |
| ローカル限定 | データ、セッション、API キーがお使いのマシンの外に出ることはありません。これはアーキテクチャによって保証されています |
脅威モデルの詳細は SECURITY.md をご覧ください。
コントリビューション
最も簡単なコントリビューション方法は、新しい tap を作成することです。 必要なのは .flow.json ファイル 1 つだけです。
詳しくは CONTRIBUTING.md をご覧ください。
ロードマップ
- コミュニティスキルカタログ — 主張台帳への移行に伴い、2026-07 に終了(v1 カタログはアーカイブ済み)
- 2 つのランタイム — Chrome 拡張機能 + Playwright(ヘッドレス/CI)
- Unix パイプ —
tap A | tap B - 監視モード — 時間の経過に伴う変更を監視
- 検証 —
tap verifyによるスナップショット同等性チェックと、4 種類のドリフト判定(equivalent / drifted / first_snapshot / unreachable) - 1 コマンドで起動できる MCP サーバー — 任意の MCP ホスト向けの
tap mcp stdio(またはtap mcp http) - Android ランタイム
- iOS ランタイム
- 並行制御 — 共有アカウントを並列で操作する M 個のエージェントを決定論的に調整
サポート
- GitHub Discussions — 質疑応答、アイデア、活用例の共有
- [email protected] — ライセンス、非公開のフィードバック、コンサルティング
- Issues — バグ報告
プライバシー
Taprun はアーキテクチャからローカルファーストです。お客様ご自身のマシン上でお客様ご自身のブラウザーを操作するため、認証情報、Cookie、ページデータが外に出ることはありません。エンジンはテレメトリーを送信せず、お客様が保存した tap で明示的に指定した通信(op:fetch)以外の外部ネットワーク通信も行いません。保存した tap、シークレット、トレースは、お客様のマシン上の ~/.tap/ にのみ保存されます。
ポリシー全文:taprun.dev/privacy。
ライセンス
Chrome 拡張機能とドキュメント:MIT。主張台帳:MIT。
Star の推移
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。