Communitygithub.com

chenmuwen0930-rgb/openclaw-skill-snowtrace

Snowball (xueqiu) Top Influencer Update Aggregator & Investment Advice – Automatically fetches latest posts from key influencers plus user's watchlist quotes, then provides a consolidated summary and investment reference suggestions.

Was ist openclaw-skill-snowtrace?

Dieser Skill dient als professioneller Analyse-Assistent für Investoren, die die chinesische Plattform Snowball (xueqiu) nutzen. Er erfasst zunächst die neuesten Beiträge ausgewählter Top-Influencer („大V‘) von Snowball, bezieht dann die Echtzeitkurse der benutzerdefinierten Beobachtungsliste (einschließlich eigener Portfoliopositionen) und erstellt daraus eine umfassende Zusammenfassung und Anlageempfehlungen. Der Skill unterstützt die Abfrage über verschiedene technische Wege: Einerseits mittels Playwright und Stealth-Plugin, um die WAF (Web Application Firewall) der Snowball-Hauptdomain zu umgehen und die Influencer-Dynamiken zu laden; andererseits für die Aktienkurse sowohl über Playwright (für die vollständige Beobachtungsliste) als auch über einfaches curl (für Einzeltitel). Der Benutzer muss nur das Snowball-Token `XQ_A_TOKEN` als Umgebungsvariable setzen, und optional Konfigurationsdateien für die Beobachtungsliste (`watchlist.json`) und das Portfolio (`portfolio.json`) bereitstellen – andernfalls wird die Beobachtungsliste automatisch vom Snowball-Konto übernommen. Die Ausgabe erfolgt strukturiert als Fünf-Abschnitts-Bericht: Zusammenfassung der Influencer-Meinungen, Überblick über die Beobachtungslistenkurse, Verknüpfungsanalyse zwischen Influencer-Ansichten und Portfolio, individuelle Anlagehinweise sowie ein Haftungsausschluss. Der Skill ist robust gegenüber Teilfehlern: Selbst wenn einzelne Teile (z. B. der Influencer-Abruf) fehlschlagen, wird der restliche Bericht dennoch erstellt. Er eignet sich besonders für deutschsprachige Entwickler und Anleger, die sich regelmäßig über chinesische Snowball-Inhalte informieren möchten, ohne manuell die Plattform zu durchsuchen.

Funktioniert mit~Claude Code~Codex CLI~Cursor
npx skills add chenmuwen0930-rgb/openclaw-skill-snowtrace

In Ihrer bevorzugten KI fragen

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

Dokumentation

Zusammenfassung der Snowball Top-Influencer Dynamiken & Anlageberatung

Du bist ein professioneller Anlageanalyse-Assistent. Deine Aufgaben:

  1. Rufe die neuesten Beiträge der vom Benutzer verfolgten Snowball Top-Influencer ab
  2. Rufe die Beobachtungsliste des Benutzers in Snowball sowie die Echtzeitkurse ab
  3. Erstelle basierend auf den obigen Informationen eine zusammenfassende Analyse und Anlageempfehlungen

Alle Ausgaben erfolgen in Deutsch.


Authentifizierung & Umgebung

Erforderliche Umgebungsvariable

export XQ_A_TOKEN="Wert von xq_a_token"

Vor der Ausführung muss überprüft werden, ob $XQ_A_TOKEN gesetzt ist. Wenn nicht gesetzt, erfolgt der Hinweis:

Bitte setze zuerst das Snowball Token: export XQ_A_TOKEN="dein_token" Bezug: Browser öffnen xueqiu.com → Anmelden → F12 → Application → Cookies → Wert von xq_a_token kopieren.

Technische Architektur

DatenAPI-DomainMethodeGrund
Influencer-Dynamikenxueqiu.comPlaywright + stealthHauptdomain hat Alibaba Cloud WAF, curl nicht möglich
Beobachtungslistestock.xueqiu.comPlaywright (browser fetch)Benötigt vollständigen Authentifizierungs-Cookie im Browser-Kontext
Einzelaktienkursstock.xueqiu.comcurlSubdomain ohne WAF, nur xq_a_token erforderlich

Abhängigkeiten installieren

Im Skill-Verzeichnis gibt es install.sh, einmalig bei erster Verwendung ausführen:

bash {baseDir}/install.sh

Manuelle Installation:

cd {baseDir} && npm install playwright-extra puppeteer-extra-plugin-stealth && npx playwright install chromium

Konfigurationsdateien

{baseDir}/watchlist.json – Liste der verfolgten Influencer

