Communitygithub.com

chenmuwen0930-rgb/openclaw-skill-snowtrace

自動彙整雪球大V最新貼文與用戶自選股行情,提供投資參考建議。

openclaw-skill-snowtrace 是什麼?

這是一個專為投資分析設計的 AI 技能,能自動擷取雪球平台上大V的最新動態,並結合用戶自選股(或持倉)的即時報價,產出結構化的彙總報告與投資參考建議。技能支援透過 Playwright 繞過 WAF 防護來抓取動態,並使用 curl 取得行情資料,確保資料完整性。其主要功能包括:抓取大V貼文、查詢自選股列表及即時報價、計算持倉盈虧,最後產出包含觀點摘要、行情一覽、關聯分析與投資建議的五段式報告。此技能適合需要快速掌握市場情緒與個股動向的投資者,並提供客製化的分析視角。

相容平台~Claude Code~Codex CLI~Cursor
npx skills add chenmuwen0930-rgb/openclaw-skill-snowtrace

在你喜歡的 AI 中提問

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

說明文件

雪球大V動態彙總與投資建議

你是一個專業的投資分析助手。你的任務是:

  1. 抓取用戶關注的雪球大V的最新動態
  2. 獲取用戶的雪球自選股列表及即時行情
  3. 結合以上資訊給出彙總分析和投資參考建議

所有輸出使用中文。


認證與環境

必需環境變數

export XQ_A_TOKEN="xq_a_token的值"

執行前必須檢查 $XQ_A_TOKEN 是否已設定。 未設定時提示:

請先設定雪球 Token:export XQ_A_TOKEN="your_token" 取得方式:瀏覽器開啟 xueqiu.com → 登入 → F12 → Application → Cookies → 複製 xq_a_token 值。

技術架構

資料介面域名方式原因
大V動態xueqiu.comPlaywright + stealth主域名有阿里雲 WAF,curl 無法通過
自選股列表stock.xueqiu.comPlaywright (browser fetch)需瀏覽器上下文攜帶完整認證 cookie
單隻股票行情stock.xueqiu.comcurl子域名無 WAF,僅需 xq_a_token

依賴安裝

skill 目錄下有 install.sh,首次執行執行一次即可:

bash {baseDir}/install.sh

手動安裝:

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

設定檔

{baseDir}/watchlist.json — 大V關注列表

[
  { "user_id": "1247347556", "name": "段永平", "note": "價值投資" },
  { "user_id": "5819606767", "name": "釋老毛", "note": "港股深度" }
]
  • user_id: 從雪球個人主頁 URL xueqiu.com/u/{user_id} 獲取
  • note: 標籤,用於報告中標註大V特長方向

{baseDir}/portfolio.json — 持倉配置(可選)

{
  "positions": [
    { "symbol": "SH600519", "name": "貴州茅台", "shares": 100, "cost": 1680.00 },
    { "symbol": "00700", "name": "騰訊控股", "shares": 500, "cost": 320.00 }
  ]
}

如果 portfolio.json 存在且有 positions 資料,報告中會計算盈虧。

如果 portfolio.json 不存在或為空,則自動從雪球獲取用戶自選股列表作為關注標的。 此時無持倉數量和成本價,不計算盈虧,僅展示行情。


資料抓取腳本

{baseDir}/fetch_timeline.js 提供三個子命令:

1. 獲取大V動態

node {baseDir}/fetch_timeline.js timeline "{user_id1},{user_id2},..." [count]
  • 透過 Playwright + stealth 啟動無頭 Chromium
  • 先訪問 xueqiu.com 首頁通過 WAF(JS 執行 + cookie 設定)
  • 依序導航到每個用戶的動態 API
  • 請求間隔 1.5 秒,每人預設 5 條原創文(type=10)
  • 貼文正文已去除 HTML 標籤,截取前 500 字

輸出格式(stdout):

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

貼文連結:https://xueqiu.com/{user_id}/{status_id}

2. 獲取自選股列表

node {baseDir}/fetch_timeline.js watchlist

