본문으로 바로가기
page thumbnail

n8n 설치부터 GitHub Models 연동까지 AI 자동화 실전 가이드

요약

n8n이란?

n8n은 코드 없이 워크플로우를 만들 수 있는 오픈소스 자동화 도구입니다. Zapier나 Make.com과 비슷하지만 무료로 자체 호스팅이 가능합니다.

1. n8n 설치하기

방법 1: Docker로 설치 (추천)

가장 간단한 방법입니다.

  1. Docker Desktop 설치

    • Windows/Mac: Docker Desktop 다운로드 및 설치

    • 설치 후 Docker Desktop 실행

  2. n8n 실행 (꼭 docker 를 실행하고)

bash

docker run -it --rm --name n8n -p 5678:5678 -v ~/.n8n:/home/node/.n8n n8nio/n8n
  1. 브라우저에서 http://localhost:5678 접속

n8n 설치부터 GitHub Models 연동까지 AI 자동화 실전 가이드 image 1

방법 2: npm으로 설치

Node.js가 설치되어 있어야 합니다.

bash

# n8n 설치
npm install n8n -g

# n8n 실행
n8n start

# 브라우저에서 http://localhost:5678 접속

방법 3: n8n Cloud 사용 (가장 쉬움)

설치 없이 바로 사용 가능합니다.

  1. n8n.io 접속

  2. "Get started free" 클릭

  3. 회원가입 후 바로 사용

2. n8n 초기 설정

  1. 첫 접속 시 계정 생성

    • 이메일과 비밀번호 입력

    • 이름 입력

  2. 첫 워크플로우 생성

    • "Create Workflow" 클릭

    • 워크플로우 이름 설정 (예: "GitHub Models Test")

3. GitHub Models API 연동하기

기본 HTTP Request 노드로 구현

  1. HTTP Request 노드 추가

      • 클릭 후 "HTTP Request" 검색

  2. 노드 설정

    Method: POST
    URL: https://models.github.ai/inference/v1/chat/completions
    Authentication: Header Auth
  3. 인증 설정

    • Authentication 섹션에서 "Generic Credential Type" 선택

    • 아래 Generic Auth Type 은 "Header Auth" 선택

    • Header Auth 탭에서 "Create New Credentials" 클릭

    • Name: Authorization

    • Value: Bearer YOUR_GITHUB_TOKEN (실제 토큰으로 교체)

  4. Send Body 설정

    • Body Content Type: JSON

    • Body에 다음 입력:

    json

    {
      "model": "openai/gpt-4.1",
      "messages": [
        {
          "role": "system",
          "content": "You are a helpful assistant."
        },
        {
          "role": "user",
          "content": "What is the capital of France?"
        }
      ],
      "temperature": 0.7
    }

n8n 설치부터 GitHub Models 연동까지 AI 자동화 실전 가이드 image 2

Execute step 실행

n8n 설치부터 GitHub Models 연동까지 AI 자동화 실전 가이드 image 3

성공! 프랑스의 수도는 파리입니다.

4. 실전 워크플로우 예제

예제 1: 이메일 요약 봇

이메일을 받으면 자동으로 요약해서 슬랙으로 보내는 워크플로우입니다.

  1. Gmail Trigger 노드 추가

    • 새 이메일이 오면 워크플로우 실행

  2. HTTP Request 노드 (GitHub Models)

    json

    {
      "model": "openai/gpt-4.1",
      "messages": [
        {
          "role": "system",
          "content": "이메일을 한국어로 3줄 이내로 요약해주세요."
        },
        {
          "role": "user",
          "content": "{{$json["text"]}}"
        }
      ]
    }
  3. Slack 노드

    • 요약된 내용을 슬랙으로 전송

예제 2: 번역 자동화

Google Sheets의 텍스트를 자동으로 번역하는 워크플로우입니다.

json

{
  "nodes": [
    {
      "name": "Google Sheets",
      "type": "n8n-nodes-base.googleSheets",
      "position": [250, 300],
      "parameters": {
        "operation": "read",
        "sheetId": "YOUR_SHEET_ID",
        "range": "A:B"
      }
    },
    {
      "name": "GitHub Models",
      "type": "n8n-nodes-base.httpRequest",
      "position": [450, 300],
      "parameters": {
        "method": "POST",
        "url": "https://models.github.ai/inference/v1/chat/completions",
        "authentication": "headerAuth",
        "headerAuth": {
          "name": "Authorization",
          "value": "Bearer YOUR_TOKEN"
        },
        "headers": {
          "Content-Type": "application/json"
        },
        "bodyType": "json",
        "body": {
          "model": "openai/gpt-4.1",
          "messages": [
            {
              "role": "system",
              "content": "Translate the following text to Korean. Only return the translation."
            },
            {
              "role": "user",
              "content": "={{$json["text"]}}"
            }
          ]
        }
      }
    },
    {
      "name": "Update Sheet",
      "type": "n8n-nodes-base.googleSheets",
      "position": [650, 300],
      "parameters": {
        "operation": "update",
        "sheetId": "YOUR_SHEET_ID",
        "range": "B{{$json["row"]}}"
      }
    }
  ]
}

