RECIPE 063
회의록 자동 생성 → Notion 저장 + 팀 공유
- ▸회의 녹음/텍스트에서 AI로 회의록 자동 생성
- ▸액션 아이템과 담당자 자동 추출
- ▸Notion에 저장 후 참석자에게 이메일 자동 발송
✅사전 준비
- □OpenAI Whisper API 키 (음성→텍스트 변환, 선택사항)
- □OpenAI GPT-4o API 키 (회의록 생성)
- □Notion 통합 토큰 및 회의록 DB 생성
- □Gmail OAuth2 자격증명 설정
회의록 생성 프롬프트
System: 당신은 전문 회의록 작성자입니다.
다음 형식으로 회의록을 작성하세요:
## 회의 요약
(3~5줄 핵심 요약)
## 주요 논의 사항
- 항목 1
- 항목 2
## 액션 아이템
| 담당자 | 내용 | 기한 |
## 다음 회의
(언급된 경우)
User: {{ $json.transcript }}Notion 회의록 페이지 생성
{
"parent": { "database_id": "YOUR_MEETING_DB_ID" },
"properties": {
"제목": { "title": [{ "text": { "content": "{{ $json.meeting_title }} - {{ $now.toFormat('yyyy-MM-dd') }}" } }] },
"날짜": { "date": { "start": "{{ $now.toISODate() }}" } },
"참석자": { "multi_select": {{ $json.attendees.map(a => ({name: a})) }} }
},
"children": [{
"object": "block",
"type": "paragraph",
"paragraph": { "rich_text": [{ "text": { "content": "{{ $json.minutes }}" } }] }
}]
}💡 TIPZoom, Google Meet의 자동 자막 텍스트 파일(.vtt)을 Webhook으로 수신하거나 Google Drive에서 읽어 바로 처리할 수 있습니다.
⚡
워크플로우 JSON
아래 JSON을 복사해 n8n에 바로 임포트하세요
📥 n8n 임포트 방법
n8n 화면 우측 상단 메뉴 (⋮) → Import from JSON → 아래 JSON 전체 복사 후 붙여넣기 → Import 클릭
n8n 화면 우측 상단 메뉴 (⋮) → Import from JSON → 아래 JSON 전체 복사 후 붙여넣기 → Import 클릭
{
"recipeId": "recipe063",
"title": "Stripe 결제 완료 → 회계 시트 자동 기록",
"chapter": 6,
"category": "재무 & 정산 자동화",
"difficulty": "⭐⭐",
"estimatedTime": "30분",
"usedApps": [
"Stripe",
"Google Sheets",
"Slack"
],
"description": "Stripe에서 결제가 완료되는 즉시 결제 금액·고객명·이메일·결제 시간을 Google Sheets 매출 시트에 자동 기록합니다. 일정 금액(100만 원) 이상 결제 건은 대표에게 Slack 알림을 추가로 발송합니다.",
"nodes": [
{
"id": "node1",
"type": "n8n-nodes-base.stripeTrigger",
"name": "Stripe 결제 완료 감지",
"parameters": {
"events": [
"payment_intent.succeeded"
]
}
},
{
"id": "node2",
"type": "n8n-nodes-base.googleSheets",
"name": "매출 시트 자동 기록",
"parameters": {
"operation": "appendOrUpdate",
"spreadsheetId": "={{$env.SALES_SHEET_ID}}",
"sheetName": "매출내역",
"columns": {
"mappingMode": "defineBelow",
"value": {
"결제일시": "={{$now.format('YYYY-MM-DD HH:mm:ss')}}",
"고객명": "={{$json['charges']['data'][0]['billing_details']['name']}}",
"고객이메일": "={{$json['charges']['data'][0]['billing_details']['email']}}",
"결제금액": "={{$json['amount'] / 100}}",
"통화": "={{$json['currency'].toUpperCase()}}",
"결제ID": "={{$json['id']}}"
}
}
}
},
{
"id": "node3",
"type": "n8n-nodes-base.if",
"name": "100만 원 이상 여부 확인",
"parameters": {
"conditions": {
"number": [
{
"value1": "={{$node['Stripe 결제 완료 감지'].json['amount'] / 100}}",
"operation": "largerEqual",
"value2": 1000000
}
]
}
}
},
{
"id": "node4",
"type": "n8n-nodes-base.slack",
"name": "대표 Slack 알림",
"parameters": {
"channel": "={{$env.CEO_SLACK_ID}}",
"text": "💰 대형 결제 발생!\n고객: {{$node['Stripe 결제 완료 감지'].json['charges']['data'][0]['billing_details']['name']}}\n금액: ₩{{($node['Stripe 결제 완료 감지'].json['amount'] / 100).toLocaleString()}}\n결제 시각: {{$now.format('MM/DD HH:mm')}}"
}
}
],
"envVariables": {
"SALES_SHEET_ID": "Google Sheets 매출 시트 ID",
"CEO_SLACK_ID": "대표 Slack 채널 또는 DM ID"
},
"tips": [
"Stripe 금액은 센트(cent) 단위로 전달되므로 100으로 나눠야 원화 또는 달러 단위가 됩니다.",
"통화가 여러 개라면 IF 노드에서 currency별로 분기해 각각 다른 시트에 기록할 수 있어요.",
"레시피 062(인보이스 자동 발송)와 연결하면 결제 완료 즉시 인보이스까지 자동 발송됩니다."
],
"qrUrl": "www.koreaaitimes.com/books/n8n-vol2/recipe063"
}