← 노드 한 장 전체#06 · Code

Code

내일 몇 시에 뛸까? 코드 한 칸이면 답

이 글은 이런 분께노드 여러 개로 하기 번거로운 계산을 코드 한 칸으로 끝내고 싶은 분
Code 영상 표지

1분 영상은 @workflow.hanjang 에 순서대로 공개돼요

JSON 받기

내일 몇 시에 뛰어야 비를 안 맞을까요? 서울 48시간 예보를 넣었더니 Code 노드 한 칸이 한 줄로 답했어요.

"내일 6시~8시에 뛰세요 (13.9°C, 비 13%)"

먼저 결과부터

Code 노드는 데이터가 지나갈 때 직접 쓴 계산을 거치는 칸. $input으로 받고 return으로 넘긴다. 서울 예보로 내일 달리기 좋은 시간 계산.
우리가 실제로 돌린 기록 · 실행 #70733 · 2026-10-23
Code 실제 n8n 화면 1
우리가 실제로 돌린 n8n 화면 (실행 #70733, 2026-10-23)
Code 실제 n8n 화면 2
우리가 실제로 돌린 n8n 화면 (실행 #70733, 2026-10-23)

따라 하기

아래 설정값은 이 영상에 나온 워크플로우 JSON에서 그대로 가져왔어요. n8n 캔버스에서 +를 눌러 노드를 순서대로 추가하고 같은 값을 넣으면 돼요. 빨간 제목이 이번 편의 주인공 노드예요. 표 왼쪽은 n8n 편집기에 보이는 칸 이름, 오른쪽은 실제로 넣은 값이에요. 직접 입력하기 번거로우면 JSON을 받아 ⋯ → Import from File로 가져오세요.

Step 1. Manual Trigger 노드 추가이름: Run manually

설정 없이 그대로 추가해요.

Step 2. HTTP Request 노드 추가이름: Get Seoul hourly forecast

URL
https://api.open-meteo.com/v1/forecast?latitude=37.5665&longitude=126.978&hourly=temperature_2m,precipitation_probability&timezone=Asia%2FSeoul&forecast_days=2

Step 3. Code 노드 추가이름: Find best running time

JavaScript
// 내일 서울 06~21시 예보에서 달리기 제일 좋은 2시간 찾기
const h = $input.first().json.hourly;
const day = h.time[24].slice(0, 10); // 내일 날짜
const hours = h.time
  .map((t, i) => ({ hour: +t.slice(11, 13), day: t.slice(0, 10),
    temp: h.temperature_2m[i], rain: h.precipitation_probability[i] }))
  .filter(x => x.day === day && x.hour >= 6 && x.hour <= 21);
let best;
for (let i = 0; i < hours.length - 1; i++) {
  const a = hours[i], b = hours[i + 1];
  const score = a.rain + b.rain + Math.abs((a.temp + b.temp) / 2 - 15) * 3;
  if (!best || score < best.score) best = { score, a, b };
}
const temps = hours.map(x => x.temp);
…

가져와서 쓸 때 확인할 것

노드의 모든 옵션은 n8n 공식 문서에서 볼 수 있어요.