n8n是一个自主托管的开源工作流自动化平台,允许您通过视觉节点编辑器连接API,数据库和SaaS工具. 无需后端基础设施.对于宏观数据工作流,n8n是自然的:按时间表拉出指标读数,根据即将发布的日历事件进行过,并将结果推向Slack,Google Sheets,数据数据库或任何下游webhook. 所有这些都可视觉配置,并且在24/7运行,而无需专用服务器过程. 本指南将从头开始在n8N中构建一个完整的FXMacroData自动化的工作流.
你将要建造什么
- 计划工作流程 每个平日早上运行,获取货币对的最新宏观指标
- 一个HTTP请求节点管道 调用FXMacroData公告终端点并解析JSON响应
- 发布日历预警分支 检测即将发生的高影响力事件,并向Slack或Discord发送早期警告
- 一个Google Sheets日志分支 将每一个新读数添加到一个电子表格,以追踪历史
- 一个条件过器 只在最后一次运行后变化值时发动下游操作
预先要求
现在我们要做什么?
步骤1 启动n8n,创建一个空白的工作流
最快的方法是通过 npx如果您更喜欢Docker或云版本,节点配置相同跳转到创建工作流程.
# Local quick-start (Node.js 18+ required)
npx n8n
# Or with Docker
docker run -it --rm \
-p 5678:5678 \
-v ~/.n8n:/home/node/.n8n \
n8nio/n8n
打开 http://localhost:5678 在浏览器中创建帐户,然后点击
+ 新的工作流程 您将看到一个空白的画布这是管道居住的地方.
存储您的API密钥作为n8n凭证,因此它永远不会嵌入到节点配置中. 在n8N中,进入 设置 → 凭证 → 添加凭证 并且保存你的钥匙:
Name: FXMacroData API Key
Header Name: (leave blank — we use query params)
Value: YOUR_FXMACRODATA_API_KEY
您将在下一步中引用此存储的凭证.
现在我们要做什么?
步骤2 添加一个时间表触发节点
没有人知道. 时间表触发器 对于宏观数据工作流程,每天触发30分钟前伦敦开放 (07:30 UTC) 确保新读数可在当天的第一个高流动性会议之前.
按下 没有 按下画布上的按,搜索 时间表触发器设置如下:
// 调度触发节点设置
触发间隔: 定制 (cron)
cron表达式: 30 7 * * 1-5
// 运行周一至周五,时间为7:30 UTC
为了测试,切换触发器到 操作手册 暂时 这让您可以在单击即可从画布上运行整个工作流程,而不需要等待时间表.
提示:使用发布日历来精确你的时间表
您可以预先从"全球之声"上查看本周的最新版本. 发布日历终点 星期一早上使用N8N. 如果 节点在没有计划公告的日子里跳过获取步骤. 这种模式在下面的步骤5中显示.
现在我们要做什么?
步骤3 为FXMacroData配置HTTP请求节点
加入一个 HTTP 请求 节点在时间表触发器之后 (点击 没有 通过触发器的输出连接器,搜索 HTTP 请求) 这个节点将API调用到FXMacroData,并直接返回JSON响应到工作流中.
用以下设置配置节点:
// HTTP请求节点 获取最新的欧元政策利率
方法: 获取
标签: 根据该报告,该公司将在2012年1月份的交易中获得资金支持.
认证: 没有 (我们通过键作为查询参数下面)
查询参数:
关键字:
响应格式: 没有
对于n8n的HTTP请求节点,有一个专门的 查询参数 表添加一个行:
Name: api_key
Value: {{ $credentials.fxmacrodataApiKey.value }}
(or paste your key directly for quick testing)
按下 执行节点 您应该看到类似的输出:
{
"currency": "EUR",
"indicator": "policy_rate",
"date": "2025-06-12",
"val": 3.40,
"prior": 3.65,
"announcement_datetime": "2025-06-12T13:15:00Z"
}
没有什么. announcement_datetime 使用它作为除重键,这样你的工作流程永远不会在同一版本上双重发出警报.
在一个工作流中获取多个指标
要抽取几个指标 (例如政策利率,CPI和同一种货币的失业率),在触发后添加并行HTTP请求节点,每个终点一个,并将其输出与一个合并. 合并 节点设置为 结合 在转换步骤之前的模式.
现在我们要做什么?
步骤4 用代码节点解析和转换响应
加入一个 代码 接着接下来 HTTP 请求节点,以提取您关心的字段,并丰富有效负载. n8n 的代码节点运行 JavaScript,并通过 $input.all()现在我们要做什么?
// Code node: parse FXMacroData announcement response
const items = $input.all();
return items.map(item => {
const d = item.json;
// Determine direction relative to prior value
const direction =
d.val > d.prior ? "↑ Hawkish signal" :
d.val < d.prior ? "↓ Dovish signal" : "→ Unchanged";
const surpriseText =
d.consensus != null
? `Consensus was ${d.consensus}; actual ${d.val > d.consensus ? "beat" : "missed"}.`
: "";
return {
json: {
currency: d.currency,
indicator: d.indicator,
value: d.val,
prior: d.prior,
direction,
surprise: surpriseText,
announcement_datetime: d.announcement_datetime,
summary: `${d.currency.toUpperCase()} ${d.indicator.replace(/_/g, " ")}: ` +
`${d.val} (prior ${d.prior}) — ${direction}`
}
};
});
这就产生了一个清洁,丰富的对象. summary 现在,该字段已经准备好直接粘贴到Slack消息或电子表格行中.
五步 没有
步骤 5 添加一个IF节点的条件过器
只有当发布版本真正新时,你才会想要发射下游操作,而不是如果API返回相同的内容. announcement_datetime 您已经在之前的运行中处理了.
如果 代码节点后一个节点.
使用n8n. 静态数据 (通过代码节点访问) $getWorkflowStaticData
对于最后一个人来说, announcement_datetime 在跑步之间:
// Code node: deduplication guard — place before the IF node
const staticData = $getWorkflowStaticData("global");
return $input.all().map(item => {
const ts = item.json.announcement_datetime;
const isNew = ts !== staticData.lastSeen;
// Update state only if this is a new release
if (isNew) {
staticData.lastSeen = ts;
}
return { json: { ...item.json, isNew } };
});
然后配置 如果 节点:
// 如果节点 只有当发布是新的时继续
情况: 现在我们将把它放在一个小区中. true
// 真实分支 → 通知 / 记录
// 错误的分支 → 停止 / 没有
连接一个 没有 没有新版本打印的日子,工作流就会清洁无误地结束.
现在我们要做什么?
步骤6 发送通知到Slack或Discord
连接IF节点的 这是真的 输出到一个 放松 节点 (或一个 HTTP 请求 设置消息体使用 Code 节点的丰富字段:
// 缓慢节点设置
资源: 信息
操作: 发送
频道: 关于这些问题,
文本:
*新宏观发布*
没有任何的.
现在我们要做什么?
发表时间:
对于不一致,使用一个 HTTP 请求 节点与方法 POST 并且在Discord网链URL上, 设置为:
{
"content": "📊 **New macro release**\n{{ $json.summary }}\n{{ $json.surprise }}\nPublished: {{ $json.announcement_datetime }}"
}
已经设置 机体含量类型 现在 简体中文 并且节点将自动处理序列化.
现在我们要做什么?
步骤7 登录发布到 Google 页面
随着Slack通知的同时,添加一个 谷歌表格 连接到IF节点的相同的True分支输出 (n8n允许多个节点接收相同的输出).
配置谷歌表节点:
// 谷歌表节点设置
资源: 文件中的表格
操作: 添加或更新行
电子表格: (选择您的谷歌表)
页面: 总体数据
列进行映射:
发布时间 → 发布日期
货币 → {{ $json.货币 }}
标志 → {{ $json.indicator }}
值 → {{ $json.value }}
之前 → {{ $json.prior }}
方向 → {{ $json.direction }}
您需要在下面的 n8n 中设置 Google OAuth 凭证. 设置 → 凭证 → 谷歌表格 OAuth2 API 在这个节点可以验证之前. 按照n8n的内置凭证设置指南需要大约两分钟.
现在我们要做什么?
步骤8 添加发布日历预警分支
一个独特的FXMacroData强大的模式是使用 发布日历终点 开始开火. 预先警告 让你的团队在数字击中之前准备位置.
添加第二个HTTP请求节点连接到时间表触发器 (与公告获取并行). 配置它来拉出当前一周的即将发布:
Method: GET
URL: https://fxmacrodata.com/api/v1/calendar/eur
Params: api_key=YOUR_API_KEY
通过一个代码节点来过接下来的60分钟内发生的事件:
// Code node: filter calendar events due within the next hour
const nowMs = Date.now();
const oneHrMs = 60 * 60 * 1000;
return $input.all().flatMap(item => {
const events = Array.isArray(item.json) ? item.json : [item.json];
return events
.filter(ev => {
const evMs = new Date(ev.release_datetime).getTime();
return evMs > nowMs && evMs <= nowMs + oneHrMs;
})
.map(ev => ({
json: {
currency: ev.currency,
indicator: ev.indicator,
release_datetime: ev.release_datetime,
alert: `⏰ *Upcoming release in <1 hour*\n` +
`${ev.currency.toUpperCase()} ${ev.indicator.replace(/_/g, " ")}\n` +
`Scheduled: ${ev.release_datetime}`
}
}));
});
将输出连接到一个Slack节点 (或Discord HTTP请求),它会发送 alert 现在我们要去 #macro-alerts 没有事件在一个小时内到期,过数组是空的,n8n简单地产生没有输出没有采取行动.
使用动态货币的表达方式
为了使工作流通通用, 替换硬码 eur 在URL中使用n8n表达式. 设置 工作流的顶部节点定义一个 currency 变量,然后引用它在两个HTTP请求节点:
https://fxmacrodata.com/api/v1/announcements/{{ $vars.currency }}/policy_rate?api_key=YOUR_API_KEY
然后可以为任何一个工作流模板运行. 14个支持货币 通过简单地改变变量值.
现在我们要做什么?
步骤9 启动和监控工作流程
一旦您测试了每个节点, 执行节点 按下按,通过点击运行整个工作流程. 执行工作流程 在工具中检查执行日志是否有错误 n8n的视觉调试器突出显示了哪个节点失败,并显示了该步骤的确切输入/输出.
为了将工作流进入生产,切换 活跃 现在n8n将在步骤2中定义的cron时间表上自动运行工作流.
监测检查清单
- ✅ 没有 执行历史 在左侧下方可见 处决显示每次运行成功/失败
- ✅ 没有 错误工作流程 在 设置一个单独的错误处理工作流程 设置 → 错误工作流程 如果任何节点抛出异常,就会被通知
- ✅ 没有 如果失败,再尝试 在HTTP请求节点设置中启用此功能,以自动重试过渡网络错误
- ✅ 没有 执行数据剪切 在n8n设置中设置保留窗口 (例如30天),以避免在自主托管实例上使用无限磁盘
现在我们要做什么?
步骤10 扩展到其他指标和货币
您构建的管道针对单个货币的单一指标.将其扩展到更广泛的宏观覆盖范围很简单,因为n8n的视觉分支直接映射到FXMacroData URL结构.每个终点都遵循相同的模式:
https://fxmacrodata.com/api/v1/announcements/{currency}/{indicator}?api_key=YOUR_API_KEY
要在一个工作流运行中获取多个指标,添加一个 分成批量 关节后的触发器,并给它一个列表 { currency, indicator } 每次代都会发出一个HTTP请求.下面的模式连续获取三个EUR读数:
// Set node: define the indicator list
// Add this as a "Set" node at the top, outputting a single item
// with a field named "indicators"
const indicators = [
{ currency: "eur", indicator: "policy_rate" },
{ currency: "eur", indicator: "inflation" },
{ currency: "eur", indicator: "unemployment" }
];
return [{ json: { indicators } }];
然后添加一个 分离 接下来,将这些元素连接到 HTTP 请求节点. 在 HTTP 请问 URL 中,引用当前项目的字段:
URL: https://fxmacrodata.com/api/v1/announcements/{{ $json.currency }}/{{ $json.indicator }}
Params: api_key=YOUR_API_KEY
您可以在任何货币的全指标目录查看.
没有任何信息. 是一样的
{currency}/{indicator} 路径结构适用于整个过程.
导入完整的工作流程为JSON
您可以将任何工作流出为JSON文件并共享.
菜单 → 下载 为了出口一个便携式 .json 团队成员可以通过 + 新工作流 → 从文件导入通过一个新的 API 关键, 添加自己的 API 密钥凭证, 并激活它.
总结:
总结
现在您在n8n中运行了一个全自动化宏观数据管道:
- 在工作日cron时间表上触发 (或按要求)
- 通过HTTP请求获取最新的FXMacroData指标,并进行查询参数认证
- 解析和丰富JSON响应在代码节点中的方向信号
- 对于最后一次见到的
announcement_datetime为了防止双重通报 - 在新版本打印时发送Slack或Discord通知
- 添加每一个新的读数到Google Sheets日志进行历史分析
- 预告日历预告,高影响力事件计划前一个小时
从这里开始,自然的下一步步骤包括向指标列表添加更多货币,将表格日志连接到Looker Studio仪表板以可视化,或与交易平台webhook集成,以便在新发布时直接触发订单警报. 完整的API文档 发现完整的指标目录,开始构建自己的宏观智能层.