발행일: 2026-10-06(화) 11:44
← 목차로 돌아가기|하루 30분 n8n 시리즈 ② 실무 자동화 레시피 100
RECIPE 010

정기 회의 어젠다 자동 생성 & 발송

  • ▸SerpAPI 또는 Google Trends RSS로 트렌드 키워드를 수집할 수 있다
  • ▸수집 데이터를 Sheets에 누적 저장하는 주간 파이프라인을 만들 수 있다
  • ▸Gmail로 주간 트렌드 리포트를 자동 발송할 수 있다

✅사전 준비

  • □Google Trends RSS URL 확인 (API 키 불필요)
  • □Gmail 자격증명 연결 완료
  • □Google Sheets에 주간 트렌드 저장용 시트 생성
  • □Schedule Trigger: 매주 월요일 오전 9시 (Cron: 0 9 * * 1)

Google Trends RSS — HTTP Request URL

일간 검색 트렌드 (한국):
https://trends.google.com/trends/trendingsearches/daily/rss?geo=KR

실시간 트렌드:
https://trends.google.com/trends/hottrends/atom/feed?pn=p23
(p23 = 한국)

트렌드 상위 10개 추출 — Code 노드

const items = $input.all();
return items.slice(0, 10).map((item, idx) => ({
  json: {
    rank: idx + 1,
    keyword: item.json.title,
    traffic: item.json["ht:approx_traffic"] ?? "-",
    date: new Date().toLocaleDateString("ko-KR"),
  }
}));

Gmail 리포트 본문 — HTML

<h2>📈 이번 주 Google 트렌드 Top 10</h2>
<p>기준일: {{ $now.toFormat("yyyy년 MM월 dd일") }}</p>
<ol>
{{#each $items}}
  <li><b>{{ this.keyword }}</b> — 검색량 약 {{ this.traffic }}</li>
{{/each}}
</ol>
⚡

워크플로우 JSON

아래 JSON을 복사해 n8n에 바로 임포트하세요

📥 n8n 임포트 방법
n8n 화면 우측 상단 메뉴 (⋮) → Import from JSON → 아래 JSON 전체 복사 후 붙여넣기 → Import 클릭
{
  "name": "recipe010_meeting_agenda_auto_send",
  "nodes": [
    {
      "parameters": {
        "rule": {
          "interval": [
            {
              "field": "weeks",
              "triggerAtWeekDay": [
                2
              ],
              "triggerAtHour": 17,
              "triggerAtMinute": 0
            }
          ]
        }
      },
      "id": "schedule-010-01",
      "name": "회의 전날 오후 5시 트리거",
      "type": "n8n-nodes-base.scheduleTrigger",
      "typeVersion": 1.2,
      "position": [
        200,
        400
      ]
    },
    {
      "parameters": {
        "resource": "sheet",
        "operation": "getRows",
        "documentId": {
          "__rl": true,
          "mode": "id",
          "value": "={{ $env.AGENDA_SHEET_ID }}"
        },
        "sheetName": {
          "__rl": true,
          "mode": "name",
          "value": "어젠다템플릿"
        },
        "options": {}
      },
      "id": "sheets-010-02",
      "name": "어젠다 항목 가져오기",
      "type": "n8n-nodes-base.googleSheets",
      "typeVersion": 4.5,
      "position": [
        420,
        400
      ]
    },
    {
      "parameters": {
        "jsCode": "const items = $input.all();\nconst meetingDate = $now.plus({days: 1}).setLocale('ko').toFormat('M월 d일 (cccc)');\nconst agendaLines = items.map((item, idx) => {\n  const topic = item.json['항목'] || '(항목 없음)';\n  const owner = item.json['담당자'] || '';\n  const duration = item.json['소요시간'] || '';\n  const ownerPart = owner ? ` — ${owner}` : '';\n  const durationPart = duration ? ` (${duration}분)` : '';\n  return `${idx + 1}. ${topic}${ownerPart}${durationPart}`;\n}).join('\\n');\nconst emailBody = `안녕하세요, 팀원 여러분!\\n\\n내일(${meetingDate}) 주간 팀 회의 어젠다를 공유드립니다.\\n\\n━━━━━━━━━━━━━━━━\\n${agendaLines}\\n━━━━━━━━━━━━━━━━\\n\\n준비 사항 미리 확인해주세요. 감사합니다!`;\nconst slackMessage = `📋 *내일 팀 회의 어젠다 (${meetingDate})*\\n\\n${agendaLines}\\n\\n내일 뵙겠습니다! 😊`;\nreturn [{ json: { emailBody, slackMessage, meetingDate } }];"
      },
      "id": "code-010-03",
      "name": "어젠다 메시지 포맷",
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        640,
        400
      ]
    },
    {
      "parameters": {
        "resource": "message",
        "operation": "send",
        "toEmail": "={{ $env.TEAM_EMAIL_LIST }}",
        "subject": "={{ '[회의 안내] ' + $json.meetingDate + ' 주간 팀 회의 어젠다' }}",
        "message": "={{ $json.emailBody }}",
        "options": {}
      },
      "id": "gmail-010-04",
      "name": "Gmail 어젠다 이메일 발송",
      "type": "n8n-nodes-base.gmail",
      "typeVersion": 2.1,
      "position": [
        860,
        280
      ]
    },
    {
      "parameters": {
        "resource": "message",
        "operation": "post",
        "channel": "#team-meeting",
        "text": "={{ $json.slackMessage }}",
        "otherOptions": {}
      },
      "id": "slack-010-05",
      "name": "Slack 어젠다 공유",
      "type": "n8n-nodes-base.slack",
      "typeVersion": 2.2,
      "position": [
        860,
        520
      ]
    }
  ],
  "connections": {
    "회의 전날 오후 5시 트리거": {
      "main": [
        [
          {
            "node": "어젠다 항목 가져오기",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "어젠다 항목 가져오기": {
      "main": [
        [
          {
            "node": "어젠다 메시지 포맷",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "어젠다 메시지 포맷": {
      "main": [
        [
          {
            "node": "Gmail 어젠다 이메일 발송",
            "type": "main",
            "index": 0
          },
          {
            "node": "Slack 어젠다 공유",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "settings": {
    "timezone": "Asia/Seoul"
  },
  "meta": {
    "chapter": 1,
    "recipe": "010",
    "title": "정기 회의 어젠다 자동 생성 & 발송",
    "difficulty": "⭐⭐",
    "estimatedTime": "30분",
    "apps": [
      "Google Sheets",
      "Gmail",
      "Slack"
    ],
    "workflowUrl": "www.koreaaitimes.com/books/n8n-vol2/recipe010"
  }
}
← 이전 레시피☰ 목차다음 레시피 →