# Dingtalk Workflow Stock Analyzer

> 股票研究助手 — 四层架构（自选股监控/财报提醒/深度研究/自动选股），通过 WebSearch 获取数据，分析结果存入 aitable

- Skill: `liangdabiao/dingtalk-workflow-stock-analyzer` (Agent Skill)
- Install (CLI): `npx skillmds@latest add liangdabiao/dingtalk-workflow-stock-analyzer`
- Raw SKILL.md: https://api.skillmd.com/api/skills/liangdabiao/dingtalk-workflow-stock-analyzer/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Productivity
- Author: liangdabiao (https://skillmd.com/u/liangdabiao)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/liangdabiao/dingtalk-workflow-stock-analyzer

---


# 股票研究助手 (dingtalk-workflow-stock-analyzer)

> 四层架构：自选股监控、财报提醒、深度研究（4个AI分析师并行）、自动选股。
> 数据通过 WebSearch 获取公开信息，分析结果存入钉钉 aitable。

## 触发方式

```
"股票分析"  "自选股"  "研究XX股票"  "持仓快照"  "财报分析"  "选股"  "持仓"
```

## 四层架构

| 层级 | 功能 | 数据来源 | 触发方式 |
|------|------|---------|---------|
| 第一层 | 自选股监控，目标价到达通知 | WebSearch + aitable | 手动 + 定时 |
| 第二层 | 财报日程提醒，自动分析财报 | WebSearch + aitable | 定时 |
| 第三层 | 4个AI分析师并行深度研究 | WebSearch + aitable | 手动 |
| 第四层 | 按条件自动选股 | WebSearch | 手动 |

## 数据初始化

首次使用时，自动创建 aitable 数据表：

```bash
# 创建 Base
dws aitable base create --name "股票研究助手" --yes -f json
# 返回 baseId，记为 <sa-base-id>

# 创建 4 张表
dws aitable table create --base-id <sa-base-id> --name "自选股" --yes -f json
# 返回 tableId，记为 <watchlist-table-id>
dws aitable table create --base-id <sa-base-id> --name "持仓" --yes -f json
# 返回 tableId，记为 <portfolio-table-id>
dws aitable table create --base-id <sa-base-id> --name "分析记录" --yes -f json
# 返回 tableId，记为 <analysis-table-id>
dws aitable table create --base-id <sa-base-id> --name "财报日程" --yes -f json
# 返回 tableId，记为 <earnings-table-id>

# 添加业务字段（表创建后自动带一个"标题"primaryDoc字段，需额外添加业务字段）
dws aitable field create --base-id <sa-base-id> --table-id <watchlist-table-id> --fields '[{"fieldName":"股票代码","type":"text"},{"fieldName":"股票名称","type":"text"},{"fieldName":"市场","type":"text"},{"fieldName":"目标价","type":"number"},{"fieldName":"目标方向","type":"text"},{"fieldName":"当前价","type":"number"},{"fieldName":"备注","type":"text"}]' --yes -f json

dws aitable field create --base-id <sa-base-id> --table-id <portfolio-table-id> --fields '[{"fieldName":"股票代码","type":"text"},{"fieldName":"买入价","type":"number"},{"fieldName":"持仓量","type":"number"},{"fieldName":"买入日期","type":"date"},{"fieldName":"当前价","type":"number"},{"fieldName":"市值","type":"number"},{"fieldName":"盈亏金额","type":"number"},{"fieldName":"盈亏比例","type":"number"}]' --yes -f json

dws aitable field create --base-id <sa-base-id> --table-id <analysis-table-id> --fields '[{"fieldName":"股票代码","type":"text"},{"fieldName":"分析日期","type":"date"},{"fieldName":"分析类型","type":"text"},{"fieldName":"结论摘要","type":"text"},{"fieldName":"信心评分","type":"number"},{"fieldName":"建议","type":"text"}]' --yes -f json

dws aitable field create --base-id <sa-base-id> --table-id <earnings-table-id> --fields '[{"fieldName":"股票代码","type":"text"},{"fieldName":"财报日期","type":"date"},{"fieldName":"财报类型","type":"text"},{"fieldName":"状态","type":"text"}]' --yes -f json
```

**表1: 自选股 (watchlist)**

| 字段名 | 类型 | 说明 |
|--------|------|------|
| 股票代码 | 文本 | AAPL / 600519.SH / HK0700 |
| 股票名称 | 文本 | Apple / 贵州茅台 / 腾讯控股 |
| 市场 | 文本 | 美股/A股/港股 |
| 目标价 | 数字 | 设定的目标价位 |
| 目标方向 | 文本 | 看涨/看跌 |
| 当前价 | 数字 | 最新价格（手动/搜索更新） |
| 备注 | 文本 | 关注理由 |

**表2: 持仓 (portfolio)**

| 字段名 | 类型 | 说明 |
|--------|------|------|
| 股票代码 | 文本 | 关联自选股 |
| 买入价 | 数字 | 成本价 |
| 持仓量 | 数字 | 持有数量（股） |
| 买入日期 | 日期 | 建仓时间 |
| 当前价 | 数字 | 最新价格 |
| 市值 | 数字 | 当前价 × 持仓量 |
| 盈亏金额 | 数字 | (当前价 - 买入价) × 持仓量 |
| 盈亏比例 | 数字 | (当前价 - 买入价) / 买入价 × 100% |

**表3: 分析记录 (analysis_records)**

| 字段名 | 类型 | 说明 |
|--------|------|------|
| 股票代码 | 文本 | 关联自选股 |
| 分析日期 | 日期 | 分析时间 |
| 分析类型 | 文本 | 快照/深度研究/财报分析/选股 |
| 结论摘要 | 文本 | 核心结论 |
| 信心评分 | 数字 | 1-10 |
| 建议 | 文本 | 买入/持有/卖出/观望 |

**表4: 财报日程 (earnings_calendar)**

| 字段名 | 类型 | 说明 |
|--------|------|------|
| 股票代码 | 文本 | 关联自选股 |
| 财报日期 | 日期 | 预计发布日 |
| 财报类型 | 文本 | 季报/年报 |
| 状态 | 文本 | 待发布/已分析 |

## 工作模式

### 模式 1: 自选股管理

**触发：** "添加 AAPL 到自选股，目标价 200" / "我的自选股有哪些" / "删除 XXX"

**工作流：**

```
Step 1: 添加自选股
└── dws aitable record create --base-id <sa-base-id> --table-id <watchlist-table-id> --records '[{"cells":{"标题":"AAPL-Apple","股票代码":"AAPL","股票名称":"Apple","市场":"美股","目标价":200,"目标方向":"看涨"}}]' --yes -f json

Step 2: 更新价格（手动告知或 WebSearch）
└── dws aitable record update --records '[...]' --yes -f json

Step 3: 查看自选股列表
└── dws aitable record query --base-id <sa-base-id> --table-id <watchlist-table-id> --limit 50 --yes -f json
```

### 模式 2: 持仓快照

**触发：** "生成持仓快照" / "看看我的持仓" / "持仓盈亏"

**工作流：**

```
Step 1: 查询持仓表
└── dws aitable record query --base-id <sa-base-id> --table-id <portfolio-table-id> --limit 50 --yes -f json

Step 2: WebSearch 获取最新价格（或用户手动告知）
└── WebSearch → "AAPL stock price today" 等

Step 3: AI 计算市值和盈亏
├── 市值 = 当前价 × 持仓量
├── 盈亏金额 = (当前价 - 买入价) × 持仓量
└── 盈亏比例 = (当前价 - 买入价) / 买入价 × 100%

Step 4: 更新持仓表并输出报告
└── dws aitable record update --records '[...]' --yes -f json
```

**输出格式：**

```markdown
## 持仓快照（2026-04-06）

| 股票 | 买入价 | 现价 | 持仓量 | 市值 | 盈亏 |
|------|--------|------|--------|------|------|
| AAPL | $170 | $185 | 10 | $1,850 | +$150 (+8.8%) |
| 600519.SH | ¥1800 | ¥1750 | 5 | ¥8,750 | -¥250 (-2.8%) |
| **合计** | | | | **$10,600** | **-$100** |

最佳：AAPL (+8.8%)
最差：600519.SH (-2.8%)
```

### 模式 3: 深度研究（4 个 AI 分析师并行）

**触发：** "帮我深度分析一下 NVDA" / "研究一下贵州茅台"

**工作流：**

```
Step 1: WebSearch 获取最新数据
├── 搜索公司基本面信息（营收、利润、增长趋势）
├── 搜索行业和竞争信息
├── 搜索最新新闻和分析师观点
└── 搜索估值数据（P/E、P/B、EPS 等）

Step 2: 4 个 AI 分析师并行研究（使用 Agent Tool 并行）
├── 分析师1: 基本面分析 — 收入、利润、增长趋势
├── 分析师2: 护城河分析 — 竞争优势、技术壁垒
├── 分析师3: 估值分析 — P/E、DCF、同类对比
└── 分析师4: 风险分析 — 行业风险、公司风险、宏观风险

Step 3: AI 汇总
├── 综合评分（1-10）
├── 看多理由列表
├── 看空理由列表
├── 信心评分
└── 建议（买入/持有/卖出/观望）

Step 4: 保存分析记录
└── dws aitable record create --base-id <sa-base-id> --table-id <analysis-table-id> --records '[...]' --yes -f json
```

**输出格式：**

```markdown
## NVIDIA (NVDA) 深度研究报告

### 总览
| 维度 | 评分(1-10) | 摘要 |
|------|-----------|------|
| 基本面 | 9 | 营收同比增长 122%，GPU 需求持续强劲 |
| 护城河 | 9 | CUDA 生态壁垒极高 |
| 估值 | 6 | P/E 65x 高于历史均值 |
| 风险 | 5 | 依赖 AI 投资周期，客户集中度高 |

### 看多理由
1. 数据中心收入持续爆发
2. CUDA 软件生态构成极深护城河
3. Blackwell 架构量产在即

### 看空理由
1. 估值已充分反映增长
2. 大客户自研芯片可能减少依赖
3. 出口管制风险

### 信心评分：7.5/10
### 建议：当前持仓可继续持有，不宜追高加仓。
```

### 模式 4: 财报提醒和分析

**触发：** "这周有哪些财报" / "分析一下XXX的财报" / 定时自动执行

**工作流：**

```
Step 1: 查询财报日程表
└── dws aitable record query --base-id <sa-base-id> --table-id <earnings-table-id> --yes -f json

Step 2: 对"待发布"状态的财报
├── WebSearch 检查是否已发布
└── 如已发布 → WebSearch 抓取财报数据

Step 3: AI 分析财报
├── 核心数据（营收、利润、EPS）
├── 管理层要点
├── 市场反应
└── 与预期对比

Step 4: 更新状态并通知
├── dws aitable record update → 状态改为"已分析"
└── dws ding message send → 财报摘要通知
```

### 模式 5: 自动选股

**触发：** "帮我找 ROE 大于 15% 的公司" / "筛选低估值蓝筹股"

**工作流：**

```
Step 1: 解析筛选条件

Step 2: WebSearch 获取符合条件的数据
├── 搜索股票筛选器/财务数据
└── 整理符合条件的股票列表

Step 3: AI 分析和排序
├── 按条件匹配度排序
├── 为每只股票简要说明
└── 推荐前 N 只

Step 4: 输出选股结果
```

## dws CLI 命令参考

### 创建股票助手

```bash
dws aitable base create --name "股票研究助手" --yes -f json
dws aitable table create --base-id <sa-base-id> --name "自选股" --yes -f json
dws aitable table create --base-id <sa-base-id> --name "持仓" --yes -f json
dws aitable table create --base-id <sa-base-id> --name "分析记录" --yes -f json
dws aitable table create --base-id <sa-base-id> --name "财报日程" --yes -f json
```

### 自选股操作

```bash
# 添加自选股
dws aitable record create --base-id <sa-base-id> --table-id <watchlist-table-id> --records '[{"cells":{"标题":"AAPL-Apple","股票代码":"AAPL","股票名称":"Apple","市场":"美股","目标价":200,"目标方向":"看涨"}}]' --yes -f json

# 查询自选股
dws aitable record query --base-id <sa-base-id> --table-id <watchlist-table-id> --limit 50 --yes -f json
```

### 持仓操作

```bash
# 添加持仓
dws aitable record create --base-id <sa-base-id> --table-id <portfolio-table-id> --records '[{"cells":{"标题":"AAPL持仓","股票代码":"AAPL","买入价":170,"持仓量":10,"买入日期":"2026-01-15"}}]' --yes -f json

# 更新价格和盈亏
dws aitable record update --base-id <sa-base-id> --table-id <portfolio-table-id> --records '[{"recordId":"rec_xxx","cells":{"当前价":185,"市值":1850,"盈亏金额":150,"盈亏比例":8.8}}]' --yes -f json
```

### 保存分析记录

```bash
dws aitable record create --base-id <sa-base-id> --table-id <analysis-table-id> --records '[{"cells":{"标题":"NVDA深度研究","股票代码":"NVDA","分析日期":"2026-04-06","分析类型":"深度研究","结论摘要":"基本面强劲，估值偏高","信心评分":7.5,"建议":"持有"}}]' --yes -f json
```

### 财报日程

```bash
dws aitable record create --base-id <sa-base-id> --table-id <earnings-table-id> --records '[{"cells":{"标题":"AAPL-Q2季报","股票代码":"AAPL","财报日期":"2026-04-25","财报类型":"季报","状态":"待发布"}}]' --yes -f json
```

### DING 通知（目标价到达/财报发布）

```bash
dws ding message send --robot-code "bot_code" --users "manager6950" --content "AAPL 已到达目标价 $200" --type "1" --yes
```

## 定时任务

| 任务 | Cron | 说明 |
|------|------|------|
| 持仓快照 | `0 9 * * 1-5` | 工作日开盘后 |
| 财报检查 | `0 9 * * 1` | 每周一检查本周财报日程 |
| 目标价监控 | `30 16 * * 1-5` | 工作日收盘后 |

## 联动 Skill

| 联动 Skill | 数据交互 | 说明 |
|-----------|---------|------|
| business-advisor | 提供投资数据 | 顾问团财务分析 |
| morning-brief | 提供持仓变动 | 晨间简报增加持仓快照 |

## 注意事项

1. 所有 `dws` 命令必须加 `--yes` 标志
2. 股票数据通过 WebSearch 获取，可能存在延迟，建议手动确认关键数据
3. 持仓盈亏需要 AI 在查询后计算更新（aitable 无公式字段）
4. 深度研究的 4 个分析师使用 Agent Tool 并行执行，耗时约 1-3 分钟
5. 支持 A 股（代码格式如 600519.SH）、美股（AAPL）、港股（HK0700）
6. DING 消息仅用于重要通知（目标价到达、重大财报），避免频繁打扰
7. `aitable template search` 可用于查找预设表格模板，返回 templateId 可用于 `aitable base create --template-id`
8. `aitable base list` 可查看所有已创建的 Base，含 baseId 和 baseName

## 已知问题

- 无已知问题，所有核心命令（aitable CRUD、query、template search、base list）均测试通过