예제 3: 스마트 고객 응답 시스템

  1. Webhook 노드: 고객 문의 수신

  2. GitHub Models 노드: 문의 분류

    json

    {
      "model": "openai/gpt-4.1",
      "messages": [
        {
          "role": "system",
          "content": "고객 문의를 다음 중 하나로 분류하세요: 주문, 배송, 환불, 기타. 카테고리만 답하세요."
        },
        {
          "role": "user",
          "content": "{{$json["message"]}}"
        }
      ]
    }
  3. Switch 노드: 카테고리별 분기

  4. 각 카테고리별 GitHub Models 노드: 맞춤형 응답 생성

  5. Email/Slack 노드: 응답 전송

5. 고급 기능

환경 변수 사용하기

  1. n8n 설정에서 환경 변수 추가:

    bash

    # Docker 실행 시
    docker run -it --rm 
      --name n8n 
      -p 5678:5678 
      -e GITHUB_TOKEN=your_token_here 
      -v ~/.n8n:/home/node/.n8n 
      n8nio/n8n
  2. 워크플로우에서 사용:

    • Header Value: Bearer {{$env.GITHUB_TOKEN}}

에러 처리

  1. Error Trigger 노드 추가

    • HTTP Request 노드에서 에러 발생 시 실행

  2. 재시도 로직

    javascript

    // Function 노드에서 사용
    if ($json.error && $json.error.code === 429) {
      // 사용량 초과 - 1분 대기 후 재시도
      await new Promise(resolve => setTimeout(resolve, 60000));
      return items;
    }

응답 파싱 및 가공

Function 노드로 응답 가공:

javascript

// GitHub Models 응답에서 텍스트만 추출
const response = items[0].json;
const content = response.choices[0].message.content;

// 마크다운 제거
const plainText = content.replace(/[*_~`#]/g, '');

return [{
  json: {
    original: content,
    processed: plainText,
    wordCount: plainText.split(' ').length
  }
}];

6. 실용적인 활용 사례

1. 일일 보고서 자동 생성

Schedule Trigger (매일 오전 9)
→ 여러 데이터 소스에서 정보 수집
→ GitHub Models로 보고서 작성
→ 이메일/슬랙으로 전송

2. 소셜 미디어 콘텐츠 생성

RSS Feed Trigger (새 블로그 포스트)
→ GitHub Models로 소셜 미디어용 요약 생성
→ 각 플랫폼별 최적화
→ Buffer/Hootsuite로 예약 발행

3. 다국어 고객 지원

Webhook (고객 문의)
→ 언어 감지
→ GitHub Models로 번역
→ 지원팀에 전달
→ 응답 번역 후 고객에게 전송

7. 성능 최적화 팁

1. 캐싱 구현

javascript

// Function 노드에서 Redis 캐싱
const redis = require('redis');
const client = redis.createClient();

const cacheKey = `gm_${JSON.stringify($json.messages)}`;
const cached = await client.get(cacheKey);

if (cached) {
  return [{json: JSON.parse(cached)}];
}

// API 호출 후
await client.setex(cacheKey, 3600, JSON.stringify(response));

2. 배치 처리

여러 요청을 모아서 처리:

javascript

// 10개씩 모아서 처리
const batchSize = 10;
const batches = [];

for (let i = 0; i < items.length; i += batchSize) {
  batches.push(items.slice(i, i + batchSize));
}

// 각 배치를 순차 처리

3. 사용량 모니터링

HTTP Request (GitHub Models API)Function (사용량 기록)IF (일일 한도 체크)
→ 알림 또는 대체 모델 사용

8. 문제 해결

자주 발생하는 오류

  1. 401 Unauthorized

    • 토큰 확인

    • Bearer 프리픽스 확인

  2. 429 Too Many Requests

    • 사용량 제한 도달

    • Wait 노드로 지연 추가

  3. 500 Internal Server Error

    • 모델명 확인

    • 요청 형식 확인

디버깅 팁

  1. Set 노드 활용

    • 중간 결과 확인용

  2. Console 출력

    javascript

    console.log('Request:', JSON.stringify($json, null, 2));
    return items;
  3. 에러 로깅

    • Error Workflow 설정

    • 로그 파일 저장

9. 보안 주의사항

  1. 토큰 보호

    • 환경 변수 사용

    • Credentials 기능 활용

  2. 접근 제어

    • Webhook에 인증 추가

    • IP 화이트리스트

  3. 데이터 보호

    • 민감 정보 마스킹

    • HTTPS 사용

10. 다음 단계

  1. 커스텀 노드 개발

    • GitHub Models 전용 n8n 노드 만들기

  2. 복잡한 워크플로우

    • 멀티 에이전트 시스템

    • RAG (Retrieval-Augmented Generation) 구현

  3. 모니터링 대시보드

    • Grafana 연동

    • 사용량 추적

n8n과 GitHub Models의 조합으로 강력한 AI 자동화를 무료로 구축할 수 있습니다. 작은 프로젝트부터 시작해서 점차 복잡한 워크플로우로 발전시켜보세요!