defi-portfolio-scanner について
defi-portfolio-scannerは、StacksウォレットのDeFiポジションを集約する読み取り専用スキルです。4つのプロトコルとウォレット残高を調べ、合計額やリスク指標を出力します。
主な機能
- 014つのDeFiプロトコルを並列スキャン
- 02Hiro API経由のウォレット残高取得
- 03USD推定額とプロトコル別内訳
- 04リスクスコア、要因、主要保有資産
- 05稼働確認と障害時の部分結果
活用シーン
- 01新規ポジション前の既存エクスポージャー確認
- 02Zestの融資LTV比率の監視
- 03集中度スコアに基づくリバランス判断
- 04ダッシュボードや通知向けスナップショット作成
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ aibtcdev/ skills --skill defi-portfolio-scannerインストール後、Claude Code で/defi-portfolio-scannerを入力して読み込まれたか確認します。
同梱ファイルAGENT.mddefi-portfolio-scanner.ts
詳細
defi-portfolio-scanner
Stacks ウォレット向けの、複数プロトコルにまたがる DeFi ポジション集約ツールです。Stacks の主要な DeFi プロトコル 4 つをスキャンし、集計値とリスクスコアを含む統合ポートフォリオビューを生成します。
機能
defi-portfolio-scanner は、Stacks DeFi プロトコル 4 つに並列で問い合わせ、指定された STX アドレスの正規化された単一の JSON レポートを返します。
| プロトコル | スキャン対象 |
|---|---|
| Bitflow HODLMM | 稼働中のすべての HODLMM プールにおける LP ポジション — トークンペア、シェア数量、推定 USD 価値 |
| Zest Protocol | レンディング預入(供給した担保)と有効な借入 — 資産、元本、LTV 比率 |
| ALEX DEX | ALEX 流動性プールの LP シェアを表すプールトークン残高 |
| Styx Bridge | Bitcoin L1 と Stacks 間の保留中および完了済みのブリッジ預入 |
このスキルは Hiro API にも問い合わせて基本のトークン残高を取得するため、ポートフォリオビューにはアクティブな DeFi ポジションに加えて、ウォレット内の未使用残高も含まれます。
エージェントが必要とする理由
DeFi 戦略を管理する自律型エージェントは、資産配分を決める前に、資本の運用先をまとめて把握する必要があります。このスキルがなければ、エージェントは各プロトコルに個別に問い合わせ、異なるレスポンススキーマを正規化し、集中度指標を手動で計算しなければなりません。このスキルはこれらを 1 回の呼び出しで行い、後続のスキルが直接利用できる、型が定義された予測可能な JSON コントラクトを返します。
一般的なエージェントのワークフロー:
- 取引前チェック:新しい HODLMM ポジションに入る前に既存のエクスポージャーをスキャンし、過度な集中を避けます。
- リスク監視:定期的なスキャンにより、Zest の LTV 比率が清算しきい値に近づいたときに検出します。
- リバランスのトリガー:集中度が目標範囲を超えた場合、概要のリスクスコアをリバランスのロジックに利用できます。
- レポート作成:ダッシュボードや Discord アラート向けに、人が読みやすいポートフォリオのスナップショットを生成します。
安全性に関する注意事項
- 読み取り専用 — このスキルはオンチェーントランザクションを一切実行しません。各呼び出しは HTTP GET または Hiro API 経由の Clarity
call-readです。 - 秘密鍵不要 — このスキルは秘密鍵やシードフレーズを要求、受け入れ、保存することはありません。
- ウォレットの変更なし — トークン残高とポジションを参照するだけで、変更することはありません。
- レート制限を考慮 — リクエストにはタイムアウトが設定されています。また、いずれか 1 つのプロトコル API が利用できない場合は、明確なエラーフラグを付けた部分的な結果を返し、適切に縮退動作します。
- メインネットのみ — すべてのエンドポイントは Stacks メインネットを対象とします。テストネットのアドレスではエラーにならず、空の結果が返されます。
コマンド
doctor
すべての上流依存関係のヘルスチェックを行います。エンドポイントごとのレイテンシと到達可能性の状態を返します。
bun run defi-portfolio-scanner.ts doctor
出力:エンドポイントごとの status: "ok" | "degraded" | "down" と、システム全体の状態を含む JSON オブジェクト。
scan --address <stx-address>
4 つすべてのプロトコルに加え、Hiro のトークン残高も対象にしたポジションの全件スキャンを行います。
bun run defi-portfolio-scanner.ts scan --address SP3K8BC0PPEVCV7NZ6QSRWPQ2JE9E5B6N3PA0KR9
出力:以下を含む JSON オブジェクト:
wallet— 基本トークン残高(STX、sBTC、ステーブルコイン)protocols.bitflow— HODLMM の LP ポジション配列protocols.zest— LTV を含むレンディング/借入ポジションprotocols.alex— プールトークン残高と推定原資産protocols.styx— ブリッジの預入記録totals— すべてのプロトコルにわたる推定 USD 価値の合計scannedAt— ISO-8601 タイムスタンプ
summary --address <stx-address>
計算済みのリスクスコアを含む、簡潔なポートフォリオ概要を返します。
bun run defi-portfolio-scanner.ts summary --address SP3K8BC0PPEVCV7NZ6QSRWPQ2JE9E5B6N3PA0KR9
出力:以下を含む JSON オブジェクト:
address— スキャンしたアドレスtotalEstimatedUsd— ポートフォリオ価値の合計protocolBreakdown— プロトコルごとの USD 配分と割合riskScore— 0~100 の数値スコア(高いほどリスクが高い)riskFactors— 人が読みやすいリスク所見の配列topHoldings— 価値順の上位 5 ポジションscannedAt— ISO-8601 タイムスタンプ
出力コントラクト
すべてのコマンドは、次のエンベロープに一致する JSON を返します。
{
"success": true,
"skill": "defi-portfolio-scanner",
"command": "<command-name>",
"data": { ... },
"timestamp": "2026-03-31T12:00:00.000Z"
}
エラー時:
{
"success": false,
"skill": "defi-portfolio-scanner",
"command": "<command-name>",
"error": "Human-readable error message",
"details": { ... },
"timestamp": "2026-03-31T12:00:00.000Z"
}
データソース
| ソース | エンドポイント | 用途 |
|---|---|---|
| Bitflow API | https://bff.bitflowapis.finance/api/app/v1/pools | HODLMM のプール一覧とポジションデータ |
| Zest Protocol | SP2VCQJGH7PHP2DJK7Z0V48AGBHQAW3R3ZW1QF4N.pool-borrow-v2-3 に対する Hiro call-read | get-user-reserve-data による貸し出し/借り入れユーザーデータ |
| ALEX DEX | https://api.alexlab.co/v1/pool_tokens/balances/<address> | プールトークン残高 |
| Styx Bridge | https://app.styxfinance.com/api | ブリッジの入金記録 |
| Hiro API | https://api.hiro.so/extended/v1/address/<addr>/balances | トークン残高、コントラクトの読み取り |
プロトコル横断型 DeFi ポートフォリオスキャナー
このスキルは、以下のプロトコル専用スキャナーからポジションを集約します。
| # | プロトコル | スキャナー | 検出内容 |
|---|---|---|---|
| 1 | Bitflow HODLMM | scanBitflow() | /users/{addr}/positions/{pool}/bins を通じて、アクティブなすべての HODLMM プールにおける LP ビンポジションを検出します。LP 領収トークンについては Hiro をフォールバックとして使用します |
| 2 | Zest Protocol | scanZest() | pool-borrow-v2-3.get-user-reserve-data に対する Hiro call-read を通じて、供給担保と借り入れ残高を検出します。また、Hiro の残高から Zest 領収トークンも検出します |
| 3 | ALEX DEX | scanAlex() | ALEX の /pool_tokens/balances API からプールトークン残高を取得します。ウォレット内の ALEX LP トークンについては Hiro をフォールバックとして使用します |
| 4 | Styx Bridge | scanStyx() | Styx の /deposits API から、保留中および完了済みの BTC→sBTC ブリッジ入金を検出します |
| 5 | ウォレットの基本残高 | scanWalletBalances() | Hiro API から STX、sBTC、およびすべての代替性トークン残高を取得し、遊休資本の基準値を提供します |
5 つのスキャナーはすべて、Promise.all を使用して並列実行されます。各スキャナーは、status、positions、estimatedUsd を含む型付きの ProtocolResult<T> を返します。USD 推定額には、CoinGecko の STX および BTC の現物価格を使用します。
既知の制約
- USD 推定額は概算です。 このスキルは、プロトコル API のプール比率と最終確認価格を使用します。専用の価格オラクルには問い合わせません。価格変動が大きいときは、実際の市場価格から乖離する場合があります。
- Zest のユーザーデータにはアクティブなポジションが必要です。 Zest を利用したことのないアドレスでは、エラーではなく空の Zest セクションが返されます。
- ALEX のプールトークンのマッピングはベストエフォートです。 ALEX の公開 API を使用して、ALEX のプールトークンを基礎となるペアにマッピングします。新しくローンチされたプールは、ALEX API が更新されるまでマッピングされない場合があります。
- Styx API の可用性。 Styx ブリッジ API は、これまで他の 3 つの API より不安定でした。このスキルはタイムアウトを短く設定し、スキャン全体を失敗させるのではなく、Styx を
"status": "unavailable"として報告します。 - レート制限。 頻繁なポーリング(1 分あたり約 10 回を超えるスキャン)により、Hiro API のレート制限に達する可能性があります。エージェントは結果をキャッシュし、同じアドレスのスキャン間隔を最低 30 秒にしてください。
- 履歴データはありません。 各スキャンは特定時点のスナップショットです。このスキルは以前のスキャンを保存したり比較したりしません。トレンドデータが必要なエージェントは、結果を外部に保存してください。
起源
AIBTC x Bitflow Skills Pay the Bills コンペティションの優勝者。 オリジナルの作者:@azagh72-creator コンペティション PR:https://github.com/BitflowFinance/bff-skills/pull/121