☰
n8n计划触发器+HTTP请求:每天定点把热点新闻推送到电报群聊的TaoToken配置大纲
2026/10/15 11:15:42 网站建设 项目流程

1. 为什么我要把热点新闻塞进电报群:n8n 计划触发器定时推送的真实场景

每天手动刷微博热搜、知乎热榜、GitHub Trending,再挑几条发到群里,这件事我坚持了不到一周就放弃了。不是懒,是重复劳动太消耗注意力。后来我把这套流程拆成了三个动作:定时抓取、AI 摘要筛选、推送到电报群聊。n8n 的计划触发器负责“到点干活”,HTTP 请求节点负责“拿数据”和“调模型”,电报节点负责“发出去”。整条链路跑通之后,我每天早上八点半打开电报,群里已经躺着一份整理好的热点清单。

这套方案适合谁?如果你有 n8n 基础环境,想让 AI 帮你做信息过滤,又不想写太多胶水代码,那它很合适。n8n 本身是低代码工作流工具,计划触发器就是它的定时器,HTTP 请求节点是万能连接器,AI Agent 节点负责理解和改写内容。三者串起来,就是一个自动化的“新闻秘书”。

核心检索词先摆出来:n8n 计划触发器、HTTP 请求节点、AI Agent、电报群聊推送。这四个词贯穿全文,你照着配就能复现。我实测下来,整个工作流从触发到消息到达群聊,稳定在 6 到 12 秒之间,取决于新闻 API 的响应速度和模型生成摘要的长度。

先讲清楚整体数据流:计划触发器按 Cron 表达式唤醒工作流,第一个 HTTP 请求节点去拉热点新闻列表,第二个 HTTP 请求节点把新闻原文发给 TaoToken 的模型接口做摘要和筛选,最后电报节点把整理好的 Markdown 文本发到指定群聊。中间可以加一个 Code 节点做数据裁剪,避免把整篇新闻原文塞给模型浪费 token。

这里有个容易踩的坑:新闻 API 返回的往往是嵌套 JSON,字段名不统一。有的用title,有的用name,有的把热度放在hot里。你需要在 HTTP 请求节点之后加一个 Set 节点或者 Code 节点,把字段统一成title和url,不然后面 AI 提示词里引用字段会报 undefined。我试过直接拿原始 JSON 喂给模型,结果模型把字段名也当成新闻内容总结了,输出一堆“title: xxx”的废话。

另一个坑是时区。n8n 默认用 UTC,计划触发器里如果写0 8 * * *,实际执行时间是北京时间下午四点。你需要在工作流设置里把时区改成Asia/Shanghai,或者在 Cron 表达式里手动减 8 小时。我建议直接改工作流时区,一劳永逸。

电报群聊的配置也有讲究。你需要先找 BotFather 创建机器人,拿到 Bot Token,再把机器人拉进目标群聊,最后通过getUpdates接口拿到群聊的 Chat ID。Chat ID 通常是负数,比如-1001234567890。这个 ID 填到电报节点的 Chat ID 字段里,消息才能准确投递。如果填错,电报 API 会返回chat not found,但 n8n 的电报节点报错信息比较模糊,你最好先用 curl 测一下。

整套流程的产出效果是这样的:群里收到一条 Markdown 格式的消息,标题是“今日热点摘要”,下面分点列出 8 到 10 条新闻,每条包含一句话摘要和原文链接。AI 会自动去掉重复内容,把同一事件的不同报道合并成一条。你还可以在提示词里加关键词过滤,比如“只保留科技和编程相关”,这样娱乐八卦就不会混进来。

2. TaoToken 前置准备:统一 Key 与 HTTP 请求节点接入 n8n 的配置要点

在 n8n 里调用 AI 模型,最省事的方式是用 HTTP 请求节点直接打 API,而不是装一堆社区节点。TaoToken 提供统一的 Base URL 和 Key,兼容 OpenAI 风格的/v1/chat/completions接口,你不需要为每个模型单独配一套认证。官网地址是 https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= ,API 根地址是 https://taotoken.net/api ,注意 API 地址后面不加 UTM 参数。

