본문 바로가기
n8n

반복되는 회의록 작성을 자동화: n8n으로 구축한 문서 자동화 시스템

by Byeong 2025. 6. 7.

 이번 일경험 프로젝트를 시작하며 팀별 회의 진행시 회의록 작성과 지출 내용이 포함되어 있는 회의록을 작성해야 했습니다. 아무래도 회의 진행마다 매번 작성해야하는 번거러움과 프로젝트에 더 시간적 투자를 위해 자동화를 구축했습니다.

회의록 자동화 요구사항

  1. Google Docs 자동 생성 및 저장
  2. 회의록 템플릿 형식에 문서 생성
  3. 챗봇을 통한 문서 자동생성

사용 스킬

  • n8n: Workflow 기반의 데이터 흐름 자동화.
  • Python : Discord Bot 및 Webhook 연동
  • Google API + OAuth2: Docs 자동 생성 및 Drive 연동

시스템 흐름

  1. 사용자가 Discord에서 명령어 입력 (회의 데이터 입력)
  2. Discord 봇이 메시지 파싱하여 n8n Webhook으로 전송
  3. n8n에서 데이터 가공 → Google Docs에 자동 삽입
  4. 최종 회의록을 Google Drive에 저장

구현과정

 

n8n Workflow

1. Google Docs API 연동 및 저장 자동화

Google Docs API 사용을 위해 Google Cloud Console에서 OAuth 클라이언트 설정Docs/Drive API 사용 설정을 진행했다.

 

  • 테스트 사용자 추가를 통해 개발 중인 OAuth 인증도 성공적으로 연동
  • Google Docs는 템플릿 문서를 복사해 제목 기반으로 새 문서를 생성

2. 회의록 템플릿 기반 문서 생성

 처음에는 AI를 통해 자유 형식의 문서를 자동 완성하는 방식으로 접근했으나 문서 내 어디에 어떤 데이터를 넣을지 지정하기 어려웠다.

이를 해결하기 위해 Google Docs 문서 내에 {{회의주제}}, {{회의일시}} 등의 데이터를 삽입한 뒤 n8n의 Find and Replace Text 액션을 사용해 데이터를 주입하는 방식으로 변경했다.

  1. 제작하고 싶은 문서에서 각 항목에 값을 찾을 수 있도록 수정한다.
  2. Google Drive에서 “1”에서 제작한 문서를 복사해서 새로운 문서 제작.
  3. Google Drive Node에서 “2”에서 제작한 Docs의 ID값을 가져온다.
  4. Google Docs Node를 이용해서 해당 Docs를 옵션 “Update” 옵션을 이용 수정.
  5. 표시한 Text를 찾아 전달 받은 데이터를 삽입 및 저장.

3. Discord 봇 생성

import discord
import requests
import re
from discord.ext import commands

intents = discord.Intents.default()
intents.message_content = True
bot = commands.Bot(command_prefix='#', intents=intents)

@bot.event
async def on_ready():
    print(f'봇 로그인 완료: {bot.user}')

@bot.command()
async def hello(ctx):
    await ctx.send('Hi!')
    

bot.run("DISCORD_TOKEN")

 

 처음에는 intents.message_content = True를 설정하지 않아 명령어가 인식되지 않는 문제가 발생했지만 설정 후 정상 작동했다.


4. Webhook을 통한 n8n 트리거

Webhook은 특정 이벤트가 발생시, 특정 URL로 자동으로 데이터를 보내주는 시스템.

  • 일반 API는 API를 사용하기위해 문을 열러 가는 방식이면 Webhook은 미리 자동으로 실행되도록 하는 자동문 역활.

Discord 봇은 회의 정보를 POST 방식으로 n8n Webhook에 전달하여 자동화된 워크플로우를 시작했다.

@bot.command()
async def meeting_record(ctx,*, message):

    # 입력 데이터 리스토로 변형
    lines:list[str] = message.split('-')

    data = {
        "회의주제": "",
        "회의일시": "",
        "회의장소":"",
        "회의내용":""
    }

    # 입력 데이터 json 형식으로 시리얼라이즈
    for line in lines: 
        content = line.split(':')
        if content[0]:
            data[content[0]] = content[1].rstrip('\n')
    
    # Webhook 연결
    webhook_url = "n8n.WEBHOOK.URL"
	response = requests.post(webhook_url, json=data)
    await ctx.send(response)

시도했던 초기 설계: AI 기반 자동 문서 생성

처 음에는 원하는 문서 형식을 AI에게 제공하고 그 구조에 맞춰 Google Docs를 자동으로 생성하도록 하는 방식으로 접근했다.

초기 흐름 구상:

  1. Discord Bot으로 회의 정보 입력
  2. n8n이 트리거되어
    • 데이터를 가공하고
    • AI MCP를 통해 Google 문서를 생성

 그러나 이 방식은 AI가 문서 내 특정 위치에 어떤 데이터를 삽입해야 하는지 정확히 인식하지 못해 원하는 형식의 문서를 안정적으로 생성하는 데 어려움이 있었다.

 

해결방법 : 

 이 문제를 해결하기 위해 Google Docs 템플릿에 {{필드명}} 형태의 플레이스홀더를 삽입한 후

n8n의 "Find and Replace Text" 액션을 사용해 각 필드에 해당하는 실제 데이터를 자동으로 치환하는 방식으로 구조를 전환했다.

이 방식은 더 안정적이며 예측 가능한 출력 형식을 보장할 수 있었고 AI 없이도 원하는 수준의 문서 자동화를 충분히 구현할 수 있었다.

 


마무리

 이번 자동화 설계를 통해 n8n을 통해 코드 없이도 프로세를 자동화가 가능하다는 것을 체감했다. 

n8n의 무료 플랜으로 많은 실험을 해볼 수 있었고, 유료 플랜 전환도 충분히 고려할 가치가 있다고 느꼈습니다.

향후에는 이미지 자동 삽입, 회의 요약 AI 연동 등도 확장해볼 계획이다.

 

참고 : 

https://scvtwo.tistory.com/197

https://docs.n8n.io/integrations/builtin/credentials/google/

https://olrlobt.tistory.com/64

'n8n' 카테고리의 다른 글

녹음 파일 자동 회의록 생성기 : n8n + STT  (1) 2025.06.10