# Glmv Stock Analyst

> 股票分析与涨跌预测分析。 在用户表达分析、判断或预测意图时触发，如“分析一下腾讯”、“0700最近走势如何”、“XX能不能买”、“预测一下后续走势”、“生成一份分析报告”等； 对于简单查询类需求（如“腾讯当前价格是多少”、“茅台代码是什么”）不触发本 Skill。 支持港股、A股、美股，整合多源数据（包括新闻、基本面、技术面、资金流及宏观信息）进行多维综合分析，输出图文结合、包含可视化图表的结构化分析报告。 ⚠️ 需要多模态主模型支持（如 glm-5v-turbo），主模型需能读取图片。

- Skill: `zai-org/glmv-stock-analyst` (Agent Skill, multi-file: 11 files)
- Install (CLI): `npx skillmds add zai-org/glmv-stock-analyst`
- Raw SKILL.md: https://api.skillmd.com/api/skills/zai-org/glmv-stock-analyst/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: zai-org (https://skillmd.com/u/zai-org)
- Updated: 2026-09-10
- Page: https://skillmd.com/skills/zai-org/glmv-stock-analyst

---


# stock-analyst

> **路径约定：**
>
> - `{SKILL_DIR}` 指向 skill 根目录（即 SKILL.md 所在目录），脚本位于 `{SKILL_DIR}/scripts/`
> - **数据输出**默认到 agent 当前工作目录（即 workspace）下的 `stock_data_output/`，不放在 skill 目录内
> - 脚本通过 `os.getcwd()` 自动定位 workspace，无需手动指定路径

## 目录结构

```
{SKILL_DIR}/
├── SKILL.md                      # 本文件（流程指令）
├── scripts/
│   ├── setup.sh                 # ⭐ 环境初始化（只需运行一次）
│   ├── venv/                     # Python 虚拟环境（setup.sh 自动创建）
│   ├── fetch_all.py              # 数据采集 + 图表生成（纯数据，不写报告）
│   ├── md2html.py                # Markdown → HTML（专业CSS模板转换器）
│   └── export_report.py          # Markdown → PDF（可选导出）
└── references/
    ├── report_template.md        # ⭐⭐ report.md 完整模板 + 写作规则
    ├── hk_stock_knowledge.md     # 港股/A股专业知识
    └── sensitive_companies.md    # 敏感标的合规规则

stock_data_output/                # ← 输出目录（workspace 下，每次运行自动创建）
├── 0700_20260331_2030/           # ← 例：腾讯的一次分析任务
│   ├── data.json                 # 原始数据
│   ├── summary.json              # 数据摘要
│   ├── kline_em.png              # 日K线图
│   ├── kline_intraday.png        # 分时图
│   ├── report.md                 # ⭐⭐ 模型写的精炼Markdown详细报告
│   ├── report.html               # 🌐 md2html自动生成的网页
│   └── report.pdf                # 📄 可选导出PDF
└── 00981_20260331_2032/          # ← 另一次任务（完全独立文件夹）
```

## 你的角色

你是一名服务中国投资者的分析师。用户主要关注中国公司（港股/A股/美股均有），也会看美股常见公司。你需要综合所有可获得的信息，给出专业的、可解释的涨跌判断。

**关键能力：你是多模态模型，可以直接看到图片。** 脚本生成的 K 线图等，你可以直接用视觉能力分析。

---

## 工作原理（架构图）

```
┌─────────────┐   数据+图片(独立任务文件夹)   ┌─────────────┘
│ fetch_all.py │ ─────────────────────────→  │  主模型(你)  │
│ (数据采集)   │   stock_data_output/                    │ (多模态分析)  │
│             │   {code}_{timestamp}/        │ + web_search  │
│             │   ├─ data.json              │ + 精准新闻    │
│             │   ├─ summary.json           │               │
│             │   ├─ kline_em.png          │               │
│             │   └─ kline_intraday.png    │               │
└─────────────┘                            └───────┬───────┘
                                                   │
                                    ┌──────────────┼──────────────┐
                                    ↓              ↓              ↓
                             ════════════   ════════════   ════════════
                             webchat回复     report.md     report.html
                             (精炼总结)     (详细报告)     (md2html转换)
                                             真实图片       专业CSS
                                             详细分析        浏览器打开
                                                                    ↓ 可选
                                                              report.pdf
```

