Post

Gemini로 회의록 자동화 구축기

회사에서 매번 회의록 작성하느라 시간 뺏기는 게 싫어서, 녹음 파일만 올리면 AI가 알아서 회의록을 써서 메일로 보내주는 자동화 시스템을 n8n으로 구축했습니다.

구축 과정이 순탄치만은 않았는데요, n8n 구버전 호환성 문제부터 Gemini API 연동 오류까지… 제가 겪은 시행착오와 해결 방법을 모두 공유합니다.


🛠️ 시스템 구성

  • Core: n8n (Self-hosted)
  • Trigger: Google Drive (파일 업로드 감지)
  • Database: Google Sheets (중복 처리 방지 로그 및 수신자 관리)
  • AI: Google Gemini 1.5 Flash (전사 + 요약)
  • Notification: Gmail (회의록 발송)

🚀 최종 워크플로우 미리보기

  1. Google DriveINBOX 폴더에 녹음 파일 업로드
  2. n8n이 감지 후 파일 다운로드
  3. Google Sheets에서 이미 처리한 파일인지 확인 (중복 방지)
  4. Google Gemini에게 오디오 파일을 넘겨 텍스트로 받아쓰기 (STT)
  5. Google Gemini에게 텍스트 요약 요청 (JSON 포맷)
  6. 요약된 내용을 보기 좋게 HTML로 가공하여 Gmail 발송
  7. 처리 완료된 파일은 PROCESSED 폴더로 이동

💡 주요 시행착오 (Troubleshooting)

자동화를 구축하면서 마주쳤던 4가지 큰 벽과 그 해결책입니다.

1. n8n 구버전 이슈: “Data Store가 없어요!”

처음에는 n8n 내장 DB인 Data Store를 쓰려고 했으나, 서버 버전이 낮아 해당 기능을 지원하지 않았습니다. 게다가 Google Sheets 노드의 편리한 lookup 기능도 없었죠.

  • 해결책: Google Sheets + Javascript 조합

    • Read 노드로 시트의 모든 데이터를 가져온 뒤,
    • Code 노드(Javascript)를 이용해 메모리 상에서 직접 fileId 중복 검사를 수행하도록 로직을 짰습니다. (오히려 더 유연해짐!)

2. HTTP Request vs Native Node

처음에는 OpenAI API처럼 HTTP Request 노드를 사용하여 Gemini API를 호출했습니다. 하지만 파일 업로드 → 대기 → 전사 요청으로 이어지는 과정이 복잡했고, JSON 따옴표 문법 오류(Syntax Error)와 파일 바이너리 처리(undefined) 문제가 끊이지 않았습니다.

  • 해결책: n8n 내장 ‘Google Gemini’ 노드 사용

    • 복잡한 API 호출 과정을 버리고, n8n에 내장된 Google Gemini 노드를 사용했습니다.
    • Input TypeBinary로 설정하고 Property Namedata로 지정하니, 별도 설정 없이 파일이 매끄럽게 넘어갔습니다.

3. JSON 파싱 오류: “문자열이 아니라고요?”

Gemini가 요약 결과를 줄 때, 가끔은 순수 텍스트(String)가 아니라 이미 파싱된 객체(Object) 형태로 주거나, 마크다운 코드 블록(```json)을 포함해서 주는 경우가 있었습니다. 이 때문에 JSON.parse()에서 오류가 발생했습니다.

  • 해결책: 방어적 코딩 (Defensive Coding)

    • 들어온 데이터가 객체인지 문자열인지 타입 체크(typeof)를 먼저 하고,
    • 마크다운 기호(```)를 제거하는 정규식(replace)을 적용하여 어떤 포맷이 들어와도 에러가 나지 않도록 수정했습니다.

4. 구글 시트 기록 오류: ““가 그대로 적혀요

마지막에 로그를 남길 때, fileId 값이 들어가는 게 아니라 ``라는 코드가 글자 그대로 시트에 적히는 황당한 일이 발생했습니다.

  • 해결책: Expression 모드 활성화

    • n8n 입력창은 기본적으로 ‘고정값(Fixed)’ 모드입니다.
    • 설정 버튼을 눌러 Expression(수식) 모드로 바꿔주니 그제야 코드가 실행되어 실제 ID 값이 기록되었습니다.

✨ 결과물 (이메일)

온갖 고생 끝에 받은 회의록 메일입니다. 줄바꿈 처리까지 깔끔하게 HTML로 적용했습니다.

[회의록] 3팀 / 2026-01-18 - 주간회의

[주요 안건]

  1. Q1 마케팅 예산 검토

  2. 신규 인력 채용 건

[결정사항]

  • 예산안 10% 증액 확정

  • 개발팀 2명 충원하기로 함

[해야 할 일(Action Items)]

  • (H) 담당: 김대리 / 기한: 1/25 / 채용 공고 업로드

녹취/원문 링크: (구글 드라이브 링크)


📝 마치며

이번 프로젝트를 통해 “자동화는 예외 처리와의 싸움”이라는 것을 배웠습니다. 단순히 연결만 한다고 끝나는 게 아니라, 버전 호환성, 데이터 타입, API 특성을 모두 고려해야 안정적인 시스템이 나온다는 걸 깨달았네요.

이제 저는 녹음 파일만 던져두고 커피 마시러 갑니다. 회의록은 Gemini가 써줄 테니까요! 😎


[Tip] 혹시 n8n 구버전 사용자라면 Code 노드를 적극 활용하세요. 노드 기능이 없어도 코드로 뚫으면 다 됩니다!