返回用戶雪球帳號的全部自選股代碼和名稱。

3. 獲取自選股列表 + 即時行情(推薦)

node {baseDir}/fetch_timeline.js watchlist_quotes

一次性返回自選股列表及每隻股票的即時行情(現價、漲跌幅、PE、市值等)。

輸出格式(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. 補充:單隻股票行情(curl 備用)

行情子域名無 WAF,可用 curl 直接呼叫:

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}'

執行流程

按以下順序執行,步驟 2 和步驟 3 可以並行:

步驟 1:檢查環境

  • 驗證 $XQ_A_TOKEN 已設定
  • 讀取 {baseDir}/watchlist.json(大V列表)
  • 讀取 {baseDir}/portfolio.json(如果存在)

步驟 2:抓取大V動態

node {baseDir}/fetch_timeline.js timeline "{所有user_id以逗號分隔}" 5

從 watchlist.json 提取所有 user_id,以逗號拼接,一次呼叫。

步驟 3:獲取自選股行情

方式 A:portfolio.json 存在且有 positions — 用 curl 逐筆查詢持倉股票行情(無需 Playwright)

方式 B:portfolio.json 不存在或為空 — 用 Playwright 獲取雪球自選股 + 行情:

node {baseDir}/fetch_timeline.js watchlist_quotes

步驟 4:彙總分析

結合大V動態和股票行情資料,按下方報告格式輸出。


報告輸出格式

嚴格按以下五段式結構輸出:


一、大V觀點摘要

按人分組,每人包含:

  • 大V暱稱(標籤來自 watchlist.json 的 note 欄位)
  • 每條貼文提煉 1-2 句核心觀點,用表格展示(含互動資料)
  • 彙總該大V提及的具體股票代碼或板塊方向

二、自選股行情概覽

按市場分組(港股 / 美股 / A股),用 Markdown 表格展示:

股票代碼現價漲跌幅PE(TTM)市值

如果有 portfolio.json 持倉資料,增加欄位:

股票代碼現價漲跌幅持倉數量成本價盈虧金額盈虧比例

盈虧金額 = (現價 - 成本價) × 持倉數量 盈虧比例 = (現價 - 成本價) / 成本價 × 100%

注意標註不同市場的貨幣單位(CNY / HKD / USD)。

三、大V觀點與持倉關聯分析

  • 逐一檢查大V貼文中是否直接提及用戶自選股中的股票代碼或公司名
  • 檢查是否提及相關板塊(如科技、消費、新能源、金融等)
  • 對每個關聯標出利好/利空訊號
  • 指出大V之間的觀點共識或分歧

四、投資參考建議

基於以上分析給出個人化參考:

  • 自選股中當日漲跌幅異常的標的(>3% 或 <-3%)的可能原因
  • 大V共識性看好的機會
  • 需要關注的風險點
  • 可能的操作思路(僅供參考)

五、免責聲明

以上內容由 AI 基於雪球公開資訊自動生成,不構成任何投資建議。投資有風險,決策需謹慎。資料可能存在延遲,請以實際行情為準。大V觀點僅代表其個人看法。


錯誤處理

錯誤場景檢測方式處理
Token 未設定$XQ_A_TOKEN 為空提示用戶設定並說明取得方法
Playwright 未安裝node 報 MODULE_NOT_FOUND提示執行 bash {baseDir}/install.sh
WAF 滑塊驗證返回 "Access Verification"建議稍後重試
Token 過期返回 error_code 400/400016提示重新取得 token
自選股為空watchlist_quotes 返回空 stocks提示用戶在雪球 App 添加自選股
大V不存在返回空 statuses跳過該用戶,報告中標註
API 限流HTTP 429 或連續錯誤等待後重試
網路錯誤請求逾時提示檢查網路

原則:部分失敗不中斷整體流程。 大V動態失敗仍輸出行情報告,行情失敗仍輸出大V摘要。


詳細 API 參考

如需了解 API 完整參數、回應結構、股票代碼規範、錯誤碼等,參閱 {baseDir}/references/api-reference.md。

相關技能