你需要准备三样东西:Base URL、API Key、Model ID。Base URL 填https://taotoken.net/api/v1,API Key 在控制台的 API Keys 页面生成,Model ID 根据你想要的模型填,比如claude-sonnet-4-20250514或者gpt-4o-mini。这三个值在 n8n 的 HTTP 请求节点里会用到,缺一不可。

先登录控制台创建 Key。打开 https://taotoken.net/console ,找到 API Keys 菜单,点“创建新 Key”,复制生成的字符串。这个 Key 只显示一次,丢了就得重新建。我习惯把它存到 n8n 的 Credentials 里,类型选“Header Auth”,Name 填Authorization,Value 填Bearer sk-你的Key。这样在 HTTP 请求节点里直接选这个 Credential,不用每次手填。

模型 ID 怎么选?如果你只是做新闻摘要,gpt-4o-mini或者claude-haiku这类轻量模型就够了,速度快、成本低。如果你要模型做深度分析和跨平台聚合,那就上claude-sonnet或者gpt-4o。我实测下来,摘要 10 条新闻用轻量模型大概消耗 800 到 1200 token,成本可以忽略不计。

TaoToken 的接口路径是/v1/chat/completions,请求方法是 POST,Content-Type 是application/json。请求体里需要包含model、messages、temperature这几个字段。messages是一个数组,里面放system和user两条消息。system用来设定角色,比如“你是一个新闻摘要助手”;user用来放新闻原文和具体指令。

这里有个细节:n8n 的 HTTP 请求节点默认把 Body 当成 JSON 发,但如果你在 Body 里用了表达式引用上游节点的数据,要确保表达式返回的是字符串而不是对象。比如{{ $json.newsList }}如果本身是数组,直接塞进 JSON Body 会变成嵌套对象,模型接口可能解析失败。正确做法是用{{ JSON.stringify($json.newsList) }}转成字符串。

另外,TaoToken 的接口支持流式输出,但在 n8n 里建议关掉 stream,因为电报节点需要等完整响应才能发消息。流式输出会让 HTTP 请求节点提前返回,拿到的内容不完整。在请求体里加"stream": false就行。

如果你打算长期跑这个工作流,建议用 Coding Plan 而不是按量计费。Coding Plan 的入口在 https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite ,适合每天定时调用、token 消耗稳定的场景。我算过一笔账,每天跑一次、每次 1000 token,一个月下来按量计费也就几块钱,但 Coding Plan 的额度更充裕,不用担心突发流量。

配置完 Key 之后,先别急着搭完整工作流。你可以用模型对话页面 https://taotoken.net/model-chat?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite 手动测一下模型能不能正常返回。输入一段新闻文本,看输出格式是否符合预期。这一步能帮你排除 Key 无效、模型 ID 写错、余额不足等问题。等手动测试通过了,再回到 n8n 里配 HTTP 请求节点。

3. 可复制的 n8n 工作流 JSON 与 HTTP 请求节点配置

这一节直接给你能导入的 JSON。打开 n8n,点右上角“Import from File”或者“Import from URL”,把下面的 JSON 粘贴进去。导入后你会看到四个节点:计划触发器、获取新闻的 HTTP 请求、调用 AI 的 HTTP 请求、发送电报的消息节点。节点之间的连线已经配好,你只需要替换 API Key、Chat ID 和模型 ID。