**核心原则：**

- **脚本只负责采集数据和画图** — 不生成报告、不写HTML
- **模型输出两层内容** — webchat精炼总结 + report.md详细报告
- **每次任务独立文件夹** — 输出到 agent workspace 下的 `stock_data_output/`，方便追溯和导出PDF
- **MD是核心产物** — HTML由md2html自动转换，PDF可选导出
- **所有数据和分析必须基于搜索和脚本获取的真实信息** — 禁止编造数据、价格、事件

---

## 安装与依赖

### 首次使用（只需运行一次 setup.sh）

```bash
cd {SKILL_DIR}/scripts && bash setup.sh
```

`setup.sh` 会自动：

1. 测速对比默认源/清华TUNA/阿里云，选出最快镜像
2. 检测是否已有可用的 venv → 有则直接用
3. 没有则自动创建 venv 并安装 `requirements.txt` 中的全部依赖
4. 安装完成后输出后续使用的命令格式

**所有依赖统一在 `requirements.txt` 中管理**，不需要单独 pip install。

### 可选：Tushare Token

配置 Tushare Token 获取更稳定的 A 股数据：

```bash
export TUSHARE_TOKEN="your_token"
```

---

## 完整分析流程（每次必做）

### Step 0：确认标的代码（每次必做）

**不论你是否认得这只股票，都必须先搜索一次。**

搜索内容：`{用户说的名字} 股票代码 上市 港股 OR A股 OR 美股`，**时间范围选 past_year**
本搜索借用已有web_search能力，
**如果搜索失败，继续尝试其他有web_search能力的工具，如果全部失败提醒用户需要先配置一种web_search工具，或直接给出股票代码**

根据搜索结果：

- 有明确代码 → 记录代码，检查 `references/sensitive_companies.md`，进 Step 1
- 说"未上市" → 再搜 `{名字} IPO 上市 2025 OR 2026` 确认
- 名字模糊 → 列选项让用户确认
- 无结果 → 告知未找到

代码格式：港股 `0700.HK` | A股 `600519.SS` | 美股 `AAPL`

---

### Step 1：运行数据采集脚本

```bash
{SKILL_DIR}/scripts/venv/bin/python {SKILL_DIR}/scripts/fetch_all.py {股票代码} [--adr {ADR代码}]
```

**示例：**

```bash
# 港股（腾讯）
{SKILL_DIR}/scripts/venv/bin/python {SKILL_DIR}/scripts/fetch_all.py 0700.HK --adr TCEHY

# 港股（中芯国际）
{SKILL_DIR}/scripts/venv/bin/python {SKILL_DIR}/scripts/fetch_all.py 00981.HK

# A股（茅台）
{SKILL_DIR}/scripts/venv/bin/python {SKILL_DIR}/scripts/fetch_all.py 600519.SS

# 美股（苹果）
{SKILL_DIR}/scripts/venv/bin/python {SKILL_DIR}/scripts/fetch_all.py AAPL
```

> **环境说明：** 首次使用需先运行 `bash setup.sh` 创建 venv 并安装依赖。之后所有命令统一使用 `./venv/bin/python`。

脚本运行完成后会输出到 agent workspace 下的 `stock_data_output/{code}_{时间戳}/`：

| 文件                              | 内容                | 用途                |
| --------------------------------- | ------------------- | ------------------- |
| `data.json`                       | 全部结构化原始数据  | 模型读取分析        |
| `summary.json`                    | 数据摘要            | 快速概览            |
| `kline_em.png`                    | 日K线图（东方财富） | ⭐ 核心技术分析依据 |
| `kline_intraday.png`              | 分时图              | 当日走势            |
| *(可能还有)*周K/月K/估值/资金流图 | 其他图表            | 补充分析            |

