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:
- Use
base +table-listto get the table_id- 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:
- Get the watchlist
- Search for the latest stock price one by one
- Compare with the target price to determine whether it is triggered
- 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:
- Use WebSearch to query the earnings release dates of each company in the watchlist
- Record them in the earnings calendar table
- 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-upsertDetailed usagelark-doc—+createDetailed usagelark-im—+messages-sendDetailed usagelark-sheets—+writeDetailed usage