AI PLAY玩法更新持续收录
← 回到更新流

2026-09-04 · 原文发布日

自选股分析师评级异动每日提醒

每个工作日早上运行,把逗号分隔的自选股列表逐只校验,从n8n Data Table读上次快照;OpenAI配合自托管的Yahoo Finance MCP服务器工具拉取分析师平均目标价、一致评级和分析师数,规范化后与昨日对比,目标价漂移超过阈值或评级变化才标异动。所有股票快照回写表格,有异动就把全部变动汇总成一条Markdown摘要发到Telegram,无变化则静默退出。

原文要点

作者Daniel Shashko的免费n8n模板:每工作日早晨定时运行,把逗号分隔自选股逐只拆分校验,从n8n Data Table读昨日快照;用OpenAI聊天节点调用自托管Yahoo Finance MCP服务器(需1.3.0的--http模式,旧版仅stdio)取分析师平均目标价、一致评级、分析师数和现价,规范化后与快照比较,目标价漂移超阈值或评级变化即标异动;所有快照回写analyst_watch表,有异动汇总一条Markdown发Telegram,无变化静默退出。该MCP服务器开源免密钥,暴露13类工具,且因跑在本地,n8n Cloud无法连接,必须自托管n8n。

这次做成什么

搭建一个工作日早晨自动运行的自选股分析师评级异动提醒:只有目标价漂移超过阈值或一致评级变化才收到一条Telegram汇总,平时完全静默。

准备什么

  • 一台可长期开机的自托管n8n实例(n8n Cloud连不上本地MCP服务器)
  • Node.js环境可执行npx,用于启动yahoo-finance-mcp-server
  • OpenAI API密钥并在n8n中配置好凭据
  • Telegram机器人Token和已获取的本人chat ID
  • 在n8n中预建名为analyst_watch的Data Table,含ticker、seen_on、mean_target、consensus、price列

具体怎么做

  1. 启动Yahoo Finance MCP服务器

    在n8n宿主机(或同网络机器)终端运行:npx -y yahoo-finance-mcp-server@1.3.0 --http --host 0.0.0.0 --port 8931。保持进程常驻(可用tmux或systemd),然后在n8n容器/主机内curl http://localhost:8931 确认可达。注意1.3.0才支持--http,更早版本只有stdio模式,n8n的MCP Client Tool节点连不上。

  2. 建Data Table和设置参数

    在n8n左侧Data tables新建表analyst_watch,添加五列:ticker(文本)、seen_on(日期)、mean_target(数字)、consensus(文本)、price(数字)。在工作流的设置节点里填入三个值:watchlist填逗号分隔代码如"AAPL,MSFT,NVDA",mcpUrl填http://localhost:8931(容器部署时用宿主机内网地址),driftThreshold填漂移百分比如5表示目标价变动超5%才算异动。

  3. 配置AI取数与比较链路

    工作流按Schedule Trigger(cron设为工作日早晨,如0 8 * * 1-5)→拆分watchlist并校验每个ticker格式→Data Table读取各ticker的最近一条快照→OpenAI聊天节点挂MCP Client Tool(URL指向你的MCP服务器),提示词要求返回该股票的分析师平均目标价、一致评级、分析师数和现价→Code节点把返回数字规范化(评级统一成BUY/HOLD/SELL等固定词表)并与昨日快照比较→所有ticker的新快照upsert回analyst_watch。

  4. 配置异动汇总与Telegram发送

    比较节点后接IF分支:有异动时用一个汇总节点把全部变动股票拼成一条Markdown消息(每只股票一行:代码、旧目标价→新目标价、评级变化),交给Telegram节点发送到你设置节点里填的chat ID;无异动分支直接结束,不发送任何消息。先用一只明显有数据的股票手动执行一次,确认表格写入和消息格式。

可直接复制的材料

OpenAI取数与规范化提示词

本站独立编写,假设上游Code节点已把单只股票代码放在ticker字段;评级词表可按你的偏好修改。

