CommunityRecherche & Datenanalysegithub.com

RoXsaita/debank-portfolio-skill

AI-Agent-Fähigkeit zum Scrapen von Krypto-Portfolio-Daten von DeBank mit SQLite-Persistenz

Was ist debank-portfolio-skill?

Diese AI-Agent-Fähigkeit ermöglicht das automatisierte Extrahieren und Speichern von Krypto-Portfolio-Daten von der DeBank-Plattform in einer SQLite-Datenbank. Sie nutzt Playwright zur Browser-Automatisierung, um Portfolios nahtlos zu scrapen, einschließlich Wallet-Beständen, Krypto-Assets, Kettenguthaben und DeFi-Positionen aus Protokollen wie Aave, Compound und Uniswap. Optional kann sie in den OpenSea Marktplatz integriert werden, um NFT-Besitze und Einstiegspreise für Liquiditätspool-Positionen (LPs) zu erhalten. Diese Fähigkeit ist besonders nützlich für Entwickler und Trader, die historische Daten verfolgen, Portfolio-Performance überwachen oder ihre eigene krypto-native Dashboard- und Analyse-Toolchain aufbauen möchten. Sie unterstützt die Entwicklung mit Node.js und erfordert, dass der Playwright MCP Server und optional der OpenSea MCP Server für den Agenten zugänglich sind. Die gescrapten Daten werden strukturiert und in eine SQLite-Datenbank geschrieben, sodass zeitbasierte Analysen und Trend-Tracking möglich sind.

Funktioniert mit~Claude Code~Codex CLI~Cursor
npx skills add RoXsaita/debank-portfolio-skill

Installed? Explore more Recherche & Datenanalyse skills: affaan-m/uspto-database, affaan-m/scholar-evaluation, affaan-m/literature-review · View all 6 →

In Ihrer bevorzugten KI fragen

Öffnet einen neuen Chat, in dem dieser Agent-Skill bereits geladen ist.

Dokumentation

DeBank Portfolio Scraper

Erfasse umfassende Portfolio-Snapshots von DeBank mittels Browser-Automatisierung, mit optionaler OpenSea-Integration für Einstiegspreise von LP-Positionen.

Voraussetzungen

  • Playwright MCP – Browser-Automatisierung zur DeBank-Navigation
  • OpenSea MCP – NFT-/LP-Positionsdaten (optional, aber empfohlen)
  • Node.js 18+ – Zur Ausführung von Persistenz-Skripten
  • SQLite – Datenbank für historische Daten

Siehe references/setup-guide.md für Installationsdetails.

Verwendung

scrape-portfolio <wallet_address>
scrape-portfolio --all  # Mehrere Wallets aus einer Konfigurationsdatei scrapen

Datenquellen

  1. DeBank (Playwright) – DeFi-Positionen, Wallet-Guthaben, Gesundheitsraten
  2. OpenSea API – NFT-Bestände (Uniswap-LP-Positions-NFTs mit Einstiegspreisen)

Anleitung

Schritt 1: Zu DeBank navigieren

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

Schritt 2: Auf Seitenladung warten

browser_wait_for: time=5

Schritt 3: Snapshot erstellen

browser_snapshot

Schritt 4: Ausgeblendete Chains erweitern

Suche nach „Unfold X chains“ im Snapshot. Falls vorhanden:

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

Schritt 5: Portfolio-Daten extrahieren

Analysiere den Snapshot und extrahiere:

Profil:

  • Gesamtwert (z. B. $36.694)
  • 24h-Änderung in Prozent
  • Kontolater in Tagen

Chain-Aufteilung:

  • Chain-Name, Wert, Prozentsatz

Wallet-Token:

  • Symbol, Chain, Preis, Menge, USD-Wert

Protokoll-Positionen:

Für jedes Protokoll (Aave, Compound, Uniswap usw.):

  • Protokollname und Chain
  • Positionstyp (Kreditvergabe, Yield, Liquiditätspool)
  • Gesundheitsrate (bei Kreditvergabepositionen)
  • Bereitgestellte Vermögenswerte mit Mengen und Werten
  • Geliehene Vermögenswerte mit Mengen und Werten
  • LP-Guthaben und Pool-IDs
  • Einforderbare Belohnungen

Schritt 6: NFT-Daten abrufen (OpenSea)

Rufe das OpenSea-MCP-Tool auf:

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

Dies liefert Uniswap-LP-Positions-NFTs mit:

  • Token-ID (Pool-ID)
  • Erstellungsdatum (Positions-Einstiegsdatum)
  • Pool-Details (Token-Paar, Gebührenstufe)