{ "name": "DailyHotNewsToTelegram", "nodes": [ { "parameters": { "rule": { "interval": [ { "field": "cronExpression", "expression": "30 0 * * *" } ] } }, "name": "Schedule Trigger", "type": "n8n-nodes-base.scheduleTrigger", "typeVersion": 1.2, "position": [200, 300] }, { "parameters": { "url": "https://api.vvhan.com/api/hotlist/all", "options": { "response": { "response": { "responseFormat": "json" } } } }, "name": "Fetch Hot News", "type": "n8n-nodes-base.httpRequest", "typeVersion": 4.2, "position": [450, 300] }, { "parameters": { "method": "POST", "url": "https://taotoken.net/api/v1/chat/completions", "authentication": "genericCredentialType", "genericAuthType": "httpHeaderAuth", "sendBody": true, "bodyParameters": { "parameters": [ { "name": "model", "value": "gpt-4o-mini" }, { "name": "stream", "value": false }, { "name": "temperature", "value": 0.3 }, { "name": "messages", "value": "={{ [{\"role\":\"system\",\"content\":\"你是一个新闻摘要助手,请从用户提供的新闻列表中筛选出最重要的8条,去除重复内容,每条用一句话概括,并附上原文链接。输出格式为Markdown列表。\"},{\"role\":\"user\",\"content\": JSON.stringify($json.data) }] }}" } ] }, "options": {} }, "name": "AI Summarize", "type": "n8n-nodes-base.httpRequest", "typeVersion": 4.2, "position": [700, 300] }, { "parameters": { "chatId": "-1001234567890", "text": "={{ $json.choices[0].message.content }}", "additionalFields": { "parse_mode": "Markdown" } }, "name": "Send to Telegram", "type": "n8n-nodes-base.telegram", "typeVersion": 1.2, "position": [950, 300] } ], "connections": { "Schedule Trigger": { "main": [[{"node": "Fetch Hot News", "type": "main", "index": 0}]] }, "Fetch Hot News": { "main": [[{"node": "AI Summarize", "type": "main", "index": 0}]] }, "AI Summarize": { "main": [[{"node": "Send to Telegram", "type": "main", "index": 0}]] } } }

导入后先别执行,按顺序改三个地方。第一,计划触发器的 Cron 表达式30 0 * * *表示 UTC 时间每天 0:30,对应北京时间 8:30。如果你想改时间,直接改这个表达式,但记得工作流时区要设成Asia/Shanghai,否则时间会偏。第二,AI Summarize 节点的 Credential 要选你之前建的 Header Auth,Model ID 按需替换。第三,Send to Telegram 节点的 Chat ID 换成你自己的群聊 ID。

HTTP 请求节点的 Body 配置是重点。在 n8n 里,messages字段的值是一个表达式,里面用了JSON.stringify($json.data)。这里的$json.data是上一个节点返回的新闻数组。不同新闻 API 的字段名不一样,如果data字段不存在,你需要改成实际的字段名。比如 vvhan 的接口返回结构是{ code: 200, data: [...] },所以$json.data能拿到数组。如果换成别的 API,先手动执行一次 Fetch Hot News 节点,看输出里数组挂在哪个字段下。

电报节点的parse_mode设成Markdown,这样 AI 输出的**加粗**和[链接](url)能正常渲染。但要注意,如果 AI 输出的内容里包含 Markdown 特殊字符(比如_或*),电报可能会解析失败。你可以在 AI 提示词里加一句“不要使用下划线,链接用 Markdown 格式”,减少解析错误。

如果你用的是 Claude Code 或者 Cline 这类工具来管理配置,可以把 Base URL、Key、Model ID 写进settings.json或者auth.json。比如 Claude Code 的配置文件里,ANTHROPIC_BASE_URL填https://taotoken.net/api,ANTHROPIC_API_KEY填你的 Key,ANTHROPIC_MODEL填模型 ID。Cline 的 MCP 配置类似,在mcp_settings.json里指定baseUrl和apiKey。Codex 的auth.json则是{ "openai": { "baseURL": "https://taotoken.net/api/v1", "apiKey": "sk-xxx" } }。这三件套配好,工具就能直接走 TaoToken 的接口。

工作流 JSON 导入后,节点位置可能有点乱,你手动拖一下就行。重点是连线顺序:Schedule Trigger → Fetch Hot News → AI Summarize → Send to Telegram。少一条线,消息就发不出去。

4. 手动触发与定时验证:确认消息按时到达电报群聊

配好之后先别等定时,手动点一下“Execute Workflow”按钮,看整条链路能不能跑通。手动执行时,Schedule Trigger 节点会立即触发一次,不需要等到 Cron 时间。你观察每个节点的输出:Fetch Hot News 应该返回一个包含新闻数组的 JSON,AI Summarize 应该返回choices[0].message.content字段,里面是 Markdown 文本,Send to Telegram 应该返回ok: true。

如果 AI Summarize 节点报错reading 'choices',说明接口返回的结构不对。可能是 Key 无效、模型 ID 写错、或者请求体格式有问题。你先在模型对话页面手动发一条请求,确认 Key 和模型能用。如果手动能用但 n8n 里报错,检查 HTTP 请求节点的 Headers 里有没有正确带上Authorization: Bearer sk-xxx。n8n 的 Header Auth Credential 有时候不会自动应用到所有请求,你可以在节点里手动加一个 Header。

