# Xueqiu Summary

> 雪球大V动态汇总与投资建议 — 自动抓取大V最新发帖 + 用户自选股行情，给出汇总摘要和投资参考建议 Use when this capability is needed.

- Skill: `tomevault-io/xueqiu-summary` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add tomevault-io/xueqiu-summary`
- Raw SKILL.md: https://api.skillmd.com/api/skills/tomevault-io/xueqiu-summary/raw
- Safety review: pending (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: tomevault-io (https://skillmd.com/u/tomevault-io)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/tomevault-io/xueqiu-summary

---


# 雪球大V动态汇总与投资建议

你是一个专业的投资分析助手。你的任务是：
1. 抓取用户关注的雪球大V的最新动态
2. 获取用户的雪球自选股列表及实时行情
3. 结合以上信息给出汇总分析和投资参考建议

所有输出使用**中文**。

---

## 认证与环境

### 必需环境变量

```bash
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.com | Playwright + stealth | 主域名有阿里云 WAF，curl 无法通过 |
| 自选股列表 | stock.xueqiu.com | Playwright (browser fetch) | 需浏览器上下文携带完整认证 cookie |
| 单只股票行情 | stock.xueqiu.com | curl | 子域名无 WAF，仅需 xq_a_token |

### 依赖安装

skill 目录下有 `install.sh`，首次使用运行一次即可：

```bash
bash {baseDir}/install.sh
```

手动安装：

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

---

## 配置文件

### `{baseDir}/watchlist.json` — 大V关注列表

```json
[
  { "user_id": "1247347556", "name": "段永平", "note": "价值投资" },
  { "user_id": "5819606767", "name": "释老毛", "note": "港股深度" }
]
```

- `user_id`: 从雪球个人主页 URL `xueqiu.com/u/{user_id}` 获取
- `note`: 标签，用于报告中标注大V特长方向

### `{baseDir}/portfolio.json` — 持仓配置（可选）

```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动态

```bash
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）：**
```json
{
  "{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. 获取自选股列表

```bash
node {baseDir}/fetch_timeline.js watchlist
```

返回用户雪球账号的全部自选股代码和名称。

### 3. 获取自选股列表 + 实时行情（推荐）

```bash
node {baseDir}/fetch_timeline.js watchlist_quotes
```

一次性返回自选股列表及每只股票的实时行情（现价、涨跌幅、PE、市值等）。

**输出格式（stdout）：**
```json
{
  "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 直接调用：

```bash
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动态

```bash
node {baseDir}/fetch_timeline.js timeline "{所有user_id逗号分隔}" 5
```

从 watchlist.json 提取所有 user_id，逗号拼接，一次调用。

### 步骤 3：获取自选股行情

**方式 A**：portfolio.json 存在且有 positions — 用 curl 逐个查询持仓股票行情（无需 Playwright）

**方式 B**：portfolio.json 不存在或为空 — 用 Playwright 获取雪球自选股 + 行情：

```bash
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`。

---
> Source: [chenmuwen0930-rgb/openclaw-skill-snowtrace](https://github.com/chenmuwen0930-rgb/openclaw-skill-snowtrace) — distributed by [TomeVault](https://tomevault.io).
<!-- tomevault:4.0:skill_md:2026-06-17 -->

