Community研究與資料分析github.com

RoXsaita/debank-portfolio-skill

AI 代理技能,用於從 DeBank 抓取加密貨幣投資組合資料,並透過 SQLite 持久化儲存。

debank-portfolio-skill 是什麼?

此技能讓 AI 代理能使用 Playwright 瀏覽器自動化,從 DeBank 抓取全面的加密貨幣投資組合快照。它會解析個人資料、鏈上配置、錢包代幣、協議部位(例如 Aave、Compound、Uniswap)以及可領取獎勵。可選的 OpenSea MCP 整合可為 Uniswap LP 部位提供入場價格。資料會結構化為 JSON 並保存為檔案以及 SQLite 資料庫,以建立歷史趨勢的時序資料。此技能支援 Claude Code、Cursor 和 Codex 等平台,幫助開發者和 DeFi 使用者自動化追蹤加密資產。

相容平台~Claude Code~Codex CLI~Cursor
npx skills add RoXsaita/debank-portfolio-skill

Installed? Explore more 研究與資料分析 skills: affaan-m/uspto-database, affaan-m/scholar-evaluation, affaan-m/literature-review · View all 6 →

在你喜歡的 AI 中提問

開啟一個已預先載入此 Agent Skill 的新對話。

說明文件

DeBank 投資組合抓取器

使用瀏覽器自動化從 DeBank 抓取全面的投資組合快照,並可選擇整合 OpenSea 以取得 LP 部位入場價格。

先決條件

  • Playwright MCP - 用於 DeBank 導覽的瀏覽器自動化
  • OpenSea MCP - NFT/LP 部位資料(非必要,但建議使用)
  • Node.js 18+ - 用於執行持久化腳本
  • SQLite - 用於儲存歷史資料的資料庫

詳情請參閱 references/setup-guide.md。

使用方式

scrape-portfolio <wallet_address>
scrape-portfolio --all  # 從設定檔抓取多個錢包

資料來源

  1. DeBank (Playwright) - DeFi 部位、錢包餘額、健康率
  2. OpenSea API - NFT 持有(包含入場價格的 Uniswap LP 部位 NFT)

操作說明

步驟 1:導覽至 DeBank

browser_navigate: https://debank.com/profile/{address}

步驟 2:等待頁面載入

browser_wait_for: time=5

步驟 3:擷取快照

browser_snapshot

步驟 4:展開隱藏鏈

在快照中尋找「展開 X 條鏈」。如果存在:

browser_click: ref=<unfold_button_ref>
browser_wait_for: time=2
browser_snapshot

步驟 5:提取投資組合資料

解析快照並提取:

個人資料:

  • 總價值(例如 $36,694)
  • 24 小時變化百分比
  • 帳戶年齡(天數)

鏈上配置:

  • 鏈名稱、價值、百分比

錢包代幣:

  • 代號、鏈、價格、數量、美元價值

協議部位: 針對每個協議(Aave、Compound、Uniswap 等):

  • 協議名稱和鏈
  • 部位類型(借貸、收益、流動性池)
  • 健康率(針對借貸部位)
  • 提供的資產(含數量和價值)
  • 借入的資產(含數量和價值)
  • LP 餘額和池 ID
  • 可領取獎勵

步驟 6:取得 NFT 資料 (OpenSea)

呼叫 OpenSea MCP 工具:

get_nft_balances:
  address: {wallet_address}
  sortBy: RECEIVED_DATE
  limit: 100

這會回傳 Uniswap LP 部位 NFT,包含:

  • 代幣 ID(池 ID)
  • 建立日期(部位入場日期)
  • 池詳情(代幣對、費用等級)

步驟 7:取得 NFT 活動歷史

get_activity:
  entityType: profile
  entityId: {wallet_address}
  limit: 100

這會提供:

  • LP 部位的入場價格
  • 交易雜湊
  • 歷史鑄造/轉移記錄

步驟 8:結構化資料

建立符合 references/debank-portfolio-schema.json 中 schema 的 JSON:

{
  "metadata": {
    "source": "debank.com + opensea",
    "scrapeTimestamp": "<ISO timestamp>",
    "profileUrl": "https://debank.com/profile/{address}"
  },
  "profile": {
    "address": "0x...",
    "accountAgeDays": 510
  },
  "portfolio": {
    "totalValueUsd": 36694,
    "change24h": { "percent": 0.11, "direction": "up" },
    "chainAllocation": [...],
    "protocolAllocation": [...]
  },
  "wallet": {
    "totalValueUsd": 374,
    "tokens": [...]
  },
  "protocols": [...],
  "nfts": {
    "lpPositions": [...],
    "other": [...]
  },
  "summary": {
    "totalWalletValue": 374,
    "totalDeFiValue": 36320,
    "totalSupplied": 18810,
    "totalBorrowed": 5167,
    "totalLiquidityProvided": 12042,
    "totalClaimableRewards": 105,
    "activeProtocols": ["Aave V3", "Compound V3", "Uniswap V4", "Uniswap V3"],
    "activeChains": ["Arbitrum", "Base", "Scroll"]
  }
}

步驟 9:儲存資料

結構化 JSON 後:

1. 寫入暫存檔: 將 JSON 儲存到暫存檔(例如 /tmp/portfolio-snapshot.json)

2. 儲存 JSON 快照(備份):

mkdir -p data/snapshots/{address}
# 寫入 data/snapshots/{address}/{YYYY-MM-DD}.json

3. 持久化到資料庫:

cd scripts && npx ts-node debank-snapshot-saver.ts --file /tmp/portfolio-snapshot.json

設定資料庫位置的環境變數:

  • DB_PATH - SQLite 資料庫路徑(預設:../data/portfolio.db)
  • SNAPSHOTS_DIR - JSON 快照目錄(預設:../data/snapshots)

建立的資料庫記錄(每次抓取都會新增資料列,不會覆蓋):

  • portfolio_snapshots - 總價值 + 鏈上明細(含時間戳)
  • position_snapshots - 個別 DeFi 部位(含時間戳)
  • reward_history - 可領取獎勵(含時間戳)

這會建立用於趨勢分析的歷史資料。查詢範例:

-- 投資組合價值隨時間變化
SELECT datetime(timestamp, 'unixepoch') as date, total_value
FROM portfolio_snapshots WHERE address = '0x...' ORDER BY timestamp;

-- 部位隨時間變化
SELECT datetime(timestamp, 'unixepoch') as date, protocol, net_value
FROM position_snapshots WHERE address = '0x...' ORDER BY timestamp;

步驟 10:回報結果

提供摘要:

已為 0x5a8a...ed45 抓取投資組合:

總價值:$36,694(+0.11% 24 小時)

鏈上配置:
- Arbitrum:$26,011(71%)
- Base:$10,650(29%)

DeFi 部位:
- Aave V3(Arbitrum):淨值 $13,643(健康率:2.84)
  - 提供:18,784 USDC($18,811)
  - 借入:1.0168 WETH($3,011)+ 0.0241 WBTC($2,156)
- Compound V3(Base):$10,635
  - 提供:10,584 USDC
  - 獎勵:1.5 COMP($36)
- Uniswap V4:$6,900
  - 池 #103120:WBTC/USDC
  - 獎勵:$50.21
- Uniswap V3:$5,142
  - 池 #4721026:WBTC/WETH
  - 獎勵:$18.92

LP 部位(來自 OpenSea):
- 11 個 Uniswap 部位 NFT
- 從 2025 年 2 月開始追蹤入場歷史

可領取獎勵:$105.27
- COMP:$36.12
- LP 費用:$69.15

資料儲存於:
- data/snapshots/{address}/{date}.json
- data/portfolio.db

速率限制

  • 多次錢包抓取之間請等待 30 秒
  • 如果 DeBank 顯示速率限制,請等待 60 秒後重試

錯誤處理

  • 頁面無法載入:回報「DeBank 無法連線」,略過該錢包
  • 找不到資料:回報「錢包可能為空或無效」
  • 部分失敗:儲存已收集的資料,並註記錯誤

資料庫 Schema

完整的資料表定義請參閱 references/schema.sql:

資料表用途
portfolio_snapshots每個時間點的總價值 + 鏈上明細
position_snapshots個別 DeFi 部位(含代幣/獎勵)
reward_history隨時間變化的可領取獎勵
apy_history協議 APY 追蹤
transactions完整交易歷史

相關技能