RECIPE P2
미니 프로젝트 — 1인 마케터의 하루 자동화 파이프라인
- ▸리드 수집부터 SNS 발행, 성과 집계까지 마케팅 전 과정을 자동화할 수 있다
- ▸여러 채널 데이터를 하나의 Google Sheets 대시보드에 통합할 수 있다
- ▸조건 분기(IF 노드)로 성과 기준 충족 시 자동 알림을 구성할 수 있다
✅사전 준비
- □레시피 011~025 핵심 워크플로우 동작 확인
- □Mailchimp 또는 ActiveCampaign API 키 준비
- □Google Analytics 4 API 자격증명 연결
- □Buffer 또는 Hootsuite API 키 준비 (SNS 예약 발행용)
- □Google Sheets '마케팅 대시보드' 시트 생성 및 헤더 설정
전체 파이프라인 구성
① 리드 수집 파이프 (실시간)
Webhook → 데이터 정제 → CRM 등록 → Slack 알림
② 콘텐츠 발행 파이프 (매일 09:00)
Schedule → Sheets에서 예약 콘텐츠 조회
→ Buffer API로 SNS 예약 등록
③ 성과 집계 파이프 (매일 18:00)
Schedule → GA4 API 호출 → Mailchimp 통계 호출
→ Sheets 기록 → IF(목표 달성) → Slack 축하 알림GA4 API 호출 — HTTP Request 설정
Method: POST
URL: https://analyticsdata.googleapis.com/v1beta/properties/YOUR_PROPERTY_ID:runReport
Authentication: OAuth2 (Google)
Body (JSON):
{
"dateRanges": [{ "startDate": "today", "endDate": "today" }],
"metrics": [
{ "name": "sessions" },
{ "name": "newUsers" },
{ "name": "conversions" }
]
}IF 노드 — 일일 목표 달성 판단
조건 1: {{ $json.sessions }} >= 500 (세션 목표)
조건 2: {{ $json.newUsers }} >= 100 (신규 유저 목표)
True → Slack #marketing 채널에 🎉 달성 알림 발송
False → Sheets에 미달 항목 기록 후 종료Sheets 대시보드 기록 — 컬럼 매핑
날짜: {{ $today.toFormat("yyyy-MM-dd") }}
세션수: {{ $('GA4 API').item.json.sessions }}
신규유저: {{ $('GA4 API').item.json.newUsers }}
전환수: {{ $('GA4 API').item.json.conversions }}
이메일발송: {{ $('Mailchimp').item.json.emails_sent }}
오픈율: {{ $('Mailchimp').item.json.open_rate }}
클릭율: {{ $('Mailchimp').item.json.click_rate }}💡 TIPBuffer API가 없다면 n8n의 내장 RSS 트리거 대신 Google Sheets에 '발행 예정 콘텐츠' 행을 추가하고 Schedule Trigger로 조회해 Twitter(X) API, Instagram Graph API에 직접 POST하는 방식으로도 구현할 수 있습니다.
⚠️ 주의GA4 API는 당일 데이터가 실시간 반영되지 않고 최대 24~48시간 지연될 수 있습니다. 성과 집계는 전날(yesterday) 기준으로 설정하는 것이 더 정확합니다.
⚡
워크플로우 JSON
아래 JSON을 복사해 n8n에 바로 임포트하세요
📥 n8n 임포트 방법
n8n 화면 우측 상단 메뉴 (⋮) → Import from JSON → 아래 JSON 전체 복사 후 붙여넣기 → Import 클릭
n8n 화면 우측 상단 메뉴 (⋮) → Import from JSON → 아래 JSON 전체 복사 후 붙여넣기 → Import 클릭
{
"name": "recipe025p_marketer_daily_pipeline",
"nodes": [
{
"parameters": {
"rule": {
"interval": [
{
"field": "cronExpression",
"expression": "30 7 * * *"
}
]
}
},
"id": "schedule-025p-01",
"name": "매일 오전 7시 30분 모닝 리포트",
"type": "n8n-nodes-base.scheduleTrigger",
"typeVersion": 1.1,
"position": [
200,
400
]
},
{
"parameters": {
"method": "POST",
"url": "https://googleads.googleapis.com/v17/customers/{{ $env.GOOGLE_ADS_CUSTOMER_ID }}/googleAds:search",
"authentication": "genericCredentialType",
"genericAuthType": "httpHeaderAuth",
"sendBody": true,
"bodyParameters": {
"parameters": [
{
"name": "query",
"value": "SELECT metrics.impressions, metrics.clicks, metrics.cost_micros FROM campaign WHERE segments.date DURING YESTERDAY"
}
]
},
"options": {}
},
"id": "http-025p-02",
"name": "광고 성과 수집 (레시피013)",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
420,
200
]
},
{
"parameters": {
"method": "POST",
"url": "https://analyticsdata.googleapis.com/v1beta/properties/{{ $env.GA4_PROPERTY_ID }}:runReport",
"authentication": "genericCredentialType",
"genericAuthType": "httpHeaderAuth",
"sendBody": true,
"bodyParameters": {
"parameters": [
{
"name": "dateRanges",
"value": "[{\"startDate\": \"yesterday\", \"endDate\": \"yesterday\"}]"
},
{
"name": "metrics",
"value": "[{\"name\": \"sessions\"}]"
}
]
},
"options": {}
},
"id": "http-025p-03",
"name": "채널 성과 수집 (레시피025)",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
420,
400
]
},
{
"parameters": {
"mode": "combine",
"combinationMode": "mergeByPosition",
"options": {}
},
"id": "merge-025p-04",
"name": "데이터 통합",
"type": "n8n-nodes-base.merge",
"typeVersion": 3,
"position": [
640,
400
]
},
{
"parameters": {
"operation": "appendOrUpdate",
"documentId": {
"value": "={{ $env.MARKETING_DASHBOARD_SHEET_ID }}"
},
"sheetName": {
"value": "daily"
},
"columns": {
"mappingMode": "defineBelow",
"value": {
"date": "={{ $now.minus({days:1}).format('YYYY-MM-DD') }}",
"gaSessions": "={{ $('채널 성과 수집 (레시피025)').item.json.rows[0].metricValues[0].value }}",
"updatedAt": "={{ $now.format('YYYY-MM-DD HH:mm') }}"
}
},
"options": {
"upsertOptions": {
"upsertKey": "date"
}
}
},
"id": "sheets-025p-05",
"name": "대시보드 기록",
"type": "n8n-nodes-base.googleSheets",
"typeVersion": 4.4,
"position": [
860,
400
]
},
{
"parameters": {
"resource": "message",
"operation": "post",
"channel": "#marketing-team",
"text": "=📊 1인 마케터 모닝 브리핑 ({{ $now.format('M월 D일') }})\n\n📈 어제 광고 성과\n→ Google Ads 데이터 확인 완료\n\n🌐 웹 트래픽\n→ GA4 세션 데이터 확인 완료\n\n✅ 오늘의 자동화 파이프라인 정상 작동 중!"
},
"id": "slack-025p-06",
"name": "모닝 브리핑 Slack 발송",
"type": "n8n-nodes-base.slack",
"typeVersion": 2.2,
"position": [
1080,
400
]
},
{
"parameters": {
"url": "={{ $env.BLOG_RSS_URL }}"
},
"id": "rss-025p-07",
"name": "블로그 새 글 감지 → SNS 배포 (레시피012)",
"type": "n8n-nodes-base.rssFeedReadTrigger",
"typeVersion": 1.1,
"position": [
200,
700
]
},
{
"parameters": {
"method": "POST",
"url": "https://api.twitter.com/2/tweets",
"authentication": "genericCredentialType",
"genericAuthType": "httpHeaderAuth",
"sendBody": true,
"bodyParameters": {
"parameters": [
{
"name": "text",
"value": "={{ $json.title + ' ' + $json.link }}"
}
]
},
"options": {}
},
"id": "http-025p-08",
"name": "Twitter 자동 배포",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
420,
700
]
}
],
"connections": {
"매일 오전 7시 30분 모닝 리포트": {
"main": [
[
{
"node": "광고 성과 수집 (레시피013)",
"type": "main",
"index": 0
},
{
"node": "채널 성과 수집 (레시피025)",
"type": "main",
"index": 0
}
]
]
},
"광고 성과 수집 (레시피013)": {
"main": [
[
{
"node": "데이터 통합",
"type": "main",
"index": 0
}
]
]
},
"채널 성과 수집 (레시피025)": {
"main": [
[
{
"node": "데이터 통합",
"type": "main",
"index": 1
}
]
]
},
"데이터 통합": {
"main": [
[
{
"node": "대시보드 기록",
"type": "main",
"index": 0
}
]
]
},
"대시보드 기록": {
"main": [
[
{
"node": "모닝 브리핑 Slack 발송",
"type": "main",
"index": 0
}
]
]
},
"블로그 새 글 감지 → SNS 배포 (레시피012)": {
"main": [
[
{
"node": "Twitter 자동 배포",
"type": "main",
"index": 0
}
]
]
}
},
"settings": {
"timezone": "Asia/Seoul"
},
"meta": {
"chapter": 2,
"recipe": "025p",
"title": "1인 마케터의 하루 자동화 파이프라인",
"difficulty": "⭐⭐⭐",
"estimatedTime": "60분",
"apps": [
"Google Ads API",
"Google Analytics",
"Mailchimp",
"RSS Feed",
"Twitter",
"Google Sheets",
"Slack"
],
"type": "mini-project"
}
}