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

AI 기반 콘텐츠 아이디어 자동 생성 → Notion 저장

  • ▸트렌드 키워드 기반 콘텐츠 아이디어 자동 생성
  • ▸블로그/SNS/유튜브 채널별 맞춤 아이디어 제안
  • ▸생성된 아이디어를 Notion 콘텐츠 캘린더에 자동 저장

✅사전 준비

  • □OpenAI API 키 준비
  • □Google Trends RSS 또는 네이버 DataLab API 설정
  • □Notion 콘텐츠 캘린더 DB 생성
  • □브랜드 톤앤매너 및 타겟 독자 정의 문서 준비

콘텐츠 아이디어 생성 프롬프트

System: 당신은 디지털 마케팅 콘텐츠 전략가입니다.

User: 다음 트렌드 키워드를 바탕으로 콘텐츠 아이디어를 생성하세요.
키워드: {{ $json.keywords.join(', ') }}
타겟: {{ $json.target_audience }}
채널: 블로그, Instagram, YouTube

각 채널별로 3개씩, 총 9개의 아이디어를 다음 JSON 형식으로:
{
  "blog": [{"title": "", "outline": "", "keywords": []}],
  "instagram": [{"caption": "", "hashtags": []}],
  "youtube": [{"title": "", "hook": "", "duration": ""}]
}

Notion 콘텐츠 캘린더 저장

// SplitInBatches로 아이디어 하나씩 처리
{
  "parent": { "database_id": "YOUR_CONTENT_CALENDAR_DB" },
  "properties": {
    "제목": { "title": [{ "text": { "content": "{{ $json.title }}" } }] },
    "채널": { "select": { "name": "{{ $json.channel }}" } },
    "상태": { "select": { "name": "아이디어" } },
    "생성일": { "date": { "start": "{{ $now.toISODate() }}" } },
    "키워드": { "multi_select": {{ $json.keywords.map(k => ({name: k})) }} }
  }
}
💡 TIP매주 월요일 오전에 실행하도록 Cron(`0 8 * * 1`)을 설정하면, 주간 콘텐츠 계획을 자동으로 생성할 수 있습니다.
⚡

워크플로우 JSON

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

📥 n8n 임포트 방법
n8n 화면 우측 상단 메뉴 (⋮) → Import from JSON → 아래 JSON 전체 복사 후 붙여넣기 → Import 클릭
{
  "recipeId": "recipe065",
  "title": "월·주 지출 예산 초과 경보",
  "chapter": 6,
  "category": "재무 & 정산 자동화",
  "difficulty": "⭐⭐",
  "estimatedTime": "30분",
  "usedApps": [
    "Google Sheets",
    "Slack"
  ],
  "description": "부서별 월 예산과 누적 지출이 기록된 구글 시트를 매일 오전 자동 점검해, 사용률 80% 초과 시 해당 부서장 Slack에 경고를, 100% 초과 시 대표와 경리팀에 긴급 알림을 발송합니다.",
  "nodes": [
    {
      "id": "node1",
      "type": "n8n-nodes-base.scheduleTrigger",
      "name": "매일 오전 9시 실행",
      "parameters": {
        "rule": {
          "interval": [
            {
              "field": "cronExpression",
              "expression": "0 9 * * *"
            }
          ]
        }
      }
    },
    {
      "id": "node2",
      "type": "n8n-nodes-base.googleSheets",
      "name": "부서별 예산 현황 조회",
      "parameters": {
        "operation": "getAll",
        "spreadsheetId": "={{$env.BUDGET_SHEET_ID}}",
        "sheetName": "예산현황"
      }
    },
    {
      "id": "node3",
      "type": "n8n-nodes-base.code",
      "name": "사용률 계산",
      "parameters": {
        "jsCode": "return items.map(item => {\n  const usageRate = (item.json['누적지출'] / item.json['월예산']) * 100;\n  return { ...item, json: { ...item.json, usageRate: parseFloat(usageRate.toFixed(1)) } };\n});"
      }
    },
    {
      "id": "node4",
      "type": "n8n-nodes-base.if",
      "name": "100% 초과 여부",
      "parameters": {
        "conditions": {
          "number": [
            {
              "value1": "={{$json['usageRate']}}",
              "operation": "largerEqual",
              "value2": 100
            }
          ]
        }
      }
    },
    {
      "id": "node5",
      "type": "n8n-nodes-base.slack",
      "name": "대표·경리팀 긴급 알림",
      "parameters": {
        "channel": "={{$env.FINANCE_SLACK_CHANNEL}}",
        "text": "🚨 예산 초과 긴급 알림!\n부서: {{$json['부서명']}}\n월 예산: ₩{{$json['월예산'].toLocaleString()}}\n누적 지출: ₩{{$json['누적지출'].toLocaleString()}}\n사용률: {{$json['usageRate']}}%\n→ 즉각 확인이 필요합니다."
      }
    },
    {
      "id": "node6",
      "type": "n8n-nodes-base.if",
      "name": "80% 초과 여부",
      "parameters": {
        "conditions": {
          "number": [
            {
              "value1": "={{$json['usageRate']}}",
              "operation": "largerEqual",
              "value2": 80
            },
            {
              "value1": "={{$json['usageRate']}}",
              "operation": "smaller",
              "value2": 100
            }
          ]
        }
      }
    },
    {
      "id": "node7",
      "type": "n8n-nodes-base.slack",
      "name": "부서장 경고 알림",
      "parameters": {
        "channel": "={{$json['부서장슬랙ID']}}",
        "text": "⚠️ 예산 주의 알림\n부서: {{$json['부서명']}}\n사용률: {{$json['usageRate']}}% (월 예산의 80% 초과)\n남은 예산: ₩{{($json['월예산'] - $json['누적지출']).toLocaleString()}}\n→ 지출 현황을 확인해주세요."
      }
    }
  ],
  "envVariables": {
    "BUDGET_SHEET_ID": "Google Sheets 예산 현황 시트 ID",
    "FINANCE_SLACK_CHANNEL": "경리·대표 Slack 채널 ID"
  },
  "tips": [
    "구글 시트 '예산현황' 탭에 부서명, 월예산, 누적지출, 부서장슬랙ID 열을 미리 구성해두세요.",
    "주간 단위 경보도 원하면 Schedule Trigger를 매주 월요일로 추가 설정하고 '주간예산' 열을 별도로 관리하세요.",
    "레시피 061(영수증 자동 기록)과 연결하면 지출이 기록될 때마다 누적지출 셀이 자동 갱신됩니다."
  ],
  "qrUrl": "www.koreaaitimes.com/books/n8n-vol2/recipe065"
}
← 이전 레시피☰ 목차다음 레시피 →