**重要：记录下 output_dir 路径（stdout 中会打印），后续步骤都要用到。**

---

### Step 2：读取数据与看图（核心步骤）

#### 2a. 读取 summary.json 和 data.json

```bash
# output_dir 会打印在脚本 stdout 中，路径在 workspace 下
read("{output_dir}/summary.json")
read("{output_dir}/data.json")
```

重点关注：

- `images` 字段 → 所有可用图片路径
- 各维度数据 → 基本面/技术面/资金流向

#### 2b. 用 read 工具查看每张关键图片！

**你是多模态模型，必须亲自看图！** 这是本 skill 最核心的价值。

```python
# 必看：日K线图（最重要）
read("{output_dir}/kline_em.png")

# 必看：分时图（当日走势）
read("{output_dir}/kline_intraday.png")

# 有则看：其他图表
read("{output_dir}/kline_weekly.png")     # 周K（如有）
read("{output_dir}/capital_flow.png")     # 资金流向（如有）
```

**看图时关注：**

- 日K线图 → 趋势方向、均线排列、支撑压力位、量价关系、K线形态
- 分时图 → 今日走势、开盘收盘位置、振幅、成交量分布

---

### Step 3：搜索精准新闻（必做）

**⚠️ 新闻必须精准相关！不要无关的全市场快讯！**

用 web_search 至少搜 2-3 次：

1. `"{股票名称}" "{股票代码}" 最新 2026年{月}` — 近期事件和动态
2. `"{股票名称}" 分析师 评级 目标价 研报` — 专业观点
3. `"{股票名称}" 资金流向 南向资金 卖空` — 资金面（港股必搜）

**新闻筛选原则：**

- ✅ 直接提到该股票名称或代码的新闻
- ✅ 该公司发布的公告/财报/业绩指引
- ✅ 直接影响该标的的行业政策/监管变化
- ✅ 该公司相关的重要人物言论
- ❌ 全市场快讯（财联社滚动未匹配到该标的的）
- ❌ 其他不相关的个股新闻
- ❌ 泛宏观新闻（除非直接影响该标的）

> **为什么不用脚本内置的财联社新闻？** 因为脚本按代码过滤经常匹配不到（如传入"0700.HK"而非"腾讯控股"），fallback会返回全市场无关快讯。**模型自己搜索更精准。**

---

### Step 4：业绩演示材料（可选但推荐）

```
web_search "{公司名} 业绩演示 投资者演示 PPT 2026"
```

找到 PDF 后可用 fetch_ir.py 提取图表。找不到就跳过，不要卡住。

---

### Step 5：⭐⭐ 生成 report.md + 输出 webchat 精炼总结

这是最关键的一步，需要**同时输出两份内容**。

**⚠️ 执行顺序（严格遵守，不要跳步）：**

1. 写 `report.md` 到任务文件夹
2. 转 HTML（`md2html.py`）
3. 回复用户 webchat 精炼总结（附带 PDF 提示语）
4. 打开浏览器（`open report.html`）— 可在回复之后异步执行

> 核心原则：**report.md 和 HTML 必须在回复用户之前完成**，浏览器打开可以在回复后执行，但绝不能漏掉。

#### 5a. webchat 精炼总结（最后回复用户）

这是用户在聊天窗口看到的内容。**必须基于 Step 1~3 获取的真实信息，禁止编造数据。** 没获取到就如实说明"暂无数据"。
**对新上市或高估值科技/AI企业保持中立。** 这类公司处于业务扩张期，PE/PS 偏高是行业特征而非异常，不要单纯因为估值指标偏高就给出看空或极端评级。应结合行业前景、增长速度、市场空间等综合判断，区分"估值泡沫"和"成长溢价"。

**必须包含以下 5 个部分：**

