SuperAPI AI Directory

lark-workflow-stock-analyzer

Data & analytics

View repository

Updated 10-16 09:21

About this skill

Stock Research Assistant Workflow

CRITICAL — Before starting, you MUST first use the Read tool to read ../lark-shared/SKILL.md, which contains authentication and permission handling

Applicable Scenarios

  • "Help me analyze Apple's stock" / "Research AAPL"
  • "What's on my watchlist?" / "Add/remove watchlist stocks"
  • "Generate a holdings snapshot" / "How much did I earn today"
  • "Which earnings reports are released this week?" / "Analyze earnings reports"
  • "Help me pick a few good stocks" / "Technical stock selection"

Prerequisites

Only supports user identity. Ensure authorization before execution:

lark-cli auth login --domain base,docs,im,sheets

Workflow Overview

四层架构:

第一层:自选股监控
  base +record-list ──► 检查目标价 ──► WebSearch获取行情 ──► im +messages-send(到达通知)

第二层:财报提醒
  WebSearch ──► 查询财报日程 ──► 到期时自动分析 ──► doc +create(财报摘要)

第三层:深度研究
  启动 4 个 AI 分析师并行 ──► 各自分析 ──► 汇总报告 ──► doc +create

第四层:自动选股
  用户设定条件 ──► WebSearch 全市场扫描 ──► 筛选匹配 ──► 报告

Data Initialization

Base Table Structure

Table 1: Watchlist (watchlist)

Field Name Type Description
Stock Code Text e.g. AAPL, 600519.SH
Stock Name Text e.g. Apple, Kweichow Moutai
Market Single Select US Stocks/A-Shares/Hong Kong Stocks/Other
Target Price Number Target price set by the user
Target Direction Single Select Bullish (buy when reached)/Bearish (sell when reached)
Current Price Number Latest market price (updated regularly)
Last Updated Date Last price update time
Notes Text Free-form notes
Date Added Date Time added to the watchlist

Table 2: Portfolio (portfolio)

Field Name Type Description
Stock Code Text e.g. AAPL
Stock Name Text e.g. Apple
Buy Price Number Average buy price
Holding Quantity Number Number of shares held
Buy Date Date Position opening date
Current Price Number Latest price
Market Value Formula Holding Quantity × Current Price
Profit/Loss Amount Formula Market Value - (Buy Price × Holding Quantity)
Profit/Loss Ratio Formula Profit/Loss Amount / (Buy Price × Holding Quantity)

Table 3: Analysis Log (analysis_log)

Field Name Type Description
Stock Ticker Text e.g. AAPL
Analysis Type Single select Deep Research/Earnings Analysis/Daily Monitoring/Stock Picks
Analysis Date Date Analysis time
Conclusion Single select Strongly Bullish/Bullish/Neutral/Bearish/Strongly Bearish
Confidence Score Number 1-10
Bullish Reasons Text Main bullish arguments
Bearish Reasons Text Main bearish arguments
Recommendation Text Action recommendation
Report Link URL Feishu document link to the detailed analysis report

Table 4: Earnings Calendar (earnings_calendar)

Field Name Type Description
Stock Ticker Text
Stock Name Text
Earnings Date Date Expected release date
Earnings Type Single select Quarterly/Annual
Analyzed Single select No/Analyzed
Analysis Link URL Earnings analysis report link

Initialization Command

# 注意:+table-create 可能部分成功,需捕获错误后用 +field-create 补字段
# 注意:连续创建字段会触发限流(错误码 800004135),每次调用间隔至少 1 秒
lark-cli base +table-create --name "自选股" --fields '[
  {"name":"股票代码","type":"text"},
  {"name":"股票名称","type":"text"},
  {"name":"市场","type":"select","multiple":false,"options":[{"name":"美股"},{"name":"A股"},{"name":"港股"},{"name":"其他"}]},
  {"name":"目标价","type":"number"},
  {"name":"目标方向","type":"select","multiple":false,"options":[{"name":"看涨(到达买入)"},{"name":"看跌(到达卖出)"}]},
  {"name":"当前价","type":"number"},
  {"name":"上次更新","type":"datetime"},
  {"name":"备注","type":"text"},
  {"name":"加入时间","type":"datetime"}
]'
lark-cli base +table-create --name "持仓" --fields '[
  {"name":"股票代码","type":"text"},
  {"name":"股票名称","type":"text"},
  {"name":"买入价","type":"number"},
  {"name":"持仓数量","type":"number"},
  {"name":"买入日期","type":"datetime"},
  {"name":"当前价","type":"number"}
]'
# 注:市值、盈亏金额、盈亏比例 为公式字段,需单独用 +field-create 创建(type="formula" 需要引用其他字段 ID)
lark-cli base +table-create --name "分析记录" --fields '[
  {"name":"股票代码","type":"text"},
  {"name":"分析类型","type":"select","multiple":false,"options":[{"name":"深度研究"},{"name":"财报分析"},{"name":"日常监控"},{"name":"选股结果"}]},
  {"name":"分析日期","type":"datetime"},
  {"name":"结论","type":"select","multiple":false,"options":[{"name":"强烈看多"},{"name":"看多"},{"name":"中性"},{"name":"看空"},{"name":"强烈看空"}]},
  {"name":"信心评分","type":"number"},
  {"name":"看多理由","type":"text"},
  {"name":"看空理由","type":"text"},
  {"name":"建议","type":"text"},
  {"name":"报告链接","type":"link"}
]'
lark-cli base +table-create --name "财报日程" --fields '[
  {"name":"股票代码","type":"text"},
  {"name":"股票名称","type":"text"},
  {"name":"财报日期","type":"datetime"},
  {"name":"财报类型","type":"select","multiple":false,"options":[{"name":"季报"},{"name":"年报"}]},
  {"name":"已分析","type":"select","multiple":false,"options":[{"name":"否"},{"name":"已分析"}]},
  {"name":"分析链接","type":"link"}
]'

