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 클릭
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"
}