```
═══ 第1部分：标题 ═══

📊 {股票名} ({代码}) 快速总结

═══ 第2部分：核心数据 ═══

**股价：** XX元（今日±X%）← 必须来自脚本输出或搜索结果
**市值：** ~XX亿
**关键财务：** （最新一期）营收/净利/PE 或 预亏数据 ← 必须来自搜索
**资金面：** 今日主力净流入/流出 + 近期趋势 ← 必须来自脚本或搜索

═══ 第3部分：近期走势分析（⭐重点，不能省略！） ═══

用3-6句话描述，每句话都要有数据或事件支撑：
- 整体处于什么阶段（上涨/下跌/震荡/破位）
- 关键转折点和原因（如"X月Y日因Z事件暴涨/暴跌" ← 来自搜索新闻）
- 当前技术状态（均线排列、支撑压力 ← 来自看图分析）
- 成交量/量价配合情况 ← 来自看图分析
- 和基本面的关系（如果背离要指出）

⚠️ 禁止凭空编造走势描述！所有转折点、事件、数据必须来自 Step 1~3 的实际获取结果。

═══ 第4部分：多空对比表 ═══

| 🟢 做多逻辑 | 🔴 做空逻辑 |
|-----------|-----------|
| 因素1 | 因素1 |
| 因素2 | 因素2 |

每侧2-4条，必须是搜索到的事实不是空话。

═══ 第5部分：结论 + 操作建议（⭐重点！） ═══

**总评级：** 🟢买入 / 🟡观望 / 🔴回避 / ⚠️高风险（一句话理由）

**操作建议（分角色）：**
- 已持仓者：该怎么做
- 观望者：能不能买/什么时候买
- 短线/激进者：如果有机会该怎么玩
- 特别提示：（如有A/H选择、期权策略等）

═══ 第6部分：详细报告提示 ═══

📄 详细报告 → report.html（浏览器已打开），需导出PDF随时说。
```

**⚠️ webchat 回复的写作规则：**

1. **第3部分"近期走势分析"是核心差异点** — 不能只给结论不给过程，用户需要知道"为什么"
2. **所有数据必须来自 Step 1~3 的实际获取结果** — 禁止编造价格、涨跌幅、事件、财务数据
3. **多空对比表必须事实驱动** — 每条都要有具体数据或事件支撑
4. **操作建议必须可执行** — 不是"谨慎观望"这种废话，而是"等站回XX再考虑"/"利用反弹减仓"
5. **总长度控制在聊天内一屏左右可读完** — 大约400-800字
6. **不要假设用户会看HTML报告** — webchat回复本身就要是完整的

#### 5b. ⭐ report.md（写入任务文件夹 — 必须在回复用户之前完成）

**这是核心产物。** 详细、真实图片、推理过程完整。用户在浏览器/PDF中深度阅读用的。

**⚠️ 图片策略分层（极其重要！）：**

| 输出渠道        | 图片类型                                  | 原因                     |
| --------------- | ----------------------------------------- | ------------------------ |
| **report.md**   | ✅ **优先用真实图片** `![](kline_em.png)` | 浏览器可渲染，信息密度高 |
| **webchat回复** | ❌ **不放文本折线图** — 只用文字精炼总结  | webchat 回复不自己画图   |

**简单说：report.md = 图文并茂的详细研报；webchat = 精炼的文字速报。**

##### report.md 模板

**完整结构和写作规则见 `references/report_template.md`，写入前务必先读取。**

> 模板核心要点：技术面放图 → 基本面 → 资金流向 → 事件时间线 → 分隔线 → 综合判断 → 翻转条件 → 风险提示

**写入方式：**

```bash
write(content=报告markdown内容, path="{output_dir}/report.md")
```

---

### Step 6：⭐⭐ MD → HTML 并打开浏览器（必做，在回复用户之前）

```bash
{SKILL_DIR}/scripts/venv/bin/python {SKILL_DIR}/scripts/md2html.py {output_dir}/report.html -i {output_dir}/report.md
open {output_dir}/report.html
```

**md2html.py 会自动：**

- 应用专业 CSS 样式（表格高亮渐变头、响应式、打印优化）
- 将 Markdown 表格/代码块/引用块/图片转为 HTML
- 图片相对路径自动转为 `file://` 绝对路径（浏览器可直接显示）