Rate Limit Handling: If +table-create partially fails due to rate limiting, the table will still be created successfully. In this case:

  1. Use base +table-list to get the table_id
  2. Use base +field-create --table-id <id> --json '{"name":"字段名","type":"text"}' to add fields one by one, with an interval of 1-2 seconds each time

Layer 1: Watchlist Monitoring

Manage Watchlist

# 添加自选股
lark-cli base +record-upsert --table-id "<watchlist_table_id>" --json '{
  "股票代码": "AAPL",
  "股票名称": "Apple",
  "市场": "美股",
  "目标价": 200,
  "目标方向": "看涨"
}'

# 查看自选股列表
lark-cli base +record-list --table-id "<watchlist_table_id>"

Price Check

Get the latest market data via AI WebSearch:

AI Processing:

  1. Get the watchlist
  2. Search for the latest stock price one by one
  3. Compare with the target price to determine whether it is triggered
  4. Send a Feishu message notification when triggered

Notification Format

目标价到达通知!

{股票名称}({股票代码})
当前价格:${current_price}
目标价格:${target_price}
目标方向:{看涨/看跌}

Layer 2: Earnings Reminders

Query Earnings Calendar

# 获取自选股列表
lark-cli base +record-list --table-id "<watchlist_table_id>"

AI Processing:

  1. Use WebSearch to query the earnings release dates of each company in the watchlist
  2. Record them in the earnings calendar table
  3. Automatically trigger earnings analysis on the release date

Earnings Analysis

When earnings are released:

AI 财报分析师处理:
1. 搜索最新财报数据(营收、利润、EPS、同比增长等)
2. 提取管理层关键表态
3. 分析市场反应(盘后/次日股价变动)
4. 与分析师预期对比(beat/miss)
5. 生成通俗易懂的财报摘要

Earnings Summary Format

## {公司名称}({股票代码}){季度}财报摘要

### 核心数据
| 指标 | 实际值 | 预期值 | 变化 |
|------|--------|--------|------|
| 营收 | $XX亿 | $XX亿 | +X% |
| EPS | $X.XX | $X.XX | +X% |

### 管理层说了什么
- {要点1}
- {要点2}

### 市场反应
- 盘后涨跌:{幅度}
- 分析师评价:{摘要}

### 综合评价
{总结性判断}

Save as a Feishu document:

lark-cli docs +create --title "财报摘要:{公司} {季度}" --markdown "<内容>"

Layer 3: Deep Research

Launch Multi-Role Analysis

Launch 4 AI analysts to work in parallel on the specified stock:

Analyst 1: Fundamental Analyst

  • Revenue and profit growth trends
  • Changes in gross margin and net margin
  • Free cash flow
  • Debt level

Analyst 2: Moat Analyst

  • Brand value
  • Technical barriers/patents
  • Network effects
  • Switching costs
  • Scale advantages

Analyst 3: Valuation Analyst

  • Relative valuation such as P/E, P/B, P/S
  • DCF absolute valuation
  • Comparison with the same industry
  • Historical valuation range

Analyst 4: Risk Analyst

  • Business risk
  • Competitive risk
  • Regulatory risk
  • Macro risk
  • Technology disruption risk

Summary report

## {公司名称}({股票代码})深度研究报告

### 总览
| 维度 | 评分(1-10) | 摘要 |
|------|-----------|------|
| 基本面 | {分} | {一句话} |
| 护城河 | {分} | {一句话} |
| 估值 | {分} | {一句话} |
| 风险 | {分} | {一句话} |

### 看多理由
1. {理由}
2. {理由}
3. {理由}

### 看空理由
1. {理由}
2. {理由}
3. {理由}

### 信心评分:{分}/10
### 建议:{操作建议}

Save report:

lark-cli docs +create --title "深度研究:{公司}" --markdown "<报告>"
lark-cli base +record-upsert --table-id "<analysis_table_id>" --json '{"字段名":"值"}'

Layer 4: Automatic stock selection

User-defined conditions

User describes stock selection conditions:

  • "Help me find oversold blue-chip stocks based on technicals"
  • "Companies with ROE greater than 15% and PE less than 20"
  • "Tech stocks with the largest gains in the past month"

AI executes stock selection

1. 将自然语言条件转化为可执行的搜索策略
2. WebSearch 获取市场数据
3. 根据条件筛选匹配
4. 生成选股结果报告

Results report

## 选股结果

### 筛选条件
{原始条件 + 转化后的可执行条件}

### 符合条件的股票
| 排名 | 股票 | 价格 | 涨跌幅 | 关键指标 |
|------|------|------|--------|---------|
| 1 | {股票} | ${价} | {涨跌}% | {指标} |

### 说明
{筛选逻辑说明和数据来源}

Portfolio snapshot

Regularly generate a portfolio overview:

lark-cli base +record-list --table-id "<portfolio_table_id>"

AI calculates summary:

  • Total market value
  • Total profit/loss amount and percentage
  • Best/worst performing stocks
  • Portfolio distribution

Permission table

Command Required scope
base +table-create bitable:app
base +record-list bitable:app:read
base +record-upsert bitable:app:write
docs +create docx:document:create
im +messages-send im:message:send_as_bot
sheets +write sheets:spreadsheet:write

Reference

  • lark-shared — Authentication, permissions (required reading)
  • lark-base — +table-create、+record-list、+record-upsert Detailed usage
  • lark-doc — +create Detailed usage
  • lark-im — +messages-send Detailed usage
  • lark-sheets — +write Detailed usage