이번 일경험 프로젝트를 시작하며 팀별 회의 진행시 회의록 작성과 지출 내용이 포함되어 있는 회의록을 작성해야 했습니다. 아무래도 회의 진행마다 매번 작성해야하는 번거러움과 프로젝트에 더 시간적 투자를 위해 자동화를 구축했습니다.
회의록 자동화 요구사항
- Google Docs 자동 생성 및 저장
- 회의록 템플릿 형식에 문서 생성
- 챗봇을 통한 문서 자동생성
사용 스킬
- n8n: Workflow 기반의 데이터 흐름 자동화.
- Python : Discord Bot 및 Webhook 연동
- Google API + OAuth2: Docs 자동 생성 및 Drive 연동
시스템 흐름
- 사용자가 Discord에서 명령어 입력 (회의 데이터 입력)
- Discord 봇이 메시지 파싱하여 n8n Webhook으로 전송
- n8n에서 데이터 가공 → Google Docs에 자동 삽입
- 최종 회의록을 Google Drive에 저장
구현과정
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 액션을 사용해 데이터를 주입하는 방식으로 변경했다.
- 제작하고 싶은 문서에서 각 항목에 값을 찾을 수 있도록 수정한다.
- Google Drive에서 “1”에서 제작한 문서를 복사해서 새로운 문서 제작.
- Google Drive Node에서 “2”에서 제작한 Docs의 ID값을 가져온다.
- Google Docs Node를 이용해서 해당 Docs를 옵션 “Update” 옵션을 이용 수정.
- 표시한 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를 자동으로 생성하도록 하는 방식으로 접근했다.
초기 흐름 구상:
- Discord Bot으로 회의 정보 입력
- 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/
'n8n' 카테고리의 다른 글
녹음 파일 자동 회의록 생성기 : n8n + STT (1) | 2025.06.10 |
---|