📈🤖 n8n 股票日报自动推送工作流:从行情接口到手机提醒

📈🤖 n8n 股票日报自动推送工作流:从行情接口到手机提醒
阿晖📈🤖 n8n 股票日报自动推送工作流:从行情接口到手机提醒
这次折腾的是一个很实用的自动化:股票日报自动推送。📊📲
目标并不复杂:每天固定时间,自动从我的网站接口拉取股票行情和市场新闻,把内容整理成一份文本日报,然后通过 PushPlus 推送到手机端。这样不用每天手动打开网页查数据,到点手机就能收到一份整理好的市场简报。⏰📈📰📲
最终链路是这样的:
1 | ⏰ 定时触发 -> 📈 获取股票行情 -> 📰 获取市场新闻 -> 🧠 生成日报 -> 📲 PushPlus 推送 |
这套工作流里,n8n 不负责存股票数据,也不负责展示页面。
真正的数据接口在主站 12700180.xyz 上,n8n 只负责定时调接口、组装内容、发送通知。🧩
🧩🏗️ 整体架构
这次的服务分工比较清楚,每个模块只做自己该做的事:
| 图标 | 模块 | 作用 |
|---|---|---|
| 🤖 | n8n | 编排自动化流程,负责定时、请求接口、组装日报、推送 |
| 🐳 | Docker | 在云服务器上运行 n8n 容器 |
| 🛡️ | 宝塔面板 | 做反向代理,把域名转发到 n8n 服务 |
| 🌐 | n8n.12700180.xyz | n8n 的访问入口 |
| 📊 | 12700180.xyz | 主站,提供股票行情和新闻接口 |
| 📲 | PushPlus | 接收 n8n 发来的日报,并推送到手机端 |
整体思路就是:
📊 主站负责数据,🤖 n8n 负责任务调度,📲 PushPlus 负责通知触达。 ✅
这种拆法比把所有东西都塞进一个服务里舒服很多。主站继续专心提供接口,n8n 只做流程编排,后面如果想换推送渠道,也只需要改最后一个节点。🔁
⏰🚪 触发方式:三个入口进同一条主链路
最终工作流保留了三个入口:
- 🕛 每天 12:00 自动执行
- 🕝 每天 14:40 自动执行
- 🧪 手动测试入口
这三个入口不会各写一套逻辑,而是统一进入同一条主链路:
1 | 🕛 12:00 定时触发 |
这样后面要改日报格式、接口地址、推送内容,只需要改主链路,不需要在三个地方重复维护。
这一点很重要,不然后期工作流节点一多,很容易改乱。🧱
🔌📈 第一步:获取股票行情
第一个 HTTP Request 节点用来请求主站的行情接口。🌐
这里 n8n 的定位很简单:拿数据,不加工复杂业务。 📥
比如行情接口可以返回:
- 📌 指数涨跌:先看大盘温度
- ⭐ 自选股行情:关注自己的票
- 💰 当前价格:知道现在到哪了
- 📉 涨跌幅:快速判断强弱
- 🔥 成交额:看市场活跃度
- ⚡ 重要异动:把异常变化拎出来
这些数据本身应该由主站接口整理好,n8n 只要负责请求接口并把结果传给下一个节点。
这样做的好处是:如果行情接口以后要换数据源,或者要增加字段,只需要改主站接口,不需要大改 n8n。🧱
📰🌪️ 第二步:获取市场新闻
第二个 HTTP Request 节点用来请求新闻接口。📡
日报只有行情其实不够,最好还要带一点市场背景。比如:
- 🗞️ 今日重要财经新闻
- 🏦 政策和宏观消息
- 📊 行业板块动态
- ⚠️ 个股风险提示
- 🔥 热点题材变化
行情告诉你“发生了什么”,新闻告诉你“可能为什么发生”。
把两者组合起来,日报才不会只是几行数字。📑
🧠📝 第三步:代码节点生成日报
拿到行情和新闻之后,用 n8n 的 Code 节点把内容组装成一份文本报告。🧑💻
日报不需要写得像研报,手机推送最重要的是清楚、短、能扫读。我的思路是把它拆成几个固定模块:
1 | 📈 股票日报 |
这种格式的好处是稳定。
每天推送来的结构都一样,手机上扫一眼就知道重点在哪里。📱
📲🚀 第四步:PushPlus 推送到手机
一开始我尝试过用 Outlook SMTP 发邮件,但这里踩了两个坑。📮
第一个错误是:
1 | STARTTLS is required |
意思是 SMTP 服务器要求必须启用 STARTTLS 加密连接。🔐
后来继续折腾,又遇到:
1 | basic authentication is disabled |
这就更直接了:微软已经限制普通账号密码方式的 SMTP 登录。
也就是说,就算配置对了服务器、端口和密码,也可能因为认证策略过不去。对于个人自动化来说,这条路配置成本太高,不适合快速落地。😵
最后改成 PushPlus,体验就简单多了:✨
- 🔑 只需要 token
- 🌐 用 HTTP 请求发送
- 📲 手机端接收方便
- 🧰 不依赖邮箱 SMTP 认证
- 🧪 调试成本低
在 n8n 里,最后一个 HTTP Request 节点请求 PushPlus 接口,把标题、正文和 token 带过去即可。
token 不建议硬写在公开文章或截图里,最好放在 n8n 的变量、凭据或服务器环境配置里。🔒🧯
🐳🧱 Docker 部署时踩过的坑
这次 n8n 是部署在云服务器 Docker 里的,外面用宝塔做反向代理,访问地址是:
1 | n8n.12700180.xyz |
部署过程中主要踩了两个坑:一个是网络,另一个是权限。🕳️
🕸️ 1. Docker 网络和 iptables 问题
一开始 Docker 报过这个错误:
1 | iptables: No chain/target/match by that name |
这个问题通常说明 Docker 在写端口映射规则时失败了。
也就是容器想把内部端口映射到宿主机端口,但宿主机的 iptables 链状态不正常,导致映射规则没写进去。
后面的处理方式是:改成 host 网络,再配合本机监听规避端口映射问题。 🛣️
这样做之后,容器不再依赖 Docker 的端口映射规则,宝塔反向代理也能继续转发到 n8n 服务。✅
🔐 2. n8n 数据目录权限问题
第二个坑是容器反复重启。🔁
核心错误是 n8n 无法写入配置文件:
1 | /home/node/.n8n/config |
这个路径是容器内部的 n8n 数据目录。
如果宿主机挂载目录权限不对,容器里的 node 用户就写不了配置,n8n 会启动失败或者反复重启。
最后通过给挂载目录设置正确权限解决:
1 | ./data -> /home/node/.n8n |
也就是说,Docker 部署 n8n 时,数据目录不是随便挂上就完事。
权限不对,容器能启动命令,但服务就是跑不稳。⚠️
🛠️🧩 最终工作流节点
最终保留下来的节点结构大概是这样:
| 图标 | 节点 | 作用 |
|---|---|---|
| 🕛 | Schedule Trigger 12:00 | 中午定时执行 |
| 🕝 | Schedule Trigger 14:40 | 下午定时执行 |
| 🧪 | Manual Trigger | 手动测试 |
| 📈 | HTTP Request:行情接口 | 从 12700180.xyz 获取股票行情 |
| 📰 | HTTP Request:新闻接口 | 从 12700180.xyz 获取市场新闻 |
| 🧠 | Code:生成日报 | 把行情和新闻拼成推送文本 |
| 📲 | HTTP Request:PushPlus | 把日报推送到手机 |
这套节点不花哨,但够稳定。
对我来说,自动化工作流最重要的不是节点多,而是链路清晰、问题好排查。🧭
✅🎉 最终结果
目前手动测试已经跑通,PushPlus 也成功收到推送。📲✅
保存工作流并开启 Active 之后,浏览器页面可以直接关闭。
因为 n8n 是跑在云服务器 Docker 里的,只要服务器、容器和 n8n 服务还在,它就会继续按设定时间自动执行。
这也是把 n8n 部署到云服务器的好处:
不用依赖本地电脑开机,不用担心浏览器关掉任务就停了。☁️
🧾💡 这次折腾的收获
这套股票日报工作流看起来只是一个小自动化,但里面其实串起了几个很典型的能力:
- ⏰ 定时任务:让它每天自己跑
- 🌐 HTTP 接口调用:把主站数据接进来
- 🧩 多数据源组装:行情 + 新闻合成一份日报
- 🧠 文本报告生成:用 Code 节点整理内容
- 📲 手机通知推送:PushPlus 负责最后触达
- 🐳 Docker 服务部署:n8n 长期跑在云服务器
- 🔁 云服务器长期运行:关浏览器也不影响自动任务
后面如果要扩展,也很自然:
- 📈 增加更多股票接口
- 🧭 增加指数和板块数据
- 🤖 增加 AI 总结节点
- 🚨 增加异常行情提醒
- 🌙 增加每日收盘复盘
- 🗄️ 增加数据库归档
现在这版先不追求复杂,先把“每天自动推送一份能看的股票日报”跑稳。
自动化工具最有价值的地方就是:把每天重复做的小事,变成服务器自己按时完成的任务。 🚀















