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 | 提供持仓变动 | 晨间简报增加持仓快照 |
注意事项
- 所有
dws命令必须加--yes标志 - 股票数据通过 WebSearch 获取,可能存在延迟,建议手动确认关键数据
- 持仓盈亏需要 AI 在查询后计算更新(aitable 无公式字段)
- 深度研究的 4 个分析师使用 Agent Tool 并行执行,耗时约 1-3 分钟
- 支持 A 股(代码格式如 600519.SH)、美股(AAPL)、港股(HK0700)
- DING 消息仅用于重要通知(目标价到达、重大财报),避免频繁打扰
aitable template search可用于查找预设表格模板,返回 templateId 可用于aitable base create --template-idaitable base list可查看所有已创建的 Base,含 baseId 和 baseName
已知问题
- 无已知问题,所有核心命令(aitable CRUD、query、template search、base list)均测试通过
Weekly Installs
1
Repository
liangdabiao/din…workflowGitHub Stars
7
First Seen
Apr 14, 2026
Security Audits