skills/liangdabiao/dingtalk-cli-workflow/dingtalk-workflow-stock-analyzer

dingtalk-workflow-stock-analyzer

Installation
SKILL.md

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

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

触发方式

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

四层架构

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

数据初始化

首次使用时,自动创建 aitable 数据表:

# 创建 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

输出格式:

## 持仓快照(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

输出格式:

## 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 命令参考

创建股票助手

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

自选股操作

# 添加自选股
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

持仓操作

# 添加持仓
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

保存分析记录

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

财报日程

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 通知(目标价到达/财报发布)

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)均测试通过
Weekly Installs
1
GitHub Stars
7
First Seen
Apr 14, 2026