마케팅 대행사의 클라이언트 보고서 자동화 방법 (8시간 대신 90초 만에 완료)
요약
마케팅 대행사의 반복적인 클라이언트 보고서 작성 업무를 n8n 워크플로우를 통해 자동화하는 방법을 소개합니다. Google Ads, Meta Ads, GA4 데이터를 API로 수집하고 분석하여 8시간 걸리던 작업을 90초 만에 완료하는 아키텍처를 다룹니다.
핵심 포인트
- n8n을 활용한 다중 API 데이터 통합 및 자동화 구축
- Google Ads, Meta, GA4 API를 통한 지표 자동 추출
- 반복적인 내러티브 작성 및 이메일 발송 프로세스 효율화
- 확장 가능한 클라이언트 관리 시스템(Google Sheets 기반) 설계
15명의 클라이언트를 보유한 한 마케팅 대행사는 매주 월요일마다 성과 보고서를 작성하는 데 6~8시간을 소비하고 있었습니다. 어카운트 매니저(Account Manager)는 Google Ads, Meta Ads Manager, GA4를 열고 스프레드시트를 확인했습니다. 숫자를 복사하고, 요약을 작성하고, 이메일 형식을 맞춘 뒤, 발송했습니다. 이 과정을 15번 반복했습니다.
저는 이 모든 과정을 90초 만에 수행하는 n8n 워크플로우(workflow)를 구축했습니다. 정확한 아키텍처(architecture)는 다음과 같습니다.
문제점 (상세 내용)
대행사의 보고 프로세스는 다음과 같았습니다:
- Google Ads 열기 → 지난주 지표(지출액, 클릭수, 노출수, 전환수, CPA, ROAS) 내보내기
- Meta Ads Manager 열기 → 동일한 지표 내보내기
- GA4 열기 → 세션, 이탈률(bounce rate), 목표 완료(goal completions) 내보내기
- 스프레드시트 열기 → 모든 데이터를 붙여넣고 전주 대비 증감률(week-over-week deltas) 계산하기
- 내러티브(narrative) 작성 → "지출액은 12% 증가했지만 CPA는 8% 감소했습니다. 이는 새로운 소재가 잘 작동하고 있음을 시사합니다..."
- 이메일 형식 맞추기 → 브랜드 HTML 템플릿에 붙여넣고 클라이언트 로고 추가하기
- 발송 → 클라이언트당 이메일 한 통
- 반복 → 15명의 클라이언트 × 각 40분 = 10시간
내러티브 작성이 가장 최악이었습니다. 매주 동일한 사람이 "지표가 오르거나 내렸으며, 이유는 다음과 합니다"라는 내용의 15가지 변형 문구를 작성했습니다. 이는 지치기에는 충분하지만 흥미를 느끼기에는 부족한, 정신적으로 매우 소모적인 작업이었습니다.
해결책: 14개 노드(Node)로 구성된 n8n 워크플로우
워크플로우는 매주 월요일 오전 8시에 크론 트리거(cron trigger)에 의해 실행됩니다. 노드별 세부 분석은 다음과 같습니다:
노드 1: Cron Trigger
매주 월요일 08:00 UTC에 실행됩니다. 대행사별로 설정 가능합니다.
노드 2: Google Sheets — 클라이언트 설정 읽기
클라이언트당 한 행씩 기록된 "Clients" 시트를 읽습니다:
- 클라이언트 이름
- 이메일 주소
- Google Ads 고객 ID
- Meta 광고 계정 ID
- GA4 속성(property) ID
- 로고 URL
- 보고서 발송 요일 (일부 클라이언트는 화요일을 원함)
이것이 "데이터베이스" 역할을 합니다. 새로운 클라이언트를 추가하는 것은 단순히 행을 추가하는 것과 같습니다. 코드 변경은 필요 없습니다.
노드 3: Split In Batches
한 번에 한 명의 클라이언트씩 처리합니다. 한 클라이언트의 API 호출이 실패하더라도 다른 클라이언트들은 보고서를 정상적으로 받습니다.
노드 4: HTTP Request — Google Ads API
지난주의 지표(metrics)인 지출액(spend), 클릭(clicks), 노출수(impressions), 전환(conversions), CPA, ROAS를 가져옵니다. 서비스 계정(service account)을 사용하여 Google Ads API를 사용합니다.
노드 5: HTTP Request — Meta Graph API
Meta에서 동일한 지표를 가져옵니다. n8n 자격 증명(credentials)에 저장된 장기 액세스 토큰(long-lived access token)을 사용합니다.
노드 6: HTTP Request — GA4 Data API
세션(sessions), 이탈률(bounce rate), 목표 완료(goal completions)를 가져옵니다.
노드 7: Merge
세 가지 데이터 소스를 클라이언트당 하나의 JSON 객체로 결합합니다.
노드 8: Calculate Deltas
주간 변동 사항(week-over-week changes)을 계산합니다:
spend_delta = (this_week_spend - last_week_spend) / last_week_spend × 100
클릭, 전환, CPA, ROAS에 대해서도 동일하게 적용합니다.
노드 9: AI — Gemini Narrative Generation
이 부분이 핵심입니다. 지표(metrics)와 변동 사항(deltas)을 다음 프롬프트와 함께 Google Gemini로 전송합니다:
"당신은 클라이언트를 위한 주간 성과 보고서를 작성하는 마케팅 분석가입니다. 아래의 지표를 바탕으로 다음의 3개 문단 요약을 작성하세요: (1) 주요 성과(key wins), (2) 우려 사항(areas of concern), (3) 다음 주를 위한 구체적이고 실행 가능한 권장 사항(one specific, actionable recommendation) 하나. 간결하고 전문적이며 구체적으로 작성하세요. 실제 수치를 참조하세요. '전반적인 성과가 좋았습니다'와 같은 일반적인 미사여구는 사용하지 마세요. 지표: {metrics_json}"
AI는 다음과 같이 작성합니다:
"Google Ads 지출액은 12% 증가($4,200 → $4,704)한 반면, CPA는 8% 감소($42 → $38.64)했습니다. 이는 새로운 반응형 검색 광고(responsive search ads)가 더 효율적으로 전환되고 있음을 나타냅니다. Meta의 CPM은 15% 상승했으며, 이는 귀하의 산업군 내 경매 경쟁 심화 때문일 가능성이 높습니다. 권장 사항: 효율성 이득을 활용하기 위해 Meta 예산의 10-15%를 Google Ads로 전환하고, 상승하는 CPM에 대응하기 위해 Meta에서 두 가지 새로운 소재 변형(creative variants)을 테스트하십시오."
노드 10: AI Confidence Check
Gemini의 응답에 대해 다음 사항을 확인합니다:
- 길이 (100-500 단어 사이여야 함)
- 특정 수치의 포함 여부 (최소 2개 이상의 지표를 참조해야 함)
- 환각(hallucination) 징후의 부재 ("AI로서", "저는 ~할 수 없습니다" 등)
신뢰도(confidence)가 낮으면 보고서는 전송되는 대신 사람이 검토하도록 플래그(flag)가 지정됩니다.
노드 11: Build HTML Email
다음 내용을 포함한 브랜드화된 HTML 이메일을 생성합니다:
- 클라이언트 로고 (설정 시트에서 가져옴)
- KPI 카드 (지출액, 클릭수, 전환수, ROAS) 및 녹색/적색 델타(delta) 화살표
- AI가 작성한 내러티브 (narrative)
- "질문이 있으신가요? 이 이메일에 회신해 주세요"라는 푸터 (footer)
노드 12: Gmail — Send
HTML 이메일을 클라이언트 주소로 전송합니다.
노드 13: Google Sheets — Log
전송 내역을 기록합니다: 타임스탬프, 클라이언트, 상태 (전송됨/실패/플래그 지정됨), 이메일 ID.
노드 14: Slack — Agency Recap
대행사의 Slack에 요약 내용을 게시합니다:
"✅ 15개 중 14개 클라이언트 보고서 전송 완료. ⚠️ 1개 검토를 위해 플래그 지정됨 (클라이언트 X — AI 신뢰도가 임계값 미만). 총 소요 시간: 87초."
에러 핸들링 (Error Handling) (대부분의 튜토리얼이 생략하는 부분)
모든 외부 API 호출 (Google Ads, Meta, GA4, Gemini, Gmail)에는 다음이 포함됩니다:
- 지수 백오프 (exponential backoff)를 적용한 3회 재시도 (1초, 2초, 4초)
- 에러 브랜치 (Error branch) → "실패한 보고서" 시트에 기록 + Slack 알림
- 멱등성 (Idempotency) → 이메일 ID가 중복 제거 키(dedup key) 역할을 하여, 워크플로우를 다시 실행해도 이메일이 중복 전송되지 않음
Gemini가 쓸모없는 내용을 반환하면 신뢰도 체크(confidence check)가 이를 잡아냅니다. Gmail 전송에 실패하면 보고서는 수동 전송을 위해 "실패" 시트로 이동합니다. 어떤 데이터도 조용히 누락되지 않습니다.
실제 결과
| 지표 | 이전 | 이후 |
|---|---|---|
| 보고 사이클당 소요 시간 | 6-8시간 | 90초 |
| ... |
대행사 소유자의 반응: "월요일의 여유를 되찾았습니다."
기술 스택 (The Stack)
- n8n (self-hosted) — 워크플로우 오케스트레이션 (workflow orchestration)
- Google Gemini — AI 내러티브 (무료 티어로 월 약 500개의 보고서 처리 가능)
- Google Ads API — 유료 검색 지표
- Meta Graph API — 소셜 지표
- GA4 Data API — 웹 분석
- Gmail API — 이메일 전송
- Google Sheets API — 클라이언트 설정 + 감사 추적 (audit trail)
- Slack API — 대행사 요약
총 API 비용: 클라이언트 15명 기준 주당 약 $0.06. Gemini 무료 티어만으로도 대부분의 대행사를 커버할 수 있습니다.
귀하의 대행사에도 도입하고 싶으신가요?
전체 n8n 워크플로우 JSON은 저의 오픈 소스 포트폴리오에 있습니다:
→ github.com/Sasidhar-Sunkesula/n8n-workflow-showcase
이것은 워크플로(workflow) #05 (대행사 클라이언트 보고서 자동화)입니다. JSON을 가져오고, API 키를 추가하고, 클라이언트 시트를 설정하면 바로 실행할 수 있습니다.
저는 리드 스코어링 (lead scoring), 인보이스 추출 (invoice extraction), 고객 온보딩 (customer onboarding), 경쟁사 모니터링 (competitor monitoring), 지원 우선순위 분류 (support triage) 등을 포함하여 14개의 다른 운영용 워크플로 (production workflows)를 보유하고 있습니다.
대행 서비스 옵션 (Done-For-You Option)
직접 설정하고 싶지 않다면, 저는 다음과 같은 서비스로 이를 구축해 드립니다:
- 설정 (Setup): $500-800 (귀하의 데이터 소스 + 브랜딩 + 배포를 위한 맞춤형 워크플로)
- 월간 리테이너 (Monthly retainer): 월 $200-300 (모니터링, 업데이트, 우선 지원)
저에게 메시지를 보내거나 포트폴리오 사이트를 통해 연락해 주세요. 지속적인 계약을 맺기 전에 유료 파일럿 (paid pilot)을 진행하는 것도 환영합니다.
저는 Sasidhar입니다 — 운영용 n8n 자동화를 전문으로 하는 풀스택 개발자 (Full-Stack Developer)입니다. 8개 분야에 걸쳐 15개의 워크플로를 운영 중입니다. 저는 이론적인 AI가 아닌, 실제 아키텍처를 활용한 실용적인 자동화에 대해 글을 씁니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기