2026-09-26 · 原文发布日
每天7点的自选股+加密币晨报邮件
每天7点读取自选股清单,从Google Sheets取历史分数以便算环比;每只股票从Twelve Data拉250根日线计算SMA/EMA、RSI、MACD、布林、ATR和52周位置,再抓Google News标题让OpenAI兼容模型打情绪分;合成0~100综合分和BUY/HOLD/AVOID结论,写回Sheets并叠加CoinGecko加密币行情;最后AI写管理层摘要,经Gmail发HTML报告、Telegram发精简版。作者明确这只是指标和情绪的机械汇总,不构成投资建议。模板免费。
原文要点
作者Ziad Karim的免费n8n模板:每天07:00或手动触发,从自选股配置读取清单,读Google Sheets历史分数算环比;每只股票从Twelve Data取250根日线,计算SMA/EMA、RSI、MACD、布林、ATR、52周位置;从Google News RSS抓标题交给OpenAI兼容模型返回结构化情绪分;合成0~100综合分和BUY/HOLD/AVOID结论,写回Sheets并叠加CoinGecko加密币数据;再由AI写管理层摘要,Gmail发HTML报告、Telegram发精简版。作者明确这是指标与情绪的机械汇总,不构成投资建议,数据来自免费公开源,可能延迟或不完整。
这次做成什么
在自己的n8n里搭好这条晨报流水线并跑通一次手动触发:自选股打分发邮件、Telegram收到精简版。因原文未提供提示词全文,本站独立编写两段可直接粘贴的提示词和一份观察清单配置,读者导入模板后把AI节点的提示词替换为本站版本即可。
准备什么
- n8n实例(自托管或云端)及可导入模板19949的权限
- Twelve Data免费API Key,用于替换请求URL中的YOUR_TWELVEDATA_KEY
- OpenAI兼容接口的凭据(官方或兼容网关均可),供情绪打分和摘要两个AI节点使用
- 一个Google账号:建一张含Date、Symbol、Score、Verdict列的Sheet,并绑定Gmail发件
- Telegram Bot Token及你自己的chat_id,且已先给bot发过一条消息
具体怎么做
导入模板并替换Twelve Data密钥
在n8n画布导入工作流19949,找到Twelve Data的HTTP Request节点,把URL里的YOUR_TWELVEDATA_KEY替换为你的密钥;在Twelve Data后台确认免费额度(每分钟和每日次数),先保留模板自带的股票间等待节点以规避限流。
建表并接Google Sheets
新建Google Sheet,第一行写入Date、Symbol、Score、Verdict四列表头,复制文档ID;在读取历史和追加今日分数两个Google Sheets节点里分别绑定Google凭据、选该文档和工作表,字段映射按列名一一对应。
配置观察清单与收件人
找到模板中的watchlist配置节点(Set类节点),把股票代码、CoinGecko的加密币ID和收件邮箱改成你的值;可用本站artifacts中的JSON作为字段参考。注意CoinGecko用的是小写ID(如bitcoin、ethereum),不是符号。
替换两段AI提示词并接模型
在新闻情绪打分节点的系统提示中粘贴本站「情绪打分提示词」,要求模型只输出JSON;在管理层摘要节点粘贴「摘要写作提示词」。两个节点都绑定OpenAI兼容凭据,模型名按你实际可用的填,模板未指定具体型号。
接通Gmail与Telegram
Gmail节点绑定Google凭据并确认收件人;Telegram节点填Bot Token,把YOUR_CHAT_ID替换为你的chat_id(可先给bot发消息,再访问api.telegram.org/bot<token>/getUpdates查看)。先手动Execute Workflow跑一次,确认邮件和Telegram都收到后再启用每天07:00的Schedule Trigger。
可直接复制的材料
新闻情绪打分提示词(粘贴到情绪打分AI节点)
本站独立编写。n8n表达式{{ $json.symbol }}和{{ $json.headlines }}需按你流程中实际字段名调整;若你的AI节点不支持表达式,就在前置节点把标题拼成一段文本传入。
你是一名金融市场新闻情绪分析员。下面给你一只股票最近的新闻标题列表,这些标题来自Google News,可能滞后或不完整。
任务:只依据这些标题本身,对该股票的短期情绪打分,并写一句中文短评。不要使用标题之外的任何知识,不要编造标题中不存在的数字或事件。
评分规则:
- sentiment_score:-1.0到1.0之间的小数,-1为强烈负面,0为中性或无法判断,1为强烈正面;
- 标题数量少于3条时,把confidence设为low;
- 标题互相矛盾时,分数向0靠拢。
输出格式:只输出一个JSON对象,不要输出任何其他文字:{"symbol":"代码","sentiment_score":0.0,"confidence":"low|medium|high","summary":"不超过40字的一句中文短评"}
股票代码:{{ $json.symbol }}
新闻标题:
{{ $json.headlines }}管理层摘要提示词(粘贴到摘要写作AI节点)
本站独立编写。{{ $json.reportData }}需替换为实际汇总字段;HTML排版由模板后续节点完成,此处只负责文案。
你是一名投资研究助理,为读者撰写每日晨报的管理层摘要。
输入是今日各股票的JSON评分结果(含综合分0-100、结论BUY/HOLD/AVOID、与昨日分数的环比变化)以及加密币行情列表。
写作要求:
1. 第一段用不超过80字概括整体:今日BUY、HOLD、AVOID各几只,分数变化最大的一只;
2. 然后按综合分从高到低,每只股票一行:代码、分数、结论、相对昨日涨跌多少分、一句原因(引用该股的情绪短评或主要指标信号);
3. 最后用两行列出加密币:名称、现价、24小时涨跌幅;
4. 结尾固定加一句:本报告为指标与新闻情绪的机械汇总,仅供学习研究,不构成投资建议。
语气客观,不使用「强烈买入」「稳赚」等词。全文不超过350字。
今日数据:
{{ $json.reportData }}观察清单配置示例(填入watchlist配置节点)
本站独立示例。tickers用Twelve Data支持的代码格式,港股示例0700.HK需确认你的Twelve Data套餐是否覆盖;cryptoIds必须是CoinGecko的小写ID。邮箱请换成你自己的。
{
"tickers": ["AAPL", "MSFT", "0700.HK"],
"cryptoIds": ["bitcoin", "ethereum", "solana"],
"recipientEmail": "morningbrief-demo@example.com",
"sheetName": "Scores",
"note": "字段名以模板配置节点实际定义为准,此处仅给出值的对照"
}输入与输出示例
本站虚构演示,数字为示意而非模板真实输出,未实际运行该工作流。综合分的具体权重以模板内合成节点逻辑为准。
输入
观察清单:tickers=["AAPL","MSFT"],cryptoIds=["bitcoin"];昨日Sheet中AAPL分数为62。今日AAPL的250根日线算出RSI=58、价格位于布林中轨上方、52周区间位置为71%;Google News抓到5条标题,模型返回{"sentiment_score":0.42,"confidence":"medium","summary":"财报预期乐观,分析师上调目标价"}。对应输出
综合分示例计算后AAPL得71分(较昨日+9),结论BUY;MSFT得54分(-2),结论HOLD。摘要节选:「今日BUY 1只、HOLD 1只。AAPL:71分(+9)BUY,趋势站上布林中轨,财报预期乐观;MSFT:54分(-2)HOLD,动能走平。bitcoin:67,320美元,24小时+1.8%。本报告为指标与新闻情绪的机械汇总,仅供学习研究,不构成投资建议。」Telegram精简版:「晨报:AAPL 71 BUY(+9)|MSFT 54 HOLD(-2)|BTC 67,320 +1.8%」做完检查这些
- 手动触发后,Google Sheet新增一行当日记录,Date为今天、Symbol/Score/Verdict均已写入,且分数与邮件正文一致
- 邮箱收到一封HTML晨报,包含每只股票的分数、结论和加密币段落,结尾带免责声明
- Telegram收到一条不含HTML标签的精简消息,股票数与观察清单一致
- 情绪打分节点的输出是合法JSON且sentiment_score在-1到1之间,标题少于3条时confidence为low
容易卡住的地方
- Twelve Data免费层有严格的每分钟/每日限流,股票一多就会429,必须保留模板自带的股票间等待节点,不要为提速删掉
- CoinGecko ID必须用小写全名(bitcoin而非BTC),填错会导致整个加密币段落为空或报错
- Telegram的chat_id没填或bot未被用户先发消息激活时,发送会静默失败,先调getUpdates确认
- Google Sheet列名拼写与模板映射不一致(如date小写)会导致追加行错位,列名必须严格为Date、Symbol、Score、Verdict
- 情绪模型若不强制JSON输出会混入解释文字,导致下游解析失败;提示词中『只输出JSON』不能删
本站借助AI整理来源事实,独立编写中文操作指南与示例。示例不代表实际运行结果;来源效果尚未由本站独立复现。付费模板与模型、服务费用分别计算。
- 原文标题
- Send daily stock and crypto market briefs with Twelve Data, Google Sheets, OpenAI, Gmail and Telegram
- 原作者
- Ziad Karim
- 原始发布日期
- 2026-09-25T22:53:53.975Z
- 来源
- https://n8n.io/workflows/19949