你是股票数据提取助手。请使用可用的Yahoo Finance工具查询股票 {{$json.ticker}} 的以下信息:
1. 分析师平均目标价(mean price target)
2. 分析师一致评级(consensus rating)
3. 覆盖该股票的分析师数量
4. 当前市价

严格要求:
- 只输出一个JSON对象,不要输出任何其他文字或Markdown代码块标记。
- 字段名固定为:mean_target(数字)、consensus(字符串,统一映射为 STRONG_BUY、BUY、HOLD、SELL、STRONG_SELL 之一)、analyst_count(整数)、price(数字)。
- 如果某项数据查不到,对应字段填 null,不要编造数值。
- 金额一律用股票交易货币的数字,不带货币符号。

漂移判断与汇总逻辑(Code节点参考)

本站独立编写的判断逻辑示意;prev为null(首次运行)时不标异动,只写入基线快照。

// 输入:当前快照 current 与昨日快照 prev(可能为null)
const DRIFT = 5; // 漂移百分比阈值,与设置节点保持一致
const out = [];
for (const item of $input.all()) {
  const { ticker, current, prev } = item.json;
  let moved = false, reasons = [];
  if (prev && prev.mean_target != null && current.mean_target != null) {
    const drift = Math.abs((current.mean_target - prev.mean_target) / prev.mean_target) * 100;
    if (drift >= DRIFT) { moved = true; reasons.push(`目标价 ${prev.mean_target} → ${current.mean_target}(漂移${drift.toFixed(1)}%)`); }
  }
  if (prev && prev.consensus && current.consensus && prev.consensus !== current.consensus) {
    moved = true; reasons.push(`评级 ${prev.consensus} → ${current.consensus}`);
  }
  out.push({ json: { ...current, ticker, moved, reason: reasons.join(';') } });
}
return out;

输入与输出示例

本站虚构演示,非原作者运行结果;数字为示意。

输入

watchlist="AAPL,MSFT",driftThreshold=5;昨日快照:AAPL mean_target=240 consensus=BUY,MSFT mean_target=500 consensus=HOLD;今日取回:AAPL mean_target=258 consensus=BUY analyst_count=38 price=236.5,MSFT mean_target=505 consensus=HOLD analyst_count=45 price=498.2

对应输出

AAPL漂移=(258-240)/240=7.5%≥5%标异动,MSFT漂移1.0%不标。Telegram收到一条Markdown:📊 分析师异动提醒\n• AAPL:目标价 240 → 258(漂移7.5%);评级 BUY 维持\n两条新快照均已upsert进analyst_watch,MSFT静默无消息。

做完检查这些

  • analyst_watch表中每只自选股每天恰好新增或更新一行,seen_on为当天日期
  • 目标价漂移低于阈值且评级不变时,Telegram不收到任何消息
  • 漂移超阈值或评级变化时,所有异动股票合并为一条Telegram消息而不是逐条刷屏
  • 首次运行(无昨日快照)只写基线、不产生异动提醒
  • MCP服务器进程重启后工作流仍能正常取数

容易卡住的地方

  • 必须是自托管n8n:MCP服务器跑在本地,n8n Cloud实例网络不可达
  • yahoo-finance-mcp-server必须1.3.0及以上并用--http启动,旧版stdio模式n8n的MCP Client Tool无法连接
  • n8n跑在Docker里时localhost指向容器自身,mcpUrl要用宿主机内网IP或host.docker.internal
  • 首次运行没有历史快照,所有股票都不会触发异动,需第二天才有对比基线
  • Yahoo Finance免费数据可能缺小盘股的分析师覆盖,提示词里已要求填null而非编造

原文与作者资料 ↗

本站借助AI整理来源事实,独立编写中文操作指南与示例。示例不代表实际运行结果;来源效果尚未由本站独立复现。付费模板与模型、服务费用分别计算。

原文标题
Track analyst target and rating drift with Yahoo Finance MCP, OpenAI, and Telegram
原作者
Daniel Shashko
原始发布日期
2026-09-04T11:51:26.578Z
来源
https://n8n.io/workflows/19199