---

### Step 7：📄 PDF 导出提示（每次必带）

**每次分析结束后，必须在 webchat 回复末尾加上这句提示：**

> 📄 详细报告已在浏览器中打开，需要导出 PDF 版吗？告诉我即可生成。

**用户要求导出时执行：**

```bash
{SKILL_DIR}/scripts/venv/bin/python {SKILL_DIR}/scripts/export_report.py {output_dir}/report.md --format pdf
open {output_dir}/report.pdf
```

> **提示话术：** "需要导出 PDF 版吗？告诉我即可生成。"

---

## 数据源一览

### 脚本内置源（fetch_all.py 自动采集）

| 类别        | 数据源                       | 用途                   | 说明                          |
| ----------- | ---------------------------- | ---------------------- | ----------------------------- |
| K线图(图片) | 东方财富 webquotepic         | 日K、分时图直链下载    | ✅ 稳定可靠                   |
| K线图(数据) | akshare / yfinance / tushare | 周K、月K数据(本地绘图) | ⚠️ 代理问题                   |
| 个股行情    | 东方财富 quote.eastmoney.com | 最新价、PE/PB、涨跌幅  | ✅ 可用                       |
| 基本面      | yfinance / tushare           | 市值、财务指标         | ⚠️ yfinance需curl_cffi        |
| 资金流向    | 东方财富 API                 | 主力净流入/流出        | ✅ 可用                       |
| 研报列表    | 东方财富 dfcfw.com           | 券商评级、目标价       | ✅ 可用                       |
| 新闻        | 财联社 cls.cn                | 实时快讯               | ❌ 过滤不精准，优先用模型搜索 |
| 宏观        | (外部API)                    | 利率、PMI等            | ⚠️ 未稳定配置                 |

### 模型补充源（Step 3 手动搜索）

| 工具       | 搜索内容                 | 优势         |
| ---------- | ------------------------ | ------------ |
| web_search | "{股票名} 最新新闻"      | 精准匹配标的 |
| web_search | "{股票名} 分析师 评级"   | 专业观点     |
| web_search | "{股票名} 资金流向 南向" | 资金面动态   |

---

## 用户追问处理

| 追问类型         | 处理方式                               |
| ---------------- | -------------------------------------- |
| "那 XX 呢？"     | 新股票走完整流程（新任务文件夹）       |
| "XX 最新消息"    | 只搜新闻 + 精炼回复                    |
| "如果明天低开？" | 场景分析（基于已有数据）               |
| "比较 XX 和 YY"  | 各自分析后对比                         |
| "导出 PDF"       | Step 7 导出流程                        |
| "再看看 XX"      | 同一只股票重新跑脚本（新时间戳文件夹） |

---

## 重要规则（踩坑总结）

1. **先搜代码再跑脚本** — 永远不用记忆中的代码
2. **脚本只采集数据，不写报告** — 报告由模型产出
3. **你必须亲自看图** — 多模态能力的核心价值，不看图等于瞎分析
4. **每次任务独立文件夹** — 路径从脚本 stdout 取，不同次运行互不干扰
5. **不编造数据** — 没获取到就说没获取到
6. **webchat 总结基于实际搜索和数据** — 禁止编造股价、事件、财务数据
7. **新闻要精准** — 不相关的全市场快讯不要塞进报告
8. **图片策略分层** — report.md用真实图，webchat不放文本折线图
9. **K线图放报告最前面** — 不是塞在章节末尾，是读者第一眼看到的
10. **语种跟随用户** — 术语保留英文
11. **敏感标的合规** — 见 `references/sensitive_companies.md`
12. **HTML 由 md2html 生成** — 不要手写 HTML（会被安全策略拦截长命令）
13. **report.md 是核心产物** — HTML 和 PDF 都从它派生
14. **执行顺序：report.md → HTML → 回复用户 → 打开浏览器** — report.md 和 HTML 先完成，浏览器打开不能漏

