
n8n 설치부터 GitHub Models 연동까지 AI 자동화 실전 가이드
n8n이란?
n8n은 코드 없이 워크플로우를 만들 수 있는 오픈소스 자동화 도구입니다. Zapier나 Make.com과 비슷하지만 무료로 자체 호스팅이 가능합니다.
1. n8n 설치하기
방법 1: Docker로 설치 (추천)
가장 간단한 방법입니다.
Docker Desktop 설치
Windows/Mac: Docker Desktop 다운로드 및 설치
설치 후 Docker Desktop 실행
n8n 실행 (꼭 docker 를 실행하고)
bash
docker run -it --rm --name n8n -p 5678:5678 -v ~/.n8n:/home/node/.n8n n8nio/n8n
브라우저에서
http://localhost:5678
접속
방법 2: npm으로 설치
Node.js가 설치되어 있어야 합니다.
bash
# n8n 설치
npm install n8n -g
# n8n 실행
n8n start
# 브라우저에서 http://localhost:5678 접속
방법 3: n8n Cloud 사용 (가장 쉬움)
설치 없이 바로 사용 가능합니다.
n8n.io 접속
"Get started free" 클릭
회원가입 후 바로 사용
2. n8n 초기 설정
첫 접속 시 계정 생성
이메일과 비밀번호 입력
이름 입력
첫 워크플로우 생성
"Create Workflow" 클릭
워크플로우 이름 설정 (예: "GitHub Models Test")
3. GitHub Models API 연동하기
기본 HTTP Request 노드로 구현
HTTP Request 노드 추가
클릭 후 "HTTP Request" 검색
노드 설정
Method: POST URL: https://models.github.ai/inference/v1/chat/completions Authentication: Header Auth
인증 설정
Authentication 섹션에서 "Generic Credential Type" 선택
아래 Generic Auth Type 은 "Header Auth" 선택
Header Auth 탭에서 "Create New Credentials" 클릭
Name:
Authorization
Value:
Bearer YOUR_GITHUB_TOKEN
(실제 토큰으로 교체)
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 }
Execute step 실행
성공! 프랑스의 수도는 파리입니다.
4. 실전 워크플로우 예제
예제 1: 이메일 요약 봇
이메일을 받으면 자동으로 요약해서 슬랙으로 보내는 워크플로우입니다.
Gmail Trigger 노드 추가
새 이메일이 오면 워크플로우 실행
HTTP Request 노드 (GitHub Models)
json
{ "model": "openai/gpt-4.1", "messages": [ { "role": "system", "content": "이메일을 한국어로 3줄 이내로 요약해주세요." }, { "role": "user", "content": "{{$json["text"]}}" } ] }
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: 스마트 고객 응답 시스템
Webhook 노드: 고객 문의 수신
GitHub Models 노드: 문의 분류
json
{ "model": "openai/gpt-4.1", "messages": [ { "role": "system", "content": "고객 문의를 다음 중 하나로 분류하세요: 주문, 배송, 환불, 기타. 카테고리만 답하세요." }, { "role": "user", "content": "{{$json["message"]}}" } ] }
Switch 노드: 카테고리별 분기
각 카테고리별 GitHub Models 노드: 맞춤형 응답 생성
Email/Slack 노드: 응답 전송
5. 고급 기능
환경 변수 사용하기
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
워크플로우에서 사용:
Header Value:
Bearer {{$env.GITHUB_TOKEN}}
에러 처리
Error Trigger 노드 추가
HTTP Request 노드에서 에러 발생 시 실행
재시도 로직
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. 문제 해결
자주 발생하는 오류
401 Unauthorized
토큰 확인
Bearer 프리픽스 확인
429 Too Many Requests
사용량 제한 도달
Wait 노드로 지연 추가
500 Internal Server Error
모델명 확인
요청 형식 확인
디버깅 팁
Set 노드 활용
중간 결과 확인용
Console 출력
javascript
console.log('Request:', JSON.stringify($json, null, 2)); return items;
에러 로깅
Error Workflow 설정
로그 파일 저장
9. 보안 주의사항
토큰 보호
환경 변수 사용
Credentials 기능 활용
접근 제어
Webhook에 인증 추가
IP 화이트리스트
데이터 보호
민감 정보 마스킹
HTTPS 사용
10. 다음 단계
커스텀 노드 개발
GitHub Models 전용 n8n 노드 만들기
복잡한 워크플로우
멀티 에이전트 시스템
RAG (Retrieval-Augmented Generation) 구현
모니터링 대시보드
Grafana 연동
사용량 추적
n8n과 GitHub Models의 조합으로 강력한 AI 자동화를 무료로 구축할 수 있습니다. 작은 프로젝트부터 시작해서 점차 복잡한 워크플로우로 발전시켜보세요!