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

뉴스레터 구독자 세분화 → 맞춤 콘텐츠 발송

  • ▸구독자 관심사/행동 데이터 기반 세그먼트 자동 분류
  • ▸세그먼트별 맞춤 뉴스레터 콘텐츠 자동 생성
  • ▸발송 성과 추적 및 세그먼트 자동 업데이트

✅사전 준비

  • □구독자 DB (Sheets/Airtable): 이름, 이메일, 관심사태그, 오픈여부, 클릭여부
  • □관심사 태그 분류 체계 정의 (예: AI, 마케팅, 개발, 비즈니스)
  • □SendGrid 또는 Mailchimp API 설정
  • □콘텐츠 소스 RSS 피드 목록 준비

구독자 세그먼트 분류 (Code 노드)

const subscribers = $input.all();

const segments = {
  'AI관심': [],
  '마케팅관심': [],
  '개발관심': [],
  '비활성': []
};

subscribers.forEach(sub => {
  const tags = sub.json.interest_tags || [];
  const lastOpen = new Date(sub.json.last_open_date);
  const daysSince = (new Date() - lastOpen) / 86400000;

  if (daysSince > 60) segments['비활성'].push(sub.json);
  else if (tags.includes('AI')) segments['AI관심'].push(sub.json);
  else if (tags.includes('마케팅')) segments['마케팅관심'].push(sub.json);
  else segments['개발관심'].push(sub.json);
});

return [{ json: segments }];

관심사 태그별 콘텐츠 큐레이션

// RSS 피드 URL 매핑
const feedMap = {
  'AI관심': 'https://techcrunch.com/category/artificial-intelligence/feed/',
  '마케팅관심': 'https://feeds.feedburner.com/MarketingLand',
  '개발관심': 'https://hnrss.org/frontpage'
};

// 각 세그먼트별 최신 3개 기사 수집 후 OpenAI로 요약
💡 TIP세그먼트가 너무 작으면(50명 미만) 발송 효과가 떨어집니다. 처음에는 2~3개의 큰 세그먼트로 시작하고, 데이터가 쌓이면 점차 세분화하세요.
⚡

워크플로우 JSON

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

📥 n8n 임포트 방법
n8n 화면 우측 상단 메뉴 (⋮) → Import from JSON → 아래 JSON 전체 복사 후 붙여넣기 → Import 클릭
{
  "recipeId": "recipe069",
  "title": "법인카드 내역 자동 분류 & 집계",
  "chapter": 6,
  "category": "재무 & 정산 자동화",
  "difficulty": "⭐⭐",
  "estimatedTime": "35분",
  "usedApps": [
    "Gmail",
    "OpenAI",
    "Google Sheets"
  ],
  "description": "카드사에서 오는 법인카드 사용 내역 이메일을 Gmail Trigger로 자동 감지하고, OpenAI가 가맹점명을 분석해 업무비·접대비·교통비 등 지출 유형을 자동 분류해 Google Sheets에 기록합니다.",
  "nodes": [
    {
      "id": "node1",
      "type": "n8n-nodes-base.gmailTrigger",
      "name": "카드사 사용 내역 이메일 감지",
      "parameters": {
        "pollTimes": {
          "item": [
            {
              "mode": "everyMinute",
              "minute": 10
            }
          ]
        },
        "filters": {
          "q": "from:{{$env.CARD_COMPANY_EMAIL}} subject:법인카드 사용"
        }
      }
    },
    {
      "id": "node2",
      "type": "n8n-nodes-base.openAi",
      "name": "지출 유형 자동 분류",
      "parameters": {
        "resource": "chat",
        "model": "gpt-4o-mini",
        "messages": {
          "values": [
            {
              "role": "user",
              "content": "다음 카드 사용 내역에서 정보를 추출하고 지출 유형을 분류해 JSON으로 반환해주세요.\n유형 기준: 식비(식당·카페), 교통비(주유소·택시·주차), 접대비(호텔·고급식당), 업무비(문구·사무용품), 기타\n형식: {\"가맹점명\": \"\", \"금액\": \"\", \"사용일시\": \"\", \"지출유형\": \"\", \"사용자\": \"\"}\n\n이메일 내용:\n{{$json['text']}}"
            }
          ]
        }
      }
    },
    {
      "id": "node3",
      "type": "n8n-nodes-base.googleSheets",
      "name": "법인카드 내역 시트 기록",
      "parameters": {
        "operation": "appendOrUpdate",
        "spreadsheetId": "={{$env.CARD_SHEET_ID}}",
        "sheetName": "법인카드내역",
        "columns": {
          "mappingMode": "defineBelow",
          "value": {
            "접수일시": "={{$now.format('YYYY-MM-DD HH:mm')}}",
            "가맹점명": "={{JSON.parse($json['message']['content'])['가맹점명']}}",
            "금액": "={{JSON.parse($json['message']['content'])['금액']}}",
            "사용일시": "={{JSON.parse($json['message']['content'])['사용일시']}}",
            "지출유형": "={{JSON.parse($json['message']['content'])['지출유형']}}",
            "사용자": "={{JSON.parse($json['message']['content'])['사용자']}}"
          }
        }
      }
    }
  ],
  "envVariables": {
    "CARD_COMPANY_EMAIL": "카드사 발신 이메일 주소 (예: notice@card.co.kr)",
    "CARD_SHEET_ID": "Google Sheets 법인카드 내역 시트 ID"
  },
  "tips": [
    "카드사마다 이메일 형식이 다를 수 있어요. OpenAI 프롬프트에 '가맹점명, 금액, 사용일시를 최대한 정확히 추출해줘'라는 지시를 추가하면 정확도가 높아집니다.",
    "월말에 지출유형별 합계를 자동 집계하려면 레시피 070(예산 대시보드 갱신)과 연결하세요.",
    "카드사가 여러 개라면 각각 Gmail Trigger를 별도로 만들고 동일한 시트에 기록하면 통합 관리가 가능해요."
  ],
  "qrUrl": "www.koreaaitimes.com/books/n8n-vol2/recipe069"
}
← 이전 레시피☰ 목차다음 레시피 →