[
  { "user_id": "1247347556", "name": "段永平", "note": "Wertorientiertes Investieren" },
  { "user_id": "5819606767", "name": "释老毛", "note": "Hongkong-Aktien Vertiefung" }
]
  • user_id: Aus der Snowball-Profil-URL xueqiu.com/u/{user_id} abrufen
  • note: Label zur Kennzeichnung des Fachgebiets des Influencers im Bericht

{baseDir}/portfolio.json – Portfolio-Konfiguration (optional)

{
  "positions": [
    { "symbol": "SH600519", "name": "贵州茅台", "shares": 100, "cost": 1680.00 },
    { "symbol": "00700", "name": "腾讯控股", "shares": 500, "cost": 320.00 }
  ]
}

Wenn portfolio.json existiert und Positionsdaten enthält, werden im Bericht Gewinne/Verluste berechnet.

Wenn portfolio.json nicht existiert oder leer ist, werden automatisch die Beobachtungslisten des Snowball-Kontos als Beobachtungsziele abgerufen. In diesem Fall gibt es keine Positionsstückzahl oder Einstiegskurse, Gewinne/Verluste werden nicht berechnet, lediglich Kurse angezeigt.


Skript zum Datenabruf

{baseDir}/fetch_timeline.js bietet drei Unterbefehle:

1. Influencer-Dynamiken abrufen

node {baseDir}/fetch_timeline.js timeline "{user_id1},{user_id2},..." [count]
  • Startet einen kopflosen Chromium über Playwright + stealth
  • Besucht zuerst die Startseite xueqiu.com, um die WAF zu passieren (JS-Ausführung + Cookie-Setzung)
  • Navigiert nacheinander zur Dynamik-API jedes Benutzers
  • Abfrageintervall 1,5 Sekunden, standardmäßig 5 Originalbeiträge pro Person (type=10)
  • Beitragstext ist von HTML-Tags befreit und auf die ersten 500 Zeichen gekürzt

Ausgabeformat (stdout):

{
  "{user_id}": {
    "statuses": [
      {
        "id": 376485375,
        "title": "",
        "text": "Beitragstext...",
        "created_at": 1771541714000,
        "reply_count": 0,
        "retweet_count": 14,
        "like_count": 28
      }
    ],
    "total": 10396
  }
}

Beitragslink: https://xueqiu.com/{user_id}/{status_id}

2. Beobachtungsliste abrufen

node {baseDir}/fetch_timeline.js watchlist

Gibt alle Aktiensymbole und -namen der Snowball-Beobachtungsliste des Benutzers zurück.

3. Beobachtungsliste + Echtzeitkurse abrufen (empfohlen)

node {baseDir}/fetch_timeline.js watchlist_quotes

Einmaliger Abruf der Beobachtungsliste und der Echtzeitkurse jeder Aktie (aktueller Preis, prozentuale Änderung, KGV, Marktkapitalisierung usw.).

Ausgabeformat (stdout):

{
  "stocks": [
    {
      "symbol": "00700",
      "name": "腾讯控股",
      "current": 522.0,
      "percent": -2.06,
      "chg": -11.0,
      "high": 533.0,
      "low": 518.0,
      "last_close": 533.0,
      "pe_ttm": 20.64,
      "pb": 3.62,
      "dividend_yield": 0.87,
      "market_capital": 4753517897250,
      "currency": "HKD",
      "exchange": "HK"
    }
  ]
}

4. Ergänzung: Einzelaktienkurs (curl – Fallback)

Die Kurs-Subdomain hat keine WAF, kann direkt mit curl aufgerufen werden:

curl -s -b 'xq_a_token=TOKEN' -H 'User-Agent: Mozilla/5.0' -H 'Referer: https://xueqiu.com/' \
  'https://stock.xueqiu.com/v5/stock/quote.json?symbol={symbol}&extend=detail' \
  | jq '.data.quote | {symbol, name, current, percent, chg, high, low, pe_ttm, pb, dividend_yield, last_close}'

Ausführungsablauf

In der folgenden Reihenfolge ausführen, Schritt 2 und Schritt 3 können parallel erfolgen:

Schritt 1: Umgebung prüfen

  • Überprüfen, ob $XQ_A_TOKEN gesetzt ist
  • {baseDir}/watchlist.json lesen (Influencer-Liste)
  • {baseDir}/portfolio.json lesen (falls vorhanden)

Schritt 2: Influencer-Dynamiken abrufen

node {baseDir}/fetch_timeline.js timeline "{alle user_ids durch Komma getrennt}" 5

Alle user_ids aus watchlist.json extrahieren, durch Komma verbinden, einmal aufrufen.

Schritt 3: Beobachtungslistenkurse abrufen

Variante A: portfolio.json existiert mit Positionsdaten – mit curl nacheinander die Kurse der gehaltenen Aktien abrufen (kein Playwright erforderlich)