Schritt 7: NFT-Aktivitätsverlauf abrufen

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

Dies liefert:

  • Einstiegspreise für LP-Positionen
  • Transaktions-Hashes
  • Historische Mints/Transfers

Schritt 8: Daten strukturieren

Erstelle ein JSON, das dem Schema in references/debank-portfolio-schema.json entspricht:

{
  "metadata": {
    "source": "debank.com + opensea",
    "scrapeTimestamp": "<ISO-Zeitstempel>",
    "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"]
  }
}

Schritt 9: Daten speichern

Nach der Strukturierung des JSON:

1. In temporäre Datei schreiben: Speichere das JSON in einer temporären Datei (z. B. /tmp/portfolio-snapshot.json)

2. JSON-Snapshot speichern (Backup):

mkdir -p data/snapshots/{address}
# Schreibe nach data/snapshots/{address}/{YYYY-MM-DD}.json

3. In Datenbank persistieren:

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

Setze Umgebungsvariablen für den Datenbankspeicherort:

  • DB_PATH – Pfad zur SQLite-Datenbank (Standard: ../data/portfolio.db)
  • SNAPSHOTS_DIR – Pfad zu JSON-Snapshots (Standard: ../data/snapshots)

Erstellte Datenbankeinträge (jeder Scrape FÜGT neue Zeilen hinzu, überschreibt nicht):

  • portfolio_snapshots – Gesamtwert + Chain-Aufschlüsselung (mit Zeitstempel)
  • position_snapshots – Einzelne DeFi-Positionen (mit Zeitstempel)
  • reward_history – Einforderbare Belohnungen (mit Zeitstempel)

Dies baut historische Daten für Trendanalysen auf. Abfragebeispiele:

-- Portfolio-Wert im Zeitverlauf
SELECT datetime(timestamp, 'unixepoch') as date, total_value
FROM portfolio_snapshots WHERE address = '0x...' ORDER BY timestamp;

-- Positionsänderungen im Zeitverlauf
SELECT datetime(timestamp, 'unixepoch') as date, protocol, net_value
FROM position_snapshots WHERE address = '0x...' ORDER BY timestamp;

Schritt 10: Ergebnisse melden

Gib eine Zusammenfassung aus:

Portfolio gescrapt für 0x5a8a...ed45:

GESAMTWERT: $36.694 (+0,11 % 24h)

CHAIN-AUFTEILUNG:
- Arbitrum: $26.011 (71 %)
- Base: $10.650 (29 %)

DEFI-POSITIONEN:
- Aave V3 (Arbitrum): $13.643 netto (Gesundheit: 2,84)
  - Bereitgestellt: 18.784 USDC ($18.811)
  - Geliehen: 1,0168 WETH ($3.011) + 0,0241 WBTC ($2.156)
- Compound V3 (Base): $10.635
  - Bereitgestellt: 10.584 USDC
  - Belohnungen: 1,5 COMP ($36)
- Uniswap V4: $6.900
  - Pool #103120: WBTC/USDC
  - Belohnungen: $50,21
- Uniswap V3: $5.142
  - Pool #4721026: WBTC/WETH
  - Belohnungen: $18,92

LP-POSITIONEN (von OpenSea):
- 11 Uniswap-Positions-NFTs
- Einstiegsverlauf seit Feb. 2025 erfasst

EINFORDERBARE BELOHNUNGEN: $105,27
- COMP: $36,12
- LP-Gebühren: $69,15

Daten gespeichert in:
- data/snapshots/{address}/{date}.json
- data/portfolio.db

Ratenbegrenzung

  • Warte 30 Sekunden zwischen mehreren Wallet-Scrapes
  • Falls DeBank eine Ratenbegrenzung anzeigt, 60 Sekunden warten und erneut versuchen

Fehlerbehandlung

  • Seite lädt nicht: Melde „DeBank nicht erreichbar“, überspringe Wallet
  • Keine Daten gefunden: Melde „Wallet möglicherweise leer oder ungültig“
  • Teilweiser Fehler: Speichere, was gesammelt wurde, notiere Fehler

Datenbankschema

Vollständige Tabellendefinitionen siehe references/schema.sql:

TabelleZweck
portfolio_snapshotsGesamtwert + Chain-Aufschlüsselung pro Zeitstempel
position_snapshotsEinzelne DeFi-Positionen mit Token/Belohnungen
reward_historyEinforderbare Belohnungen im Zeitverlauf
apy_historyAPY-Verfolgung für Protokolle
transactionsVollständiger Transaktionsverlauf

Verwandte Skills