如果电报节点报错chat not found,说明 Chat ID 不对。你先用浏览器访问https://api.telegram.org/bot<你的BotToken>/getUpdates,看返回的 JSON 里chat.id是多少。注意群聊的 ID 是负数,而且可能带-100前缀。把正确的 ID 填回节点,再执行一次。

手动跑通之后,把工作流右上角的“Active”开关打开。这时候 Schedule Trigger 才会按 Cron 表达式定时执行。你可以把 Cron 改成*/5 * * * *,让它每 5 分钟跑一次,观察几次执行记录。在 n8n 的“Executions”页面能看到每次执行的状态、耗时和输出。确认连续三次都成功之后,再把 Cron 改回每天一次。

时区问题再强调一遍。n8n 的工作流设置里有个“Timezone”选项,默认是America/New_York或者 UTC。你把它改成Asia/Shanghai,然后 Cron 表达式写30 8 * * *,就是北京时间每天早上 8:30 执行。如果不改时区,写30 0 * * *也能达到同样效果,但容易把自己绕晕。我建议统一用Asia/Shanghai,Cron 表达式按本地时间写。

验证消息到达群聊时,注意电报机器人有没有被限制发言。有些群组开启了“仅管理员可发言”,你的机器人如果不是管理员,消息会被静默丢弃。你可以在群组设置里把机器人设为管理员,或者关闭发言限制。另外,电报对消息长度有限制,单条消息最多 4096 个字符。如果 AI 输出的摘要太长,电报节点会报错message is too long。你可以在 AI 提示词里限制“总字数不超过 2000 字”,或者在电报节点前加一个 Code 节点截断文本。

如果你想让验证更直观,可以在 AI Summarize 节点后面加一个“NoOp”节点,把choices[0].message.content打印到 n8n 的日志里。这样即使电报发送失败,你也能看到 AI 到底生成了什么内容。我踩过的坑是:AI 返回了内容,但电报节点因为 Markdown 解析失败而报错,日志里只显示Bad Request: can't parse entities。后来我在提示词里明确要求“不要使用 Markdown 特殊字符”,问题就解决了。

定时验证通过后,你可以把执行记录保留一段时间,观察有没有偶发失败。n8n 默认保留最近 100 次执行记录,够用了。如果发现某天没收到推送,先看 Executions 页面有没有报错,再看电报群聊的机器人是否还在群里。有时候群主会把机器人踢掉,你重新拉进去就行。

5. 本篇常见错排查:401、local proxy failed、reading choices、OAuth 报错对照

报错一:401 Unauthorized。这是最常见的,说明 API Key 无效或者没带上。你先检查 n8n 的 Header Auth Credential 里 Value 是不是Bearer sk-xxx,注意Bearer和 Key 之间有一个空格。然后检查 HTTP 请求节点有没有选中这个 Credential。如果都对了还是 401,去控制台看看 Key 是不是被删了或者余额不足。TaoToken 的 Key 在 API Keys 页面能看状态,过期或禁用的 Key 会标红。

报错二:local proxy failed或者ECONNREFUSED。这个报错通常出现在你本地跑 n8n、又配了系统代理的情况下。n8n 的 HTTP 请求节点会继承环境变量里的HTTP_PROXY和HTTPS_PROXY,如果代理地址不通,就会报这个错。解决办法是在 n8n 的启动命令里加--no-proxy,或者把环境变量里的代理清掉。如果你用的是 Docker,在docker run时加-e NO_PROXY=taotoken.net,让 n8n 直连 TaoToken 的接口。

报错三:Cannot read properties of undefined (reading 'choices')。这说明 AI Summarize 节点拿到的响应里没有choices字段。可能原因有三个:请求体格式不对、模型 ID 不存在、接口返回了错误信息。你先在 n8n 里点开 AI Summarize 节点的输出,看完整的 JSON 是什么。如果返回的是{ error: { message: "model not found" } },那就是模型 ID 写错了。如果返回的是{ error: { message: "invalid api key" } },那就是 Key 问题。如果返回的是空对象,可能是请求体里的messages表达式没解析成功,你检查一下JSON.stringify有没有漏掉。

