n8n é uma plataforma de automação de fluxo de trabalho auto-hospedável, de código aberto, que permite conectar APIs, bancos de dados e ferramentas SaaS através de um editor de nó visual sem infraestrutura de backend necessária. Para fluxos de trabalho de dados macro, n8 n é uma adaptação natural: puxe leituras de indicadores em um cronograma, filtre por eventos de calendário de lançamento próximos e empurre resultados para Slack, Google Sheets, um banco de dados ou qualquer webhook a jusante tudo configurado visualmente e funcionando 24 horas por dia e 7 dias por semana sem um processo de servidor dedicado.
O que você vai construir
- Um fluxo de trabalho programado é exibido todas as manhãs de dias úteis e obtém os últimos indicadores macro de um par de moedas
- Um pipeline de nós de solicitação HTTP chama o ponto final de anúncios FXMacroData e analisa a resposta JSON
- Uma filial de alerta prévio do calendário de lançamento detecta eventos de alto impacto e envia um alerta antecipado para Slack ou Discord
- Uma filial de registro do Google Sheets Anexa cada nova leitura a uma planilha para acompanhamento histórico
- Filtro condicional só dispara ações a jusante quando um valor mudou desde a última execução
Requisitos
- n8n instância - Não . n8n.io conta na nuvem (tiro livre trabalha) ou auto-hospedado através de
npx n8n- Docker . - Chave da API do FXMacroData Inscreva-se em / subscrever; muitos indicadores USD são acessíveis ao público sem uma chave
- URL do webhook Slack ou Discord (opcional) para as etapas de notificação; você pode ignorar estas e usar apenas o ramo do Google Sheets
- Conexão OAuth do Google Sheets (opcional) configure através das credenciais do Google incorporadas no n8n se quiser registar planilhas
- Passo 1 -
Passo 1 Iniciar n8n e criar um fluxo de trabalho em branco
A maneira mais rápida de fazer N8N localmente é com npx. Se você preferir o Docker ou a versão em nuvem, a configuração do nó é idêntica pule para a criação do fluxo de trabalho.
# 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
Abre . http://localhost:5678 no seu navegador, crie uma conta e clique em
+ Novo fluxo de trabalho Você verá uma tela em branco este é o lugar onde o gasoduto vive.
Armazenar sua chave de API como uma credencial n8n para que nunca seja incorporada em configurações de nó. Configurações → Credenciais → Adicionar credenciais e guarda a tua chave:
Name: FXMacroData API Key
Header Name: (leave blank — we use query params)
Value: YOUR_FXMACRODATA_API_KEY
Você vai fazer referência a esta credencial armazenada no nó de solicitação HTTP na próxima etapa.
- O passo 2 .
Passo 2 Adicionar um nó de desencadeamento de programação
A . Ativador de programação O nó inicia o fluxo de trabalho em um intervalo definido. Para os fluxos de trabalho de dados macro, um gatilho diário 30 minutos antes da abertura de Londres (07:30 UTC) garante que leituras frescas estejam disponíveis antes da primeira sessão de alta liquidez do dia.
Clique no + O botão na tela e procure por Ativador de programaçãoConfigure-o da seguinte forma:
// Agendar Trigger configurações de nó
Intervalo de disparo: Personalizado (cron)
Expressão Cron: 30 7 * * 1-5
// Funciona de segunda a sexta às 07:30 UTC
Para testes, desligue o gatilho para Manual temporariamente permite executar o fluxo de trabalho completo a partir da tela com um único clique sem esperar pela programação.
Dica: use o calendário de lançamentos para refinar seu cronograma
Em vez de fazer pesquisas todos os dias, pode pre-pesquisar os lançamentos da semana. ponto final do calendário de liberação Na segunda de manhã e usar um N8N . Se Este padrão é mostrado na Etapa 5 abaixo.
- Passo 3 -
Passo 3 Configure o nó de solicitação HTTP para FXMacroData
Adicione um Solicitação HTTP nó após o gatilho de programação (clique no + no conector de saída do gatilho e procure por Solicitação HTTPEste nó faz a chamada API para FXMacroData e retorna a resposta JSON diretamente no fluxo de trabalho.
Configure o nó com estas configurações:
// Nodo de solicitação HTTP Obter a taxa de política EUR mais recente
Método: GET
URL: A taxa de juro é a taxa de juros mais elevada do que a taxa média de juro.
Autenticação: Nenhum (passamos a chave como um parâmetro de consulta abaixo)
Parâmetros da consulta:
api_key = YOUR_API_KEY
Formulário de resposta: JSON
O nó de solicitação HTTP do n8n tem um dedicado Parâmetros da consulta Tabela adicionar uma linha:
Name: api_key
Value: {{ $credentials.fxmacrodataApiKey.value }}
(or paste your key directly for quick testing)
Clique . Execução de nó Você deve ver uma saída semelhante a:
{
"currency": "EUR",
"indicator": "policy_rate",
"date": "2025-06-12",
"val": 3.40,
"prior": 3.65,
"announcement_datetime": "2025-06-12T13:15:00Z"
}
O ... announcement_datetime O campo de dados do sistema de segurança do sistema fornece uma precisão de segundo nível sobre quando este valor foi oficialmente publicado use-o como a chave de deduplicação para que o seu fluxo de trabalho nunca faça alertas duplos na mesma versão.
Obter vários indicadores num fluxo de trabalho
Para extrair vários indicadores (por exemplo, taxa de juros, IPC e desemprego para a mesma moeda), adicione nós de solicitação HTTP paralelos após o gatilho um por ponto final e mescle suas saídas com um Fusão Nodo definido para Combinar modo antes da etapa de transformação.
- Passo 4 -
Passo 4 Analisar e transformar a resposta com um nó de código
Adicione um . Código nó após o nó de solicitação HTTP para extrair os campos que você se importa e enriquecer a carga útil. nó de código n8n executa JavaScript e tem acesso total à saída do nó anterior através $input.all()- Não .
// 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}`
}
};
});
Isto produz um objeto limpo e enriquecido para cada item. summary campo está pronto para colar diretamente em uma mensagem Slack ou linha de planilha.
- Passo 5 -
Passo 5 Adicionar um filtro condicional com um nó IF
Você só quer disparar ações a jusante quando a versão é genuinamente nova não se a API retornar a mesma announcement_datetime Você já processou em uma execução anterior.
Se nó após o nó de código.
Use o n8n. Dados estáticos (acessível através do nó do código $getWorkflowStaticData
Para persistir no último visto . announcement_datetime Entre as corridas:
// 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 } };
});
Então configure o Se nó:
// Se o nó só prosseguir quando a versão é nova
Condição: {{ $json.isNew }} é igual a true
// Branca verdadeira → notificar / registro
// Falso ramo → stop / NoOp
Liga-me a um Não, não. nó para o ramo Falso para que o fluxo de trabalho saia limpo sem erros nos dias em que nenhuma nova versão foi impressa.
- O passo 6 .
Passo 6 Enviar notificações para Slack ou Discord
Conecte o nó IF. É verdade. saída para a Descalço Nodo (ou um Solicitação HTTP Node que visa um URL do webhook do Discord). Configure o corpo da mensagem para usar os campos enriquecidos do nó do código:
// Configurações do nó de Slack
Recursos: Mensagem
Operação: Envia
Canal: #macro-alertas
Texto:
*Nova versão macro*
{{ $json.summary }}
- Não, não.
Publicado: {{ $ json.anúncio_datetime }}
Para Discord, use um Solicitação HTTP nó com método POST e o URL do webhook do Discord, com o corpo definido para:
{
"content": "📊 **New macro release**\n{{ $json.summary }}\n{{ $json.surprise }}\nPublished: {{ $json.announcement_datetime }}"
}
- Está pronto . Tipo de conteúdo do corpo Para JSON e o nó irá lidar com serialização automaticamente.
- O passo 7 .
Passo 7 Lançamentos de log para Google Sheets
Paralelamente à notificação do Slack, adicione um Google Sheets Conecte-o à mesma saída de ramo verdadeiro do nó IF (n8n permite que vários nós recebam a mesma saída).
Configure o nó do Google Sheets:
// Configurações de nó do Google Sheets
Recursos: Folha dentro do documento
Operação: Adicionar ou atualizar linha
Fichas de cálculo: (selecione a sua Folha do Google)
Folha: macro_log
Colunas para mapear:
Anúncio_data-hora → {{ $json.anúncio-data-tempo }}
moeda → {{ $json.currency }}
indicador → {{ $json.indicator }}
valor → {{ $ json.value }}
anterior → {{ $json.prior }}
direção → {{ $json.direction }}
Você precisará configurar credenciais do Google OAuth em n8n abaixo Configurações → Credenciais → Google Sheets API OAuth2 Antes que este nó possa autenticar. Siga o guia de configuração de credenciais embutida do n8n leva cerca de dois minutos.
- O passo 8 .
Passo 8 Adicionar um ramo de pré-alerta do calendário de lançamento
Um padrão poderoso exclusivo do FXMacroData é o uso do ponto final do calendário de liberação Para disparar . avisos antecipados antes de uma impressão de alto impacto dando tempo à sua equipa para preparar posições antes que o número atinja.
Adicionar um segundo nó de solicitação HTTP conectado diretamente ao trigger de programação (paralelamente à busca de anúncios). Configure-o para puxar versões futuras para a semana atual:
Method: GET
URL: https://fxmacrodata.com/api/v1/calendar/eur
Params: api_key=YOUR_API_KEY
Siga isto com um nó de código que filtra eventos que acontecem nos próximos 60 minutos:
// 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}`
}
}));
});
Conecte a saída a um nó Slack (ou Discord HTTP Request) que envia o alert Campo para o teu ... #macro-alerts Quando não há eventos dentro de uma hora, a matriz filtrada está vazia e n8n simplesmente não produz nenhuma saída nenhuma ação é tomada.
Usando o modo de expressão para moeda dinâmica
Para tornar o fluxo de trabalho genérico em várias moedas, substitua o hardcoded eur na URL com uma expressão n8n. Conjunto nó no topo do seu fluxo de trabalho para definir um currency variável, em seguida, referenciá-lo em ambos os nós de solicitação HTTP:
https://fxmacrodata.com/api/v1/announcements/{{ $vars.currency }}/policy_rate?api_key=YOUR_API_KEY
Você pode então executar o mesmo modelo de fluxo de trabalho para qualquer um dos 14 moedas suportadas simplesmente alterando o valor da variável.
- Passo 9 .
Passo 9 Ativar e monitorizar o fluxo de trabalho
Depois de testar cada nó individualmente usando o Execução de nó botão, execute o fluxo de trabalho completo de ponta a ponta clicando Execute o fluxo de trabalho Verifique o log de execução para quaisquer erros o depurador visual do n8n destaca qual nó falhou e mostra a entrada/saída exata naquela etapa.
Para colocar o fluxo de trabalho em produção, alternar o Atividade Mudar no canto superior direito. n8n agora executará o fluxo de trabalho automaticamente no cron programa que você definiu na etapa 2.
Lista de controlo de monitorização
- ✅ ✅ Histórico de execução visível na barra lateral esquerda abaixo Execuções; mostra sucesso/falha por execução
- ✅ ✅ Fluxo de trabalho de erro configurar um fluxo de trabalho separado de gestão de erros em Configurações → Fluxo de trabalho de erro para ser notificado se qualquer nó lançar uma exceção
- ✅ ✅ Tente novamente se falhar habilitar isso nas configurações do nó de solicitação HTTP para tentar automaticamente erros de rede transitórios
- ✅ ✅ Podagem de dados de execução definir uma janela de retenção (por exemplo, 30 dias) em configurações n8n para evitar o uso ilimitado do disco em instâncias auto-hospedadas
- O passo 10 .
Passo 10 Extensão para indicadores e moedas adicionais
O pipeline que você construiu tem como alvo um único indicador para uma única moeda. Estendê-lo para um conjunto de cobertura macro mais amplo é simples porque os mapas de ramificação visual do n8n diretamente para a estrutura do URL FXMacroData. Cada endpoint segue o mesmo padrão:
https://fxmacrodata.com/api/v1/announcements/{currency}/{indicator}?api_key=YOUR_API_KEY
Para obter vários indicadores em uma execução de fluxo de trabalho, adicione um Dividido em lotes Nodo após o gatilho e alimenta-lo com uma lista de { currency, indicator } Cada iteração dispara uma solicitação HTTP. O padrão abaixo traz três leituras EUR em sequência:
// 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 } }];
Então adicione um Divididos node para expandir a matriz em itens individuais, e conectar esses itens ao nó de solicitação HTTP. No URL de solictação HTTP, faça referência aos campos do item atual:
URL: https://fxmacrodata.com/api/v1/announcements/{{ $json.currency }}/{{ $json.indicator }}
Params: api_key=YOUR_API_KEY
Este padrão de modelo único mantém o fluxo de trabalho compacto, independentemente de quantos indicadores você acompanha.
/api-data-docs O mesmo .
{currency}/{indicator} A estrutura do caminho é aplicável em toda a parte.
Importação do fluxo de trabalho completo como JSON
n8n permite exportar qualquer fluxo de trabalho como um arquivo JSON e compartilhá-lo.
Menu → Baixe para exportar um portátil . .json Os colegas de equipa podem importá-lo instantaneamente através do + Novo Fluxo de Trabalho → Importação de arquivo, adicionar sua própria chave API credencial, e ativá-lo toda a transferência pipeline em segundos.
- Resumo final - Resumindo
Resumo
Agora você tem um pipeline de dados macro totalmente automatizado em execução em n8n que:
- Ativadores em cron programação de dias úteis (ou sob demanda)
- Obtém o último indicador FXMacroData através de solicitação HTTP com autenticação de parâmetros de consulta
- Parseia e enriquece a resposta JSON com sinais direcionais em um nó de código
- Deduplicados contra o último visto .
announcement_datetimePara evitar alertas duplos - Envia notificações Slack ou Discord quando uma nova versão é impressa
- Adiciona cada nova leitura a um log do Google Sheets para análise histórica
- Incêndios alertas calendário antecipados até uma hora antes de eventos de alto impacto programados
A partir daqui, os próximos passos naturais incluem adicionar mais moedas à lista de indicadores, conectar o log de folhas a um painel de controle do Looker Studio para visualização ou integrar com um webhook de plataforma de negociação para acionar alertas de ordem diretamente em novas versões. documentação completa da API para descobrir o catálogo completo de indicadores e começar a construir a sua própria camada de inteligência macro.