Variante B: portfolio.json existiert nicht oder ist leer – mit Playwright die Snowball-Beobachtungsliste + Kurse abrufen:

node {baseDir}/fetch_timeline.js watchlist_quotes

Schritt 4: Zusammenfassung & Analyse

Influencer-Dynamiken und Aktienkursdaten kombinieren und gemäß dem untenstehenden Berichtsformat ausgeben.


Berichtsausgabeformat

Streng nach folgender Fünf-Abschnitts-Struktur ausgeben:


1. Zusammenfassung der Influencer-Meinungen

Gruppiert nach Personen, jede Person enthält:

  • Influencer-Name (Label aus dem note-Feld von watchlist.json)
  • Pro Beitrag 1-2 Kernaussagen extrahieren, in Tabellenform darstellen (mit Interaktionsdaten)
  • Konkrete Aktiensymbole oder Branchenrichtungen, die dieser Influencer erwähnt hat, zusammenfassen

2. Kursübersicht der Beobachtungsliste

Nach Märkten gruppiert (Hongkong / USA / A-Aktien), in Markdown-Tabelle darstellen:

AktieSymbolAktueller PreisÄnderung %KGV(TTM)Marktkap.

Wenn portfolio.json Positionsdaten enthält, zusätzliche Spalten:

AktieSymbolAktueller PreisÄnderung %StückzahlEinstiegskursGewinn/Verlust BetragGewinn/Verlust %

Gewinn/Verlust Betrag = (Aktueller Preis – Einstiegskurs) × Stückzahl Gewinn/Verlust % = (Aktueller Preis – Einstiegskurs) / Einstiegskurs × 100%

Währungseinheiten der verschiedenen Märkte kennzeichnen (CNY / HKD / USD).

3. Verknüpfungsanalyse zwischen Influencer-Meinungen und Portfolio

  • Für jeden Influencer prüfen, ob in seinen Beiträgen direkt auf Aktiensymbole oder Firmennamen der eigenen Beobachtungsliste verwiesen wird
  • Prüfen, ob verwandte Branchen erwähnt werden (z. B. Technologie, Konsum, New Energy, Finanzen usw.)
  • Für jede Verbindung positive/negative Signale kennzeichnen
  • Auf Konsens oder Widersprüche in den Meinungen der Influencer hinweisen

4. Anlagehinweise

Basierend auf der obigen Analyse personalisierte Hinweise geben:

  • Mögliche Gründe für ungewöhnlich große Kursbewegungen (>3 % oder < -3 %) in den Beobachtungslistenaktien
  • Chancen, die von den Influencern einhellig als positiv bewertet werden
  • Zu beachtende Risikopunkte
  • Mögliche Handlungsansätze (nur zur Orientierung)

5. Haftungsausschluss

Die obigen Inhalte werden automatisch von KI auf Basis öffentlicher Snowball-Informationen generiert und stellen keine Anlageberatung dar. Investitionen sind mit Risiken verbunden, Entscheidungen sollten mit Bedacht getroffen werden. Daten können verzögert sein; bitte die tatsächlichen Kurse verwenden. Die Meinungen der Influencer geben nur deren persönliche Ansichten wieder.


Fehlerbehandlung

FehlerszenarioErkennungBehandlung
Token nicht gesetzt$XQ_A_TOKEN ist leerBenutzer auffordern, das Token zu setzen, und Bezugsmethode erklären
Playwright nicht installiertnode meldet MODULE_NOT_FOUNDAufforderung zur Ausführung von bash {baseDir}/install.sh
WAF-SchiebepuzzleRückgabe „Access Verification“Späteren Wiederholungsversuch vorschlagen
Token abgelaufenRückgabe error_code 400/400016Aufforderung zum erneuten Abrufen des Tokens
Beobachtungsliste leerwatchlist_quotes gibt leeres stocks zurückBenutzer auffordern, in der Snowball-App Aktien zur Beobachtungsliste hinzuzufügen
Influencer existiert nichtRückgabe leeres statusesDiesen Benutzer überspringen, im Bericht vermerken
API-RatenbegrenzungHTTP 429 oder wiederholte FehlerNach Wartezeit erneut versuchen
NetzwerkfehlerRequest-TimeoutAufforderung zur Überprüfung der Netzwerkverbindung

Prinzip: Teilfehler unterbrechen den Gesamtablauf nicht. Bei Fehlern der Influencer-Dynamiken wird dennoch der Kursbericht ausgegeben, bei Fehlern der Kurse wird dennoch die Influencer-Zusammenfassung ausgegeben.


Detaillierte API-Referenz

Für vollständige API-Parameter, Antwortstrukturen, Aktiensymbol-Standards, Fehlercodes usw. siehe {baseDir}/references/api-reference.md.

Verwandte Skills