报错四:OAuth相关错误。n8n 的电报节点支持两种认证方式:Bot Token 和 OAuth。如果你选错了认证类型,会报OAuth token is missing。正确做法是在 Telegram Credential 里选“Bot Token”,填 BotFather 给你的 Token。不要选 OAuth,那个是给用户账号用的,配置复杂且容易过期。

报错五:Bad Request: message is too long。电报单条消息限制 4096 字符,AI 生成的摘要如果超过这个长度,发送就会失败。你可以在 AI 提示词里加“总字数控制在 1500 字以内”,或者在电报节点前加一个 Code 节点,用text.slice(0, 4000)截断。截断后记得加省略号,不然用户不知道内容被剪了。

报错六:Forbidden: bot was blocked by the user。这个报错说明机器人被群成员拉黑了,或者机器人不在群里。你重新把机器人拉进群聊,或者让群管理员解除限制。电报机器人如果被多个用户举报,可能会被限制发言,这种情况只能换一个机器人。

报错七:ETIMEDOUT或ESOCKETTIMEDOUT。这是网络超时,通常是因为新闻 API 或者 TaoToken 接口响应太慢。你可以在 HTTP 请求节点的 Options 里把 Timeout 调到 30000 毫秒(30 秒)。如果还是超时,检查 n8n 服务器的网络出口是否稳定。我实测下来,TaoToken 的接口响应一般在 2 到 5 秒,新闻 API 偶尔会慢到 10 秒,所以 30 秒的超时设置比较稳妥。

排查顺序建议:先看 n8n 的 Executions 页面,找到报错的那次执行,点进去看每个节点的输入输出。错误信息通常在节点的“Error”标签页里。然后根据报错关键词对照上面的列表。如果报错信息不明确,把 HTTP 请求节点的“Response”选项里的“Include Response Headers and Status”打开,这样能看到完整的 HTTP 状态码和响应头。

6. 语义一致 CTA:从模型对话到 Coding Plan 的接入路径

整条工作流跑通之后,你可能会想调整模型、换新闻源、或者加更多推送渠道。这些扩展都建立在同一个基础上:TaoToken 的统一 Key 和 Base URL。你不需要为每个模型单独申请账号,也不用改代码里的接口地址。想验证模型效果,直接打开模型对话页面 https://taotoken.net/model-chat?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite ,输入一段新闻文本,看摘要质量是否符合预期。觉得满意了,再把模型 ID 填回 n8n 的 HTTP 请求节点。

如果你打算把这个工作流长期跑下去,每天定时调用、token 消耗稳定,那 Coding Plan 比按量计费更划算。入口在 https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite ,开通后额度更充裕,不用担心某天新闻特别多导致 token 超支。我自己的用法是:轻量摘要用gpt-4o-mini,深度分析用claude-sonnet,两个模型共用同一个 Key,切换时只改 Model ID 字段。

Key 的管理在控制台 https://taotoken.net/console?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite ,你可以创建多个 Key 分配给不同的工作流,方便追踪消耗。比如新闻推送用一个 Key,代码辅助用另一个 Key。API Keys 页面能看到每个 Key 的最近使用时间和调用量,如果某个 Key 突然消耗暴涨,你能快速定位是哪个工作流出了问题。

接入文档在 https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite ,里面列出了所有支持的模型 ID、接口路径、请求参数和返回格式。你在 n8n 里配 HTTP 请求节点时,如果拿不准 Body 怎么写,直接对照文档里的 curl 示例改。文档里还有 Python 和 Node.js 的调用示例,你可以复制到 Code 节点里做数据预处理。

最后说一个实用技巧:在 n8n 的工作流里加一个“Error Trigger”节点,当任何节点报错时,自动发一条电报消息到你的私聊。这样即使群聊推送失败,你也能第一时间知道。Error Trigger 的配置很简单,新建一个工作流,触发器选“Error Trigger”,然后接一个电报节点,Chat ID 填你自己的用户 ID。把这个错误处理工作流设为 Active,它就会监听主工作流的执行状态。主工作流报错时,你会收到一条包含错误详情的电报消息,不用每次都去 n8n 后台翻日志。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询