n8n + GPT 자동화 만들기 1 (카카오톡 경제 브리핑 봇 구축)

2025. 12. 28. 16:22·AI/n8n
나는 매일 친구들이 모여 있는 카톡방에서 환율·코인·지수 같은 시장 지표를 보며 경제 토크(?)를 하곤 한다. 그럴 때마다 여러 앱을 돌아다니며 숫자를 캡처해 보내는 일이 점점 귀찮아졌고, “이걸 자동으로 정리해서 톡방에 뿌려주면 얼마나 편할까?” 하는 생각이 들었다. 그래서 자동화 연습도 할 겸, n8n과 GPT, 카카오톡을 이용해 매일 시장 상황을 요약해 보내주는 ‘경제 브리핑 봇’을 직접 만들어 보기로 했다.

이번 글에서는 n8n 클라우드(14일 무료 체험)만 있으면 누구나 따라 할 수 있는 방식으로, GPT API와 카카오톡을 묶어 데일리 시장 브리핑을 자동화하는 과정을 단계별로 정리해 본다.


 

1단계: n8n 가입 및 workflow 생성

n8n에 가입한 후 'New workflow' 버튼을 클릭해 새 워크플로를 생성한다. 빈 캔버스가 나타나면 아무 곳이나 클릭해서 'Schedule Trigger' 노드를 추가한다. 'On a schedule'을 선택하면 된다.

schedule 트리거 노드 추가

 

이 노드에서 브리핑을 받을 시간을 설정할 수 있다. 필자는 평일 오후 12시에만 받도록 설정했다.

평일 오후 12시

 

2단계: API로 시장 데이터 가져오기

이제 실제 환율과 시장 정보를 받아오는 노드들을 구성할 차례다.

Schedule Trigger 노드 옆 '+' 버튼을 클릭하고 'HTTP Request' 노드를 추가한다.

http request 노드 생성

 

여기서 만들 노드의 URL은 manana에서 달러 환율 정보를 받아오는 API이다.

Method는 GET으로 유지해주고, 노드 이름을 'KRW/USD'로 변경해두면 나중에 구분하기 쉽다. 'Execute step' 버튼을 눌러보면 실제로 달러 환율 정보가 OUTPUT 창에 나타나는 걸 확인할 수 있다.

달러 환율 정보를 받아오는 노드

 

같은 방식으로 HTTP Request 노드를 5개 더 만들어준다. 필자는 달러를 포함한 엔화, 비트코인, 이더리움, 코스피, 코스닥 정보가 궁금해서 아래 API들을 사용했다.

달러: https://api.manana.kr/exchange/rate/KRW/USD.json (노드명: KRW/USD)
엔화: https://api.manana.kr/exchange/rate/KRW/JPY.json (노드명: KRW/JPY)
비트코인: https://api.upbit.com/v1/ticker?markets=KRW-BTC (노드명: KRW/BTC)
이더리움: https://api.upbit.com/v1/ticker?markets=KRW-ETH (노드명: KRW/ETH)
코스피: https://m.stock.naver.com/api/index/KOSPI/price?pageSize=1&page=1 (노드명: KOSPI)
코스닥: https://m.stock.naver.com/api/index/KOSDAQ/price?pageSize=1&page=1 (노드명: KOSDAQ)

 

각 노드의 이름을 위와 같이 정확히 설정해야 한다. 나중에 JavaScript 코드에서 이 이름으로 데이터를 찾기 때문이다.

모든 노드는 Schedule Trigger에서 시작해 병렬로 연결한다. 즉, Schedule Trigger 하나에서 6개의 HTTP Request 노드가 동시에 실행되는 구조다.

 

노드 생성 과정

 

모든 노드 생성이 끝났다면 'Test workflow' 버튼으로 전체 워크플로가 잘 동작하는지 확인해본다.

 

3단계: JavaScript로 데이터 통합하기

여기까지 잘 실행된다면 이제 다음 단계로 넘어갈 수 있다. 6개 API의 응답 형식이 모두 달라서 한눈에 보기 어렵다. 이제 이 데이터들을 하나로 묶어 정리해줄 차례다.

HTTP Request 노드 중 하나에 새 노드를 추가한다. 'Code'를 검색해서 Code 노드를 선택한다.

code 노드 추가

 

Code 노드에 아래 js 코드를 붙여넣는다. 이 코드는 각 API의 서로 다른 응답 형식을 분석해서 하나의 통합된 데이터로 만들어준다.

