我用一个 Python 脚本,让飞书每天自动给我「报盘」
最近我又写了个新东西:fin-intel-agent,一个纯后端的 Python 项目,作用就一句话——每天盘前盘后,自动抓 A 股最活跃的一批股票,做完分析推到我的飞书群里。
这篇文章用大白话讲讲它是什么、怎么想的、以及怎么用。
一、它解决一个什么痛点
盯盘这件事,最累的不是看盘,而是「我到底该看哪几只」。
自选股是固定的,但市场热点是流动的——今天炒这个板块,明天炒那个概念,自选股里的票可能一整天都没动静,而真正涨得凶的、成交最活跃的票,反而不在你的视野里。
所以我换了个思路:不看自选股,直接看「今天最活跃的资金去哪了」。
二、核心思路:动态监控池
它的工作流很简单,一条流水线:
成交额榜 / 涨幅榜 / 换手率榜 / 量比榜 / 总市值榜
↓ 每个榜取前 20 名
↓ 五个榜合起来,去重,形成"监控池"(最多 100 只)
↓ 对池子里每只股票做"五维深采集"
↓ 汇总成 Markdown 报告
↓ 推到飞书群
所谓「五维」,就是:
- 行情 —— 现价、涨跌幅这些基础数据
- 基本面 —— 财务数据
- 新闻舆情 —— 最新新闻标题、来源、时间
- 研报评级 —— 机构怎么看
- 行业板块 —— 它属于哪个赛道
这样一份报告下来,你不仅能知道「今天谁在涨」,还能知道「它为什么涨、机构怎么看、属于哪个板块」——不用自己一个个点开查。
三、几个我比较满意的小设计
① 数据源只有一个,零门槛。
全部数据走 akshare 这个开源库,它把东方财富、同花顺这些公开接口都封装好了。所以这个项目不需要申请任何 API key,装个 akshare 就能跑。这对想试试但不想折腾注册的人来说,门槛极低。
② 异常隔离,单只股票挂了不影响整轮。
每调一个接口我都用 try/except 包着。就算某只股票的数据抓失败了,或者某个维度超时了,也不影响其他股票、其他维度继续跑。跑批处理最怕的就是「一颗老鼠屎坏一锅汤」,这个设计就是防这个的。
③ 飞书分片推送,不怕消息太长。
A 股一天几百只票,报告很容易超长。飞书群消息有长度限制,超了会被拒。所以我做了按行分片:把长报告切成一段段,逐片发,防止被限流。没配 webhook 或者开了 dry-run,就自动降级成打印到控制台,方便调试。
④ 非交易日自动跳过。
周末、节假日它不会傻乎乎地去跑然后发现没数据——内置了交易日判断,非交易日直接跳过。这个细节在调试时特别省心(我周末测的时候它就一直乖乖跳过)。
四、怎么跑起来
三步:
# 1. 装依赖
python3 -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
# 2. 先空跑一次,报告打印到控制台(不推送)
python3 -m src.fin_intel --once --dry-run
# 3. 配好飞书 webhook 后正式推送
python3 -m src.fin_intel --once
常驻定时就一句 python3 -m src.fin_intel,它会按盘前 09:30 / 盘后 15:30 的 cron 自动跑。
飞书 webhook 的配置也简单:飞书群 → 设置 → 群机器人 → 自定义机器人,复制那个 hook 地址,填进 config/config.yaml 或 .env 里就行。
五、写在最后
这个项目和之前的 aiscan、记账本 一样,都是我「从零写、可复现、可部署」系列里的一环。它的代码结构不算复杂,但把「动态监控池 + 五维采集 + 异常隔离 + 分片推送」这几件事都做到了,作为一个 Python 后端项目,是能拿得出手的。
如果你想给自己也搞一个「飞书自动报盘」,或者单纯想看看 akshare 怎么玩,欢迎去仓库看看:github.com/hedongli1/fin-intel-agent。
最后照例声明一句:数据全部来自公开接口,可能延迟或误差;报告仅供研究参考,不构成任何投资建议。