Make.com에서 n8n으로 갈아타기 - 카톡봇 이식

시작은 Make.com 이었다

지난 18기에 저는 카톡봇 스터디에 참여했습니다.

덕분에 많은것을 배웠고, 메신저봇R과 Make.com을 조합해서 카톡 자동화봇을 운영해왔어요.

번역 기능, 유튜브 요약, 웹사이트 요약 같은 것들을 만들어서 꽤 유용하게 쓰고 있었죠.

그런데 문제가 생겼습니다. 중국에서 생활하다 보니 VPN이 필수인데, 메신저봇R이 VPN과 자꾸 충돌을 일으키더라고요.

봇이 죽는 빈도가 점점 늘어나서 결국 Tasker + Make.com 조합으로 갈아탔습니다.

Tasker는 확실히 안정적이었어요. VPN 충돌도 없고, 잘 돌아가더라고요. 하지만 Tasker는 비주얼 기반이라 메신저봇R처럼 코드로 자유롭게 기능을 만들기엔 제약이 있었어요. 그래서 복잡한 로직은 대부분 Make.com으로 넘겼습니다.

여기까지가 지난 18기에 이루어낸 실적이었다고 할 수 있겠습니다.

Make.com의 달콤한 함정

Make.com의 가장 저가형 유료 가격 정책인 Core 플랜은 월 $10에 10,000 Operations를 제공합니다. 처음엔 "이 정도면 충분하겠지"라고 생각했는데...

현실은 달랐어요.

조금 복잡한 로직을 Make로 넘기고 나니, 매달 5,000~9,000번의 Operation을 쓰게 되더라고요.

한 달이 끝나갈 때쯤이면 "아, 이번 달도 한도 안에 들어올까?" 하면서 마음 졸이는 게 일상이 되었습니다.

더 큰 문제는 앞으로였어요. 지금도 빠듯한데, 새로운 기능을 추가하려면?

살짝 부담스러웠습니다.

"이건 아닌 것 같은데... n8n으로 옮겨볼까?"

이것이 이번 19기 스터디를 N대리와 함께 하기로 한 계기였습니다.

1차 도전: Telegram 번역기 이식

가장 간단한 기능부터 시작했어요. Telegram으로 메시지를 보내면 번역해주는 봇이었습니다.

Make.com에서 만들어둔 워크플로우를 보면서 n8n에 거의 그대로 옮겼더니...

신기하게도 잘 되더라고요!

이와 같은 Make로 만든 Flow를

이렇게 만들었습니다.

Source for Prompt와 관련된 내용의 사용법을 잘 몰라서 좀 헤맸지만, 막힐때마다 Claude에게 물어보고 Youtube 찾아보니 그래도 어렵지 않게 해결 되었습니다.

"어? 생각보다 쉬운데?" 라는 생각을 했습니다.

그리고 다음단계로 넘어갔습니다.

2차 도전: YouTube/Web 요약 이식 - 삽질의 시작

두번째 도전은 YouTube나 웹사이트 링크를 보내면 내용을 요약해주는 기능이었습니다.

사실 이 기능은 Tasker + Make.com으로 넘기지 못하고 메신저봇 + Make.com으로 사용하고 있었습니다.

당장 인식되는 대화 내용 중에 URL이 포함되어 있으면 URL 정보만 뽑아내고, 또 뽑아낸 URL정보가 Youtube인지 일반 Web사이트 인지를 판단해야 하는데....

Make.com에서 이 판단 로직을 넣을려고 보니 쓸데없이 Module이 많이 들어가서 (n8n의 node에 해당하는 것이 Make.com의 Module입니다.) 또 비용의 압박이 올 것 같고...

Tasker로 구현하자니... 아직 Tasker에서 이정도 코드 만들 실력은 안되고..

(※ 메신저봇 R은 JavaScript 기반 코딩이기 때문에 내 실력은 안되지만 Claude 실력이 좀 됩니다.)

그래서 어쩔수 없이 이 기능만은 메신저봇R에서 URL 분석하고 Youtube URL인지 일반 사이트 URL인지 판단하여 Make를 호출하는 방식으로 만들었습니다.

Make에서는 2개의 시나리오로 만들어져 있었고요.

4개의 서로 다른 로고가 흰색 배경에 표시됩니다.

※ 똑같은 구조로 생긴 2개의 시나리오지만 각각 Youtube와 일반 사이트용입니다.

이 녀석을 아예 URL이 포함된 문자를 가져와서 URL 추출하는 것부터 다 n8n이 하게 만들어 봤습니다.

1차 시도: Claude야, 부탁해!

"이번엔 좀 복잡하니까 Claude Code한테 부탁해볼까?"

내가 구현하고자 하는 기능을 설명하고 n8n에서 어떻게 만들면 좋을지 물어보니 Claude가 설명을 잘해 주더라고요.