function n(v, digits = 2) {
  if (v === undefined || v === null || Number.isNaN(v)) return 'N/A';
  return Number(v).toLocaleString('ko-KR', { maximumFractionDigits: digits });
}

// 각 노드의 이번 실행 결과 1개씩 가져오기 
// * 노드 이름 주의!!! *
const usd      = $("KRW/USD").first().json;
const jpy      = $("KRW/JPY").first().json;
const btcArr   = $("KRW/BTC").first().json;
const ethArr   = $("KRW/ETH").first().json;
const kospiObj = $("KOSPI").first().json;
const kosdaqObj= $("KOSDAQ").first().json;

const btc = Array.isArray(btcArr) ? btcArr[0] : btcArr;
const eth = Array.isArray(ethArr) ? ethArr[0] : ethArr;

// 네이버 지수 응답에서 종가 후보 몇 개 중 하나 선택
const kospi  = kospiObj?.closePrice  ?? kospiObj?.result?.[0]?.closePrice  ?? kospiObj?.price ?? null;
const kosdaq = kosdaqObj?.closePrice ?? kosdaqObj?.result?.[0]?.closePrice ?? kosdaqObj?.price ?? null;

return [{
  message_raw: {
    usdkrw: usd.rate,
    jpykrw: jpy.rate,
    btc_krw: btc?.trade_price,
    btc_change_rate: btc?.signed_change_rate,
    eth_krw: eth?.trade_price,
    eth_change_rate: eth?.signed_change_rate,
    kospi,
    kosdaq,
    asOfKST: new Date().toLocaleString('ko-KR', { timeZone: 'Asia/Seoul' }),
  },
  preview: [
    `USD/KRW ${n(usd.rate)}`,
    `JPY/KRW ${n(jpy.rate)}`,
    `BTC ${n(btc?.trade_price, 0)}원 (${n((btc?.signed_change_rate ?? 0) * 100, 2)}%)`,
    `ETH ${n(eth?.trade_price, 0)}원 (${n((eth?.signed_change_rate ?? 0) * 100, 2)}%)`,
    `KOSPI ${n(kospi)}`,
    `KOSDAQ ${n(kosdaq)}`,
  ].join('\n'),
}];

 

Execute step 버튼을 눌러보면 OUTPUT 창에 깔끔하게 정리된 데이터가 나타난다. message_raw에는 원본 수치가, preview에는 사람이 읽기 좋은 형태로 정리된 텍스트가 담긴다.

code 노드 실행

 

이제 Execute 버튼 한 번으로 다양한 시장 지표를 한꺼번에 받아올 수 있게 되었다!

다음 게시물에서는 이 데이터를 GPT로 한 번 더 정제해 자연스러운 문장으로 만들고, 카카오톡 '나에게 보내기' 기능을 통해 평일 점심 12시마다 자동으로 브리핑을 받는 방법을 다룰 예정이다.

js 결과 화면

 

'AI > n8n' 카테고리의 다른 글

n8n + GPT 자동화 만들기 2 (카카오톡 경제 브리핑 봇 구축)  (0) 2025.12.28
'AI/n8n' 카테고리의 다른 글
  • n8n + GPT 자동화 만들기 2 (카카오톡 경제 브리핑 봇 구축)
mvg01
mvg01
지능 낮은 컴퓨터공학부 4학년의 블로그
  • mvg01
    mvg01 님의 블로그
    mvg01
  • 전체
    오늘
    어제
    • 분류 전체보기 (87)
      • 백준 문제풀이 (29)
        • bfs (13)
        • dfs (4)
        • shortest path (1)
        • implemetation (1)
        • data structure (5)
        • dynamic programming (2)
        • greedy (1)
        • brute force (0)
        • back tracking (1)
        • string (0)
        • binary search (1)
      • 드림핵 문제풀이 (42)
        • web (17)
        • reversing (6)
        • pwnable (2)
        • misc (10)
        • forensics (7)
      • 우아한테크코스 8기 백엔드 (5)
      • 정보 보안 (0)
        • WEB (0)
        • Reversing (0)
        • 시스템 해킹 (0)
        • Forensics (0)
      • 임베디드 (4)
        • NVIDIA Jetson (4)
        • raspberry pi (0)
      • AI (6)
        • Claude (3)
        • OpenAI gpt (1)
        • n8n (2)
      • 서평 (1)
  • 인기 글

  • 최근 글

  • 링크

  • hELLO· Designed By정상우.v4.10.3
mvg01
n8n + GPT 자동화 만들기 1 (카카오톡 경제 브리핑 봇 구축)
상단으로

티스토리툴바