그런데, 이 대화의 끝에는 강력한 유혹이 있었으니...

워크플로우 JSON을 만들어주겠다는 것이었습니다.

오호라...

한번 덕을 보기로 했습니다. JSON을 만들어 달라고 했지요.

그리고, n8n에서 불러보니...

"오... 뭔가 그럴듯 한데?" 라는 생각이 들었습니다.

하지만 n8n에 임포트해서 실행해보니 문제가 생겼어요. 노드와 노드 사이를 오가는 변수명도 중간중간 틀어져 있고. 필요한 노드도 제대로 가져오지 않은것도 많고...

Claude가 만든 건 전체 구조는 좋았지만, 세세한 변수 및 연결에는 아쉬움이 많았습니다.

※ 그래도 중간중간 들어간 URL 추출 코드와 같은 기능은 아주 쓸만 했습니다.

2차 시도: 반은 가져가고, 반은 내가 한다

"Claude가 만든 JS 코드는 좋으니까 그대로 쓰고, 노드 구성이랑 변수 연결은 내가 다시 해야겠다."

전략을 바꿨습니다. AI가 작성한 JavaScript 코드는 그대로 활용하고, 워크플로우는 직접 처음부터 노드를 다시 배치했어요.

아직은 n8n이 익숙하지 않다보니 약 1시간 가량 씨름하긴 했는데, 그 끝에... 결국 성공했습니다! 🎉

프로세스의 다양한 단계를 보여주는 다이어그램

결과적으로는 매우 만족스럽게 잘 동작 합니다.

※ Youtube 자막 추출을 뭘로 해야 할지 몰라서 전에 사용했던 APIfy를 그대로 활용했습니다.
혹시 더 좋은 방법이 있으면 알려주세요.

결과: n8n, 어떤가요?

현재 Telegram 번역기와 YouTube/Web 요약 기능이 n8n에서 잘 돌아가고 있어요.

솔직히 아직 "완전 만족!"이라고 말하긴 어렵습니다. 아직 n8n이 익숙해지지 않은것이 사실이거든요.

하지만 확실히 느껴지는 게 있습니다.

코드 베이스로 운영되다 보니 자유도가 확실히 높아요.

Make에서는 가끔 정말 기본적인 기능이라고 생각되는 것을 지원하는 모듈을 찾을 수 없을 때 정말 답답했는데, n8n에서는 그래? 그러면 JS 코드로 짜지 뭐... 라는 방식으로 접근이 가능했습니다.

※ 그나마 그 코드도 내가 짤까요? Claude 시키겠져~~

그리고 월 사용량 걱정이 줄었어요.

같은 Starter 플랜을 쓰더라도 n8n은 한도 도달에 대한 압박감이 덜하더라고요.

앞으로 사용량이 정말 많이 늘게 되면 그때는 Self Hosting을 생각해도 될거구요.

교훈 정리

이번 이식 과정에서 배운 것들을 정리해볼게요:

1. AI가 만든 코드를 100% 믿지 말 것

Claude Code가 만들어준 n8n JSON 파일의 구조는 훌륭했어요. 하지만 세부적인 변수 연결은 직접 확인하고 수정해야 했습니다. AI는 좋은 초안을 만들어주지만, 최종 검수는 사람이 해야 해요.

2. 변수명 통일이 생각보다 중요하다

If 분기를 타고 다시 합치는 과정에서 변수명이 달라지면 다음 노드에서 데이터를 못 받아요. Set 노드로 미리 변수명을 통일하는 습관을 들이면 좋을 것 같습니다.

3. 간단한 것부터 이식하면서 감 잡기

처음부터 복잡한 워크플로우를 옮기려고 하면 어디서 문제가 생긴 건지 찾기 어려워요. Telegram 번역기처럼 간단한 것부터 성공시키면서 n8n의 구조에 익숙해지는 게 좋습니다.

마치며

Make.com에서 n8n으로 이식하는 건 생각보다 쉽지는 않았지만, 그래도 재미있었습니다.

변수 관리를 신경써야 한다는 점도 배운점이라고 할 수 있겠습니다.

이식에 성공하고 나니 "이제 좀 더 자유롭게 기능을 만들 수 있겠다"는 자신감이 생겼습니다.

앞으로도 남은 번역 기능을 n8n으로 옮겨오고, 그 다음 필요한 추가기능도 올리고, AI Agent도 잘 올려서 보다 똘똘한 비서로 만들어볼 생각입니다.

※ 번역의 경우에도 Make에서는 거의 똑같게 생긴 4개의 시나리오로 만들었습니다.
n8n에서는 보다 효율적으로 만들 수 있을것 같아요.

kaco 문법 도우미 - 스크린샷
3
3개의 답글

뉴스레터 무료 구독

👉 이 게시글도 읽어보세요