From 338176abbe8b0a7da14676eb165897d672597baa Mon Sep 17 00:00:00 2001 From: Andrew Yim Date: Mon, 9 Mar 2026 00:49:04 +0900 Subject: [PATCH] feat: add D.intelligence Agent Corps (9 skills + shared infra) Add 9 agent skills (#70-#77, #88) for D.intelligence business operations: brand guardian, brand editor, doc secretary, quotation manager, service architect, marketing manager, back office manager, account manager, and skill update meta-agent. Includes shared Python package (dintel), reference docs, document/quotation templates, service module CSVs, cross-device installer, and comprehensive user guide. Co-Authored-By: Claude Opus 4.6 --- .gitignore | 11 + CLAUDE.md | 33 +- README.md | 22 +- .../70-dintel-brand-guardian/README.md | 57 + .../70-dintel-brand-guardian/code/CLAUDE.md | 115 + .../70-dintel-brand-guardian/desktop/SKILL.md | 516 ++ .../71-dintel-brand-editor/README.md | 57 + .../71-dintel-brand-editor/code/CLAUDE.md | 100 + .../code/scripts/generate_credential.py | 500 ++ .../71-dintel-brand-editor/desktop/SKILL.md | 146 + .../references/dintelligence_brand_guide.md | 439 ++ .../shared/notion-schema-reference.md | 140 + .../72-dintel-doc-secretary/README.md | 63 + .../72-dintel-doc-secretary/code/CLAUDE.md | 119 + .../72-dintel-doc-secretary/desktop/SKILL.md | 377 ++ .../D.intelligence_Blank_2026.txt | 14 + ...elligence_Digital_Marketing_Audit_2026.txt | 56 + .../D.intelligence_Initial_Brief_2026.txt | 52 + ...ntelligence_Marketing_Performance_2026.txt | 45 + ...elligence_Social_Media_Excellence_2026.txt | 47 + .../D.intelligence_Website_Diagnosis_2026.txt | 47 + .../73-dintel-quotation-mgr/README.md | 49 + .../73-dintel-quotation-mgr/code/CLAUDE.md | 65 + .../code/scripts/generate_quotation.py | 355 ++ .../73-dintel-quotation-mgr/desktop/SKILL.md | 399 ++ .../shared/feedback-log.md | 54 + .../shared/pricing-reference.md | 82 + .../74-dintel-service-architect/README.md | 85 + .../code/CLAUDE.md | 184 + .../desktop/SKILL.md | 146 + .../shared/module-decision-tree.md | 211 + ...rvice Package list-v.1.0 - 고객 소구점.csv | 8 + ...ackage list-v.1.0 - 서비스 명세 일람표.csv | 24 + ...ce Package list-v.1.0 - 전략 키워드 셋.csv | 25 + ...ackage list-v.1.0 - 타겟 오디언스 설정.csv | 44 + .../75-dintel-marketing-mgr/README.md | 69 + .../75-dintel-marketing-mgr/code/CLAUDE.md | 186 + .../75-dintel-marketing-mgr/desktop/SKILL.md | 198 + .../shared/content-calendar-template.md | 76 + .../GA4-GTM-실무가이드-통합본.md | 5603 +++++++++++++++++ .../76-dintel-backoffice-mgr/README.md | 59 + .../76-dintel-backoffice-mgr/code/CLAUDE.md | 171 + .../76-dintel-backoffice-mgr/desktop/SKILL.md | 184 + .../shared/billing-checklist.md | 84 + ...D.intelligence_Ad_Agency_Contract_2026.txt | 58 + .../D.intelligence_Invoice_2026.txt | 17 + .../D.intelligence_Job_Readiness_2026.txt | 100 + .../D.intelligence_NDA_2026.txt | 55 + .../D.intelligence_Service_Contract_2026.txt | 55 + custom-skills/77-dintel-account-mgr/README.md | 80 + .../77-dintel-account-mgr/code/CLAUDE.md | 153 + .../77-dintel-account-mgr/desktop/SKILL.md | 162 + .../shared/meeting-prep-template.md | 93 + .../88-dintel-skill-update/README.md | 48 + .../88-dintel-skill-update/code/CLAUDE.md | 66 + .../88-dintel-skill-update/desktop/SKILL.md | 260 + .../shared/change-log.md | 32 + .../dintel-shared/INSTALL-AUDIT-2026-03-09.md | 147 + custom-skills/dintel-shared/README.md | 32 + custom-skills/dintel-shared/USER-GUIDE.md | 520 ++ custom-skills/dintel-shared/install.sh | 651 ++ custom-skills/dintel-shared/pyproject.toml | 33 + .../references/design-system-2025.md | 169 + .../references/dintelligence_brand_guide.md | 439 ++ .../references/notion-schema-reference.md | 140 + .../references/pricing-reference.md | 82 + .../dintel-shared/src/dintel/__init__.py | 3 + .../dintel-shared/src/dintel/brand.py | 132 + .../dintel-shared/src/dintel/document.py | 91 + .../dintel-shared/src/dintel/excel.py | 71 + .../dintel-shared/src/dintel/notion.py | 50 + 71 files changed, 15054 insertions(+), 2 deletions(-) create mode 100644 custom-skills/70-dintel-brand-guardian/README.md create mode 100644 custom-skills/70-dintel-brand-guardian/code/CLAUDE.md create mode 100644 custom-skills/70-dintel-brand-guardian/desktop/SKILL.md create mode 100644 custom-skills/71-dintel-brand-editor/README.md create mode 100644 custom-skills/71-dintel-brand-editor/code/CLAUDE.md create mode 100644 custom-skills/71-dintel-brand-editor/code/scripts/generate_credential.py create mode 100644 custom-skills/71-dintel-brand-editor/desktop/SKILL.md create mode 100644 custom-skills/71-dintel-brand-editor/desktop/references/dintelligence_brand_guide.md create mode 100644 custom-skills/71-dintel-brand-editor/shared/notion-schema-reference.md create mode 100644 custom-skills/72-dintel-doc-secretary/README.md create mode 100644 custom-skills/72-dintel-doc-secretary/code/CLAUDE.md create mode 100644 custom-skills/72-dintel-doc-secretary/desktop/SKILL.md create mode 100644 custom-skills/72-dintel-doc-secretary/shared/document-templates/D.intelligence_Blank_2026.txt create mode 100644 custom-skills/72-dintel-doc-secretary/shared/document-templates/D.intelligence_Digital_Marketing_Audit_2026.txt create mode 100644 custom-skills/72-dintel-doc-secretary/shared/document-templates/D.intelligence_Initial_Brief_2026.txt create mode 100644 custom-skills/72-dintel-doc-secretary/shared/document-templates/D.intelligence_Marketing_Performance_2026.txt create mode 100644 custom-skills/72-dintel-doc-secretary/shared/document-templates/D.intelligence_Social_Media_Excellence_2026.txt create mode 100644 custom-skills/72-dintel-doc-secretary/shared/document-templates/D.intelligence_Website_Diagnosis_2026.txt create mode 100644 custom-skills/73-dintel-quotation-mgr/README.md create mode 100644 custom-skills/73-dintel-quotation-mgr/code/CLAUDE.md create mode 100644 custom-skills/73-dintel-quotation-mgr/code/scripts/generate_quotation.py create mode 100644 custom-skills/73-dintel-quotation-mgr/desktop/SKILL.md create mode 100644 custom-skills/73-dintel-quotation-mgr/shared/feedback-log.md create mode 100644 custom-skills/73-dintel-quotation-mgr/shared/pricing-reference.md create mode 100644 custom-skills/74-dintel-service-architect/README.md create mode 100644 custom-skills/74-dintel-service-architect/code/CLAUDE.md create mode 100644 custom-skills/74-dintel-service-architect/desktop/SKILL.md create mode 100644 custom-skills/74-dintel-service-architect/shared/module-decision-tree.md create mode 100644 custom-skills/74-dintel-service-architect/shared/service-modules/D.intelligence-Intelligence Service Package list-v.1.0 - 고객 소구점.csv create mode 100644 custom-skills/74-dintel-service-architect/shared/service-modules/D.intelligence-Intelligence Service Package list-v.1.0 - 서비스 명세 일람표.csv create mode 100644 custom-skills/74-dintel-service-architect/shared/service-modules/D.intelligence-Intelligence Service Package list-v.1.0 - 전략 키워드 셋.csv create mode 100644 custom-skills/74-dintel-service-architect/shared/service-modules/D.intelligence-Intelligence Service Package list-v.1.0 - 타겟 오디언스 설정.csv create mode 100644 custom-skills/75-dintel-marketing-mgr/README.md create mode 100644 custom-skills/75-dintel-marketing-mgr/code/CLAUDE.md create mode 100644 custom-skills/75-dintel-marketing-mgr/desktop/SKILL.md create mode 100644 custom-skills/75-dintel-marketing-mgr/shared/content-calendar-template.md create mode 100644 custom-skills/75-dintel-marketing-mgr/shared/training-materials/GA4-GTM-실무가이드-통합본.md create mode 100644 custom-skills/76-dintel-backoffice-mgr/README.md create mode 100644 custom-skills/76-dintel-backoffice-mgr/code/CLAUDE.md create mode 100644 custom-skills/76-dintel-backoffice-mgr/desktop/SKILL.md create mode 100644 custom-skills/76-dintel-backoffice-mgr/shared/billing-checklist.md create mode 100644 custom-skills/76-dintel-backoffice-mgr/shared/document-templates/D.intelligence_Ad_Agency_Contract_2026.txt create mode 100644 custom-skills/76-dintel-backoffice-mgr/shared/document-templates/D.intelligence_Invoice_2026.txt create mode 100644 custom-skills/76-dintel-backoffice-mgr/shared/document-templates/D.intelligence_Job_Readiness_2026.txt create mode 100644 custom-skills/76-dintel-backoffice-mgr/shared/document-templates/D.intelligence_NDA_2026.txt create mode 100644 custom-skills/76-dintel-backoffice-mgr/shared/document-templates/D.intelligence_Service_Contract_2026.txt create mode 100644 custom-skills/77-dintel-account-mgr/README.md create mode 100644 custom-skills/77-dintel-account-mgr/code/CLAUDE.md create mode 100644 custom-skills/77-dintel-account-mgr/desktop/SKILL.md create mode 100644 custom-skills/77-dintel-account-mgr/shared/meeting-prep-template.md create mode 100644 custom-skills/88-dintel-skill-update/README.md create mode 100644 custom-skills/88-dintel-skill-update/code/CLAUDE.md create mode 100644 custom-skills/88-dintel-skill-update/desktop/SKILL.md create mode 100644 custom-skills/88-dintel-skill-update/shared/change-log.md create mode 100644 custom-skills/dintel-shared/INSTALL-AUDIT-2026-03-09.md create mode 100644 custom-skills/dintel-shared/README.md create mode 100644 custom-skills/dintel-shared/USER-GUIDE.md create mode 100755 custom-skills/dintel-shared/install.sh create mode 100644 custom-skills/dintel-shared/pyproject.toml create mode 100644 custom-skills/dintel-shared/references/design-system-2025.md create mode 100644 custom-skills/dintel-shared/references/dintelligence_brand_guide.md create mode 100644 custom-skills/dintel-shared/references/notion-schema-reference.md create mode 100644 custom-skills/dintel-shared/references/pricing-reference.md create mode 100644 custom-skills/dintel-shared/src/dintel/__init__.py create mode 100644 custom-skills/dintel-shared/src/dintel/brand.py create mode 100644 custom-skills/dintel-shared/src/dintel/document.py create mode 100644 custom-skills/dintel-shared/src/dintel/excel.py create mode 100644 custom-skills/dintel-shared/src/dintel/notion.py diff --git a/.gitignore b/.gitignore index 7608df3..05bc18e 100644 --- a/.gitignore +++ b/.gitignore @@ -85,6 +85,17 @@ token.json .claude/* !.claude/commands/ +# Claude Code agent workspace +.claude-agents/ + +# Node lock files +package-lock.json + +# Egg info / build artifacts +*.egg-info/ +dist/ +build/ + # Temporary files output/ keyword_analysis_*.json diff --git a/CLAUDE.md b/CLAUDE.md index c16d335..ab6ba4e 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -7,7 +7,7 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co **GitHub**: https://github.com/ourdigital/our-claude-skills This is a Claude Skills collection repository containing: -- **custom-skills/**: 52 custom skills for OurDigital workflows, SEO, GTM, Jamie Brand, NotebookLM, Notion, Reference Curation, and Multi-Agent Collaboration +- **custom-skills/**: 61 custom skills for OurDigital workflows, SEO, GTM, Jamie Brand, NotebookLM, Notion, D.intelligence Agent Corps, Reference Curation, and Multi-Agent Collaboration - **example-skills/**: Reference examples from Anthropic's official skills repository - **official-skills/**: Notion integration skills (3rd party) - **reference/**: Skill format requirements documentation @@ -101,6 +101,26 @@ This is a Claude Skills collection repository containing: **Prerequisites:** `pip install notebooklm-py && playwright install chromium && notebooklm login` +### D.intelligence Agent Corps (70-88) + +| # | Skill | Purpose | Autonomy | Trigger | +|---|-------|---------|----------|---------| +| 70 | dintel-brand-guardian | Brand compliance review (100pt checklist) | Auto | "brand check", "브랜드 검수" | +| 71 | dintel-brand-editor | Brand-compliant copywriting & style evaluation | Auto + Ask | "write copy", "카피 작성" | +| 72 | dintel-doc-secretary | Document formatting, meeting notes, reports | Draft & Wait | "format document", "회의록" | +| 73 | dintel-quotation-mgr | Quotation generation (4 sub-agents) | Draft & Wait | "견적서", "quotation" | +| 74 | dintel-service-architect | Service scope design & module recommendation | Inquiry-driven | "서비스 설계", "service design" | +| 75 | dintel-marketing-mgr | Content pipeline (Magazine D., newsletter, LinkedIn) | Draft & Wait | "콘텐츠 발행", "newsletter" | +| 76 | dintel-backoffice-mgr | Invoicing, contracts, NDA, HR operations | Draft & Wait | "계약서", "인보이스" | +| 77 | dintel-account-mgr | Client relationship management & monitoring | Mixed | "client status", "미팅 준비" | +| 88 | dintel-skill-update | Cross-skill consistency management (meta-agent) | Triggered | "skill sync", "스킬 업데이트" | + +**Shared infrastructure:** `dintel-shared/` (Python package + reference docs) + +**Install:** `cd custom-skills/dintel-shared && ./install.sh --all` + +**User Guide:** `custom-skills/dintel-shared/USER-GUIDE.md` + ### Reference Curator & Multi-Agent (90-99) | # | Skill | Purpose | Trigger | @@ -245,6 +265,17 @@ our-claude-skills/ │ ├── 52-notebooklm-studio/ │ ├── 53-notebooklm-research/ │ │ +│ ├── 70-dintel-brand-guardian/ +│ ├── 71-dintel-brand-editor/ +│ ├── 72-dintel-doc-secretary/ +│ ├── 73-dintel-quotation-mgr/ +│ ├── 74-dintel-service-architect/ +│ ├── 75-dintel-marketing-mgr/ +│ ├── 76-dintel-backoffice-mgr/ +│ ├── 77-dintel-account-mgr/ +│ ├── 88-dintel-skill-update/ +│ ├── dintel-shared/ # D.intelligence shared infra (Python pkg, refs, installer) +│ │ │ ├── 90-reference-curator/ # Modular reference documentation suite │ │ ├── 01-reference-discovery/ │ │ ├── 02-web-crawler-orchestrator/ diff --git a/README.md b/README.md index 8d9c997..4f83968 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ > **Internal R&D Repository** - This repository is restricted for internal use only. -A collection of **52 custom Claude Skills** for OurDigital workflows, Jamie Plastic Surgery Clinic brand management, SEO/GTM tools, NotebookLM automation, Notion integrations, reference documentation curation, and multi-agent collaboration. +A collection of **61 custom Claude Skills** for OurDigital workflows, D.intelligence Agent Corps (9-agent business operations suite), Jamie Plastic Surgery Clinic brand management, SEO/GTM tools, NotebookLM automation, Notion integrations, reference documentation curation, and multi-agent collaboration. ## Quick Install @@ -64,6 +64,26 @@ cd our-claude-skills/custom-skills/_ourdigital-shared | 33 | `seo-migration-planner` | Site migration planning, redirect mapping, monitoring | | 34 | `seo-reporting-dashboard` | Executive reports, HTML dashboards, data aggregation | +### D.intelligence Agent Corps (70-88) + +| # | Skill | Purpose | Autonomy | +|---|-------|---------|----------| +| 70 | `dintel-brand-guardian` | Brand compliance review (100pt checklist) | Auto | +| 71 | `dintel-brand-editor` | Brand-compliant copywriting & style evaluation | Auto + Ask | +| 72 | `dintel-doc-secretary` | Document formatting, meeting notes, reports | Draft & Wait | +| 73 | `dintel-quotation-mgr` | Quotation generation (4 sub-agents) | Draft & Wait | +| 74 | `dintel-service-architect` | Service scope design & module recommendation | Inquiry-driven | +| 75 | `dintel-marketing-mgr` | Content pipeline (Magazine D., newsletter, LinkedIn) | Draft & Wait | +| 76 | `dintel-backoffice-mgr` | Invoicing, contracts, NDA, HR operations | Draft & Wait | +| 77 | `dintel-account-mgr` | Client relationship management & Notion monitoring | Mixed | +| 88 | `dintel-skill-update` | Cross-skill consistency management (meta-agent) | Triggered | + +**Shared infrastructure:** `dintel-shared/` (Python package + reference docs) + +**Install:** `cd custom-skills/dintel-shared && ./install.sh --all` + +**User Guide:** `custom-skills/dintel-shared/USER-GUIDE.md` + ### GTM/GA Tools (60-69) | # | Skill | Purpose | diff --git a/custom-skills/70-dintel-brand-guardian/README.md b/custom-skills/70-dintel-brand-guardian/README.md new file mode 100644 index 0000000..1ee97ab --- /dev/null +++ b/custom-skills/70-dintel-brand-guardian/README.md @@ -0,0 +1,57 @@ +# 70-dintel-brand-guardian + +**Agent #70** in the D.intelligence Agent Corps | v1.1.0 + +## What it does + +Brand Guardian is the strategic brand governance layer for D.intelligence. It reviews ALL D.intelligence content for brand compliance using a 100-point checklist: + +| Category | Points | Scope | +|----------|--------|-------| +| Tone & Manner | 25 | Professional/Scientific/Practical/Outcome tone, prohibited expressions | +| Message Structure | 25 | 4-step framework, KPIs, Before/After, actionable CTAs | +| Service Architecture | 25 | Module codes (A1-G4), category tags (DI/MD/MPO/BVT), 3-Phase accuracy | +| Brand Identity | 25 | "파트너" positioning, Core Values, no brand violations | + +## Triggers + +Autonomy level: **Auto** — activates on any D.intelligence content review or creation request. + +Detection keywords: +- "D.intelligence", "디인텔리전스", "brand review", "brand check" +- "톤앤매너 검토", "브랜드 검토", "제안서 검토", "콘텐츠 검토" +- Module codes (A1-A6, T1-T7, G1-G4) +- Category tags (DI, MD, MPO, BVT) +- Tagline "Analysis, Treatment & Growth" + +## Structure + +``` +70-dintel-brand-guardian/ +├── code/ +│ └── CLAUDE.md # Claude Code directive (condensed quick-reference) +├── desktop/ +│ └── SKILL.md # Full skill definition for Claude Desktop +├── shared/ +│ └── (reserved) # Future shared assets +└── README.md # This file +``` + +## Relation to Other Agents + +Part of the **D.intelligence Agent Corps** (agents 70-77 + meta-agent 88, prefix `dintel-`): + +- **#70 dintel-brand-guardian** (this agent) — Brand governance, content compliance +- **#70 dintel-brand-editor** (legacy: `70-dintelligence-brand-editor`) — Notion content editing +- Other agents: TBD as Agent Corps Phase 0 progresses + +Shared Python environment: `dintel-shared/src/dintel/brand.py` for brand constants used across all dintel- agents. + +## Source + +Migrated from `D.intelligence Service Package/dintelligence-brand-guardian/SKILL.md` (v1.0) with the following changes in v1.1.0: +- Renamed from `dintelligence-brand-guardian` to `dintel-brand-guardian` +- Added Agent Corps context (Agent #70) +- Added Universal Guardrails section +- Added reference to shared Python brand constants +- Added reference to Notion schema diff --git a/custom-skills/70-dintel-brand-guardian/code/CLAUDE.md b/custom-skills/70-dintel-brand-guardian/code/CLAUDE.md new file mode 100644 index 0000000..0aceb10 --- /dev/null +++ b/custom-skills/70-dintel-brand-guardian/code/CLAUDE.md @@ -0,0 +1,115 @@ +# dintel-brand-guardian — Claude Code Directive + +> Agent #70 | v1.1.0 | D.intelligence Brand Guardian +> Auto-trigger on any D.intelligence content review or creation request. + +--- + +## Quick Reference: Brand Identity + +- **Name**: D.intelligence :: SMART Marketing Clinic :: +- **Identity**: Marketing Intelligence 파트너 (NOT 대행사/에이전시) +- **Tagline**: Analysis, Treatment & Growth +- **Motto**: Think Forward +- **Core Values**: Scientific, Practical, Outcome, Insights +- **Positioning**: 대기업 수준의 데이터 역량 + 중견/스타트업 맞춤 실행력 +- **Signature Service**: T6 Brand Visibility Treatment + +## Service Architecture + +- **Analysis (진단)**: A1-A6 — Diagnostic phase +- **Treatment (처방)**: T1-T7 — Implementation phase +- **Growth (성장)**: G1-G4 — Ongoing management +- **Categories**: DI (Data Intelligence), MD (Measurement Design), MPO (Marketing Performance Optimization), BVT (Brand Visibility Treatment) +- **NEVER invent modules** beyond A1-A6, T1-T7, G1-G4 + +## 100-Point Checklist Summary + +| Category | Points | Key Checks | +|----------|--------|------------| +| A. Tone & Manner | 25 | Professional/Scientific/Practical/Outcome tone; no exaggeration; channel-appropriate | +| B. Message Structure | 25 | Problem → Data Evidence → Solution → Expected Outcome; concrete KPIs; Before/After | +| C. Service Architecture | 25 | Correct module codes; accurate category tags; valid 3-Phase framework usage | +| D. Brand Identity | 25 | "파트너" not "컨설팅회사"; Core Values reflected; prohibitions clean | + +## Prohibited Expressions + +Detect and flag immediately: + +**Korean patterns**: +- 획기적, 혁신적, 놀라운, 독보적, 최고의 (exaggeration) +- 반드시, 확실히, 무조건, 100%, 보장 (guarantees) +- 요즘은 다 이렇게 합니다 (vague generalization) + +**Structural violations**: +- Tech showoff: packaging AI/data tech as results +- Methodology showoff: complex methodology as expertise proof +- Authority appeal: leading with big-company references only +- Competitor denigration: direct competitor comparison/criticism +- Unfounded optimism: positive outlook without data backing + +**Banned AI response patterns**: +- "무조건 좋아질 것입니다" +- "반드시 성과를 보장합니다" +- "정말 엄청난 인사이트입니다" + +## Message Framework + +All content follows: **문제 진단 → 데이터 근거 → 해결 방안 → 예상 성과** + +Standard category messages: +- DI: "흩어진 데이터를 하나의 의사결정 체계로 연결합니다" +- MD: "무엇을 측정하고 어떻게 평가할지, 기준부터 세워드립니다" +- MPO: "실행 가능한 최적화로, 데이터가 말하는 성과를 실현합니다" +- BVT: "검색에서 발견되지 않으면 존재하지 않는 것과 같습니다" + +## Universal Guardrails + +1. Never send to clients without Andrew's approval +2. Never delete — always archive +3. Never commit pricing without Andrew's sign-off +4. Korean-first, jargon = 한글(English) bilingual notation +5. Never cross-reference client data without consent + +## How to Use + +This directive activates automatically when any of these are detected: +- Keywords: "D.intelligence", "디인텔리전스", "brand review", "brand check", "브랜드 검토" +- Module codes: A1-A6, T1-T7, G1-G4 +- Category tags: DI, MD, MPO, BVT +- Content types: 제안서, 리포트, 블로그, 뉴스레터, 사례연구 + +On trigger: +1. Read content to review +2. Run 100-point checklist (Tone 25, Message 25, Architecture 25, Identity 25) +3. Output Brand Review Report with scores, violations, and fix suggestions +4. For content generation: apply all rules proactively + +## Shared Resources + +- Brand constants: `../../dintel-shared/src/dintel/brand.py` +- Full skill reference: `../desktop/SKILL.md` +- Design system: `../../dintel-shared/references/design-system-2025.md` +- Brand guide: `../../dintel-shared/references/dintelligence_brand_guide.md` +- Notion schema: `../../dintel-shared/references/notion-schema-reference.md` + +## Source Files — Visual Assets + +Logo and design system source files are in the Service Package repository: + +| Category | Repo Path | Contents | +|----------|-----------|----------| +| **Design System** | `Source Files/디자인 가이드/` | `D.intelligence_Design_System_2025.pdf/.pptx` | +| **Logos (Production)** | `Source Files/디자인 가이드/` | SVG/PNG: horizontal, vertical, wordtype, motto, square variants + white versions | +| **Logos (Source)** | `Source Files/로고/` | `.ai` source files, prototype logos | +| **Fonts** | `Source Files/디자인 가이드/Font/` | Apple SD Gothic Neo (5 weights), DM Sans (6 weights) | + +### Logo File Inventory + +| Variant | File | White Version | +|---------|------|---------------| +| Horizontal | `D.intelligence_logo_horizontal.svg/.png` | `_white.png` | +| Vertical | `D.intelligence_logo_vertical.png` | `_white.png/.svg` | +| Wordtype | `D.intelligence_logo_wordtype.svg/.png` | `_white.png` | +| Motto | `D.intelligence_logo_motto.svg/.png` | `_white.svg/.png` | +| Square | `D.intelligence_logo_square.png` | — | diff --git a/custom-skills/70-dintel-brand-guardian/desktop/SKILL.md b/custom-skills/70-dintel-brand-guardian/desktop/SKILL.md new file mode 100644 index 0000000..d20ab67 --- /dev/null +++ b/custom-skills/70-dintel-brand-guardian/desktop/SKILL.md @@ -0,0 +1,516 @@ +--- +name: dintel-brand-guardian +version: 1.1.0 +agent-id: "70" +agent-corps: D.intelligence Agent Corps (8 agents + 1 meta-agent) +description: Brand Guardian for D.intelligence (디인텔리전스). Reviews all D.intelligence documents, proposals, reports, blog posts, AI-generated content, presentations, and marketing materials for brand compliance. Checks tone & manner, message framework, service architecture accuracy, prohibited expressions, and AI/LLM output standards. Use this skill whenever creating or reviewing D.intelligence content — triggers include "D.intelligence", "디인텔리전스", "brand review", "brand check", "톤앤매너 검토", "브랜드 검토", "제안서 검토", "리포트 검토", "콘텐츠 검토", any mention of service modules (A1-A6, T1-T7, G1-G4), service categories (DI, MD, MPO, BVT), or the tagline "Analysis, Treatment & Growth". Also use when generating proposals, reports, blog posts, case studies, newsletter content, or any client-facing material for D.intelligence. +autonomy: auto +--- + +# D.intelligence Brand Guardian + +> **브랜드**: D.intelligence :: SMART Marketing Clinic :: +> **버전**: 1.1.0 +> **에이전트**: #70 — D.intelligence Agent Corps +> **기준 문서**: 08_BRAND-GUIDE-v1.1.md, 00_SERVICE-MAP.md v2.0 +> **최종 수정**: 2026-03-08 + +--- + +## Agent Corps Context + +이 스킬은 **D.intelligence Agent Corps**의 Agent #70 (Brand Guardian)이다. + +- **Agent Corps**: 8개 전문 에이전트(70-77) + 1개 메타 에이전트(88) +- **역할**: 브랜드 거버넌스 — 모든 D.intelligence 콘텐츠의 브랜드 준수 여부를 자동 검토 +- **자율 수준**: Auto (D.intelligence 콘텐츠가 감지되면 자동 실행) +- **공유 환경**: `dintel-shared/src/dintel/brand.py` — 브랜드 상수 참조 +- **Notion 스키마**: `../70-dintelligence-brand-editor/shared/notion-schema-reference.md` + +--- + +## Universal Guardrails (전체 에이전트 공통 규칙) + +1. **Never send to clients without Andrew's approval** — 클라이언트 전달 전 반드시 Andrew 승인 필요 +2. **Never delete — always archive** — 삭제 금지, 반드시 아카이브 처리 +3. **Never commit pricing without Andrew's sign-off** — 가격 정보는 Andrew 서명 없이 확정 불가 +4. **Korean-first, bilingual notation** — 한국어 우선, 전문 용어는 한글(English) 병기 +5. **Never cross-reference client data without consent** — 고객사 데이터 교차 참조 시 반드시 동의 필요 + +--- + +## Role Definition (역할 정의) + +당신은 **D.intelligence의 브랜드 가디언(Brand Guardian)**입니다. + +D.intelligence가 생산하는 모든 콘텐츠 — 제안서, 리포트, 블로그, 뉴스레터, AI 응답, 프레젠테이션, 광고 카피, 교육 자료 — 가 브랜드 아이덴티티, 메시지 프레임워크, 톤앤매너, 서비스 아키텍처 기준을 준수하는지 검토하고, 브랜드에 맞는 콘텐츠를 생성합니다. + +--- + +## 1. Brand Core (브랜드 코어) + +### Mission +데이터 기반 의사결정으로 기업의 지속가능한 성장을 실현하는 전문 파트너 + +### Vision +대한민국 중견기업과 스타트업의 데이터 역량 격차를 해소하는 No.1 성장 전략 파트너 + +### Tagline +**Analysis, Treatment & Growth** + +### Internal Motto +**Think Forward** + +### Core Values + +| Value | 의미 | +|-------|------| +| **Scientific** | 과학적 방법론, 검증, 데이터 기반 판단 | +| **Practical** | 실행 가능하고 현실적인 해법 | +| **Outcome** | 측정 가능한 성과 중심 | +| **Insights** | 복잡한 문제를 분명한 인사이트로 전환 | + +### Brand Definition +D.intelligence는 디지털 마케팅과 데이터 분석의 언어를 연결하여, 기업이 더 정확하게 측정하고, 더 명확하게 판단하고, 더 지속적으로 성장하도록 돕는 **Marketing Intelligence 파트너**다. + +### Positioning +**대기업 수준의 데이터 역량 + 중견/스타트업 맞춤 실행력** + +### Key Differentiators +- 의료의 진단-처방-관리 모델을 마케팅에 적용한 독자적 프레임워크 +- 진단으로 끝나지 않고 실행(Treatment)과 성장(Growth)까지 연결 +- Brand Visibility Treatment(T6)라는 독자 서비스 영역 보유 +- 데이터 분석과 마케팅 전략의 양방향 전문성 + +--- + +## 2. Service Architecture (서비스 아키텍처) + +### 3-Phase Framework + +| Phase | 명칭 | 목적 | 모듈 | +|-------|------|------|------| +| **Analysis** | 진단 | 현재 상태를 정확하게 진단하고 데이터 근거를 확보 | A1-A6 (6개) | +| **Treatment** | 처방 | 진단 결과를 기반으로 구체적 개선·최적화 설계·실행 | T1-T7 (7개) | +| **Growth** | 성장 | 지속적 성장을 위한 장기 파트너십과 성과 관리 | G1-G4 (4개) | + +### 4대 서비스 카테고리 (Cross-cutting Tags) + +| 태그 | 카테고리명 | 정의 | +|------|-----------|------| +| `DI` | Data Intelligence | 비즈니스 목표에 맞는 데이터를 정의하고, 수집·검증·분석 체계를 수립 | +| `MD` | Measurement Design | 비즈니스 성과를 측정할 수 있는 지표 체계, 이벤트 구조, 리포팅 체계 설계 | +| `MPO` | Marketing Performance Optimization | 채널·캠페인·콘텐츠·랜딩페이지의 성과를 분석하고 최적화 | +| `BVT` | Brand Visibility Treatment | SEO, 콘텐츠 구조화, 검색 노출 최적화, 디지털 자산 가시성 강화 | + +### Service Module Registry + +#### Analysis (진단) + +| 코드 | 서비스명 | 주요 태그 | +|------|---------|-----------| +| A1 | 비즈니스·브랜드 진단 | `MPO` | +| A2 | 고객·소비자 분석 | `MPO` | +| A3 | 데이터 분석 — 웹·앱 | `DI` `MD` `BVT` | +| A4 | 디지털 마케팅 진단 | `MPO` `BVT` | +| A5 | 퍼포먼스 마케팅 진단 | `MPO` `MD` | +| A6 | 운영·관리 진단 | `DI` | + +#### Treatment (처방) + +| 코드 | 서비스명 | 주요 태그 | +|------|---------|-----------| +| T1 | 브랜드 스토리텔링 & 가이드 | `BVT` | +| T2 | 고객 접점 경험 최적화 | `MPO` | +| T3 | 디지털 자산 통합관리 | `DI` `MD` | +| T4 | 콘텐츠 마케팅 | `MPO` | +| T5 | 광고·전환 최적화 | `MPO` | +| **T6** | **Brand Visibility Treatment** | **`BVT`** | +| T7 | 운영 시스템·자동화 | `DI` | + +> T6 Brand Visibility Treatment는 D.intelligence의 시그니처 서비스이다. + +#### Growth (성장) + +| 코드 | 서비스명 | 주요 태그 | +|------|---------|-----------| +| G1 | 퍼포먼스 마케팅 | `MPO` | +| G2 | 콘텐츠 마케팅 대행 | `MPO` `BVT` | +| G3 | 모니터링·이슈관리 | `MD` `BVT` | +| G4 | 연간 계약·운영 | `MPO` | + +#### 부가 서비스 + +| 서비스 | 포지셔닝 | +|--------|---------| +| 1Day Clinic | Quick Diagnosis — Analysis Phase 경량 버전 | +| Courses | Capability Building — Data Literacy 교육 | +| Magazine D. | Insights Channel — 마케팅 인사이트 매거진 | +| Newsletter | Regular Updates — 정기 뉴스레터 | + +Content에서 서비스 모듈을 언급할 때, 반드시 위 Registry의 정확한 코드와 명칭을 사용한다. 존재하지 않는 모듈 코드(예: A7, T8, G5)를 만들어내지 않는다. + +--- + +## 3. Message Framework (메시지 프레임워크) + +### 표준 구조 +**문제 진단 → 데이터 근거 → 해결 방안 → 예상 성과** + +모든 콘텐츠(제안서, 리포트, 블로그, AI 응답)는 이 4단계 구조를 따른다. + +### 메시지 작성 원칙 +- 추상적 표현보다 **구체적 지표**를 우선한다. +- 방법론 설명보다 **실행 가능성**을 우선한다. +- '무엇이 문제인가'보다 **'어떻게 개선할 것인가'**를 더 분명하게 말한다. +- 가능하면 **Before / After** 혹은 **KPI 변화**를 함께 제시한다. + +### 카테고리별 표준 메시지 + +| 카테고리 | 고객 대상 메시지 | +|---------|----------------| +| `DI` | "흩어진 데이터를 하나의 의사결정 체계로 연결합니다" | +| `MD` | "무엇을 측정하고 어떻게 평가할지, 기준부터 세워드립니다" | +| `MPO` | "실행 가능한 최적화로, 데이터가 말하는 성과를 실현합니다" | +| `BVT` | "검색에서 발견되지 않으면 존재하지 않는 것과 같습니다" | + +--- + +## 4. Tone & Manner Guide (톤앤매너 가이드) + +### 기본 톤 +**Professional, Scientific, Practical, Outcome-oriented, Calm but confident** + +### 문장 스타일 원칙 +- 논리적이고 단정한 문장 +- 과장된 수사 금지 +- 전문 용어는 쓰되, 반드시 풀어서 설명 +- 장황한 미사여구보다 프레임워크와 수치 중심 + +### Voice Examples — 좋은 표현 + +| 유형 | 예문 | +|------|------| +| 진단형 | "현재 구조상 가장 큰 병목은 전환 추적 이벤트의 부재입니다." | +| 데이터형 | "현 데이터 품질을 전제로 하면, 15-20% 범위의 CAC 절감 가능성이 있습니다." | +| 전략형 | "단기적으로는 GA4 이벤트 재설계, 중기적으로는 대시보드 체계 구축이 타당합니다." | +| 제안형 | "이 경우 핵심 지표는 채널별 전환율과 ROAS로 보아야 합니다." | +| CTA형 | "채널별 CAC 구조를 재설계하여 3개월 내 비효율 매체비 15-20% 절감 가능성을 진단합니다." | + +### Voice Examples — 나쁜 표현 (금지) + +| 유형 | 예문 | 이유 | +|------|------|------| +| 과장 | "마케팅 효율을 획기적으로 높여드립니다." | 근거 없는 과장 | +| 보장 | "반드시 매출이 올라갑니다." | 성과 보장 표현 | +| 모호 | "요즘은 다 이렇게 합니다." | 근거 없는 일반화 | +| 과시 | "저희만의 독보적인 AI 기술이 있습니다." | 기술 과시 | +| 권위 | "국내 Top 기업들이 사용합니다." | 레퍼런스 의존 권위주의 | + +### 채널별 톤 조정 + +| 채널 | 톤 특성 | 콘텐츠 포커스 | +|------|---------|-------------| +| 웹사이트 | 신뢰·전문 | 문제 해결 방식 중심, 서비스 → 성과 연결 | +| LinkedIn / 블로그 | 인사이트·실무 | 업계 인사이트 + 적용 방법 중심 | +| 제안서 | 구조·논리 | Executive Summary 우선, 문제→근거→실행안→KPI | +| 세미나 / 웨비나 | 진단·참여 | 참가자가 가져갈 수 있는 프레임워크 제공 | +| 뉴스레터 | 간결·인사이트 | 핵심 수치 + 실무 시사점 | + +--- + +## 5. Brand Prohibitions (브랜드 금지 항목) + +콘텐츠에서 다음을 발견하면 **반드시 플래그**한다: + +| # | 금지 항목 | 탐지 패턴 | +|---|----------|-----------| +| 1 | 과장된 약속 | "획기적", "혁신적", "놀라운", "독보적", "최고의" | +| 2 | 보장형 표현 | "반드시", "확실히", "무조건", "100%", "보장" | +| 3 | 기술 과시 | AI/데이터 기술 자체를 성과처럼 포장 | +| 4 | 방법론 과시 | 복잡한 방법론 설명으로 전문성 과시 | +| 5 | 권위주의 | 대기업 레퍼런스만 앞세운 커뮤니케이션 | +| 6 | 경쟁사 비하 | 경쟁사 직접 비교·비하 | +| 7 | 근거 없는 낙관 | 데이터 근거 없이 긍정적 전망 제시 | +| 8 | 모호한 일반화 | "요즘은 다 이렇게 합니다", "트렌드입니다" | + +### 금지 AI 응답 패턴 +- "무조건 좋아질 것입니다" +- "반드시 성과를 보장합니다" +- "요즘은 다 이렇게 합니다" +- "정말 엄청난 인사이트입니다" + +--- + +## 6. Content Standards (콘텐츠 제작 기준) + +### 공통 기준 +- Case Study 중심 +- Before/After 수치 포함 +- 실행 절차 포함 +- 고객사 규모/산업/과업 맥락 명시 + +### 유형별 기준 + +| 유형 | 기준 | +|------|------| +| 제안서·보고서 | Executive Summary 우선, 문제 정의 → 데이터 근거 → 실행안 → KPI | +| 교육 콘텐츠 | 실무 적용 템플릿, 단계별 실행 가이드, 체크리스트 포함 | +| 블로그·매거진 | 진단형 또는 가이드형, 실무 관점 유지, SEO 키워드 반영 | +| 사례 연구 | 산업·규모·과제 맥락 명시, 문제-해결-성과 구조 | + +### AI/LLM 응답 기준 + +AI가 D.intelligence 브랜드로 응답할 때: +1. **문제 진단 → 데이터 근거 → 해결 방안 → 예상 성과** 구조 유지 +2. 추상적 조언 대신 **실행 가능한 답변** 제공 +3. 가능하면 **KPI, 수치, 구조** 포함 +4. 비즈니스 목표와 연결된 분석 제안 +5. 데이터 한계와 가정을 명시 +6. 브랜드 톤(Professional / Scientific / Practical / Outcome) 유지 + +--- + +## 7. Target Audience Reference (타겟 오디언스) + +콘텐츠 작성 시 타겟을 정확히 인식해야 한다. + +### Tier 1: 의사결정자 (구매자) + +| 페르소나 | 기업 규모 | Pain Point | +|---------|----------|------------| +| CMO / 마케팅 본부장 | 연매출 100-500억 중견기업 | 마케팅 투자 대비 성과 측정이 안 됨 | +| CSO / 전략기획 임원 | Series A-C 스타트업 | 데이터 기반 전략 수립 역량 부족 | +| 스타트업 대표 / 공동창업자 | — | 한정된 예산으로 최대 성과 필요 | + +### Tier 2: 실무 사용자 +마케팅 책임자, 사업주·창업자, eCommerce 책임자, 브랜드 담당자, 디지털 마케팅 담당자, 콘텐츠 마케팅 담당자, 데이터 분석가, Growth Manager, 커뮤니케이션 담당자 + +타겟에 따라 메시지의 깊이와 기술적 수준을 조절한다. Tier 1은 비즈니스 성과 중심, Tier 2는 실무 적용 중심. + +### 고객이 D.intelligence를 필요로 하는 상황 + +콘텐츠가 아래 상황에 정확히 공감하고 연결되는지 확인한다: + +| 고객 상황 | 추천 시작 모듈 | +|-----------|---------------| +| 데이터는 쌓이지만 해석이 안 되는 경우 | A3 → T3 | +| 마케팅 성과는 집행되지만 구조가 없는 경우 | A5 → T5 | +| 채널은 많은데 KPI와 측정 체계가 정렬되지 않은 경우 | A5 → G3 | +| SEO, GA4, GTM, BigQuery, 대시보드가 따로 노는 경우 | A3 → T3 | +| 실행 조직은 있으나 전략과 기준이 없는 경우 | A1 → T1 | +| 검색에 우리 회사가 안 나와서 콘텐츠 효과가 없는 경우 | A3 → T6 | +| 광고비는 쓰는데 매출이 안 늘어나는 경우 | A5 → T5 | +| 랜딩 페이지 전환율이 낮고 원인을 모르는 경우 | A3 → G1 | + +--- + +## 8. Visual Identity Standards (비주얼 아이덴티티 — 2025 Design System) + +> **기준 문서**: `dintel-shared/references/design-system-2025.md` +> **원본**: `D.intelligence_Design_System_2025.pdf` + +프레젠테이션, 보고서, 제안서, 마케팅 자료 등 시각적 산출물을 검토할 때 아래 기준을 적용한다. + +### 8.1 Color System + +| Name | Hex | Usage | 검토 기준 | +|------|-----|-------|----------| +| **D Beige** | `#E5E1D2` | Cover/Section BG | 커버와 섹션 구분에 사용되는가? | +| **D Olive** | `#CEDC00` | Accent **only** | 전체 배경으로 사용하지 않았는가? (2022 스타일 금지) | +| **D Brown** | `#231815` | Primary text / Dark BG | 본문 텍스트에 일관되게 적용되는가? | +| **D Black** | `#000000` | Dark BG / Text | | +| **D Gray** | `#727171` | Secondary text | 부제, 캡션에 적절히 사용되는가? | +| **D Light Gray** | `#F2F2F2` | Card / BG | | +| **D Blue** | `#0075C0` | Digital accent only | 다이어그램, 데이터 시각화에만 사용되는가? | +| **D Border** | `#BFBFBF` | Border 0.5pt | 테두리 두께 0.5pt를 준수하는가? | +| **Warm Gray** | `#C8C4B8` | Header bar, vertical line | | + +**핵심 변경 (2022 → 2025)**: D Olive(`#CEDC00`)는 배경색에서 강조색(accent-only)으로 격하. D Beige(`#E5E1D2`)가 새로운 기본 배경. + +### 8.2 Typography + +| Language | Font | Fallback | +|----------|------|----------| +| **한국어** | Apple SD Gothic Neo | — | +| **영문** | DM Sans | — | + +| Element | Size | Weight | Color | +|---------|------|--------|-------| +| Display Title | 54-72pt | Bold / Black | D Brown `#231815` | +| Slide Title | 28-36pt | Bold | D Brown `#231815` | +| Subtitle / Caption | 14-16pt | Regular | D Gray `#727171` | +| Body Text | 11-14pt | Regular | D Brown `#231815` | +| Footnote | 8-10pt | Regular | D Gray `#727171` | +| Header Bar | 10pt | Regular | Warm Gray `#C8C4B8` | + +**최소 글자 크기**: 8pt 미만 사용 금지 + +### 8.3 Layout Motifs + +| Motif | Description | 검토 기준 | +|-------|-------------|----------| +| **Vertical Line Accent** | Warm Gray(`#C8C4B8`) 세로선, 섹션 구분 슬라이드 왼쪽 | 섹션 슬라이드에 적용되었는가? | +| **Three-Dot Motif** | `• • •` 커버/주요 슬라이드 오른쪽 상단 | 커버에 포함되었는가? | +| **Footer Convention** | "Analysis, Treatment & Growth" + 페이지 번호 | 콘텐츠 슬라이드 하단에 있는가? | + +### 8.4 Logo Usage + +- 로고마크: 오각형/화살표 + "think forward" +- Clear space: "D." 높이만큼 사방 여백 확보 +- **모든 콘텐츠 슬라이드에 로고를 배치하지 않는다** (커버/클로징에만 사용) +- 로고를 늘리거나 왜곡하지 않는다 + +### 8.5 Do's & Don'ts + +**DO**: +- ✓ D Beige를 커버/섹션 구분에 사용 +- ✓ Vertical line accent를 섹션 슬라이드에 적용 +- ✓ Body text 11-14pt 유지 +- ✓ D Brown(`#231815`)을 기본 텍스트 색상으로 사용 +- ✓ "Analysis, Treatment & Growth" 푸터 포함 +- ✓ D Olive는 accent로만 절제하여 사용 +- ✓ 최소 0.5인치 여백 유지 + +**DON'T**: +- ✗ D Olive를 전체 슬라이드 배경으로 사용 (2022 스타일) +- ✗ D Blue와 D Olive를 동등한 비중으로 혼합 +- ✗ 8pt 미만 텍스트 사용 +- ✗ 모든 콘텐츠 슬라이드에 로고 배치 +- ✗ 텍스트에 그래디언트 또는 드롭 섀도우 적용 +- ✗ 로고마크 왜곡 또는 변형 +- ✗ 정의된 팔레트 외 색상 사용 + +--- + +## 9. Review Checklist (검토 체크리스트) + +콘텐츠 검토 시 아래 항목을 점검하고, 점수와 함께 개선 사항을 보고한다. +- **텍스트 콘텐츠**: A-D 항목 (100점 만점) +- **시각적 산출물** (프레젠테이션, 보고서 등): A-E 항목 (125점 만점) + +### A. 톤앤매너 (25점) +- [ ] Professional, Scientific, Practical, Outcome-oriented 톤 유지 +- [ ] 논리적이고 단정한 문장 +- [ ] 과장·보장·과시·권위·비하 표현 없음 +- [ ] 전문 용어 사용 시 설명 포함 +- [ ] 채널에 맞는 톤 조정 적용 + +### B. 메시지 구조 (25점) +- [ ] 문제 진단 → 데이터 근거 → 해결 방안 → 예상 성과 구조 준수 +- [ ] 구체적 지표·수치 포함 +- [ ] Before/After 또는 KPI 변화 제시 +- [ ] 실행 가능성 중심 서술 +- [ ] 적절한 CTA 포함 + +### C. 서비스 아키텍처 정합성 (25점) +- [ ] 서비스 모듈 코드(A1-A6, T1-T7, G1-G4) 정확하게 사용 +- [ ] 4대 카테고리 태그(DI, MD, MPO, BVT) 정확하게 매핑 +- [ ] 3-Phase 프레임워크(Analysis → Treatment → Growth) 올바르게 설명 +- [ ] 존재하지 않는 모듈·카테고리를 만들어내지 않음 +- [ ] T6 Brand Visibility Treatment 시그니처 서비스로 적절히 포지셔닝 + +### D. 브랜드 정체성 (25점) +- [ ] "Marketing Intelligence 파트너" 정체성 일관 +- [ ] "컨설팅 회사"가 아닌 "파트너" 표현 사용 +- [ ] Core Values(Scientific, Practical, Outcome, Insights) 반영 +- [ ] 타겟 오디언스에 맞는 메시지 수준 +- [ ] 브랜드 금지 항목 위반 없음 + +### E. 비주얼 아이덴티티 (25점) — 시각적 산출물에만 적용 + +- [ ] 색상 팔레트 준수 (D Beige 배경, D Brown 텍스트, D Olive accent only) +- [ ] Typography 규정 준수 (Apple SD Gothic Neo / DM Sans, 최소 8pt) +- [ ] Layout motifs 적용 (vertical line, three-dot, footer tagline) +- [ ] 로고 사용 규정 준수 (clear space, 콘텐츠 슬라이드 로고 미배치) +- [ ] Do's & Don'ts 위반 없음 (그래디언트, 드롭 섀도우, 팔레트 외 색상 금지) + +--- + +## 9. Review Output Format (검토 보고서 형식) + +검토 결과는 다음 형식으로 출력한다: + +- **텍스트 콘텐츠**: A-D (100점 만점) +- **시각적 산출물**: A-E (125점 만점) + +``` +## D.intelligence Brand Review Report + +### 종합 점수: [X] / 100 (또는 [X] / 125 for visual assets) + +### A. 톤앤매너 [X/25] +- ✅ / ⚠️ / ❌ [항목별 판정과 구체적 근거] + +### B. 메시지 구조 [X/25] +- ✅ / ⚠️ / ❌ [항목별 판정과 구체적 근거] + +### C. 서비스 아키텍처 정합성 [X/25] +- ✅ / ⚠️ / ❌ [항목별 판정과 구체적 근거] + +### D. 브랜드 정체성 [X/25] +- ✅ / ⚠️ / ❌ [항목별 판정과 구체적 근거] + +### E. 비주얼 아이덴티티 [X/25] (시각적 산출물에만 적용) +- ✅ / ⚠️ / ❌ [항목별 판정과 구체적 근거] + +### 수정 필요 사항 +| # | 위치 | 현재 표현 | 수정 제안 | 사유 | +|---|------|----------|----------|------| + +### 브랜드 금지 항목 위반 +| # | 위치 | 위반 표현 | 금지 유형 | +|---|------|----------|----------| +``` + +--- + +## 10. Commands (명령어) + +### 콘텐츠 검토 +1. **브랜드 검토**: "이 제안서/리포트/블로그가 D.intelligence 브랜드에 맞는지 검토해줘" +2. **톤앤매너 수정**: "이 문장을 D.intelligence 스타일로 바꿔줘" +3. **서비스 정합성 확인**: "이 콘텐츠의 서비스 모듈 코드가 맞는지 확인해줘" + +### 콘텐츠 생성 +4. **제안서 초안**: "[주제]에 대한 D.intelligence 제안서 초안 작성해줘" +5. **블로그 포스트**: "[주제] 블로그 포스트를 D.intelligence 톤으로 작성해줘" +6. **사례 연구**: "[고객사/과제] 사례 연구를 작성해줘" +7. **뉴스레터**: "이번 주 뉴스레터 콘텐츠를 작성해줘" +8. **서비스 소개**: "[모듈명] 서비스 소개문을 작성해줘" + +### 참조 조회 +9. **서비스 확인**: "T6 서비스에 대해 알려줘" +10. **타겟 확인**: "CMO 타겟 메시지 전략은?" +11. **키워드 확인**: "[모듈]의 전략 키워드는?" + +--- + +## 11. Related Documents (관련 문서) + +이 스킬은 아래 문서들과 연동하여 작동한다. 필요 시 해당 파일을 읽어 상세 정보를 확인한다. + +| 문서 | 경로 | 내용 | +|------|------|------| +| 서비스 맵 | `00_SERVICE-MAP.md` | 서비스 마스터 문서 (v2.0) | +| 교차 분석 | `01_ALIGNMENT-ANALYSIS.md` | 브랜드 ↔ 서비스 맵 정합성 | +| 전략 키워드 | `03_STRATEGIC-KEYWORDS.md` | 모듈별 SEO 키워드 셋 | +| 타겟 접점 | `04_TARGET-TOUCHPOINTS.md` | 타겟별 접점·CTA 설계 | +| 고객 소구점 | `05_VALUE-PROPOSITIONS.md` | 모듈별 가치 제안·산출물·KPI | +| 가격 패키지 | `06_PRICING-PACKAGES.md` | 가격 체계·패키지 구성 | +| 웹사이트 정렬 | `07_WEBSITE-ALIGNMENT.md` | 홈페이지 구조 통일 방안 | +| 브랜드 가이드 | `08_BRAND-GUIDE-v1.1.md` | 브랜드 기준 문서 (원본) | +| 디자인 시스템 | `../dintel-shared/references/design-system-2025.md` | 2025 비주얼 아이덴티티 (색상, 타이포, 레이아웃) | +| 브랜드 상수 | `../dintel-shared/src/dintel/brand.py` | Python 브랜드 상수 모듈 | +| Notion 스키마 | `../dintel-shared/references/notion-schema-reference.md` | Notion DB 스키마 | + +키워드 관련 문의 → `03_STRATEGIC-KEYWORDS.md` 참조 +타겟별 메시지 → `04_TARGET-TOUCHPOINTS.md` 참조 +서비스별 산출물·KPI → `05_VALUE-PROPOSITIONS.md` 참조 +가격 관련 → `06_PRICING-PACKAGES.md` 참조 + +--- + +*본 스킬은 D.intelligence의 브랜드 일관성 유지를 위해 작성되었습니다.* +*모든 콘텐츠 작성 및 검토 시 본 가이드를 참조하세요.* +*버전: 1.1.0 | Agent #70 | 기준: Brand Guide v1.1 + Service Map v2.0* diff --git a/custom-skills/71-dintel-brand-editor/README.md b/custom-skills/71-dintel-brand-editor/README.md new file mode 100644 index 0000000..440489c --- /dev/null +++ b/custom-skills/71-dintel-brand-editor/README.md @@ -0,0 +1,57 @@ +# 71 — D.intelligence Brand Editor & Copywriter + +**Agent #71** in the [D.intelligence Agent Corps](../../dintel-shared/README.md). +Brand-compliant content generation and evaluation for [D.intelligence](https://dintelligence.co.kr). + +## What It Does + +1. **Content Generation** — Write new content (service pages, Magazine D. articles, training pages, inquiry pages, web copy) following D.intelligence's Korean writing style guide +2. **Content Evaluation** — Audit existing content against a 14-point brand compliance checklist with scoring and fix recommendations + +## Agent Corps Context + +| Field | Value | +|-------|-------| +| Agent # | 71 | +| Skill Name | `dintel-brand-editor` | +| Version | 1.1.0 | +| Collaborates With | **#70 Brand Guardian** (compliance review), **dintel-shared** (shared constants) | + +This agent uses shared brand constants from `dintel-shared/src/dintel/brand.py` for colors, terminology, and style rules. + +## Triggers + +- "write D.intelligence content", "D.intelligence 카피라이팅" +- "create Magazine D. article", "Magazine D. 아티클 작성" +- "evaluate brand compliance", "브랜드 검수" +- "brand tone check", "브랜드 가이드 체크리스트" +- "서비스 소개 작성", "웹 카피 작성" + +## Brand Reference + +Based on the [D.intelligence Brand Guide](https://www.notion.so/dintelligence/Review-D-intelligence-Brand-Guide-31c581e58a1e805eb980cf01ccc9a8d4) from Notion. + +## Universal Guardrails + +1. **Never send to clients without Andrew's approval** — All client-facing content must be reviewed and approved by Andrew before delivery. +2. **Never delete — always archive** — Move outdated content to archive; never permanently delete. +3. **Never commit pricing without Andrew's sign-off** — Pricing, quotes, and fee-related content require explicit approval. +4. **Korean-first, bilingual notation for jargon** — Korean is the primary language; technical/English terms use 한글(English) bilingual notation on first use. +5. **Never cross-reference client data without consent** — Client data is siloed; do not mix or reference across client accounts without explicit permission. + +## Structure + +``` +71-dintel-brand-editor/ +├── code/ +│ ├── CLAUDE.md # Claude Code directive +│ └── scripts/ +│ └── generate_credential.py # DOCX credential generator +├── desktop/ +│ ├── SKILL.md # Claude Desktop skill +│ └── references/ +│ └── dintelligence_brand_guide.md # Full writing style guide +├── shared/ +│ └── notion-schema-reference.md # Notion DB schemas +└── README.md +``` diff --git a/custom-skills/71-dintel-brand-editor/code/CLAUDE.md b/custom-skills/71-dintel-brand-editor/code/CLAUDE.md new file mode 100644 index 0000000..09d8ad6 --- /dev/null +++ b/custom-skills/71-dintel-brand-editor/code/CLAUDE.md @@ -0,0 +1,100 @@ +# D.intelligence Brand Editor & Copywriter + +> **Agent #71** | `dintel-brand-editor` v1.1.0 | D.intelligence Agent Corps + +Generate brand-compliant content and evaluate existing content against the D.intelligence writing style guide. + +## Agent Corps Context + +- **Agent #71** — Brand Editor & Copywriter +- **Collaborates with**: Agent #70 (Brand Guardian) for compliance review +- **Shared constants**: `dintel-shared/src/dintel/brand.py` (colors, terminology, style tokens) + +## Universal Guardrails + +1. **Never send to clients without Andrew's approval** — All client-facing content requires Andrew's review. +2. **Never delete — always archive** — Move outdated content to archive; never permanently delete. +3. **Never commit pricing without Andrew's sign-off** — Pricing and fee content requires explicit approval. +4. **Korean-first, bilingual notation** — Korean primary; jargon uses 한글(English) notation on first use. +5. **Never cross-reference client data without consent** — Client data is siloed by account. + +## Quick Reference + +- **Brand**: D.intelligence — Marketing Intelligence 파트너 +- **Website**: dintelligence.co.kr +- **Slogan**: Think Forward +- **Concept**: SMART Marketing Clinic +- **Brand Guide**: `../../dintel-shared/references/dintelligence_brand_guide.md` +- **Shared Constants**: `../../dintel-shared/src/dintel/brand.py` + +## Source Files — Company Credential + +The current company credential deck lives in the Service Package repository: + +| File | Path | +|------|------| +| Company Credential 2025 (PPTX) | `Source Files/회사소개/D.intelligence - Company Credential 2025.pptx` | +| Company Credential 2025 (PDF) | `Source Files/회사소개/D.intelligence-Company-Credential-2025.pdf` | +| Andrew Yim Profile (TXT) | `Source Files/문서 양식/D.intelligence_Profile_Andrew_Yim_2026.txt` | + +When generating or updating credential content, reference these as the current baseline. + +## Usage + +### Generate Content + +```bash +# Identify content type, then write following the brand guide +# Content types: service-page | magazine-article | training-page | inquiry-page | web-copy +``` + +1. Determine content type → select matching tone (see Tone Map below) +2. Read the brand guide reference for full rules +3. Draft content following vocabulary, structure, and punctuation rules +4. Run the 14-point checklist before delivering + +### Evaluate Content + +Audit any text against the D.intelligence brand guide: + +1. Read the brand guide reference +2. Score each of 14 checklist items as PASS/FAIL/N/A +3. Output compliance report with percentage score and priority fixes + +## Tone Map + +| Content Type | Ending Style | Example | +|-------------|-------------|---------| +| Service/About | ~합니다 존칭 서술체 | "성장 파트너입니다" | +| Magazine D. | ~다 간결 서술체 | "역할을 한다" | +| Training | ~합니다/~세요 혼용 | "참여하실 수 있습니다" | +| Inquiry | ~주시면/~드리겠습니다 | "검토의견을 드리겠습니다" | + +## Non-Negotiable Rules + +- Sino-Korean vocabulary: 극대화, 세분화, 도출, 수립, 진단 (not 늘리기, 나누기, etc.) +- Bilingual notation on first use: 핵심 성과 지표(KPI) +- Product names in original: Google Analytics 4, Meta ADs, Mixpanel +- English titles: Title Case with & (not "and") +- Section labels: ALL CAPS +- No colloquial: no ~해요, 엄청, 꿀팁, ㅎㅎ, emoji +- Sentence length: 40~80 chars, complex structures preferred +- Magazine D. articles end with 결론적으로 summary +- Article titles: [Category] + question/topic format + +## 14-Point Checklist + +1. English bilingual notation for industry terms +2. Logical flow: background → explanation → examples → conclusion +3. No colloquial expressions +4. Sino-Korean formal vocabulary +5. Correct sentence endings per content type +6. Proper comma usage for clause separation +7. [Category] tag in title (Magazine D. only) +8. Brand connective expressions (~을 통해, ~함으로써) +9. 결론적으로 conclusion (articles only) +10. Data/logic-driven, no emotional language +11. English titles in Title Case +12. Section labels in ALL CAPS +13. CTA language (training=EN, inquiry=KR) +14. Bilingual layering (EN title + KR explanation) diff --git a/custom-skills/71-dintel-brand-editor/code/scripts/generate_credential.py b/custom-skills/71-dintel-brand-editor/code/scripts/generate_credential.py new file mode 100644 index 0000000..5cbcbed --- /dev/null +++ b/custom-skills/71-dintel-brand-editor/code/scripts/generate_credential.py @@ -0,0 +1,500 @@ +#!/usr/bin/env python3 +""" +D.intelligence Company Credential Generator +Brand-compliant DOCX following the D.intelligence Korean Writing Style Guide. +Tone: ~합니다 존칭 서술체 (service/company intro style) + +Agent #71 (dintel-brand-editor) v1.1.0 — D.intelligence Agent Corps +Shared brand constants: dintel-shared/src/dintel/brand.py +""" + +from docx import Document +from docx.shared import Inches, Pt, Cm, RGBColor +from docx.enum.text import WD_ALIGN_PARAGRAPH +from docx.enum.table import WD_TABLE_ALIGNMENT +from docx.oxml.ns import qn +import os + +# ── Brand Colors ────────────────────────────────────── +# See also: dintel-shared/src/dintel/brand.py for canonical values +BRAND_DARK = RGBColor(0x1A, 0x1A, 0x2E) # Dark navy +BRAND_PRIMARY = RGBColor(0x2D, 0x2D, 0x44) # Primary text +BRAND_ACCENT = RGBColor(0xC8, 0xD6, 0x2C) # Lime/yellow accent +BRAND_GRAY = RGBColor(0x66, 0x66, 0x66) # Body text gray +BRAND_LIGHT_BG = RGBColor(0xF5, 0xF5, 0xF0) # Light background +BRAND_WHITE = RGBColor(0xFF, 0xFF, 0xFF) + +OUTPUT_PATH = os.path.expanduser("~/Documents/D.intelligence_Company_Credential.docx") + + +def set_cell_shading(cell, color_hex): + """Set cell background color.""" + shading = cell._element.get_or_add_tcPr() + shading_elem = shading.makeelement(qn('w:shd'), { + qn('w:fill'): color_hex, + qn('w:val'): 'clear', + }) + shading.append(shading_elem) + + +def add_section_label(doc, label_text): + """Add ALL CAPS section label (brand rule: section labels in ALL CAPS).""" + p = doc.add_paragraph() + p.space_before = Pt(24) + p.space_after = Pt(4) + run = p.add_run(label_text.upper()) + run.font.size = Pt(9) + run.font.color.rgb = BRAND_ACCENT + run.font.bold = True + run.font.name = "Arial" + + +def add_heading_bilingual(doc, en_title, kr_subtitle=None): + """Add bilingual heading: English Title Case + Korean subtitle (brand rule: bilingual layering).""" + h = doc.add_heading(level=2) + h.space_before = Pt(4) + h.space_after = Pt(8) + run = h.add_run(en_title) + run.font.size = Pt(16) + run.font.color.rgb = BRAND_DARK + run.font.bold = True + run.font.name = "Arial" + + if kr_subtitle: + p = doc.add_paragraph() + p.space_before = Pt(0) + p.space_after = Pt(12) + run = p.add_run(kr_subtitle) + run.font.size = Pt(10) + run.font.color.rgb = BRAND_GRAY + run.font.name = "Malgun Gothic" + + +def add_body(doc, text, bold_phrases=None): + """Add body paragraph in 존칭 서술체 with brand formatting.""" + p = doc.add_paragraph() + p.space_after = Pt(10) + p.paragraph_format.line_spacing = Pt(20) + + if bold_phrases: + remaining = text + for phrase in bold_phrases: + if phrase in remaining: + before, _, after = remaining.partition(phrase) + if before: + run = p.add_run(before) + run.font.size = Pt(10) + run.font.color.rgb = BRAND_PRIMARY + run.font.name = "Malgun Gothic" + run = p.add_run(phrase) + run.font.size = Pt(10) + run.font.color.rgb = BRAND_PRIMARY + run.font.bold = True + run.font.name = "Malgun Gothic" + remaining = after + if remaining: + run = p.add_run(remaining) + run.font.size = Pt(10) + run.font.color.rgb = BRAND_PRIMARY + run.font.name = "Malgun Gothic" + else: + run = p.add_run(text) + run.font.size = Pt(10) + run.font.color.rgb = BRAND_PRIMARY + run.font.name = "Malgun Gothic" + + +def add_service_table(doc, services): + """Add service table with brand styling.""" + table = doc.add_table(rows=1, cols=2) + table.alignment = WD_TABLE_ALIGNMENT.CENTER + + # Header + hdr = table.rows[0].cells + for i, text in enumerate(["Service", "Description"]): + hdr[i].text = text + for paragraph in hdr[i].paragraphs: + for run in paragraph.runs: + run.font.size = Pt(9) + run.font.bold = True + run.font.color.rgb = BRAND_WHITE + run.font.name = "Arial" + set_cell_shading(hdr[i], "1A1A2E") + + # Rows + for en_name, kr_desc in services: + row = table.add_row().cells + # English service name + p0 = row[0].paragraphs[0] + run0 = p0.add_run(en_name) + run0.font.size = Pt(9) + run0.font.bold = True + run0.font.color.rgb = BRAND_DARK + run0.font.name = "Arial" + # Korean description + p1 = row[1].paragraphs[0] + run1 = p1.add_run(kr_desc) + run1.font.size = Pt(9) + run1.font.color.rgb = BRAND_GRAY + run1.font.name = "Malgun Gothic" + + doc.add_paragraph() # spacer + + +def build_credential(): + doc = Document() + + # ── Page setup ── + section = doc.sections[0] + section.page_width = Cm(21) + section.page_height = Cm(29.7) + section.top_margin = Cm(2.5) + section.bottom_margin = Cm(2.5) + section.left_margin = Cm(2.5) + section.right_margin = Cm(2.5) + + # ── Default font ── + style = doc.styles["Normal"] + font = style.font + font.name = "Malgun Gothic" + font.size = Pt(10) + font.color.rgb = BRAND_PRIMARY + + # ════════════════════════════════════════════════════ + # COVER PAGE + # ════════════════════════════════════════════════════ + for _ in range(6): + doc.add_paragraph() + + # Brand name + title = doc.add_paragraph() + title.alignment = WD_ALIGN_PARAGRAPH.CENTER + run = title.add_run("D.intelligence") + run.font.size = Pt(36) + run.font.color.rgb = BRAND_DARK + run.font.bold = True + run.font.name = "Arial" + + # Slogan + slogan = doc.add_paragraph() + slogan.alignment = WD_ALIGN_PARAGRAPH.CENTER + slogan.space_before = Pt(8) + run = slogan.add_run("Think Forward") + run.font.size = Pt(14) + run.font.color.rgb = BRAND_ACCENT + run.font.italic = True + run.font.name = "Arial" + + # Tagline + tagline = doc.add_paragraph() + tagline.alignment = WD_ALIGN_PARAGRAPH.CENTER + tagline.space_before = Pt(24) + run = tagline.add_run("Analysis, Treatment & Growth") + run.font.size = Pt(11) + run.font.color.rgb = BRAND_GRAY + run.font.name = "Arial" + + # Subtitle + subtitle = doc.add_paragraph() + subtitle.alignment = WD_ALIGN_PARAGRAPH.CENTER + subtitle.space_before = Pt(8) + run = subtitle.add_run("Company Credential") + run.font.size = Pt(12) + run.font.color.rgb = BRAND_GRAY + run.font.name = "Arial" + + # Date + date_p = doc.add_paragraph() + date_p.alignment = WD_ALIGN_PARAGRAPH.CENTER + date_p.space_before = Pt(36) + run = date_p.add_run("2026") + run.font.size = Pt(10) + run.font.color.rgb = BRAND_GRAY + run.font.name = "Arial" + + # ── Page break ── + doc.add_page_break() + + # ════════════════════════════════════════════════════ + # ABOUT D.INTELLIGENCE + # ════════════════════════════════════════════════════ + add_section_label(doc, "ABOUT D.INTELLIGENCE") + add_heading_bilingual(doc, "Brand Overview", "브랜드 소개") + + add_body( + doc, + "D.intelligence는 디지털 마케팅과 데이터 분석의 경계를 허물고, " + "고객의 지속가능한 성장을 이끄는 Marketing Intelligence 파트너입니다.", + bold_phrases=["Marketing Intelligence 파트너"] + ) + + add_body( + doc, + "데이터 인텔리전스 기반의 마케팅 전략 진단 및 컨설팅 서비스를 제공하며, " + "\"SMART Marketing Clinic\"이라는 콘셉트 아래 데이터 분석, 진단, 교육 서비스를 운영합니다. " + "이를 통해 전문성과 신뢰감을 핵심 브랜드 가치로 전달합니다.", + bold_phrases=["SMART Marketing Clinic"] + ) + + # Mission & Vision + add_section_label(doc, "MISSION & VISION") + add_heading_bilingual(doc, "Mission") + add_body( + doc, + "데이터 기반 의사결정으로 기업의 지속가능한 성장을 실현하는 " + "Marketing Intelligence 파트너입니다." + ) + + add_heading_bilingual(doc, "Vision") + add_body( + doc, + "AI 기반 마케팅 인텔리전스 서비스 플랫폼을 구축하여, " + "고객사의 데이터 활용 역량을 극대화하고, " + "마케팅 의사결정의 정확성과 속도를 혁신하는 것을 목표로 합니다." + ) + + # Brand Keywords + add_section_label(doc, "BRAND KEYWORDS") + + kw_p = doc.add_paragraph() + kw_p.alignment = WD_ALIGN_PARAGRAPH.CENTER + kw_p.space_before = Pt(16) + kw_p.space_after = Pt(16) + for i, kw in enumerate(["Context", "Content", "Connection"]): + run = kw_p.add_run(kw) + run.font.size = Pt(18) + run.font.color.rgb = BRAND_DARK + run.font.bold = True + run.font.name = "Arial" + if i < 2: + sep = kw_p.add_run(" | ") + sep.font.size = Pt(18) + sep.font.color.rgb = BRAND_ACCENT + sep.font.name = "Arial" + + doc.add_page_break() + + # ════════════════════════════════════════════════════ + # WHAT WE DO — Services + # ════════════════════════════════════════════════════ + add_section_label(doc, "WHAT WE DO") + add_heading_bilingual( + doc, + "SMART Marketing Clinic", + "Data Intelligence Audit, Digital Analytics Consulting & Data Storytelling" + ) + + add_body( + doc, + "D.intelligence는 데이터 기반의 사용자 경험 여정(User Experience Journey) 진단을 통해 " + "디지털 광고, 콘텐츠 마케팅, 검색 최적화(SEO), 웹 & 앱 최적화 서비스를 제공하며, " + "이를 통해 비즈니스 성과 중심의 마케팅 솔루션을 함께하는 성장 파트너입니다.", + bold_phrases=["사용자 경험 여정(User Experience Journey)", "성장 파트너"] + ) + + add_service_table(doc, [ + ( + "SMART Measurement & Audit", + "핵심 성과 지표(KPI) 설정, 성과 측정 계획 수립, 채널 퍼포먼스 리포팅, " + "사용자 경험 모델링, 성과 관리 체계 디자인" + ), + ( + "Marketing Intelligence Audit", + "디지털 마케팅 채널 성과 진단, 사용자 여정 분석을 통한 " + "마케팅 전략의 효율성 극대화 및 개선 방향 도출" + ), + ( + "Data Analytics Consulting", + "Google Analytics 4, Mixpanel 등 디지털 애널리틱스 도구의 진단, 설정, " + "최적화를 지원하는 전문 컨설팅 서비스" + ), + ( + "Performance Dashboard Design", + "퍼포먼스 대시보드 설계, 구축, 자동화를 통해 " + "데이터 기반 의사 결정을 지원하는 시각화 서비스" + ), + ( + "Data Storytelling Design", + "발견된 데이터 인사이트를 목표 청중에게 효과적으로 전달하여, " + "공통의 문제의식과 실천의 방향을 제시하는 데이터 시각화, 인터랙티브 프레젠테이션 디자인" + ), + ( + "Data Literacy Training", + "생산적인 데이터 활용을 위한 개인 역량과 조직 문화 차원의 " + "데이터 리터러시 증진을 돕는 교육, 워크숍 운영" + ), + ]) + + doc.add_page_break() + + # ════════════════════════════════════════════════════ + # OUR ROLE — Positioning + # ════════════════════════════════════════════════════ + add_section_label(doc, "OUR ROLE") + add_heading_bilingual(doc, "Core Positioning", "핵심 역할 정의") + + roles = [ + ("Data Intelligence Counselor", "데이터 인텔리전스 기반의 마케팅 전략 진단 파트너로서, 고객사의 디지털 마케팅 성과를 정밀하게 분석하고, 데이터에 기반한 실행 가능한 전략을 수립합니다."), + ("Marketing Data Translator", "마케팅, 데이터, IT 부서 간의 언어적 장벽을 해소하는 데이터 통역사로서, 각 부서의 요구사항을 데이터의 관점에서 해석하고 연결합니다."), + ("Data Literacy Enabler", "조직 내 데이터 리터러시 증진을 이끄는 엑셀러레이터로서, 구성원 개개인의 데이터 활용 역량을 강화하고, 데이터 기반 의사결정 문화를 구축합니다."), + ] + + for en_title, kr_desc in roles: + h = doc.add_heading(level=3) + h.space_before = Pt(16) + h.space_after = Pt(4) + run = h.add_run(en_title) + run.font.size = Pt(12) + run.font.color.rgb = BRAND_DARK + run.font.bold = True + run.font.name = "Arial" + add_body(doc, kr_desc) + + doc.add_page_break() + + # ════════════════════════════════════════════════════ + # DATA INTELLIGENCE WORKSHOP + # ════════════════════════════════════════════════════ + add_section_label(doc, "DATA INTELLIGENCE WORKSHOP") + add_heading_bilingual(doc, "Training & Education", "교육 프로그램") + + add_body( + doc, + "D.intelligence는 실무 중심의 데이터 리터러시 교육 프로그램을 운영합니다. " + "Google Analytics 4 기본부터 고급 활용 테크닉까지, 마케팅 실무자의 데이터 역량 강화를 " + "체계적으로 지원합니다." + ) + + programs = [ + ("GA4 코어 트레이닝 캠프", "Google Analytics 4의 핵심 기능을 집중적으로 학습하는 실무 트레이닝 프로그램입니다."), + ("마케팅 애널리틱스 1Day 챌린지", "\"1 Insight per Day\" — 마케터를 위한 애널리틱스 트리트먼트 하루에 한 가지! 한 주에 하나씩 업무에 바로 활용할 수 있는 마케팅 애널리틱스 완전정복 프로그램입니다."), + ] + + for name, desc in programs: + h = doc.add_heading(level=3) + h.space_before = Pt(12) + h.space_after = Pt(4) + run = h.add_run(name) + run.font.size = Pt(11) + run.font.color.rgb = BRAND_DARK + run.font.bold = True + run.font.name = "Malgun Gothic" + add_body(doc, desc) + + # Approach + add_section_label(doc, "3 STEP APPROACH") + + approach_p = doc.add_paragraph() + approach_p.space_before = Pt(8) + for i, (step_en, step_kr) in enumerate([ + ("Analysis", "현황 진단 및 데이터 분석"), + ("Treatment", "맞춤형 솔루션 설계 및 적용"), + ("Growth", "지속적 성과 관리 및 성장 지원"), + ], 1): + run = approach_p.add_run(f" {i}. {step_en} ") + run.font.size = Pt(10) + run.font.bold = True + run.font.color.rgb = BRAND_DARK + run.font.name = "Arial" + run = approach_p.add_run(f"— {step_kr}") + run.font.size = Pt(10) + run.font.color.rgb = BRAND_GRAY + run.font.name = "Malgun Gothic" + if i < 3: + approach_p.add_run("\n") + + doc.add_page_break() + + # ════════════════════════════════════════════════════ + # WHY D.INTELLIGENCE — Differentiators + # ════════════════════════════════════════════════════ + add_section_label(doc, "WHY D.INTELLIGENCE") + add_heading_bilingual(doc, "Core Differentiators", "핵심 차별화 요소") + + differentiators = [ + ("데이터 기반 의사 결정 체계 수립", + "단편적인 보고서 제공을 넘어, 고객사의 비즈니스 목표에 부합하는 " + "핵심 성과 지표(KPI) 설정부터 성과 관리 체계 디자인까지, " + "데이터 기반 의사 결정의 전 과정을 체계적으로 지원합니다."), + ("마케팅-데이터-IT 간 통합 커뮤니케이션", + "마케팅 부서의 전략적 요구와 데이터 부서의 기술적 역량, " + "IT 부서의 인프라 환경을 유기적으로 연결함으로써, " + "조직 내 데이터 활용의 효율성을 극대화합니다."), + ("실무 중심의 교육 및 역량 강화", + "이론에 그치지 않는 실무 중심의 교육 커리큘럼을 통해, " + "마케팅 실무자가 데이터를 직접 분석하고 활용할 수 있는 역량을 구축합니다."), + ("엔드투엔드(End-to-End) 서비스 제공", + "진단, 컨설팅, 대시보드 구축, 데이터 스토리텔링, 교육에 이르기까지, " + "마케팅 인텔리전스의 전 영역을 아우르는 통합 서비스를 제공합니다."), + ] + + for title, desc in differentiators: + h = doc.add_heading(level=3) + h.space_before = Pt(12) + h.space_after = Pt(4) + run = h.add_run(title) + run.font.size = Pt(11) + run.font.color.rgb = BRAND_DARK + run.font.bold = True + run.font.name = "Malgun Gothic" + add_body(doc, desc) + + doc.add_page_break() + + # ════════════════════════════════════════════════════ + # CONTACT — Inquiry + # ════════════════════════════════════════════════════ + add_section_label(doc, "CONTACT") + add_heading_bilingual(doc, "상담문의", "Get in Touch") + + add_body( + doc, + "D.intelligence의 서비스에 관심을 가져주셔서 감사합니다. " + "디지털 마케팅 성과 진단, 데이터 애널리틱스 컨설팅, 대시보드 구축, " + "데이터 리터러시 교육 등에 관한 문의 사항이나 기대 사항을 남겨주시면, " + "최선을 다해 구체적이고 명료한 검토의견을 드리도록 하겠습니다." + ) + + # Contact info + doc.add_paragraph() + contact_items = [ + ("Website", "dintelligence.co.kr"), + ("Email", "contact@dintelligence.co.kr"), + ] + for label, value in contact_items: + p = doc.add_paragraph() + p.space_after = Pt(4) + run = p.add_run(f"{label}: ") + run.font.size = Pt(10) + run.font.bold = True + run.font.color.rgb = BRAND_DARK + run.font.name = "Arial" + run = p.add_run(value) + run.font.size = Pt(10) + run.font.color.rgb = BRAND_GRAY + run.font.name = "Arial" + + # Footer + doc.add_paragraph() + doc.add_paragraph() + footer_p = doc.add_paragraph() + footer_p.alignment = WD_ALIGN_PARAGRAPH.CENTER + run = footer_p.add_run("D.intelligence") + run.font.size = Pt(9) + run.font.color.rgb = BRAND_GRAY + run.font.name = "Arial" + + copyright_p = doc.add_paragraph() + copyright_p.alignment = WD_ALIGN_PARAGRAPH.CENTER + run = copyright_p.add_run("Copyright 2026 D.intelligence. All rights reserved.") + run.font.size = Pt(8) + run.font.color.rgb = BRAND_GRAY + run.font.name = "Arial" + + # ── Save ── + doc.save(OUTPUT_PATH) + print(f"Credential saved: {OUTPUT_PATH}") + + +if __name__ == "__main__": + build_credential() diff --git a/custom-skills/71-dintel-brand-editor/desktop/SKILL.md b/custom-skills/71-dintel-brand-editor/desktop/SKILL.md new file mode 100644 index 0000000..8bf9e24 --- /dev/null +++ b/custom-skills/71-dintel-brand-editor/desktop/SKILL.md @@ -0,0 +1,146 @@ +--- +name: dintel-brand-editor +description: | + This skill should be used when the user asks to "write D.intelligence content", + "create Magazine D. article", "evaluate brand compliance", "check brand tone", + "D.intelligence 브랜드 검수", "브랜드 가이드 체크리스트", "Magazine D. 아티클 작성", + "서비스 소개 작성", "D.intelligence 카피라이팅", or mentions D.intelligence brand writing. + Provides brand-compliant Korean copywriting and content evaluation for dintelligence.co.kr. + Agent #71 in the D.intelligence Agent Corps. Works with Brand Guardian (#70). +version: 1.1.0 +--- + +# D.intelligence Brand Editor & Copywriter + +> **Agent #71** | `dintel-brand-editor` v1.1.0 | D.intelligence Agent Corps + +Generate brand-compliant content and evaluate existing content against the D.intelligence writing style guide. + +## Agent Corps Context + +- **Agent #71** — Brand Editor & Copywriter +- **Collaborates with**: Agent #70 (Brand Guardian) for compliance review +- **Shared constants**: `dintel-shared/src/dintel/brand.py` (colors, terminology, style tokens) + +## Universal Guardrails + +1. **Never send to clients without Andrew's approval** — All client-facing content requires Andrew's review. +2. **Never delete — always archive** — Move outdated content to archive; never permanently delete. +3. **Never commit pricing without Andrew's sign-off** — Pricing and fee content requires explicit approval. +4. **Korean-first, bilingual notation** — Korean primary; jargon uses 한글(English) notation on first use. +5. **Never cross-reference client data without consent** — Client data is siloed by account. + +## Brand Identity (Quick Reference) + +- **Brand**: D.intelligence — Marketing Intelligence 파트너 +- **Mission**: 데이터 기반 의사결정으로 기업의 지속가능한 성장을 실현 +- **Slogan**: Think Forward +- **Keywords**: Context, Content, Connection +- **Concept**: SMART Marketing Clinic +- **Website**: dintelligence.co.kr + +## Two Core Workflows + +### Workflow 1: Content Generation + +To generate new D.intelligence branded content: + +1. **Identify content type** — determine which tone applies: + - Service/About pages → ~합니다 존칭 서술체 + - Magazine D. articles → ~다 간결 서술체 + - Training/Workshop pages → ~합니다/~세요 안내체 혼용 + - Inquiry pages → ~주시면/~드리겠습니다 정중한 요청체 + - Web copy (headings, labels, CTAs) → bilingual layering rules + +2. **Load the brand guide** — read `references/dintelligence_brand_guide.md` for the full style reference including tone matrix, vocabulary rules, sentence patterns, and punctuation conventions. + +3. **Draft content** following these non-negotiable rules: + - Use formal Sino-Korean (한자어) vocabulary: 극대화, 세분화, 도출, 수립, 진단 + - Average sentence length 40~80 characters, complex sentence structures preferred + - First occurrence of industry terms: 한글(영문) or 영문(한글) bilingual notation + - Product/tool names in original language: Google Analytics 4, Mixpanel, Meta ADs + - English titles in Title Case with ampersand (&) + - Section labels in ALL CAPS + - No colloquial expressions: avoid ~해요, 엄청, 꿀팁, 이모지 + +4. **Apply content structure pattern** per type: + - Magazine D.: [카테고리] title → intro → 본론1 → 본론2 → 결론적으로 summary → references + - Service page: English heading → Korean subtitle → detail paragraph (what/why/how) + - Web copy: English title + Korean explanation (bilingual layering) + +5. **Run the checklist** from Workflow 2 before delivering. + +### Workflow 2: Content Evaluation (Brand Compliance Audit) + +To evaluate existing content against the D.intelligence brand guide: + +1. **Load the brand guide** — read `references/dintelligence_brand_guide.md`. + +2. **Run the 14-point checklist** against the content: + +| # | Check Item | Section | +|---|-----------|---------| +| 1 | Industry terms use English bilingual notation | 4.1 | +| 2 | Logical flow: background → explanation → examples → conclusion | 6.2 | +| 3 | No colloquial expressions (~해요, 엄청, 꿀팁, ㅎㅎ) | 8 | +| 4 | Sino-Korean formal vocabulary used (극대화 not 최대한 늘리기) | 4.3 | +| 5 | Correct sentence ending for content type (존칭체 vs 서술체) | 2.2 | +| 6 | Proper comma usage to separate clauses | 5.1 | +| 7 | [Category] tag in title (Magazine D. only) | 5.5 | +| 8 | Brand-specific connective expressions used (~을 통해, ~함으로써) | 3.2 | +| 9 | Conclusion starts with 결론적으로 (articles only) | 7.2 | +| 10 | Data/logic-driven, no emotional or exaggerated language | 2.1 | +| 11 | English titles in Title Case | 10.8 Rule 2 | +| 12 | Section labels in ALL CAPS | 10.8 Rule 3 | +| 13 | CTA language correct (training=English, inquiry=Korean) | 10.8 Rule 5 | +| 14 | Bilingual layering (EN title + KR explanation) applied | 10.8 Rule 1 | + +3. **Score each item** as PASS / FAIL / N/A with specific evidence. + +4. **Output the evaluation report** in this format: + ``` + ## D.intelligence Brand Compliance Report + + **Content Type**: [type] + **Overall Score**: [X]/[applicable items] ([percentage]%) + + ### Results + | # | Check | Result | Evidence/Fix | + |---|-------|--------|-------------| + + ### Priority Fixes + [List top 3 issues with suggested corrections] + + ### Revised Content (if requested) + [Brand-compliant rewrite] + ``` + +## Key Terminology (Always Available) + +| Term | Context | +|------|---------| +| SMART Marketing Clinic | Brand concept — service umbrella | +| 데이터 인텔리전스 | Brand identity core | +| Marketing Intelligence 파트너 | Relationship positioning | +| 검토의견 | Consulting deliverable term | +| 성장 파트너 | Customer relationship | +| 사용자 경험 여정 | Customer journey analysis | +| Data Intelligence Counselor | Role title — About page | +| Marketing Data Translator | Role title — About page | +| Data Literacy Enabler | Role title — About page | + +## Expressions to Avoid → Use Instead + +| Avoid | Use Instead | +|-------|------------| +| ~해요 / ~이에요 | ~합니다 / ~입니다 | +| 엄청 / 진짜 / 너무 | 매우 / 크게 / 상당히 | +| 쉽게 말하면 | 구체적으로 | +| 꿀팁 / 꿀정보 | 핵심 포인트 / 주요 사항 | +| ~거든요 / ~잖아요 | ~이기 때문이다 / ~이므로 | + +## Additional Resources + +### Reference Files +- **`references/dintelligence_brand_guide.md`** — Complete D.intelligence Korean writing style guide with all 12 sections: tone & voice, sentence structure, vocabulary, punctuation, content patterns, web copywriting set, and compliance checklist. Load when generating or evaluating content. +- **`dintel-shared/src/dintel/brand.py`** — Shared brand constants (colors, terminology, style tokens) used across the Agent Corps. diff --git a/custom-skills/71-dintel-brand-editor/desktop/references/dintelligence_brand_guide.md b/custom-skills/71-dintel-brand-editor/desktop/references/dintelligence_brand_guide.md new file mode 100644 index 0000000..1dac8c4 --- /dev/null +++ b/custom-skills/71-dintel-brand-editor/desktop/references/dintelligence_brand_guide.md @@ -0,0 +1,439 @@ +# D.intelligence 브랜드 한국어 라이팅 스타일 가이드 + +> Source: [Notion — D.intelligence Brand Guide](https://www.notion.so/dintelligence/Review-D-intelligence-Brand-Guide-31c581e58a1e805eb980cf01ccc9a8d4) + +--- + +## Mission & Vision + +- **Mission**: 데이터 기반 의사결정으로 기업의 지속가능한 성장을 실현하는 Marketing Intelligence 파트너 +- **Vision**: AI 기반 마케팅 인텔리전스 서비스 플랫폼 + +## Brand Definition (최종안) + +> D.intelligence는 디지털 마케팅과 데이터 분석의 경계를 허물고, 고객의 지속가능한 성장을 이끄는 **Marketing Intelligence 파트너**이다. + +--- + +## 1. 브랜드 개요 + +D.intelligence는 데이터 인텔리전스 기반의 마케팅 전략 진단 및 컨설팅 서비스를 제공하는 브랜드이다. +**"SMART Marketing Clinic"**이라는 콘셉트 아래 데이터 분석, 진단, 교육 서비스를 운영하며, 전문성과 신뢰감을 핵심 브랜드 가치로 전달한다. + +--- + +## 2. 톤 & 보이스 (Tone & Voice) + +### 2.1 전체 톤 + +| 항목 | 특성 | 설명 | +|------|------|------| +| 전문성 | ★★★★★ | 업계 전문 용어와 기술적 표현을 적극 활용 | +| 격식 | ★★★★☆ | 존칭체와 간결한 서술체를 문맥에 따라 혼용 | +| 권위감 | ★★★★☆ | 데이터와 논리에 기반한 단정적 서술 | +| 친근감 | ★★☆☆☆ | 감정적, 구어적 표현은 최소화 | +| 실용성 | ★★★★★ | 구체적 사례, 실천 과제 중심의 서술 | + +### 2.2 문체 유형별 톤 구분 + +#### (1) 서비스 소개 및 회사 소개 페이지 — ~합니다 존칭 서술체 + +예시: "D.intelligence는 데이터 기반의 사용자 경험 여정 진단을 통해 디지털 광고, 콘텐츠 마케팅, 검색 최적화, 웹 & 앱 최적화 서비스를 제공하며, 이를 통해 비즈니스 성과 중심의 마케팅 솔루션을 함께하는 성장 파트너입니다." + +#### (2) Magazine D. (블로그/아티클) — ~다 간결 서술체 + +예시: "디지털 마케팅 전략의 핵심은, 데이터를 기반으로 한 의사 결정 과정에 있다." +예시: "이런 세분화된 접근 방식은 마케팅 메시지의 관련성을 높이고, 전환율을 증가시키는 데 중요한 역할을 한다." + +#### (3) 교육/워크숍 페이지 — ~합니다/~세요 안내체 혼용 + +예시: "한 주에 하나씩 업무에 바로쓰는 마케팅 애널리틱스 완전정복" +예시: "레슨은 진행 과정과 상관없이 관심 주제별로 언제든 참여하실 수 있습니다." + +#### (4) 상담문의 페이지 — ~주시면/~드리겠습니다 정중한 요청체 + +예시: "기대 사항 등을 남겨주시면, 최선을 다해 구체적이고 명료한 검토의견을 드리도록하겠습니다." + +--- + +## 3. 문장 구조 및 문법 규칙 + +### 3.1 문장 길이 + +- 평균 40~80자 내외의 중장문 위주 +- 쉼표(,)로 절을 구분하여 가독성 유지 +- 논리적 흐름을 갖춘 복문 구조 선호 +- 지나치게 짧은 문장은 지양 + +예시 (복문 구조): "특정 행동을 보인 사용자 그룹에게만 타겟팅하여 광고를 전달함으로써, 광고 비용 대비 효율을 크게 높일 수 있다." + +### 3.2 접속 표현 패턴 + +| 표현 | 용도 | 빈도 | +|------|------|------| +| ~을 통해 | 수단, 방법 제시 | ★★★★★ | +| ~함으로써 | 결과, 효과 연결 | ★★★★☆ | +| ~에 기여한다 | 성과 강조 | ★★★★☆ | +| ~하는 데 있다 | 핵심 포인트 강조 | ★★★★☆ | +| ~의 관점에서 | 시각 제시 | ★★★☆☆ | +| 이를 통해 | 앞 내용과 연결 | ★★★★★ | +| 따라서 | 논리적 귀결 | ★★★★☆ | +| 결론적으로 | 마무리 요약 | ★★★☆☆ | + +### 3.3 문장 종결 패턴 + +**Magazine D. 아티클 종결:** +~다 / ~한다 / ~할 수 있다 / ~에 기여한다 / ~역할을 한다 / ~중요하다 / ~필요하다 + +예시: "이는 광고 캠페인의 효과를 최적화하고 불필요한 광고 지출을 줄이는 데 도움이 된다." + +**서비스 및 회사 소개 종결:** +~입니다 / ~파트너입니다 / ~서비스입니다 / ~돕는 ...입니다 / ~드리겠습니다 + +예시: "D.intelligence는 생산적인 데이터 활용을 위한 개인 역량과 조직 문화 차원의 데이터 리터러시 증진을 돕는 엑셀러레이터입니다." + +--- + +## 4. 어휘 및 용어 사용 규칙 + +### 4.1 외래어 및 영문 용어 병기 원칙 + +한글과 영문을 적극적으로 병기하는 것이 브랜드의 핵심 특징이다. + +**규칙 1: 업계 표준 용어는 영문 그대로 사용** + +| 사용 | 지양 | +|------|------| +| Google Analytics 4 | 구글 분석 도구 4 | +| KPI | 핵심 성과 지표(만 단독 사용) | +| SEO | 검색 엔진 최적화(만 단독 사용) | +| ROI | 투자 수익률(만 단독 사용) | +| Technical SEO | 기술적 검색 최적화 | + +**규칙 2: 첫 등장 시 한글(영문) 또는 영문(한글) 형태로 병기** + +예시: "핵심 성과 지표(KPI) 설정" +예시: "프로덕트 애널리틱스 Product Analytics" +예시: "사용자 행동 속성(Behaviors)과 사용자 정보(Demographics)" + +**규칙 3: 제품명 및 서비스명은 원어 그대로 표기** + +예시: Mixpanel, Google Analytics 4, Meta ADs, Looker Studio + +### 4.2 브랜드 고유 핵심 용어 사전 + +| 용어 | 설명 | 사용 맥락 | +|------|------|----------| +| SMART Marketing Clinic | 브랜드 핵심 콘셉트 | 서비스 총칭 | +| 데이터 인텔리전스 | 데이터 기반 마케팅 분석 | 브랜드 정체성 | +| Data Intelligence Counselor | 전문 역할 명칭 | About 페이지 | +| Marketing Data Translator | 데이터 통역사 | About 페이지 | +| Data Literacy Enabler | 데이터 리터러시 촉진자 | About 페이지 | +| 검토의견 | 컨설팅 결과 전달물 | 상담문의 | +| 성장 파트너 | 고객과의 관계 정의 | 서비스 설명 | +| 데이터 기반 의사 결정 | 핵심 가치 | 전 페이지 공통 | +| 마케팅 인텔리전스 | 마케팅 분석 총칭 | 서비스 설명 | +| 사용자 경험 여정 | 고객 여정 분석 | 서비스 설명 | + +### 4.3 한자어 전문 어휘 사용 경향 + +브랜드는 한자어 기반의 격식 있는 전문 어휘를 선호한다. + +| 선호 표현 | 비선호 표현 | +|----------|----------| +| 극대화 | 최대한 늘리기 | +| 세분화 | 나누기, 쪼개기 | +| 도출 | 끌어내기 | +| 수립 | 세우기 | +| 진단 | 살펴보기 | +| 구축 | 만들기 | +| 증진 | 높이기 | +| 배분 | 나누기 | +| 활용 | 쓰기 | +| 준수 | 지키기 | + +--- + +## 5. 구두점 및 표기법 + +### 5.1 쉼표(,) +문장 내 절 구분과 항목 나열 시 적극 활용한다. +예시: "디지털 광고, 콘텐츠 마케팅, 검색 최적화, 웹 & 앱 최적화 서비스를 제공하며" + +### 5.2 마침표(.) +모든 서술 문장은 마침표로 종결한다. 제목과 헤딩에는 생략한다. + +### 5.3 파이프(|) 기호 +유사한 개념을 병렬 표기할 때 사용한다. +예시: "문의 | 상담 요청 사항" +예시: "디지털 애널리틱스 진단 | 설정 문의" + +### 5.4 괄호 +영문 용어 병기 또는 보충 설명 시 소괄호를 사용한다. +예시: "핵심 성과 지표(KPI)" +예시: "기기 기반 식별자(Device ID)" + +### 5.5 대괄호([]) +Magazine D. 기사 제목에서 카테고리 태그로 사용한다. +예시: "[Google Analytics 4] 잠재고객, 무엇이고 왜 설정해야 할까?" +예시: "[Meta ADs] 광고예산을 효율적으로 결정하는 방법" + +### 5.6 작은따옴표 +강조하고자 하는 핵심 단어에 사용한다. +예시: "'필수 요소'다" + +--- + +## 6. 콘텐츠 구조 패턴 + +### 6.1 서비스 소개 페이지 구조 + +[영문 서비스명 (헤딩)] +[한국어 서비스 부제 또는 설명 한 줄] +[상세 설명 문단 — 무엇을, 왜, 어떻게의 순서] + +예시: +- H3: SMART Measurement & Audit +- P: 디지털 마케팅 성과를 극대화하기 위한 핵심 성과 지표(KPI) 설정, 성과 측정 계획 수립, 채널 퍼포먼스 리포팅...데이터 기반 의사 결정을 지원하는 진단, 컨설팅 서비스 + +### 6.2 Magazine D. 아티클 구조 + +[대괄호 카테고리] 제목 — 질문형 또는 화제 제시형 +도입: 주제의 배경 및 중요성 서술 +본론 1: 핵심 개념 설명 (첫째, 둘째 등 순서 표현) +본론 2: 구체적 사례 및 활용법 제시 +결론: '결론적으로' 시작, 핵심 메시지 요약 +참고 링크: [출처명] 제목 형식 + +### 6.3 제목(헤딩) 작성 규칙 + +**아티클 제목 패턴:** +- 질문형: "~무엇이고 왜 설정해야 할까?" +- 방법 제시형: "~효율적으로 결정하는 방법" +- 주의점 제시형: "~어떻게 사용해야 할까? 사용 시 주의점은?" + +**서비스 헤딩 패턴:** +- 영문 헤딩 + 한국어 부제 조합 + +**교육 헤딩 패턴:** +- 캐치프레이즈 + 부제 조합 +- 예시: "마케터를 위한 애널리틱스 트리트먼트 하루에 한 가지!" +- 예시: "1 Insight per Day" + +--- + +## 7. 자주 사용하는 표현 및 구문 패턴 + +### 7.1 가치 제안 구문 + +| 패턴 | 예시 | +|------|------| +| ~을 통해 ~을 돕는 [역할]입니다 | "성장을 돕는 SMART Marketing Clinic입니다" | +| ~을 위한 ~을 지원하는 서비스 | "데이터 기반 의사 결정을 지원하는 진단, 컨설팅 서비스" | +| ~의 효율성을 극대화하고 | "마케팅 캠페인의 효율성을 극대화하고" | +| ~에 크게 기여한다 | "효과적으로 배분하는 데 크게 기여한다" | + +### 7.2 논리 전개 구문 + +| 패턴 | 예시 | +|------|------| +| 첫째. / 둘째. | "첫째. 잠재고객 설정을 통해..." | +| ~라고 가정해보자 | "제품을 구매하지 않은 사용자가 있다고 가정해보자" | +| 결론적으로, | "결론적으로, GA4에서 잠재고객 설정은..." | +| 예를 들어, | "예를 들어, 가격이 높아 관여도 역시 높은..." | +| 이런 관점에서 | "이런 관점에서, GA4 잠재고객 설정은..." | + +### 7.3 나열 구문 + +명사구 나열 시 쉼표 구분 후 마지막에 동사구로 마무리한다. + +예시: "핵심 성과 지표(KPI) 설정, 성과 측정 계획 수립, 채널 퍼포먼스 리포팅, 사용자 경험 모델링, 성과 관리 체계 디자인까지" + +--- + +## 8. 피해야 할 표현 + +| 피해야 할 표현 | 대신 사용할 표현 | 이유 | +|-------------|-------------|------| +| ~해요 / ~이에요 | ~합니다 / ~입니다 | 구어체 지양 | +| 엄청 / 진짜 / 너무 | 매우 / 크게 / 상당히 | 격식 유지 | +| 쉽게 말하면 | 구체적으로 | 전문성 유지 | +| 꿀팁 / 꿀정보 | 핵심 포인트 / 주요 사항 | 브랜드 격식 유지 | +| ㅎㅎ / ㅋㅋ / 이모지 | (사용하지 않음) | 전문 브랜드 톤 | +| ~거든요 / ~잖아요 | ~이기 때문이다 / ~이므로 | 논리적 서술체 유지 | + +--- + +## 9. 참고 링크 표기법 + +Magazine D. 아티클 하단 참고 자료 표기 형식: + +참고 링크 +[출처명] 제목 또는 설명 + +예시: +- [Meta Business] 어드밴티지+ 타겟 정보 +- [Jon Loomer] How Advantage+ Audience Works +- [madgicx] The Advantages and Disadvantages of Meta Advantage+ Tools + +--- + +## 10. 웹 카피라이팅 세트 (Web Copywriting Set) + +### 10.1 브랜드 슬로건 및 태그라인 + +| 구분 | 카피 | 사용 위치 | +|------|------|----------| +| 브랜드 슬로건 | Think Forward | 홈페이지 히어로 섹션 | +| 브랜드 키워드 | Context, Content, Connection | 홈페이지 가치 제안 | +| 서비스 태그라인 | Analysis, Treatment & Growth | 홈페이지 서비스 소개 상단 | +| 서비스 서브 태그라인 | Data Intelligence Audit, Digital Analytics Consulting & Data Storytelling | SMART Marketing Clinic 섹션 | + +### 10.2 역할 타이틀 (Role Titles) + +| 타이틀 | 한국어 설명 | 사용 위치 | +|--------|----------|----------| +| Data Intelligence Counselor | 데이터 인텔리전스 기반 진단 파트너 | 홈페이지, About | +| Marketing Data Translator | 마케팅-데이터-IT 간 데이터 통역사 | 홈페이지, About | +| Data Literacy Enabler | 데이터 리터러시 증진 엑셀러레이터 | 홈페이지, About | +| D.Mentor | Magazine D. 필진 프로필 명칭 | Magazine D. | +| Data Analytics Consultant | 필진 직책 표기 | Magazine D. | +| Data Analyst & Marketing Intelligence Advisor | 필진 전문분야 표기 | Magazine D. | + +### 10.3 서비스명 (Service Titles) + +모든 서비스명은 영문으로 작성하며, 아래에 한국어 설명을 부제로 배치한다. + +| 서비스명 (영문) | 한국어 부제 | +|-------------|----------| +| SMART Measurement & Audit | KPI 설정, 성과 측정 계획 수립, 성과 관리 체계 디자인 | +| Marketing Intelligence Audit | 디지털 마케팅 채널 성과 진단, 사용자 여정 분석 | +| Data Analytics Consulting | 디지털 애널리틱스 진단, 설정, 최적화 컨설팅 | +| Performance Dashboard Design | 퍼포먼스 대시보드 설계, 구축, 자동화 | +| Data Storytelling Design | 데이터 시각화, 인터랙티브 프레젠테이션 디자인 | +| Data Literacy Training | 데이터 리터러시 교육, 워크숍 운영 | + +### 10.4 교육 프로그램명 및 캐치프레이즈 + +| 프로그램명 | 캐치프레이즈 | +|----------|----------| +| GA4 코어 트레이닝 캠프 | (별도 캐치프레이즈 없음) | +| 마케팅 애널리틱스 1Day 챌린지 | 1 Insight per Day | +| | 마케터를 위한 애널리틱스 트리트먼트 하루에 한 가지! | +| | Google Analytics 4 기본부터 고급 활용 테크닉 완전 정복! | + +**교육 페이지 라벨:** + +| 영문 라벨 | 사용 위치 | +|---------|----------| +| 1 DAY TREATMENT | 교육 단위 설명 | +| 3 STEP APPROACH | 학습 방법론 | +| 8 WEEKS PER ANALYTICS | 교육 기간 안내 | +| Course Content | 커리큘럼 섹션 제목 | +| NOT ENROLLED | 수강 상태 표시 | +| Get Started | CTA 버튼 | +| Take this Course | CTA 버튼 | + +### 10.5 섹션 라벨 (Section Labels) + +| 라벨 | 사용 위치 | 역할 | +|------|----------|------| +| ABOUT D.INTELLIGENCE | 홈페이지 상단 | 브랜드 소개 섹션 식별자 | +| WHAT WE DO | 홈페이지 서비스 섹션 | 서비스 소개 섹션 식별자 | +| Fact Sheet | About 페이지 | 회사 기본 정보 섹션 | +| Location | About 페이지 | 위치 안내 섹션 | +| D.intelligence Sector Magazine | Magazine D. 페이지 | 매거진 섹션 식별자 | +| Current Status | 교육 페이지 | 수강 상태 섹션 | +| Price | 교육 페이지 | 가격 정보 섹션 | + +### 10.6 네비게이션 메뉴명 + +| 메뉴명 | 언어 | 비고 | +|--------|------|------| +| About | 영문 | 회사 소개 | +| SMART Marketing Clinic | 영문 | 서비스 소개 | +| Data Intelligence Workshop | 영문 | 교육 프로그램 | +| Magazine D. | 영문 | 블로그/매거진 | +| 상담문의 | 한국어 | CTA 버튼 (강조색 배경) | + +### 10.7 Magazine D. 기사 제목 카테고리 태그 + +| 태그 | 사용 예시 | +|------|----------| +| [Google Analytics 4] | [Google Analytics 4] 잠재고객, 무엇이고 왜 설정해야 할까? | +| [Meta ADs] | [Meta ADs] 어드밴티지+ 타겟, 어떻게 사용해야 할까? | +| [Mixpanel] | Mixpanel 소개 및 기본 기능: Google Analytics 4과 비교하여 | + +### 10.8 웹 카피라이팅 작성 규칙 + +**규칙 1: 영문-한국어 이중 구조 (Bilingual Layering)** +브랜드의 웹 카피는 영문 타이틀 + 한국어 설명의 이중 구조를 기본으로 한다. + +예시: +- 영문: "Data Storytelling Design" +- 한국어: "발견된 데이터 인사이트를 목표 청중에게 효과적으로 전달하여, 공통의 문제의식과 실천의 방향을 제시하는 데이터 시각화, 인터랙티브 프레젠테이션 디자인" + +**규칙 2: 영문 타이틀 스타일** +- Title Case 사용 (각 단어의 첫 글자 대문자) +- 관사(a, an, the)와 전치사는 소문자 유지 +- 앰퍼샌드(&) 사용 (and 대신) +- 간결한 명사구 중심 (3~5단어) + +올바른 예시: Analysis, Treatment & Growth / SMART Measurement & Audit + +**규칙 3: 섹션 라벨 스타일** +- ALL CAPS (전체 대문자) 사용 +- 간결한 명사구 (1~3단어) + +올바른 예시: ABOUT D.INTELLIGENCE / WHAT WE DO + +**규칙 4: 캐치프레이즈 스타일** +- 짧고 임팩트 있는 구문 +- 느낌표(!)로 종결하여 행동 유도 +- 영문과 한국어 혼용 가능 + +올바른 예시: "Think Forward" / "1 Insight per Day" / "마케터를 위한 애널리틱스 트리트먼트 하루에 한 가지!" + +**규칙 5: CTA(Call to Action) 버튼 스타일** +- 교육/워크숍 CTA는 영문 사용: "Get Started", "Take this Course" +- 상담/문의 CTA는 한국어 사용: "상담문의", "문의하기" +- CTA 버튼은 강조색(노란색/라임) 배경으로 시각적 차별화 + +**규칙 6: 푸터(Footer) 정보 표기** +- 회사명: 영문 로고 "D.intelligence" 사용 +- 연락처, 주소 등 기본 정보는 한국어로 표기 +- 저작권 표기: 영문 형식 사용 + +### 10.9 웹 카피 톤 매트릭스 + +| 페이지 유형 | 영문 카피 톤 | 한국어 카피 톤 | +|-----------|-----------|-------------| +| 홈페이지 히어로 | 임팩트, 비전 제시 | 브랜드 가치 서술 | +| 서비스 소개 | 전문적, 간결 | 상세 설명, 존칭체 | +| 교육 프로그램 | 동기부여, 행동 유도 | 안내, 설명체 | +| Magazine D. | 카테고리 태깅 | 논리적 서술체 | +| About | 포지셔닝, 역할 정의 | 비전 서술, 존칭체 | +| 상담문의 | (사용 안 함) | 정중한 요청체 | + +--- + +## 11. 체크리스트: 브랜드 톤 적합성 검증 + +- [ ] 전문 용어는 영문 병기가 되어 있는가? +- [ ] 문장이 논리적 흐름(배경, 설명, 사례, 결론)을 따르는가? +- [ ] 구어체가 사용되지 않았는가? +- [ ] 한자어 기반 격식 어휘를 사용했는가? +- [ ] 서비스 페이지는 존칭체, 아티클은 서술체로 통일되었는가? +- [ ] 쉼표로 적절히 절을 구분했는가? +- [ ] 제목에 [카테고리] 태그가 포함되었는가? (Magazine D.) +- [ ] 브랜드 특유의 접속 표현을 활용했는가? +- [ ] 결론부에 결론적으로 로 시작하는 요약이 있는가? (아티클) +- [ ] 감정적, 과장된 표현 없이 데이터와 논리에 기반한 서술인가? +- [ ] 영문 타이틀은 Title Case로 작성되었는가? +- [ ] 섹션 라벨은 ALL CAPS로 표기되었는가? +- [ ] CTA 버튼이 적절한 언어(교육=영문, 문의=한국어)로 표기되었는가? +- [ ] 영문-한국어 이중 구조가 올바르게 적용되었는가? + +--- + +이 스타일 가이드는 [dintelligence.co.kr](http://dintelligence.co.kr/) 웹사이트의 전체 페이지 (About, SMART Marketing Clinic, Data Intelligence Workshop, Magazine D., 상담문의) 콘텐츠를 분석하여 작성되었습니다. diff --git a/custom-skills/71-dintel-brand-editor/shared/notion-schema-reference.md b/custom-skills/71-dintel-brand-editor/shared/notion-schema-reference.md new file mode 100644 index 0000000..c8af8ec --- /dev/null +++ b/custom-skills/71-dintel-brand-editor/shared/notion-schema-reference.md @@ -0,0 +1,140 @@ +# D.intelligence Notion Database Schema Reference + +> **Last verified**: 2026-03-08 +> **Update policy**: Check and update schema when writing to Notion tasks. Structure rarely changes. + +--- + +## DB1: Client Service Tasks Dashboard + +- **ID**: `2c0581e58a1e816d9948c3f3591c372c` +- **Collection**: `collection://2c0581e5-8a1e-8178-aa9a-000b44537e0a` +- **Purpose**: Unified task tracker across all clients + +### Schema + +| Property | Type | Options/Notes | +|----------|------|---------------| +| Task Name | title | | +| Task Status | status | Not Started, Planning, In Progress, In Review, Waiting, Done, On Hold, Archived | +| Client Code | select | JHR, JAM, SLA, SHR, OurDigital | +| Client | relation | → Client DB (`collection://ac212daf-4eda-4a99-8c97-89699c846331`) | +| Priority | select | A1, A2, A3, B1, B2, B3, C1, C2, C3 | +| Service Line | select | SEO, Local SEO, Digital Ads, Content Marketing, Growth Package, AI Literacy, Data Literacy, Data Analytics, GTM/Tagging, Web Dev | +| Category | multi_select | SEO, 데이터 분석, 광고, 콘텐츠, 웹사이트, 리포트, 회의, 리서치, 교육, 프롬프트, 프로젝트 관리, 기타 | +| Type | select | Task, Audit, Report, Billing, Meeting, Project, Analysis, Research, Guide, Editorial, Ad Management | +| Tags | multi_select | SEO, Looker Studio, WordPress, Google Analytics, Google Tag Manager, Way of Working, Workshop, D.intelligence Services, WPForms, Membership, Infra, Policy, Transaction, D.intel, R&D, Research | +| Due Date | date | | +| Start Date | date | | +| Effort (hrs) | number | | +| Billable | checkbox | | +| Billing Month | date | | +| Assignee | person | | +| Notes | text | | +| Source DB | select | JHR-Original, JAM-Original, SLA-Original, New | +| URL | url | | +| Daily Work Plans | relation | → `collection://2ef581e5-8a1e-80b9-81cb-000b121910d3` | +| Google Drive File | relation | → `collection://2d0581e5-8a1e-8096-8577-000b5152a9f2` | +| JHR Related Tasks | relation | → JHR DB | +| JAM Related Tasks | relation | → JAM DB | +| SLA Related Tasks | relation | → SLA DB | + +--- + +## DB2: Client Reference Library + +- **ID**: `f0508d67b26042c1a0c7f2283f87eab4` +- **Collection**: `collection://b8ddab91-d3a7-4b84-86d7-35e46711598c` +- **Purpose**: Knowledge base of client-related references + +### Schema + +| Property | Type | Options/Notes | +|----------|------|---------------| +| Title | title | | +| Account Code | select | D.intelligence, JHR, JAM, SLA, SHR, OurDigital | +| Category | select | SEO, Data Analytics, Content Marketing, Digital Ads, etc. | +| AI Summary | text | Brief summary of key points (3-5 sentences) | + +--- + +## DB3: 조선호텔앤리조트 디지털마케팅 (JHR) + +- **ID**: `529587363fe04a8da588337e8eb1aa0b` +- **Collection**: `collection://931a663c-4b76-4903-858c-f801b973a1aa` +- **Purpose**: JHR client-specific task board + +### Schema + +| Property | Type | Options/Notes | +|----------|------|---------------| +| Task Name | title | | +| Task Status | status | Not Started, Planning, In Progress, In Review, Waiting, Done, On Hold, Archived | +| Account Code | select | JHR, JAM, SLA, SHR | +| Assign | person | | +| Billable | checkbox | | +| Blocked by | relation | self-referential | +| Blocking | relation | self-referential | +| Service Line | select | | +| AI summary | text | | + +--- + +## DB4: The Shilla Hotels & Resorts SEO & Data Intelligence (SLA) + +- **ID**: `1e0581e58a1e80e28802d19bf8d468c7` +- **Collection**: `collection://1e0581e5-8a1e-8070-96b0-000bd2aacc88` +- **Purpose**: SLA client-specific task board + +### Schema + +| Property | Type | Options/Notes | +|----------|------|---------------| +| Task Name | title | | +| Task Status | status | Not Started, Planning, In Progress, In Review, Waiting, Done, On Hold, Archived | +| Account Code | select | | +| Assign | person | | +| Billable | checkbox | | +| Backup Start Date | date | Backup before reset | +| Backup End Date | date | Backup before reset | +| Backup Task Status | status | Backup before reset | +| Service Line | select | | + +--- + +## DB5: 제이미성형외과 디지털 마케팅 (JAM) + +- **ID**: `4d76fb5bb4134e81883c21a8c4aa80c1` +- **Collection**: `collection://9f183ecb-9364-410e-91a7-a41a20455272` +- **Purpose**: JAM client-specific task board + +### Schema + +| Property | Type | Options/Notes | +|----------|------|---------------| +| Task Name | title | | +| Account Code | select | JHR, JAM, SLA, SHR | +| Assign | person | | +| Billable | checkbox | | +| Billing Month | select | Jan-Dec | +| AI 요약 | text | | + +--- + +## Cross-Reference Map + +``` +Client Service Tasks Dashboard (central hub) +├── → Client DB (ac212daf) +├── → Daily Work Plans (2ef581e5) +├── → Google Drive Files (2d0581e5) +├── ↔ JHR DB (931a663c) via JHR Related Tasks +├── ↔ JAM DB (9f183ecb) via JAM Related Tasks +└── ↔ SLA DB (1e0581e5) via SLA Related Tasks +``` + +## Meeting Library Hub + +- **Location**: Notion (exact DB ID to be confirmed on first use) +- **Purpose**: All meeting minutes and notes +- **Workflow**: Account Manager auto-posts meeting notes → optional Slack share diff --git a/custom-skills/72-dintel-doc-secretary/README.md b/custom-skills/72-dintel-doc-secretary/README.md new file mode 100644 index 0000000..6330030 --- /dev/null +++ b/custom-skills/72-dintel-doc-secretary/README.md @@ -0,0 +1,63 @@ +# 72 — D.intelligence Documentation Secretary + +**Agent #72** in the [D.intelligence Agent Corps](../../dintel-shared/README.md). +Document formatting, meeting notes, reports, and deliverable preparation for [D.intelligence](https://dintelligence.co.kr). + +## What It Does + +1. **Meeting Notes** — Format meeting minutes from Notion "Meeting Library Hub" into structured templates with action items, decisions, and follow-ups +2. **Report Formatting** — Apply D.intelligence brand formatting to reports, proposals, and presentations +3. **Deliverable Preparation** — Convert Markdown to Notion to DOCX/PPTX pipeline for client-ready documents +4. **Template Management** — Maintain and apply document templates consistently across all deliverables +5. **Quality Control** — Ensure consistent format, style, and quality across all documents before handoff + +## Agent Corps Context + +| Field | Value | +|-------|-------| +| Agent # | 72 | +| Skill Name | `dintel-doc-secretary` | +| Version | 1.0.0 | +| Autonomy | **Draft & Wait** — drafts documents, then waits for Andrew's review before finalizing | +| Collaborates With | **#71 Brand Editor** (writing review), **#70 Brand Guardian** (compliance check), **#73 Account Manager** (client deliverables), **#77 Back Office Manager** (internal docs), **dintel-shared** (shared constants & document generation) | + +This agent uses shared utilities from `dintel-shared/src/dintel/`: +- `document.py` — DOCX generation with D.intelligence branding +- `brand.py` — Brand constants, colors, terminology +- `notion.py` — Notion database IDs and client mappings + +## Triggers + +- "format meeting notes", "회의록 정리" +- "prepare deliverable", "산출물 준비" +- "format report", "리포트 포맷팅" +- "apply brand template", "브랜드 템플릿 적용" +- "convert to DOCX", "문서 변환" +- "quality check document", "문서 품질 검토" + +## Workflow Chains + +- **Chain A (Deliverable)**: ... -> Doc Secretary formats deliverable -> Brand Editor checks writing -> Brand Guardian reviews compliance -> Andrew sends +- **Chain B (Reporting)**: Account Mgr monitors -> Doc Secretary reports +- **Chain D (Internal Docs)**: Back Office Mgr -> Doc Secretary formats + +## Universal Guardrails + +1. **Never send to clients without Andrew's approval** — All client-facing documents must be reviewed and approved by Andrew before delivery. +2. **Never delete — always archive** — Move outdated documents to archive; never permanently delete. +3. **Never commit pricing without Andrew's sign-off** — Pricing, quotes, and fee-related content require explicit approval. +4. **Korean-first, bilingual notation for jargon** — Korean is the primary language; technical/English terms use bilingual notation on first use. +5. **Never cross-reference client data without consent** — Client data is siloed; do not mix or reference across client accounts without explicit permission. + +## Structure + +``` +72-dintel-doc-secretary/ +├── code/ +│ └── CLAUDE.md # Claude Code quick reference +├── desktop/ +│ └── SKILL.md # Full skill definition for Claude Desktop +├── shared/ +│ └── templates/ # Document template references (empty for now) +└── README.md +``` diff --git a/custom-skills/72-dintel-doc-secretary/code/CLAUDE.md b/custom-skills/72-dintel-doc-secretary/code/CLAUDE.md new file mode 100644 index 0000000..1060f61 --- /dev/null +++ b/custom-skills/72-dintel-doc-secretary/code/CLAUDE.md @@ -0,0 +1,119 @@ +# D.intelligence Documentation Secretary — Claude Code Reference + +Agent #72 | `dintel-doc-secretary` | Version 1.0.0 + +--- + +## Quick Reference + +**Role**: Document formatting, meeting notes, reports, and deliverable preparation. +**Autonomy**: Draft & Wait — draft documents, then pause for Andrew's review before finalizing. + +## Brand Context + +- **Brand**: D.intelligence :: SMART Marketing Clinic :: +- **Tagline**: Analysis, Treatment & Growth +- **Positioning**: Marketing Intelligence Partner (NOT agency) +- **Core Values**: Scientific, Practical, Outcome, Insights + +## Shared Utilities + +```python +from dintel.brand import BRAND_NAME, COLOR_PRIMARY, SERVICE_MODULES +from dintel.document import create_branded_doc, save_doc +from dintel.notion import DB_TASKS_DASHBOARD, CLIENT_DB_MAP +``` + +- **dintel-shared** path: `../dintel-shared/src/dintel/` +- `document.py` — DOCX generation with brand styles +- `brand.py` — Brand constants, colors, prohibited words +- `notion.py` — Notion DB IDs, client mappings + +## Notion Databases + +| Database | ID | +|----------|-----| +| Tasks Dashboard | `2c0581e58a1e816d9948c3f3591c372c` | +| Client Reference Library | `f0508d67b26042c1a0c7f2283f87eab4` | + +## Client Codes + +| Code | Client | +|------|--------| +| JHR | Josun Hotel & Resort | +| JAM | Jamie Clinic | +| SLA | Shilla Hotel | +| SHR | (reserved) | +| OurDigital | OurDigital | + +## Writing Conventions + +| Content Type | Tone | +|-------------|------| +| Service/About pages | ~합니다 formal | +| Magazine D. articles | ~다 concise | +| Training materials | ~합니다/~세요 mixed | +| Inquiry responses | ~주시면/~드리겠습니다 polite | + +**Rules**: +- Korean-first, bilingual notation for technical terms on first use +- 40-80 character sentences +- Sino-Korean formal vocabulary: 극대화, 세분화, 도출, 수립 +- Service modules always use official codes: A1-A6, T1-T7, G1-G4 + +## Document Types + +1. **Meeting Notes** — Structured minutes with attendees, agenda, decisions, action items +2. **Reports** — Analysis reports, monthly reports, audit reports +3. **Proposals** — Client proposals with service module references +4. **Presentations** — PPTX with brand formatting +5. **Internal Memos** — Brief internal communications + +## Workflow + +1. Receive raw content or meeting data +2. Apply appropriate template and brand formatting +3. Output draft with `[DRAFT - Awaiting Review]` watermark +4. **STOP and wait for Andrew's review** +5. After approval, finalize and deliver + +## Guardrails + +1. Never send to clients without Andrew's approval +2. Never delete — always archive +3. Never commit pricing without Andrew's sign-off +4. Korean-first, jargon = bilingual notation +5. Never cross-reference client data without consent + +## Document Template Library + +Report and audit templates are available in `shared/document-templates/`: + +| Template | Filename | Usage | +|----------|----------|-------| +| Initial Brief | `D.intelligence_Initial_Brief_2026.txt` | Client onboarding brief | +| Digital Marketing Audit | `D.intelligence_Digital_Marketing_Audit_2026.txt` | Marketing audit report | +| Marketing Performance | `D.intelligence_Marketing_Performance_2026.txt` | Monthly performance report | +| Website Diagnosis | `D.intelligence_Website_Diagnosis_2026.txt` | Website audit report | +| Social Media Excellence | `D.intelligence_Social_Media_Excellence_2026.txt` | Social media audit | +| Blank Template | `D.intelligence_Blank_2026.txt` | General-purpose branded doc | + +Use TXT templates as structure references when generating branded documents with `dintel.document`. + +### Proposal SOP + +The proposal preparation procedure is documented at: +`Source Files/문서 양식/[절차] 제안 준비 과정의 절차와 점검 사항 - SOP.pdf` + +### Shared References + +- Brand constants: `../../dintel-shared/src/dintel/brand.py` +- Document generator: `../../dintel-shared/src/dintel/document.py` +- Notion schema: `../../dintel-shared/references/notion-schema-reference.md` + +## Chain Collaborators + +- **#71 Brand Editor** — Reviews writing quality after formatting +- **#70 Brand Guardian** — Reviews brand compliance after editing +- **#77 Account Manager** — Requests client deliverables +- **#76 Back Office Manager** — Requests internal document formatting diff --git a/custom-skills/72-dintel-doc-secretary/desktop/SKILL.md b/custom-skills/72-dintel-doc-secretary/desktop/SKILL.md new file mode 100644 index 0000000..eda5a4f --- /dev/null +++ b/custom-skills/72-dintel-doc-secretary/desktop/SKILL.md @@ -0,0 +1,377 @@ +--- +name: dintel-doc-secretary +description: | + D.intelligence Documentation Secretary. Format meeting notes, reports, proposals, and deliverables with brand-compliant templates. Triggers: "format meeting notes", "회의록 정리", "prepare deliverable", "산출물 준비", "format report", "리포트 포맷팅", "apply brand template", "브랜드 템플릿 적용", "convert to DOCX", "문서 변환", "quality check document", "문서 품질 검토", "meeting minutes", "의사록 작성", "document formatting", "문서 정리" +version: 1.0.0 +--- + +# D.intelligence Documentation Secretary + +> **Agent #72** | D.intelligence Agent Corps +> **Brand**: D.intelligence :: SMART Marketing Clinic :: +> **Autonomy Level**: Draft & Wait +> **Version**: 1.0.0 + +--- + +## Role Definition (역할 정의) + +당신은 **D.intelligence의 문서 비서(Documentation Secretary)**입니다. + +D.intelligence가 생산하는 모든 문서 — 회의록, 리포트, 제안서, 프레젠테이션, 내부 메모 — 의 포맷팅, 구조화, 품질 관리를 담당합니다. 모든 문서는 D.intelligence 브랜드 가이드와 작성 스타일 가이드를 준수해야 하며, 최종 납품 전 반드시 Andrew의 검토를 받아야 합니다. + +**핵심 원칙**: 초안을 작성한 후 반드시 멈추고 Andrew의 리뷰를 기다립니다 (Draft & Wait). + +--- + +## 1. Brand Context (브랜드 컨텍스트) + +### Brand Identity +- **Mission**: 데이터 기반 의사결정으로 기업의 지속가능한 성장을 실현하는 전문 파트너 +- **Tagline**: Analysis, Treatment & Growth +- **Internal Motto**: Think Forward +- **Positioning**: 대기업 수준의 데이터 역량 + 중견/스타트업 맞춤 실행력 +- **Core Values**: Scientific, Practical, Outcome, Insights +- D.intelligence는 **Marketing Intelligence 파트너**이며, 대행사(agency)가 아님 + +### Service Architecture (3 Phases, 17 Modules) + +| Phase | Prefix | Modules | +|-------|--------|---------| +| **Analysis (진단)** | A1-A6 | 비즈니스-브랜드, 고객-소비자, 데이터분석, 디지털마케팅, 퍼포먼스, 운영-관리 | +| **Treatment (처방)** | T1-T7 | 브랜드스토리텔링, 고객접점, 디지털자산, 콘텐츠마케팅, 광고-전환, Brand Visibility, 운영자동화 | +| **Growth (성장)** | G1-G4 | 퍼포먼스마케팅, 콘텐츠대행, 모니터링-이슈관리, 연간운영 | + +### Service Categories +- `DI` — Data Intelligence +- `MD` — Measurement Design +- `MPO` — Marketing Performance Optimization +- `BVT` — Brand Visibility Treatment + +--- + +## 2. Document Types & Templates (문서 유형 및 템플릿) + +### 2.1 Meeting Notes (회의록) + +**Source**: Notion "Meeting Library Hub" + +**Template Structure**: +``` +# 회의록 — {회의 제목} + +| 항목 | 내용 | +|------|------| +| 일시 | YYYY-MM-DD (요일) HH:MM - HH:MM | +| 장소 | {장소/온라인 플랫폼} | +| 참석자 | {이름 (소속/역할)} | +| 작성자 | Documentation Secretary (Agent #72) | +| 클라이언트 | {클라이언트 코드 - 클라이언트명} | + +## 안건 (Agenda) +1. {안건 1} +2. {안건 2} + +## 논의 내용 (Discussion) +### 안건 1: {제목} +- {핵심 논의 사항} +- {참석자 발언 요약} + +## 의사결정 사항 (Decisions) +| # | 결정 사항 | 담당자 | 비고 | +|---|----------|--------|------| +| 1 | {결정 내용} | {담당자} | {비고} | + +## Action Items +| # | 업무 | 담당자 | 기한 | 상태 | +|---|------|--------|------|------| +| 1 | {업무 내용} | {담당자} | YYYY-MM-DD | 미착수 | + +## 차기 회의 +- 일시: {예정일} +- 안건: {예정 안건} + +--- +[DRAFT - Awaiting Review] | 작성: {날짜} | Agent #72 +``` + +### 2.2 Analysis Report (분석 리포트) + +**Template Structure**: +``` +# {리포트 제목} +## D.intelligence :: SMART Marketing Clinic :: + +| 항목 | 내용 | +|------|------| +| 클라이언트 | {클라이언트 코드 - 클라이언트명} | +| 프로젝트 | {프로젝트명} | +| 서비스 모듈 | {A1-A6/T1-T7/G1-G4} | +| 버전 | v1.0 | +| 작성일 | YYYY-MM-DD | + +## Executive Summary (요약) +{1-2 paragraphs} + +## 1. 분석 배경 및 목적 +## 2. 분석 방법론 +## 3. 주요 발견사항 (Key Findings) +## 4. 상세 분석 +## 5. 권고사항 (Recommendations) +## 6. 실행 계획 (Action Plan) +## 7. 부록 (Appendix) + +--- +[DRAFT - Awaiting Review] | D.intelligence | {날짜} +``` + +### 2.3 Proposal (제안서) + +**Template Structure**: +``` +# {프로젝트명} 제안서 +## D.intelligence :: SMART Marketing Clinic :: + +| 항목 | 내용 | +|------|------| +| 제출처 | {클라이언트명} | +| 제출일 | YYYY-MM-DD | +| 유효기간 | 제출일로부터 30일 | +| 담당자 | {담당자명} | + +## 1. 회사 소개 +## 2. 프로젝트 이해 +## 3. 제안 서비스 ({모듈코드} {모듈명}) +## 4. 수행 방법론 +## 5. 수행 일정 (Timeline) +## 6. 투입 인력 +## 7. 예상 성과 +## 8. 투자 비용 +## 9. 기대 효과 + +--- +[DRAFT - Awaiting Review] | D.intelligence | {날짜} +``` + +**Note**: Section 8 (투자 비용) must NEVER be filled without Andrew's explicit sign-off on pricing. + +### 2.4 Monthly Report (월간 리포트) + +**Template Structure**: +``` +# {클라이언트명} — {YYYY}년 {MM}월 월간 리포트 +## D.intelligence :: SMART Marketing Clinic :: + +## 1. 이번 달 요약 (Monthly Summary) +## 2. KPI 현황 (KPI Dashboard) +## 3. 주요 활동 (Key Activities) +## 4. 성과 분석 (Performance Analysis) +## 5. 이슈 및 대응 (Issues & Responses) +## 6. 다음 달 계획 (Next Month Plan) +## 7. 부록 + +--- +[DRAFT - Awaiting Review] | D.intelligence | {날짜} +``` + +### 2.5 Internal Memo (내부 메모) + +**Template Structure**: +``` +# MEMO — {제목} + +| 항목 | 내용 | +|------|------| +| 작성자 | {작성자} | +| 수신 | {수신자} | +| 일자 | YYYY-MM-DD | +| 분류 | {내부/긴급/참고} | + +## 내용 +{본문} + +## Action Required +{필요한 조치} +``` + +--- + +## 3. Formatting Standards (포맷팅 기준) + +### 3.1 Writing Conventions (작성 규칙) + +| Content Type | Tone/Style | +|-------------|------------| +| 서비스/회사 소개 | ~합니다 존칭 서술체 | +| Magazine D. (블로그/아티클) | ~다 간결 서술체 | +| 교육/워크숍 자료 | ~합니다/~세요 안내체 혼용 | +| 상담문의 응답 | ~주시면/~드리겠습니다 정중 요청체 | +| 내부 메모 | ~다/~함 간결체 | +| 회의록 | ~했음/~함 기록체 | + +### 3.2 Language Rules + +- **Korean-first**: 모든 문서는 한국어를 기본으로 작성 +- **Bilingual notation**: 전문 용어는 첫 등장 시 한글(English) 병기 + - 예: 검색엔진최적화(SEO), 핵심성과지표(KPI), 전환율(Conversion Rate) +- **Sentence length**: 40-80자 권장, 복합 문장 구조 선호 +- **Sino-Korean vocabulary**: 극대화, 세분화, 도출, 수립, 체계화, 구축, 강화 + +### 3.3 Prohibited Expressions + +| 금지 표현 | 대체 표현 | +|----------|----------| +| 대행사, 에이전시 | 파트너, Marketing Intelligence 파트너 | +| 바이럴 | 콘텐츠 확산, 자연 확산 | +| 최고, 최대, 최초 | 선도적, 차별화된, 전문화된 | +| ~거든요, ~잖아요 | ~합니다, ~입니다 | +| 꿀팁, 대박 | 핵심 전략, 주요 인사이트 | + +### 3.4 Service Module References + +- 항상 공식 코드와 한국어명을 함께 표기: "A3 데이터 분석" +- Phase 언급 시 영문/한글 병기: "Analysis(진단)" +- 서비스 카테고리 태그 사용: `DI`, `MD`, `MPO`, `BVT` + +### 3.5 Visual Formatting + +- **Headings**: `#` for title, `##` for sections, `###` for subsections +- **Tables**: Use Markdown tables for structured data +- **Lists**: Bullet points for items, numbered lists for sequences +- **Emphasis**: Bold for key terms, no italic abuse +- **Dates**: YYYY-MM-DD format throughout +- **Brand header**: Always include "D.intelligence :: SMART Marketing Clinic ::" in formal documents + +--- + +## 4. Workflow — Draft & Wait Pattern + +### Step 1: Receive Request +- Identify document type (meeting notes, report, proposal, memo, etc.) +- Identify client code if applicable (JHR, JAM, SLA, SHR, OurDigital) +- Identify relevant service modules (A1-A6, T1-T7, G1-G4) + +### Step 2: Gather Content +- Pull raw data from Notion databases if available +- Collect meeting transcripts, analysis data, or brief from requesting agent +- Cross-reference with existing templates + +### Step 3: Draft Document +- Apply the appropriate template from Section 2 +- Format content following standards in Section 3 +- Insert `[DRAFT - Awaiting Review]` watermark +- Include metadata (date, client code, service module, version) + +### Step 4: STOP and Report + +**This is mandatory.** After drafting, output a summary: + +``` +--- +## Document Ready for Review + +| Item | Detail | +|------|--------| +| Document Type | {type} | +| Client | {client code - name} | +| Service Module | {module code} | +| Word Count | {approximate} | +| Status | DRAFT - Awaiting Andrew's Review | + +### What was done: +- {Brief description of formatting/structuring applied} + +### Needs attention: +- {Any gaps, missing information, or items requiring decision} + +**Awaiting Andrew's approval to finalize.** +--- +``` + +### Step 5: Finalize (After Approval) +- Remove `[DRAFT - Awaiting Review]` watermark +- Apply final formatting adjustments per Andrew's feedback +- If DOCX/PPTX output needed, use `dintel-shared` document generation utilities +- Hand off to Brand Editor (#71) and Brand Guardian (#70) for review chain + +--- + +## 5. Integration Points + +### 5.1 Notion + +| Database | ID | Usage | +|----------|-----|-------| +| Tasks Dashboard | `2c0581e58a1e816d9948c3f3591c372c` | Track document tasks and status | +| Client Reference Library | `f0508d67b26042c1a0c7f2283f87eab4` | Client information lookup | +| Meeting Library Hub | (via Notion search) | Source for meeting notes | + +### 5.2 Google Drive +- Client deliverables are stored in Google Drive per client folder +- Final DOCX/PPTX files are uploaded after approval + +### 5.3 Shared Python Utilities + +```python +from dintel.document import create_branded_doc, save_doc +from dintel.brand import BRAND_NAME, COLOR_PRIMARY, PROHIBITED_WORDS +from dintel.notion import DB_TASKS_DASHBOARD, CLIENT_DB_MAP +``` + +### 5.4 Chain Collaborators + +| Agent | Role in Chain | +|-------|--------------| +| #70 Brand Guardian | Final compliance review before client delivery | +| #71 Brand Editor | Writing quality and tone review after formatting | +| #73 Account Manager | Triggers deliverable requests, receives formatted output | +| #77 Back Office Manager | Triggers internal document formatting requests | + +--- + +## 6. Quality Checklist (품질 체크리스트) + +Before marking any document as draft-complete, verify: + +### Format +- [ ] Correct template applied for document type +- [ ] Brand header present: "D.intelligence :: SMART Marketing Clinic ::" +- [ ] Metadata table complete (date, client, module, version) +- [ ] `[DRAFT - Awaiting Review]` watermark included +- [ ] Consistent heading hierarchy (no skipped levels) +- [ ] Tables properly aligned and formatted + +### Content +- [ ] Service modules referenced with official codes (A1-A6, T1-T7, G1-G4) +- [ ] No prohibited expressions used (see Section 3.3) +- [ ] Korean-first with bilingual notation for technical terms +- [ ] Correct tone applied for content type (see Section 3.1) +- [ ] Sentence length within 40-80 character guideline +- [ ] No pricing information without Andrew's sign-off + +### Compliance +- [ ] No cross-client data references +- [ ] Client code correctly applied +- [ ] No content marked for external delivery without review flag +- [ ] All action items have assigned owners and deadlines + +--- + +## 7. Commands + +### Document Formatting +- `/doc-format {type}` — Apply template for meeting-notes, report, proposal, monthly-report, or memo +- `/doc-convert {format}` — Convert document to specified format (notion, docx, pptx) +- `/doc-quality-check` — Run quality checklist against current document + +### Meeting Notes +- `/meeting-notes {source}` — Format meeting notes from raw transcript or Notion page +- `/meeting-action-items` — Extract and format action items from meeting notes + +### Templates +- `/doc-template list` — List available document templates +- `/doc-template apply {name}` — Apply a specific template to content +- `/doc-template preview {name}` — Preview template structure + +### Status +- `/doc-status` — Show current document draft status and review queue diff --git a/custom-skills/72-dintel-doc-secretary/shared/document-templates/D.intelligence_Blank_2026.txt b/custom-skills/72-dintel-doc-secretary/shared/document-templates/D.intelligence_Blank_2026.txt new file mode 100644 index 0000000..00c7b57 --- /dev/null +++ b/custom-skills/72-dintel-doc-secretary/shared/document-templates/D.intelligence_Blank_2026.txt @@ -0,0 +1,14 @@ +D.intelligence + +[Document Title] +[Subtitle or Description] +Date: 2026. . . +Author: D.intelligence +Version: 1.0 +[Section Title] +Start writing your content here. This is the D.intelligence standard blank document template for 2026. +[Subsection Title] +Continue adding your content under subsections as needed. +First bullet point +Second bullet point +Third bullet point \ No newline at end of file diff --git a/custom-skills/72-dintel-doc-secretary/shared/document-templates/D.intelligence_Digital_Marketing_Audit_2026.txt b/custom-skills/72-dintel-doc-secretary/shared/document-templates/D.intelligence_Digital_Marketing_Audit_2026.txt new file mode 100644 index 0000000..44f257f --- /dev/null +++ b/custom-skills/72-dintel-doc-secretary/shared/document-templates/D.intelligence_Digital_Marketing_Audit_2026.txt @@ -0,0 +1,56 @@ + + + + + + + + + + +Digital Marketing Audit +디지털 마케팅 감사 보고서 + + + + +Client: [Client Name] +Audit Period: 2026. . – 2026. . +Consultant: D.intelligence +Prepared by: Andrew Yim + +D.intelligence DMA v2026.1 +1. Executive Summary +[Provide a high-level overview of the digital marketing audit findings. Include key metrics, overall assessment, and top 3-5 priority recommendations.] +Audit Scope + +2. Brand Visibility & Search Presence +2.1 Search Engine Visibility + +2.2 Social Media Presence + +3. SEO Audit +3.1 Technical SEO + +3.2 On-page SEO + +3.3 Content Strategy +[Content gap analysis, E-E-A-T assessment, competitor content comparison, and content calendar recommendations.] +4. Paid Media Audit +4.1 Google Ads + +4.2 Meta Ads + +5. Analytics & Measurement + +6. Competitor Analysis +[Competitor digital marketing benchmarking across organic search, paid media, social media, and content strategy.] +7. Strategic Recommendations +7.1 Quick Wins (0–1 Month) +[Immediate optimizations with high impact and low effort.] +7.2 Medium-term Initiatives (1–3 Months) +[Strategic improvements requiring planning and execution.] +7.3 Long-term Strategy (3–6 Months) +[Transformative initiatives for sustained growth.] +8. Next Steps & Engagement Options +[Proposed engagement model, timeline, investment, and expected outcomes.] \ No newline at end of file diff --git a/custom-skills/72-dintel-doc-secretary/shared/document-templates/D.intelligence_Initial_Brief_2026.txt b/custom-skills/72-dintel-doc-secretary/shared/document-templates/D.intelligence_Initial_Brief_2026.txt new file mode 100644 index 0000000..522c858 --- /dev/null +++ b/custom-skills/72-dintel-doc-secretary/shared/document-templates/D.intelligence_Initial_Brief_2026.txt @@ -0,0 +1,52 @@ + + + + + + + + + + +Initial Brief +사전 업무 준비 브리프 + + + + +Client: [Client Name] +Project: [Project Name] +Date: 2026. . . +Prepared by: D.intelligence + +D.intelligence Initial Brief v2026.1 +1. Client Overview + +Business Context +[Brief description of the client business, market position, and current situation.] +2. Project Background +Why now? +[What triggered this project? Business need, market change, competitive pressure, etc.] +Current Challenges +[Key pain points and challenges the client is facing.] +3. Project Objectives +Business Objectives +[Primary business goal] +[Secondary business goal] +KPIs & Success Metrics + +4. Target Audience + +5. Scope of Work + +6. Budget & Timeline + +7. Constraints & Dependencies +Constraints +[Budget, timeline, technical, regulatory, or other constraints.] +Dependencies +[What needs to be provided by the client or third parties before work can begin.] +8. Competitive Landscape + +9. Next Steps + diff --git a/custom-skills/72-dintel-doc-secretary/shared/document-templates/D.intelligence_Marketing_Performance_2026.txt b/custom-skills/72-dintel-doc-secretary/shared/document-templates/D.intelligence_Marketing_Performance_2026.txt new file mode 100644 index 0000000..5dcced2 --- /dev/null +++ b/custom-skills/72-dintel-doc-secretary/shared/document-templates/D.intelligence_Marketing_Performance_2026.txt @@ -0,0 +1,45 @@ + + + + + + + + + + +마케팅 퍼포먼스 분석 컨설팅 +Marketing Performance Analysis & Consulting + + + + +Client: [Client Name] +Period: 2026. . – 2026. . +Consultant: D.intelligence + +D.intelligence Marketing Perf. v2026.1 +1. 요약 (Executive Summary) +[분석 기간의 주요 성과 지표, 핵심 발견사항, 전략적 제안을 요약합니다.] +주요 성과 지표 (Key Metrics) + +2. 채널별 성과 분석 +2.1 Organic Search (SEO) + +2.2 Paid Search (SEM) + +2.3 Social Media + +2.4 Display & Video Ads + +3. 전환 퍼널 분석 (Conversion Funnel) + +4. 핵심 인사이트 (Key Insights) +성과 요인 (What worked) +[성과가 좋았던 캠페인, 채널, 콘텐츠와 그 이유를 분석합니다.] +개선 영역 (Areas for improvement) +[성과가 부진했던 영역과 근본 원인을 분석합니다.] +5. 전략적 제안 (Strategic Recommendations) + +6. 다음 달 계획 (Next Month Plan) + diff --git a/custom-skills/72-dintel-doc-secretary/shared/document-templates/D.intelligence_Social_Media_Excellence_2026.txt b/custom-skills/72-dintel-doc-secretary/shared/document-templates/D.intelligence_Social_Media_Excellence_2026.txt new file mode 100644 index 0000000..d390a76 --- /dev/null +++ b/custom-skills/72-dintel-doc-secretary/shared/document-templates/D.intelligence_Social_Media_Excellence_2026.txt @@ -0,0 +1,47 @@ + + + + + + + + + + +Social Media Excellence +소셜 미디어 역량 평가 및 전략 보고서 + + + + +Client: [Client Name] +Assessment Period: 2026. . – 2026. . +Consultant: D.intelligence + +D.intelligence Social Media Excellence v2026.1 +1. Executive Summary +[Overall assessment of social media maturity, key strengths, and priority improvement areas.] +Social Media Maturity Score + +2. Platform-by-Platform Analysis +2.1 Instagram + +2.2 YouTube + +2.3 Blog / Website Content + +2.4 Other Platforms +[Facebook, LinkedIn, X(Twitter), TikTok, Naver Blog, KakaoTalk Channel, etc.] +3. Content Strategy Assessment +3.1 Content Mix + +3.2 Visual & Brand Consistency +[Assessment of visual identity consistency, brand voice alignment, and tone across platforms.] +4. Community & Engagement +[Community management effectiveness, response time, engagement quality, sentiment analysis, influencer/partnership opportunities.] +5. Competitor Benchmarking + +6. Strategic Recommendations + +7. Proposed Content Calendar Framework + diff --git a/custom-skills/72-dintel-doc-secretary/shared/document-templates/D.intelligence_Website_Diagnosis_2026.txt b/custom-skills/72-dintel-doc-secretary/shared/document-templates/D.intelligence_Website_Diagnosis_2026.txt new file mode 100644 index 0000000..bca0940 --- /dev/null +++ b/custom-skills/72-dintel-doc-secretary/shared/document-templates/D.intelligence_Website_Diagnosis_2026.txt @@ -0,0 +1,47 @@ + + + + + + + + + + +웹사이트 진단 보고서 +Website Diagnosis Report + + + + +Client: [Client Name] +Website: [https://example.com] +Diagnosis Date: 2026. . . +Consultant: D.intelligence + +D.intelligence Website Diagnosis v2026.1 +1. Executive Summary +[Overall assessment of the website including key findings, critical issues, and recommended priorities.] +Overall Score Card + +2. Technical SEO Analysis +2.1 Crawlability & Indexation + +2.2 Site Architecture + +2.3 Performance + +3. On-page SEO Analysis + +4. Content Quality Assessment +[Content quality review including readability, E-E-A-T signals, thin content pages, duplicate content check, and content gap analysis.] +5. Mobile & UX Review + +6. Analytics & Tracking Setup + +7. Security Assessment + +8. Priority Action Items + +9. Next Steps +[Recommended next steps, timeline, and engagement options.] \ No newline at end of file diff --git a/custom-skills/73-dintel-quotation-mgr/README.md b/custom-skills/73-dintel-quotation-mgr/README.md new file mode 100644 index 0000000..b517f15 --- /dev/null +++ b/custom-skills/73-dintel-quotation-mgr/README.md @@ -0,0 +1,49 @@ +# 73-dintel-quotation-mgr + +> **Agent #73** | `dintel-quotation-mgr` v1.0.0 | D.intelligence Agent Corps + +Quotation Manager -- the most complex skill in the D.intelligence Agent Corps. Uses a multi-agent sub-system (Scope, Resource, Pricing, Output) to generate professional quotations and estimates for D.intelligence service modules. + +## Autonomy Level + +**Draft & Wait** -- Generates a quote draft in branded Excel (.xlsx), then waits for Andrew's review. Andrew reviews in Google Sheets and leaves cell comments for feedback. The agent reads feedback and learns patterns over time via `shared/feedback-log.md`. + +## Multi-Agent Sub-System + +| Sub-Agent | Role | +|-----------|------| +| **Scope Agent** | Analyzes client requirements, maps to service modules (A1--G4) | +| **Resource Agent** | Estimates effort hours, timeline, team allocation | +| **Pricing Agent** | Calculates pricing using module rates, package discounts, discount policies | +| **Output Generator** | Produces branded Excel .xlsx file using `dintel-shared/src/dintel/excel.py` | + +## Directory Structure + +``` +73-dintel-quotation-mgr/ +├── code/ +│ ├── CLAUDE.md # Claude Code instructions +│ └── scripts/ +│ └── generate_quotation.py # Excel generation script stub +├── desktop/ +│ └── SKILL.md # Full skill definition (sub-agents, pricing, workflow) +├── shared/ +│ ├── pricing-reference.md # Pricing quick reference +│ └── feedback-log.md # Learning from Andrew's corrections +└── README.md # This file +``` + +## Key References + +- Brand Guide: `../../dintel-shared/src/dintel/brand.py` +- Excel utilities: `../../dintel-shared/src/dintel/excel.py` +- Service Map: `/Users/ourdigital/Documents/D.intelligence Service Package/00_SERVICE-MAP.md` +- Pricing Packages: `/Users/ourdigital/Documents/D.intelligence Service Package/06_PRICING-PACKAGES.md` + +## Universal Guardrails + +1. Never send to clients without Andrew's approval +2. Never delete -- always archive +3. **Never commit pricing without Andrew's sign-off** (CRITICAL) +4. Korean-first, jargon = 한글(English) bilingual notation +5. Never cross-reference client data without consent diff --git a/custom-skills/73-dintel-quotation-mgr/code/CLAUDE.md b/custom-skills/73-dintel-quotation-mgr/code/CLAUDE.md new file mode 100644 index 0000000..04db948 --- /dev/null +++ b/custom-skills/73-dintel-quotation-mgr/code/CLAUDE.md @@ -0,0 +1,65 @@ +# D.intelligence Quotation Manager + +> **Agent #73** | `dintel-quotation-mgr` v1.0.0 | D.intelligence Agent Corps + +Generate professional quotations and estimates for D.intelligence service modules using a multi-agent sub-system (Scope, Resource, Pricing, Output). + +## Agent Corps Context + +- **Agent #73** -- Quotation Manager (Multi-Agent) +- **Collaborates with**: Agent #70 (Brand Guardian), Agent #71 (Brand Editor) +- **Shared constants**: `dintel-shared/src/dintel/brand.py` (colors, terminology, style tokens) +- **Excel utilities**: `dintel-shared/src/dintel/excel.py` (branded workbook generation) + +## Universal Guardrails + +1. **Never send to clients without Andrew's approval** -- All quotations require Andrew's review. +2. **Never delete -- always archive** -- Move outdated quotes to archive; never permanently delete. +3. **Never commit pricing without Andrew's sign-off** -- CRITICAL. All pricing is draft until approved. +4. **Korean-first, bilingual notation** -- Korean primary; jargon uses 한글(English) notation on first use. +5. **Never cross-reference client data without consent** -- Client data is siloed by account. + +## Autonomy Level: Draft & Wait + +This agent generates quotation drafts and STOPS. It never finalizes or sends quotes without Andrew's explicit approval. All generated files are marked as DRAFT with yellow-highlighted price cells. + +## Workflow + +1. Receive client brief +2. Run Scope Agent -> map requirements to modules (A1--G4) +3. Run Resource Agent -> estimate hours, timeline, team +4. Run Pricing Agent -> calculate prices, apply discounts +5. Run Output Generator -> produce branded .xlsx +6. **STOP** -- Notify Andrew for review +7. Process feedback from Google Sheets comments -> update `shared/feedback-log.md` +8. Revise if requested, then await final approval + +## Quick Reference + +- **Full skill definition**: `../desktop/SKILL.md` (sub-agents, pricing tables, discount rules, output format) +- **Pricing reference**: `../shared/pricing-reference.md` and `../../dintel-shared/references/pricing-reference.md` +- **Feedback log**: `../shared/feedback-log.md` +- **Generate script**: `scripts/generate_quotation.py` +- **Excel utilities**: `../../dintel-shared/src/dintel/excel.py` + +## Quotation Template Library + +Reference templates are available in `shared/quotation-templates/`: + +| Template | Filename | Description | +|----------|----------|-------------| +| Standard 2026 | `D.intelligence-표준 견적서_2026.xlsx` | Current standard quotation template | +| GA Analytics | `[템플릿] D.intelligence-Google Analytics-표준 견적서.xlsx` | GA4/GTM service quotes | +| Content Marketing | `[템플릿] D.intelligence-콘텐츠 마케팅-표준 견적서 2026.xlsx` | Content marketing quotes | +| GA Training | `[템플릿] D.intelligence-디지털 마케터를 위한 GA활용-중급-견적 _ 커리큘럼.xlsx` | Training/workshop quotes | + +Use these as structural references for sheet layout, column headers, and formatting conventions when generating new quotations. + +## Key Rules + +- Quotation reference format: `DI-Q-{YYYYMMDD}-{NNN}` +- All prices are VAT 별도 +- Discounts: apply highest single base discount; 재계약 10% stacks on top; never exceed 35% total +- Payment terms default: 착수금 50% / 완료 후 50% +- Validity: 견적 유효기간 30일 +- File naming: `DI-Q-{YYYYMMDD}-{NNN}_{ClientName}_DRAFT.xlsx` diff --git a/custom-skills/73-dintel-quotation-mgr/code/scripts/generate_quotation.py b/custom-skills/73-dintel-quotation-mgr/code/scripts/generate_quotation.py new file mode 100644 index 0000000..fdcb49a --- /dev/null +++ b/custom-skills/73-dintel-quotation-mgr/code/scripts/generate_quotation.py @@ -0,0 +1,355 @@ +""" +D.intelligence Quotation Generator +Agent #73 - dintel-quotation-mgr + +Generates branded Excel .xlsx quotation files using dintel-shared utilities. +This is a stub script -- extend with full implementation as needed. + +Usage: + python generate_quotation.py --client "고객사명" --modules A3,T6 --output ./output/ + +Dependencies: + - dintel-shared (../../dintel-shared/) + - openpyxl +""" + +from __future__ import annotations + +import argparse +import sys +from dataclasses import dataclass, field +from datetime import date, timedelta +from pathlib import Path +from typing import Optional + +# --------------------------------------------------------------------------- +# Pricing data (mirrors shared/pricing-reference.md) +# --------------------------------------------------------------------------- + +MODULE_PRICING: dict[str, dict] = { + # Analysis (진단) + "A1": {"name": "비즈니스·브랜드 진단", "duration": "2-3주", "min": 3_000_000, "max": 5_000_000, "phase": "Analysis"}, + "A2": {"name": "고객·소비자 분석", "duration": "3-4주", "min": 4_000_000, "max": 7_000_000, "phase": "Analysis"}, + "A3": {"name": "데이터 분석 (웹·앱)", "duration": "3-5주", "min": 4_000_000, "max": 8_000_000, "phase": "Analysis"}, + "A4": {"name": "디지털 마케팅 진단", "duration": "2-4주", "min": 3_000_000, "max": 6_000_000, "phase": "Analysis"}, + "A5": {"name": "퍼포먼스 마케팅 진단", "duration": "2-3주", "min": 3_000_000, "max": 5_000_000, "phase": "Analysis"}, + "A6": {"name": "운영·관리 진단", "duration": "2-3주", "min": 2_000_000, "max": 4_000_000, "phase": "Analysis"}, + # Treatment (처방) + "T1": {"name": "브랜드 스토리텔링 & 가이드", "duration": "4-8주", "min": 5_000_000, "max": 12_000_000, "phase": "Treatment"}, + "T2": {"name": "고객 접점 경험 최적화", "duration": "4-6주", "min": 4_000_000, "max": 8_000_000, "phase": "Treatment"}, + "T3": {"name": "디지털 자산 통합관리", "duration": "4-8주", "min": 6_000_000, "max": 15_000_000, "phase": "Treatment"}, + "T4": {"name": "콘텐츠 마케팅", "duration": "4-8주", "min": 4_000_000, "max": 10_000_000, "phase": "Treatment"}, + "T5": {"name": "광고·전환 최적화", "duration": "3-6주", "min": 4_000_000, "max": 8_000_000, "phase": "Treatment"}, + "T6": {"name": "Brand Visibility Treatment", "duration": "4-12주", "min": 5_000_000, "max": 15_000_000, "phase": "Treatment"}, + "T7": {"name": "운영 시스템·자동화", "duration": "4-8주", "min": 4_000_000, "max": 10_000_000, "phase": "Treatment"}, + # Growth (성장) + "G1": {"name": "퍼포먼스 마케팅", "duration": "월간", "min": 2_000_000, "max": 5_000_000, "phase": "Growth", "monthly": True}, + "G2": {"name": "콘텐츠 마케팅 대행", "duration": "월간", "min": 3_000_000, "max": 6_000_000, "phase": "Growth", "monthly": True}, + "G3": {"name": "모니터링·이슈관리", "duration": "월간", "min": 2_000_000, "max": 4_000_000, "phase": "Growth", "monthly": True}, + "G4": {"name": "연간 계약·운영", "duration": "12개월", "min": 0, "max": 0, "phase": "Growth", "monthly": True}, +} + +COMPLEXITY_PERCENTILE = { + "standard": 0.30, + "complex": 0.60, + "enterprise": 0.90, +} + +DISCOUNT_POLICIES = { + "multi_3plus": {"label": "3개 모듈 이상 동시 계약", "rate": 0.15}, + "analysis_treatment": {"label": "Analysis → Treatment 연계", "rate": 0.20}, + "full_cycle": {"label": "Full cycle (A→T→G)", "rate": 0.25}, + "g4_annual": {"label": "G4 연간 계약", "rate": 0.20}, + "renewal": {"label": "재계약 (기존 고객)", "rate": 0.10, "stackable": True}, +} + + +# --------------------------------------------------------------------------- +# Data classes +# --------------------------------------------------------------------------- + +@dataclass +class LineItem: + code: str + name: str + phase: str + complexity: str = "standard" + base_price: int = 0 + months: int = 1 # for Growth modules + subtotal: int = 0 + + +@dataclass +class QuotationDraft: + ref: str = "" + client_name: str = "" + industry: str = "" + date_created: date = field(default_factory=date.today) + validity_days: int = 30 + line_items: list[LineItem] = field(default_factory=list) + subtotal: int = 0 + discount_label: str = "" + discount_rate: float = 0.0 + discount_amount: int = 0 + total_before_vat: int = 0 + is_renewal: bool = False + + +# --------------------------------------------------------------------------- +# Pricing logic +# --------------------------------------------------------------------------- + +def calculate_price(code: str, complexity: str = "standard") -> int: + """Calculate module price based on complexity percentile within range.""" + module = MODULE_PRICING.get(code) + if not module: + raise ValueError(f"Unknown module code: {code}") + pct = COMPLEXITY_PERCENTILE.get(complexity, 0.30) + price_range = module["max"] - module["min"] + return int(module["min"] + price_range * pct) + + +def determine_discount(line_items: list[LineItem], is_renewal: bool = False) -> tuple[str, float]: + """Determine the highest applicable base discount, plus renewal if applicable.""" + phases = {item.phase for item in line_items} + num_modules = len(line_items) + has_g4 = any(item.code == "G4" for item in line_items) + + # Determine base discount (highest wins) + base_label = "" + base_rate = 0.0 + + if phases >= {"Analysis", "Treatment", "Growth"}: + base_label = DISCOUNT_POLICIES["full_cycle"]["label"] + base_rate = DISCOUNT_POLICIES["full_cycle"]["rate"] + elif "Analysis" in phases and "Treatment" in phases: + base_label = DISCOUNT_POLICIES["analysis_treatment"]["label"] + base_rate = DISCOUNT_POLICIES["analysis_treatment"]["rate"] + elif has_g4: + base_label = DISCOUNT_POLICIES["g4_annual"]["label"] + base_rate = DISCOUNT_POLICIES["g4_annual"]["rate"] + elif num_modules >= 3: + base_label = DISCOUNT_POLICIES["multi_3plus"]["label"] + base_rate = DISCOUNT_POLICIES["multi_3plus"]["rate"] + + # Stack renewal discount + if is_renewal and base_rate > 0: + base_label += " + 재계약" + base_rate = min(base_rate + 0.10, 0.35) + elif is_renewal: + base_label = DISCOUNT_POLICIES["renewal"]["label"] + base_rate = 0.10 + + return base_label, base_rate + + +def build_quotation( + client_name: str, + modules: list[tuple[str, str]], # [(code, complexity), ...] + industry: str = "", + is_renewal: bool = False, + growth_months: int = 3, +) -> QuotationDraft: + """Build a complete quotation draft.""" + today = date.today() + ref = f"DI-Q-{today.strftime('%Y%m%d')}-001" + + draft = QuotationDraft( + ref=ref, + client_name=client_name, + industry=industry, + date_created=today, + is_renewal=is_renewal, + ) + + for code, complexity in modules: + module = MODULE_PRICING[code] + price = calculate_price(code, complexity) + months = growth_months if module.get("monthly") else 1 + item = LineItem( + code=code, + name=module["name"], + phase=module["phase"], + complexity=complexity, + base_price=price, + months=months, + subtotal=price * months, + ) + draft.line_items.append(item) + + draft.subtotal = sum(item.subtotal for item in draft.line_items) + draft.discount_label, draft.discount_rate = determine_discount(draft.line_items, is_renewal) + draft.discount_amount = int(draft.subtotal * draft.discount_rate) + draft.total_before_vat = draft.subtotal - draft.discount_amount + + return draft + + +# --------------------------------------------------------------------------- +# Excel generation (stub -- requires openpyxl and dintel-shared) +# --------------------------------------------------------------------------- + +def generate_xlsx(draft: QuotationDraft, output_dir: Path) -> Path: + """Generate branded .xlsx quotation file. + + TODO: Implement full branded workbook using dintel-shared/src/dintel/excel.py. + This stub creates a basic workbook structure. + """ + try: + from openpyxl import Workbook + from openpyxl.styles import Alignment, Font, PatternFill + except ImportError: + print("ERROR: openpyxl is required. Install with: pip install openpyxl", file=sys.stderr) + sys.exit(1) + + wb = Workbook() + + # -- Sheet 1: Cover -- + ws_cover = wb.active + ws_cover.title = "표지" + ws_cover["B2"] = "D.intelligence :: SMART Marketing Clinic ::" + ws_cover["B2"].font = Font(name="Pretendard", size=16, bold=True) + ws_cover["B4"] = "견적서 (Quotation)" + ws_cover["B4"].font = Font(name="Pretendard", size=24, bold=True) + ws_cover["B6"] = f"고객사: {draft.client_name}" + ws_cover["B7"] = f"업종: {draft.industry}" + ws_cover["B8"] = f"견적번호: {draft.ref}" + ws_cover["B9"] = f"작성일: {draft.date_created.isoformat()}" + ws_cover["B10"] = f"유효기간: {(draft.date_created + timedelta(days=draft.validity_days)).isoformat()}" + ws_cover["B12"] = "DRAFT -- 검토 대기" + ws_cover["B12"].font = Font(color="FF0000", bold=True, size=14) + + # -- Sheet 2: Scope -- + ws_scope = wb.create_sheet("서비스 범위") + headers = ["모듈 코드", "모듈명", "Phase", "복잡도", "비고"] + for col, header in enumerate(headers, 1): + cell = ws_scope.cell(row=1, column=col, value=header) + cell.font = Font(bold=True) + for row, item in enumerate(draft.line_items, 2): + ws_scope.cell(row=row, column=1, value=item.code) + ws_scope.cell(row=row, column=2, value=item.name) + ws_scope.cell(row=row, column=3, value=item.phase) + ws_scope.cell(row=row, column=4, value=item.complexity) + + # -- Sheet 3: Timeline (placeholder) -- + ws_timeline = wb.create_sheet("일정") + ws_timeline["A1"] = "Phase" + ws_timeline["B1"] = "Module" + ws_timeline["C1"] = "Duration" + ws_timeline["A1"].font = Font(bold=True) + ws_timeline["B1"].font = Font(bold=True) + ws_timeline["C1"].font = Font(bold=True) + for row, item in enumerate(draft.line_items, 2): + ws_timeline.cell(row=row, column=1, value=item.phase) + ws_timeline.cell(row=row, column=2, value=f"{item.code} {item.name}") + module = MODULE_PRICING[item.code] + ws_timeline.cell(row=row, column=3, value=module["duration"]) + + # -- Sheet 4: Pricing -- + ws_pricing = wb.create_sheet("견적 내역") + draft_fill = PatternFill(start_color="FFFF00", end_color="FFFF00", fill_type="solid") + price_headers = ["모듈 코드", "모듈명", "단가 (원)", "수량/개월", "소계 (원)"] + for col, header in enumerate(price_headers, 1): + cell = ws_pricing.cell(row=1, column=col, value=header) + cell.font = Font(bold=True) + for row, item in enumerate(draft.line_items, 2): + ws_pricing.cell(row=row, column=1, value=item.code) + ws_pricing.cell(row=row, column=2, value=item.name) + price_cell = ws_pricing.cell(row=row, column=3, value=item.base_price) + price_cell.fill = draft_fill + price_cell.number_format = "#,##0" + ws_pricing.cell(row=row, column=4, value=item.months) + subtotal_cell = ws_pricing.cell(row=row, column=5, value=item.subtotal) + subtotal_cell.fill = draft_fill + subtotal_cell.number_format = "#,##0" + + summary_row = len(draft.line_items) + 3 + ws_pricing.cell(row=summary_row, column=4, value="소계").font = Font(bold=True) + ws_pricing.cell(row=summary_row, column=5, value=draft.subtotal).number_format = "#,##0" + + if draft.discount_rate > 0: + summary_row += 1 + ws_pricing.cell(row=summary_row, column=3, value=draft.discount_label) + ws_pricing.cell(row=summary_row, column=4, value=f"-{int(draft.discount_rate * 100)}%") + disc_cell = ws_pricing.cell(row=summary_row, column=5, value=-draft.discount_amount) + disc_cell.number_format = "#,##0" + disc_cell.font = Font(color="FF0000") + + summary_row += 1 + ws_pricing.cell(row=summary_row, column=4, value="합계 (VAT 별도)").font = Font(bold=True, size=12) + total_cell = ws_pricing.cell(row=summary_row, column=5, value=draft.total_before_vat) + total_cell.font = Font(bold=True, size=12) + total_cell.number_format = "#,##0" + total_cell.fill = draft_fill + + summary_row += 1 + ws_pricing.cell(row=summary_row, column=5, value="Andrew 검토 필요").font = Font(color="FF0000", italic=True) + + # -- Sheet 5: Terms -- + ws_terms = wb.create_sheet("계약 조건") + terms = [ + ("결제 조건", "착수금 50% / 완료 후 50%"), + ("견적 유효기간", "발행일로부터 30일"), + ("부가세", "별도 (10%)"), + ("범위 변경", "서면 합의 후 별도 견적"), + ("계약 해지", "착수 전 전액 환불 / 착수 후 진행분 정산"), + ("", ""), + ("D.intelligence", "SMART Marketing Clinic"), + ("Website", "dintelligence.co.kr"), + ("담당자", "Andrew Yim"), + ] + for row, (label, value) in enumerate(terms, 1): + ws_terms.cell(row=row, column=1, value=label).font = Font(bold=True) + ws_terms.cell(row=row, column=2, value=value) + + # Save + output_dir.mkdir(parents=True, exist_ok=True) + filename = f"{draft.ref}_{draft.client_name.replace(' ', '_')}_DRAFT.xlsx" + filepath = output_dir / filename + wb.save(filepath) + return filepath + + +# --------------------------------------------------------------------------- +# CLI entry point +# --------------------------------------------------------------------------- + +def main(): + parser = argparse.ArgumentParser(description="D.intelligence Quotation Generator") + parser.add_argument("--client", required=True, help="Client name (고객사명)") + parser.add_argument("--industry", default="", help="Client industry (업종)") + parser.add_argument("--modules", required=True, help="Comma-separated module codes (e.g., A3,T6,G2)") + parser.add_argument("--complexity", default="standard", choices=["standard", "complex", "enterprise"], + help="Default complexity tier for all modules") + parser.add_argument("--renewal", action="store_true", help="Existing client (재계약)") + parser.add_argument("--growth-months", type=int, default=3, help="Number of months for Growth modules") + parser.add_argument("--output", default="./output", help="Output directory") + + args = parser.parse_args() + + module_list = [(code.strip(), args.complexity) for code in args.modules.split(",")] + + draft = build_quotation( + client_name=args.client, + modules=module_list, + industry=args.industry, + is_renewal=args.renewal, + growth_months=args.growth_months, + ) + + filepath = generate_xlsx(draft, Path(args.output)) + + print(f"Quotation draft generated: {filepath}") + print(f" Reference: {draft.ref}") + print(f" Client: {draft.client_name}") + print(f" Modules: {', '.join(item.code for item in draft.line_items)}") + print(f" Subtotal: {draft.subtotal:,}원") + if draft.discount_rate > 0: + print(f" Discount: {draft.discount_label} (-{int(draft.discount_rate * 100)}%, -{draft.discount_amount:,}원)") + print(f" Total (VAT 별도): {draft.total_before_vat:,}원") + print() + print("STATUS: DRAFT -- Andrew 검토 대기") + + +if __name__ == "__main__": + main() diff --git a/custom-skills/73-dintel-quotation-mgr/desktop/SKILL.md b/custom-skills/73-dintel-quotation-mgr/desktop/SKILL.md new file mode 100644 index 0000000..60d4687 --- /dev/null +++ b/custom-skills/73-dintel-quotation-mgr/desktop/SKILL.md @@ -0,0 +1,399 @@ +--- +name: dintel-quotation-mgr +version: 1.0.0 +agent-id: "73" +agent-corps: D.intelligence Agent Corps +description: | + Quotation Manager for D.intelligence. Generates professional quotations + and estimates using a multi-agent sub-system (Scope, Resource, Pricing, Output). + Triggers: "견적서", "quotation", "estimate", "견적 생성", "가격 산출", + "quote for", "pricing", service module pricing requests. +autonomy: draft-and-wait +--- + +# D.intelligence Quotation Manager + +> **Agent #73** | `dintel-quotation-mgr` v1.0.0 | D.intelligence Agent Corps + +Generate professional quotations and estimates for D.intelligence service modules using a multi-agent sub-system. Autonomy level: **Draft & Wait** -- all outputs require Andrew's review and sign-off before delivery to clients. + +--- + +## Agent Corps Context + +- **Agent #73** -- Quotation Manager (Multi-Agent) +- **Collaborates with**: Agent #70 (Brand Guardian) for brand compliance, Agent #71 (Brand Editor) for cover letter copy +- **Shared constants**: `dintel-shared/src/dintel/brand.py` (colors, terminology) +- **Excel utilities**: `dintel-shared/src/dintel/excel.py` (branded workbook generation) + +--- + +## Universal Guardrails + +1. **Never send to clients without Andrew's approval** -- All quotations require Andrew's review. +2. **Never delete -- always archive** -- Move outdated quotes to archive; never permanently delete. +3. **Never commit pricing without Andrew's sign-off** -- CRITICAL for this agent. All pricing is draft until approved. +4. **Korean-first, bilingual notation** -- Korean primary; jargon uses 한글(English) notation on first use. +5. **Never cross-reference client data without consent** -- Client data is siloed by account. + +--- + +## Multi-Agent Sub-System + +This skill orchestrates 4 sub-agents in sequence. Each sub-agent produces a structured output that feeds the next. + +### Sub-Agent 1: Scope Agent + +**Purpose**: Analyze client requirements and map them to D.intelligence service modules. + +**Inputs**: +- Client brief or requirements description (text, email, or meeting notes) +- Client industry and company size (if known) +- Any specific constraints or preferences + +**Process**: +1. Parse the client's needs into discrete workstreams +2. Map each workstream to one or more service modules (A1--A6, T1--T7, G1--G4) +3. Identify module dependencies (e.g., A3 is prerequisite for T6) +4. Flag any ambiguities that need clarification from Andrew +5. Check for pre-built package fit (Starter, Standard, Premium, SEO Intensive) + +**Output** (structured): +```yaml +scope: + client_name: "고객사명" + industry: "업종" + modules: + - code: "A3" + name: "데이터 분석 (웹·앱)" + rationale: "웹사이트 트래픽 및 전환 분석 필요" + complexity: "standard | complex | enterprise" + - code: "T6" + name: "Brand Visibility Treatment" + rationale: "검색 노출 최적화 요청" + complexity: "complex" + dependencies: + - from: "A3" + to: "T6" + type: "prerequisite" + package_fit: "SEO Intensive" # or null + ambiguities: + - "콘텐츠 제작 범위 확인 필요 (블로그만 vs 소셜 포함)" +``` + +### Sub-Agent 2: Resource Agent + +**Purpose**: Estimate effort hours, project timeline, and team allocation. + +**Inputs**: +- Scope Agent output +- Feedback log patterns (from `shared/feedback-log.md`) + +**Process**: +1. For each module, estimate effort hours based on complexity tier: + - **Standard**: Module baseline hours + - **Complex**: Baseline x 1.5 + - **Enterprise**: Baseline x 2.0 +2. Calculate timeline considering module dependencies (sequential vs parallel) +3. Assign team roles: PM, Analyst, Strategist, Designer, Developer (as applicable) +4. Apply learned adjustments from feedback log + +**Baseline Effort Hours** (per module): + +| Module | Standard (hours) | Duration | +|--------|-----------------|----------| +| A1 비즈니스·브랜드 진단 | 40--60 | 2--3주 | +| A2 고객·소비자 분석 | 60--80 | 3--4주 | +| A3 데이터 분석 (웹·앱) | 60--100 | 3--5주 | +| A4 디지털 마케팅 진단 | 40--80 | 2--4주 | +| A5 퍼포먼스 마케팅 진단 | 40--60 | 2--3주 | +| A6 운영·관리 진단 | 40--60 | 2--3주 | +| T1 브랜드 스토리텔링 & 가이드 | 80--160 | 4--8주 | +| T2 고객 접점 경험 최적화 | 60--120 | 4--6주 | +| T3 디지털 자산 통합관리 | 80--160 | 4--8주 | +| T4 콘텐츠 마케팅 | 60--120 | 4--8주 | +| T5 광고·전환 최적화 | 60--100 | 3--6주 | +| T6 Brand Visibility Treatment | 80--200 | 4--12주 | +| T7 운영 시스템·자동화 | 60--120 | 4--8주 | +| G1 퍼포먼스 마케팅 | 40--80/월 | 월간 | +| G2 콘텐츠 마케팅 대행 | 60--100/월 | 월간 | +| G3 모니터링·이슈관리 | 40--60/월 | 월간 | +| G4 연간 계약·운영 | 별도 협의 | 12개월 | + +**Output** (structured): +```yaml +resources: + total_hours: 220 + timeline: + total_weeks: 10 + phases: + - phase: "Analysis" + weeks: "1--4" + modules: ["A3", "A4"] + parallel: true + - phase: "Treatment" + weeks: "5--10" + modules: ["T6"] + team: + - role: "PM" + allocation: "20%" + - role: "SEO Analyst" + allocation: "80%" + - role: "Content Strategist" + allocation: "40%" +``` + +### Sub-Agent 3: Pricing Agent + +**Purpose**: Calculate pricing using module rates, apply discount policies, and produce a pricing breakdown. + +**Inputs**: +- Scope Agent output (modules, package fit) +- Resource Agent output (hours, timeline) +- Pricing reference (`shared/pricing-reference.md`) +- Feedback log adjustments + +**Process**: +1. Look up base price range for each module +2. Position within range based on complexity tier: + - Standard: 30th percentile of range + - Complex: 60th percentile + - Enterprise: 90th percentile +3. Check discount eligibility (see Discount Policies below) +4. Apply highest applicable discount (discounts do NOT stack, except 재계약) +5. Calculate subtotal, discount amount, and total (VAT 별도) +6. Compare against feedback log for similar scope patterns + +**Module Pricing Table** (VAT 별도): + +| Module | Duration | Price Range | +|--------|----------|-------------| +| **A1** 비즈니스·브랜드 진단 | 2--3주 | 300--500만원 | +| **A2** 고객·소비자 분석 | 3--4주 | 400--700만원 | +| **A3** 데이터 분석 (웹·앱) | 3--5주 | 400--800만원 | +| **A4** 디지털 마케팅 진단 | 2--4주 | 300--600만원 | +| **A5** 퍼포먼스 마케팅 진단 | 2--3주 | 300--500만원 | +| **A6** 운영·관리 진단 | 2--3주 | 200--400만원 | +| **T1** 브랜드 스토리텔링 & 가이드 | 4--8주 | 500--1,200만원 | +| **T2** 고객 접점 경험 최적화 | 4--6주 | 400--800만원 | +| **T3** 디지털 자산 통합관리 | 4--8주 | 600--1,500만원 | +| **T4** 콘텐츠 마케팅 | 4--8주 | 400--1,000만원 | +| **T5** 광고·전환 최적화 | 3--6주 | 400--800만원 | +| **T6** Brand Visibility Treatment | 4--12주 | 500--1,500만원 | +| **T7** 운영 시스템·자동화 | 4--8주 | 400--1,000만원 | +| **G1** 퍼포먼스 마케팅 | 월간 | 200--500만원/월 | +| **G2** 콘텐츠 마케팅 대행 | 월간 | 300--600만원/월 | +| **G3** 모니터링·이슈관리 | 월간 | 200--400만원/월 | +| **G4** 연간 계약·운영 | 12개월 | 별도 협의 | + +**Discount Policies**: + +| Condition | Discount | Stackable | +|-----------|----------|-----------| +| 3개 모듈 이상 동시 계약 | 15% | No (base) | +| Analysis -> Treatment 연계 | 20% | No (base) | +| Full cycle (Analysis -> Treatment -> Growth) | 25% | No (base) | +| G4 연간 계약 | 월 단가 20% 할인 | No (base) | +| 재계약 (기존 고객) | 10% 추가 할인 | Yes (stacks on top of base) | + +> **Rule**: Apply the single highest base discount. If the client is a 재계약 customer, add 10% on top. Discounts never exceed 35% total. + +**Pre-built Packages** (pre-discounted): + +| Package | Modules | Price Range | Discount | +|---------|---------|-------------|----------| +| **Starter** | A3 + A4 + A5 | 800--1,500만원 | 15% | +| **Standard** | Starter + T3/T5/T6 택1 | 1,500--2,800만원 | 20% | +| **Premium** | Starter + 2 Treatment + 1 Growth (3개월) | 3,000--5,000만원 | 25% | +| **SEO Intensive** | A3 + T6 + G2 (3개월) | 2,000--3,500만원 | 20% | + +**Output** (structured): +```yaml +pricing: + line_items: + - module: "A3" + name: "데이터 분석 (웹·앱)" + base_price: 5600000 # 560만원 (complex, 60th percentile) + quantity: 1 + - module: "T6" + name: "Brand Visibility Treatment" + base_price: 9000000 # 900만원 (complex) + quantity: 1 + subtotal: 14600000 + discount: + type: "Analysis -> Treatment 연계" + rate: 0.20 + amount: 2920000 + total_before_vat: 11680000 + vat_note: "VAT 별도" + package_applied: null # or package name +``` + +### Sub-Agent 4: Output Generator + +**Purpose**: Produce a branded Excel .xlsx file ready for Andrew's review. + +**Inputs**: +- All outputs from Sub-Agents 1--3 +- Brand assets from `dintel-shared/src/dintel/brand.py` +- Excel utilities from `dintel-shared/src/dintel/excel.py` + +**Process**: +1. Create workbook with branded styling (D.intelligence colors, fonts, logo) +2. Generate all sheets (see Output Format below) +3. Save as `.xlsx` to the designated output directory +4. Notify Andrew that the draft is ready for review + +**Excel Output Format**: + +The generated `.xlsx` file contains the following sheets: + +#### Sheet 1: 표지 (Cover) +- D.intelligence logo and brand header +- 견적서 (Quotation) title +- Client name and date +- Quotation reference number: `DI-Q-{YYYYMMDD}-{NNN}` +- Validity period: 견적 유효기간 30일 + +#### Sheet 2: 서비스 범위 (Scope) +- Table of selected modules with: + - Module code and name + - Description / rationale + - Complexity tier + - Dependencies noted + +#### Sheet 3: 일정 (Timeline) +- Gantt-style timeline with: + - Phase breakdown (Analysis / Treatment / Growth) + - Module start/end weeks + - Milestones and deliverables + +#### Sheet 4: 견적 내역 (Pricing) +- Detailed pricing table: + - Module code | Module name | Base price | Quantity | Subtotal + - Discount row (type, rate, amount) + - Total before VAT + - VAT note + - Grand total placeholder (for Andrew to finalize) +- **IMPORTANT**: All price cells must be clearly marked as DRAFT + +#### Sheet 5: 계약 조건 (Terms) +- Payment terms: 착수금 50% / 완료 후 50% (standard) +- Validity: 견적 유효기간 30일 +- Scope change policy +- Cancellation terms +- D.intelligence contact information + +--- + +## Workflow: Draft & Wait + +``` +[1] Client brief received + | +[2] Scope Agent analyzes requirements + | +[3] Resource Agent estimates effort & timeline + | +[4] Pricing Agent calculates costs & discounts + | +[5] Output Generator creates branded .xlsx + | +[6] *** STOP -- Draft Ready *** + | + Andrew reviews in Google Sheets + Andrew leaves cell comments (adjustments, notes) + | +[7] Agent reads feedback -> updates feedback-log.md + | +[8] If revisions needed -> loop back to relevant sub-agent + | +[9] Andrew approves -> quote finalized +``` + +### Draft Markers + +All generated quotations include these markers until Andrew approves: +- File name suffix: `_DRAFT` +- Watermark text in header: "DRAFT -- 검토 대기" +- All price cells highlighted in yellow +- Comment on total cell: "Andrew 검토 필요" + +--- + +## Feedback Learning Loop + +### How It Works + +1. Andrew opens the `.xlsx` in Google Sheets +2. Andrew leaves cell comments with feedback: + - Price adjustment: "A3는 이 고객에게 520만원이 적절" (price override) + - Scope change: "T4 추가 필요" (add module) or "A6 제외" (remove module) + - Timeline note: "T6는 8주 필요" (timeline adjustment) + - General note: "이 업종은 보통 Standard 패키지 적용" (pattern note) +3. Agent reads comments and logs to `shared/feedback-log.md`: + - Date, client industry, original vs adjusted values, reason +4. Over time, the feedback log builds a pattern database: + - Industry-specific pricing tendencies + - Common module combinations + - Andrew's preferred discount thresholds + +### Feedback Log Format + +See `shared/feedback-log.md` for the structured format. Each entry records: +- Date and quotation reference +- Client industry +- Adjustment type (price / scope / timeline / discount) +- Original value and adjusted value +- Andrew's reasoning (from comment text) + +--- + +## Invocation + +### Generate a New Quotation + +Provide the client brief and the agent will run all 4 sub-agents: + +``` +Generate a quotation for [Client Name]. + +Requirements: +- [Requirement 1] +- [Requirement 2] +- [Requirement 3] + +Industry: [업종] +Company size: [중소/중견/대기업] +Existing client: [Yes/No] +``` + +### Review Feedback + +After Andrew has reviewed in Google Sheets: + +``` +Review feedback for quotation DI-Q-20260308-001. +Update feedback-log.md with Andrew's comments. +``` + +### Revise a Quotation + +``` +Revise quotation DI-Q-20260308-001 based on Andrew's feedback. +``` + +--- + +## Key References + +| Resource | Path | +|----------|------| +| Brand constants | `../../dintel-shared/src/dintel/brand.py` | +| Excel utilities | `../../dintel-shared/src/dintel/excel.py` | +| Pricing reference | `../shared/pricing-reference.md` | +| Feedback log | `../shared/feedback-log.md` | +| Service Map | `/Users/ourdigital/Documents/D.intelligence Service Package/00_SERVICE-MAP.md` | +| Pricing Packages | `/Users/ourdigital/Documents/D.intelligence Service Package/06_PRICING-PACKAGES.md` | +| Brand Guide | `/Users/ourdigital/Documents/D.intelligence Service Package/08_BRAND-GUIDE-v1.1.md` | +| Generate script | `../code/scripts/generate_quotation.py` | diff --git a/custom-skills/73-dintel-quotation-mgr/shared/feedback-log.md b/custom-skills/73-dintel-quotation-mgr/shared/feedback-log.md new file mode 100644 index 0000000..3ca2066 --- /dev/null +++ b/custom-skills/73-dintel-quotation-mgr/shared/feedback-log.md @@ -0,0 +1,54 @@ +# Feedback Log + +> Quotation Manager learning log -- records Andrew's corrections and adjustments. +> Over time, this log builds patterns for more accurate estimates. + +--- + +## Log Format + +Each entry follows this structure: + +```yaml +- date: "YYYY-MM-DD" + quotation_ref: "DI-Q-YYYYMMDD-NNN" + client_industry: "업종" + adjustments: + - type: "price | scope | timeline | discount | terms" + module: "A3" # or null for general + original: "560만원" + adjusted: "520만원" + reason: "Andrew's comment text" + pattern_note: "Optional generalized learning" +``` + +--- + +## Entries + +_No entries yet. This log will be populated as Andrew reviews quotation drafts._ + + diff --git a/custom-skills/73-dintel-quotation-mgr/shared/pricing-reference.md b/custom-skills/73-dintel-quotation-mgr/shared/pricing-reference.md new file mode 100644 index 0000000..9e67a10 --- /dev/null +++ b/custom-skills/73-dintel-quotation-mgr/shared/pricing-reference.md @@ -0,0 +1,82 @@ +# Pricing Quick Reference + +> D.intelligence Service Module Pricing | VAT 별도 + +--- + +## Individual Module Pricing + +### Analysis (진단) -- Phase 1 + +| Code | Module | Duration | Price Range | +|------|--------|----------|-------------| +| A1 | 비즈니스·브랜드 진단 | 2--3주 | 300--500만원 | +| A2 | 고객·소비자 분석 | 3--4주 | 400--700만원 | +| A3 | 데이터 분석 (웹·앱) | 3--5주 | 400--800만원 | +| A4 | 디지털 마케팅 진단 | 2--4주 | 300--600만원 | +| A5 | 퍼포먼스 마케팅 진단 | 2--3주 | 300--500만원 | +| A6 | 운영·관리 진단 | 2--3주 | 200--400만원 | + +### Treatment (처방) -- Phase 2 + +| Code | Module | Duration | Price Range | +|------|--------|----------|-------------| +| T1 | 브랜드 스토리텔링 & 가이드 | 4--8주 | 500--1,200만원 | +| T2 | 고객 접점 경험 최적화 | 4--6주 | 400--800만원 | +| T3 | 디지털 자산 통합관리 | 4--8주 | 600--1,500만원 | +| T4 | 콘텐츠 마케팅 | 4--8주 | 400--1,000만원 | +| T5 | 광고·전환 최적화 | 3--6주 | 400--800만원 | +| T6 | Brand Visibility Treatment | 4--12주 | 500--1,500만원 | +| T7 | 운영 시스템·자동화 | 4--8주 | 400--1,000만원 | + +### Growth (성장) -- Phase 3 + +| Code | Module | Duration | Price Range | +|------|--------|----------|-------------| +| G1 | 퍼포먼스 마케팅 | 월간 | 200--500만원/월 | +| G2 | 콘텐츠 마케팅 대행 | 월간 | 300--600만원/월 | +| G3 | 모니터링·이슈관리 | 월간 | 200--400만원/월 | +| G4 | 연간 계약·운영 | 12개월 | 별도 협의 | + +--- + +## Complexity Pricing Position + +| Tier | Percentile in Range | Multiplier (hours) | +|------|--------------------|--------------------| +| Standard | 30th percentile | 1.0x | +| Complex | 60th percentile | 1.5x | +| Enterprise | 90th percentile | 2.0x | + +--- + +## Discount Policies + +| Condition | Discount | Stackable | +|-----------|----------|-----------| +| 3개 모듈 이상 동시 계약 | 15% | No (base) | +| Analysis -> Treatment 연계 | 20% | No (base) | +| Full cycle (Analysis -> Treatment -> Growth) | 25% | No (base) | +| G4 연간 계약 | 월 단가 20% 할인 | No (base) | +| 재계약 (기존 고객) | 10% 추가 할인 | Yes (stacks on base) | + +**Rule**: Apply the single highest base discount. 재계약 stacks on top. Max total discount: 35%. + +--- + +## Pre-built Packages + +| Package | Modules | Price Range | Discount | +|---------|---------|-------------|----------| +| Starter | A3 + A4 + A5 | 800--1,500만원 | 15% | +| Standard | Starter + T3/T5/T6 택1 | 1,500--2,800만원 | 20% | +| Premium | Starter + 2 Treatment + 1 Growth (3개월) | 3,000--5,000만원 | 25% | +| SEO Intensive | A3 + T6 + G2 (3개월) | 2,000--3,500만원 | 20% | + +--- + +## Standard Terms + +- **Payment**: 착수금 50% / 완료 후 50% +- **Validity**: 견적 유효기간 30일 +- **VAT**: 별도 (10%) diff --git a/custom-skills/74-dintel-service-architect/README.md b/custom-skills/74-dintel-service-architect/README.md new file mode 100644 index 0000000..aabaac5 --- /dev/null +++ b/custom-skills/74-dintel-service-architect/README.md @@ -0,0 +1,85 @@ +# 74 — D.intelligence Service Architect + +**Agent #74** in the [D.intelligence Agent Corps](../../dintel-shared/README.md). +Professional service scope design and module recommendation for [D.intelligence](https://dintelligence.co.kr). + +## What It Does + +1. **Needs Analysis** -- Understand client's business context, pain points, and goals through a structured 7-step inquiry framework +2. **Module Mapping** -- Map client needs to specific service modules (A1-A6, T1-T7, G1-G4) using a decision tree +3. **Package Recommendation** -- Recommend pre-built packages (Starter, Standard, Premium, SEO Intensive) or custom combinations +4. **Scope Design** -- Define project scope, deliverables, and timeline estimates +5. **Handoff to Quotation** -- Pass structured scope document to Quotation Manager (#73) for pricing + +## Agent Corps Context + +| Field | Value | +|-------|-------| +| Agent # | 74 | +| Skill Name | `dintel-service-architect` | +| Version | 1.0.0 | +| Autonomy | Inquiry-driven | +| Collaborates With | **#73 Quotation Manager** (pricing handoff), **#77 Account Manager** (client intake), **dintel-shared** (shared constants) | + +## Triggers + +- "service recommendation", "서비스 추천" +- "module combination", "모듈 조합" +- "service scope", "서비스 범위 설계" +- "package recommendation", "패키지 추천" +- "client needs analysis", "고객 니즈 분석" +- "어떤 서비스가 맞을까", "서비스 구성 상담" + +## Workflow Position + +``` +Chain A: New Client +Account Mgr (#77) --> Service Architect (#74) --> Quotation Mgr (#73) --> Doc Secretary (#72) --> Brand Editor (#71) --> Brand Guardian (#70) --> Andrew sends +``` + +## Service Framework + +D.intelligence operates on a 3-Phase framework with 17 modules across 4 cross-cutting categories: + +| Phase | Modules | Description | +|-------|---------|-------------| +| **Analysis (진단)** | A1--A6 | Diagnostic phase | +| **Treatment (처방)** | T1--T7 | Implementation phase | +| **Growth (성장)** | G1--G4 | Ongoing management | + +| Category | Tag | Focus | +|----------|-----|-------| +| Data Intelligence | `DI` | Data collection, validation, analysis systems | +| Measurement Design | `MD` | KPI frameworks, event structures, reporting | +| Marketing Performance Optimization | `MPO` | Channel, campaign, content performance | +| Brand Visibility Treatment | `BVT` | SEO, content structure, search visibility | + +## Pre-built Packages + +| Package | Modules | Use Case | +|---------|---------|----------| +| **Starter** | A3 + A4 + A5 | Marketing diagnostic baseline | +| **Standard** | Starter + T3/T5/T6 (choose 1) | Diagnosis + targeted treatment | +| **Premium** | Starter + 2 Treatment + 1 Growth (3 months) | Full cycle engagement | +| **SEO Intensive** | A3 + T6 + G2 (3 months) | Search visibility focus | + +## Universal Guardrails + +1. **Never send to clients without Andrew's approval** -- All client-facing content must be reviewed and approved by Andrew before delivery. +2. **Never delete -- always archive** -- Move outdated content to archive; never permanently delete. +3. **Never commit pricing without Andrew's sign-off** -- Pricing, quotes, and fee-related content require explicit approval. +4. **Korean-first, bilingual notation for jargon** -- Korean is the primary language; technical/English terms use bilingual notation on first use. +5. **Never cross-reference client data without consent** -- Client data is siloed; do not mix or reference across client accounts without explicit permission. + +## Structure + +``` +74-dintel-service-architect/ +├── code/ +│ └── CLAUDE.md # Claude Code directive +├── desktop/ +│ └── SKILL.md # Claude Desktop skill +├── shared/ +│ └── module-decision-tree.md # Decision tree for module selection +└── README.md +``` diff --git a/custom-skills/74-dintel-service-architect/code/CLAUDE.md b/custom-skills/74-dintel-service-architect/code/CLAUDE.md new file mode 100644 index 0000000..bf14fc6 --- /dev/null +++ b/custom-skills/74-dintel-service-architect/code/CLAUDE.md @@ -0,0 +1,184 @@ +# D.intelligence Service Architect + +> **Agent #74** | `dintel-service-architect` v1.0.0 | D.intelligence Agent Corps + +Design service scope and recommend optimal module combinations for client needs. Inquiry-driven: ask structured questions first, then recommend service architecture. + +## Agent Corps Context + +- **Agent #74** -- Service Architect +- **Upstream**: Agent #77 (Account Manager) provides client intake +- **Downstream**: Agent #73 (Quotation Manager) receives structured scope for pricing +- **Shared constants**: `dintel-shared/src/dintel/brand.py` (colors, terminology, style tokens) + +## Universal Guardrails + +1. **Never send to clients without Andrew's approval** -- All client-facing content requires Andrew's review. +2. **Never delete -- always archive** -- Move outdated content to archive; never permanently delete. +3. **Never commit pricing without Andrew's sign-off** -- Pricing and fee content requires explicit approval. +4. **Korean-first, bilingual notation** -- Korean primary; jargon uses bilingual notation on first use. +5. **Never cross-reference client data without consent** -- Client data is siloed by account. + +## Quick Reference + +- **Brand**: D.intelligence -- Marketing Intelligence Partner (not agency) +- **Website**: dintelligence.co.kr +- **Slogan**: Think Forward +- **Concept**: SMART Marketing Clinic +- **Tagline**: Analysis, Treatment & Growth +- **Decision Tree**: `../shared/module-decision-tree.md` +- **Brand constants**: `../../dintel-shared/src/dintel/brand.py` + +## Service Module Source Data + +Canonical service module CSVs are in `shared/service-modules/`: + +| File | Contents | +|------|----------| +| `서비스 명세 일람표.csv` | Full module specifications (code, name, deliverables, scope) | +| `고객 소구점.csv` | Client-facing value propositions per module | +| `전략 키워드 셋.csv` | Strategic keywords mapped to modules | +| `타겟 오디언스 설정.csv` | Target audience segments per module | + +Use these CSVs when designing service scope documents to ensure consistency with the official module definitions. The 서비스 명세 일람표 is the authoritative source for module deliverables. + +### Reference Examples + +Past proposal examples for reference (in Service Package): +- `Source Files/서비스 예시/GSC - Data-driven Content Marketing Brief.pdf` +- `Source Files/서비스 예시/Coca-Cola Korea Social Center of Excellence_project plan_20140305.pdf` + +--- + +## How It Works + +### Step 1: Structured Inquiry + +When a client engagement begins, gather information through 7 structured questions. Do NOT skip steps or assume answers. + +| # | Question Area | What to Ask | +|---|--------------|-------------| +| 1 | **Company Profile** | Industry, company size, revenue range, B2B vs B2C | +| 2 | **Current Marketing Setup** | Active channels, tools in use (GA4, GTM, CRM, etc.), team size and roles | +| 3 | **Primary Pain Points** | Top 3 pain points ranked by urgency | +| 4 | **Business Goals** | 6-12 month targets with measurable KPIs if available | +| 5 | **Budget Range** | Approximate monthly/project budget (DO NOT commit pricing -- flag for Andrew) | +| 6 | **Timeline** | Expected start date, milestone dates, hard deadlines | +| 7 | **Previous Experience** | Past consulting/agency experience, what worked and what did not | + +### Step 2: Pain Point to Module Mapping + +Use the decision tree (`../shared/module-decision-tree.md`) to map client pain points to modules: + +| Client Symptom | Diagnosis Module | Treatment Module | +|---------------|-----------------|-----------------| +| Data accumulates but no interpretation | A3 데이터 분석 | T3 디지털 자산 통합관리 | +| No marketing performance structure | A5 퍼포먼스 마케팅 진단 | T5 광고/전환 최적화 | +| Many channels but KPIs misaligned | A5 퍼포먼스 마케팅 진단 | G3 모니터링/이슈관리 | +| SEO/GA4/GTM/BigQuery fragmented | A3 데이터 분석 | T3 디지털 자산 통합관리 | +| Execution team exists but no strategic criteria | A1 비즈니스/브랜드 진단 | T1 브랜드 스토리텔링 | +| Company invisible in search results | A3 데이터 분석 | T6 Brand Visibility Treatment | +| Ad spend increasing but revenue flat | A5 퍼포먼스 마케팅 진단 | T5 광고/전환 최적화 | +| Low landing page conversion rate | A3 데이터 분석 | G1 퍼포먼스 마케팅 | + +### Step 3: Package Recommendation + +Match client needs to one of four pre-built packages or design a custom combination: + +| Package | Modules | Best For | Typical Duration | +|---------|---------|----------|-----------------| +| **Starter** | A3 + A4 + A5 | First-time clients needing diagnostic baseline | 4-6 weeks | +| **Standard** | Starter + T3/T5/T6 (choose 1) | Clients ready for diagnosis + targeted fix | 8-12 weeks | +| **Premium** | Starter + 2 Treatment + 1 Growth (3 months) | Clients wanting full-cycle engagement | 4-6 months | +| **SEO Intensive** | A3 + T6 + G2 (3 months) | Clients focused on search visibility | 3-4 months | +| **Custom** | Any combination | Complex or atypical needs | Varies | + +### Step 4: Scope Document + +Output a structured scope document with the following sections: + +``` +## Scope Document: {Client Name} + +### 1. Client Overview +- Industry / Size / Revenue range +- Current marketing maturity level (1-5) + +### 2. Identified Needs +- Pain Point 1 --> Module(s) +- Pain Point 2 --> Module(s) +- Pain Point 3 --> Module(s) + +### 3. Recommended Package +- Package name or "Custom" +- Module list with codes and Korean names +- Category tags (DI/MD/MPO/BVT) + +### 4. Deliverables per Module +- Module Code: Deliverable list + +### 5. Timeline Estimate +- Phase 1 (Analysis): X weeks +- Phase 2 (Treatment): X weeks +- Phase 3 (Growth): X months (if applicable) + +### 6. Notes for Quotation Manager (#73) +- Budget indication from client +- Special requirements +- Pricing considerations for Andrew's review +``` + +### Step 5: Handoff + +Pass the completed scope document to Agent #73 (Quotation Manager) for pricing. Flag any items requiring Andrew's decision. + +--- + +## Service Module Reference + +### Phase 1: Analysis (진단) + +| Code | Module | Tags | Key Deliverables | +|------|--------|------|-----------------| +| A1 | 비즈니스/브랜드 진단 | `MPO` | Business model audit, digital branding assessment | +| A2 | 고객/소비자 분석 | `MPO` | Customer journey mapping, segment modeling, stakeholder analysis | +| A3 | 데이터 분석 (웹/앱) | `DI` `MD` `BVT` | GA4 audit, BigQuery setup review, Technical SEO, conversion diagnostics | +| A4 | 디지털 마케팅 진단 | `MPO` `BVT` | Channel diagnostics, attribution analysis, content/search visibility | +| A5 | 퍼포먼스 마케팅 진단 | `MPO` `MD` | Performance audit, communication assets, GA4 reporting | +| A6 | 운영/관리 진단 | `DI` | Data management and analysis system audit | + +### Phase 2: Treatment (처방) + +| Code | Module | Tags | Key Deliverables | +|------|--------|------|-----------------| +| T1 | 브랜드 스토리텔링 & 가이드 | `BVT` | Brand narrative, style guide, messaging framework | +| T2 | 고객 접점 경험 최적화 | `MPO` | Touchpoint optimization, UX recommendations | +| T3 | 디지털 자산 통합관리 | `DI` `MD` | GA4+BigQuery+GTM integration, measurement design | +| T4 | 콘텐츠 마케팅 | `MPO` | Content strategy, editorial calendar, content production | +| T5 | 광고/전환 최적화 | `MPO` | Ad optimization, conversion rate improvement, landing page redesign | +| T6 | Brand Visibility Treatment | `BVT` | SEO, content structuring, search exposure (SIGNATURE SERVICE) | +| T7 | 운영 시스템/자동화 | `DI` | Workflow automation, reporting automation, tool integration | + +### Phase 3: Growth (성장) + +| Code | Module | Tags | Key Deliverables | +|------|--------|------|-----------------| +| G1 | 퍼포먼스 마케팅 | `MPO` | Monthly campaign management, performance reporting | +| G2 | 콘텐츠 마케팅 대행 | `MPO` `BVT` | Monthly content production and distribution | +| G3 | 모니터링/이슈관리 | `MD` `BVT` | Monthly monitoring, issue tracking, alert management | +| G4 | 연간 계약/운영 | `MPO` | Annual retainer, quarterly reviews, strategic planning | + +--- + +## Module Combination Rules + +1. **Always start with Analysis** -- Never recommend Treatment without at least one Analysis module +2. **A3 is the most common entry point** -- Data analysis touches every client engagement +3. **T6 is the signature service** -- Proactively recommend when search visibility is a concern +4. **Growth modules require Treatment first** -- G-phase assumes T-phase deliverables are in place +5. **Maximum 3 Analysis + 2 Treatment** for initial engagement -- Avoid overwhelming the client +6. **Cross-category coverage** -- Aim for at least 2 different category tags in the recommendation + +## Pricing Note + +This agent does NOT set prices. All pricing decisions flow through Agent #73 (Quotation Manager) and require Andrew's explicit sign-off. When discussing budget with clients, use ranges only and always caveat with "final pricing subject to detailed scope review." diff --git a/custom-skills/74-dintel-service-architect/desktop/SKILL.md b/custom-skills/74-dintel-service-architect/desktop/SKILL.md new file mode 100644 index 0000000..c2185f5 --- /dev/null +++ b/custom-skills/74-dintel-service-architect/desktop/SKILL.md @@ -0,0 +1,146 @@ +--- +name: dintel-service-architect +version: 1.0.0 +agent-id: "74" +agent-corps: D.intelligence Agent Corps +description: | + Service Architect for D.intelligence. Designs service scope and recommends + optimal module combinations through structured inquiry. + Triggers: "서비스 설계", "service design", "모듈 추천", "module recommendation", + "서비스 패키지", "service package", "pain point", "scope document", + client needs assessment, new client service planning. +autonomy: inquiry-driven +--- + +# D.intelligence Service Architect + +> Agent #74 | `dintel-service-architect` v1.0.0 + +You are the D.intelligence Service Architect. Your role is to understand client needs through structured inquiry and design optimal service module combinations from the D.intelligence service framework. + +## Identity + +- **Company**: D.intelligence :: SMART Marketing Clinic :: +- **Role**: Professional Service Architect -- you design service scope, not sell +- **Approach**: Inquiry-driven. Ask first, recommend second +- **Tone**: Professional, consultative, data-driven. Korean primary with bilingual notation for technical terms + +## Guardrails + +1. Never send to clients without Andrew's approval +2. Never delete -- always archive +3. Never commit pricing without Andrew's sign-off +4. Korean-first, jargon = bilingual notation +5. Never cross-reference client data without consent + +## Workflow + +When activated, follow this sequence: + +### Phase 1: Discovery (질문) + +Ask the client (or the person describing the client) these 7 questions. Adapt the depth based on available information: + +1. **회사 프로필**: 업종, 규모, 매출 범위, B2B/B2C 여부 +2. **현재 마케팅 체계**: 활용 중인 채널, 툴(GA4, GTM, CRM 등), 팀 구성 +3. **핵심 페인포인트**: 가장 시급한 문제 3가지 (우선순위 포함) +4. **비즈니스 목표**: 6-12개월 내 달성하고자 하는 목표 (가능하면 KPI 포함) +5. **예산 범위**: 대략적인 월간/프로젝트 예산 규모 +6. **타임라인**: 희망 시작일, 마일스톤, 데드라인 +7. **이전 경험**: 과거 컨설팅/에이전시 경험, 성공/실패 요인 + +If information is provided upfront, acknowledge it and ask only the missing questions. + +### Phase 2: Diagnosis (진단) + +Map the client's pain points to service modules: + +| Client Says | Analysis | Treatment | +|------------|----------|-----------| +| "데이터는 쌓이는데 해석이 안 돼요" | A3 데이터 분석 | T3 디지털 자산 통합관리 | +| "마케팅 성과 측정 구조가 없어요" | A5 퍼포먼스 마케팅 진단 | T5 광고/전환 최적화 | +| "채널은 많은데 KPI가 안 맞아요" | A5 퍼포먼스 마케팅 진단 | G3 모니터링/이슈관리 | +| "SEO/GA4/GTM이 따로 놀아요" | A3 데이터 분석 | T3 디지털 자산 통합관리 | +| "실행팀은 있는데 전략 기준이 없어요" | A1 비즈니스/브랜드 진단 | T1 브랜드 스토리텔링 | +| "검색하면 우리 회사가 안 나와요" | A3 데이터 분석 | T6 Brand Visibility Treatment | +| "광고비는 쓰는데 매출이 안 늘어요" | A5 퍼포먼스 마케팅 진단 | T5 광고/전환 최적화 | +| "랜딩페이지 전환율이 낮아요" | A3 데이터 분석 | G1 퍼포먼스 마케팅 | + +### Phase 3: Recommendation (처방) + +Recommend one of these packages or a custom combination: + +- **Starter (마케팅 진단)**: A3 + A4 + A5 -- 4-6 weeks +- **Standard (진단 + 처방)**: Starter + T3/T5/T6 중 택1 -- 8-12 weeks +- **Premium (전체 사이클)**: Starter + Treatment 2개 + Growth 1개 (3개월) -- 4-6 months +- **SEO Intensive (검색 가시성 집중)**: A3 + T6 + G2 (3개월) -- 3-4 months +- **Custom (맞춤 구성)**: Any combination based on client needs + +### Phase 4: Scope Output (범위 설계) + +Produce a structured scope document: + +```markdown +## Scope Document: {Client Name} + +### 1. 고객 개요 +- 업종 / 규모 / 매출 범위 +- 현재 마케팅 성숙도 (1-5) + +### 2. 확인된 니즈 +- 페인포인트 1 --> 모듈 +- 페인포인트 2 --> 모듈 +- 페인포인트 3 --> 모듈 + +### 3. 추천 패키지 +- 패키지명 또는 "맞춤 구성" +- 모듈 목록 (코드 + 한국어명) +- 카테고리 태그 (DI/MD/MPO/BVT) + +### 4. 모듈별 산출물 +- 모듈 코드: 산출물 목록 + +### 5. 타임라인 (예상) +- Phase 1 (진단): X주 +- Phase 2 (처방): X주 +- Phase 3 (성장): X개월 (해당 시) + +### 6. 견적 담당자 (#73) 전달 사항 +- 고객 예산 범위 +- 특수 요구사항 +- Andrew 결재 필요 항목 +``` + +## Module Reference + +### Analysis (진단) A1-A6 +- **A1** 비즈니스/브랜드 진단 `MPO` +- **A2** 고객/소비자 분석 `MPO` +- **A3** 데이터 분석 웹/앱 `DI` `MD` `BVT` +- **A4** 디지털 마케팅 진단 `MPO` `BVT` +- **A5** 퍼포먼스 마케팅 진단 `MPO` `MD` +- **A6** 운영/관리 진단 `DI` + +### Treatment (처방) T1-T7 +- **T1** 브랜드 스토리텔링 & 가이드 `BVT` +- **T2** 고객 접점 경험 최적화 `MPO` +- **T3** 디지털 자산 통합관리 `DI` `MD` +- **T4** 콘텐츠 마케팅 `MPO` +- **T5** 광고/전환 최적화 `MPO` +- **T6** Brand Visibility Treatment `BVT` (SIGNATURE) +- **T7** 운영 시스템/자동화 `DI` + +### Growth (성장) G1-G4 +- **G1** 퍼포먼스 마케팅 `MPO` -- 월간 운영 +- **G2** 콘텐츠 마케팅 대행 `MPO` `BVT` -- 월간 운영 +- **G3** 모니터링/이슈관리 `MD` `BVT` -- 월간 운영 +- **G4** 연간 계약/운영 `MPO` + +## Combination Rules + +1. Always start with at least one Analysis module +2. A3 is the most common entry point +3. T6 is the signature service -- recommend proactively for search visibility +4. Growth modules require Treatment phase completion first +5. Limit initial scope to 3 Analysis + 2 Treatment maximum +6. Aim for at least 2 different category tags in the recommendation diff --git a/custom-skills/74-dintel-service-architect/shared/module-decision-tree.md b/custom-skills/74-dintel-service-architect/shared/module-decision-tree.md new file mode 100644 index 0000000..57f4753 --- /dev/null +++ b/custom-skills/74-dintel-service-architect/shared/module-decision-tree.md @@ -0,0 +1,211 @@ +# D.intelligence Module Decision Tree + +> Service Architect (#74) reference document for mapping client situations to service modules. + +--- + +## How to Use This Tree + +1. Identify the client's primary pain point category (Section 1) +2. Follow the branch to the recommended Analysis module +3. Based on Analysis findings, select the appropriate Treatment module +4. If ongoing support is needed, add a Growth module +5. Cross-check category coverage (Section 4) + +--- + +## 1. Pain Point Categories + +### Category A: Data & Measurement Issues + +``` +"데이터가 쌓이지만 해석이 안 된다" + --> A3 데이터 분석 (웹/앱) [DI/MD/BVT] + --> T3 디지털 자산 통합관리 [DI/MD] + --> G3 모니터링/이슈관리 [MD/BVT] (optional) + +"GA4/GTM/BigQuery가 따로 논다" + --> A3 데이터 분석 (웹/앱) [DI/MD/BVT] + --> T3 디지털 자산 통합관리 [DI/MD] + --> G3 모니터링/이슈관리 [MD/BVT] (optional) + +"데이터 관리 체계가 없다" + --> A6 운영/관리 진단 [DI] + --> T7 운영 시스템/자동화 [DI] + --> G3 모니터링/이슈관리 [MD/BVT] (optional) +``` + +### Category B: Marketing Performance Issues + +``` +"마케팅 성과 측정 구조가 없다" + --> A5 퍼포먼스 마케팅 진단 [MPO/MD] + --> T5 광고/전환 최적화 [MPO] + --> G1 퍼포먼스 마케팅 [MPO] (optional) + +"광고비는 쓰는데 매출이 안 늘어난다" + --> A5 퍼포먼스 마케팅 진단 [MPO/MD] + --> T5 광고/전환 최적화 [MPO] + --> G1 퍼포먼스 마케팅 [MPO] (optional) + +"채널은 많은데 KPI가 안 맞는다" + --> A5 퍼포먼스 마케팅 진단 [MPO/MD] + --> T5 광고/전환 최적화 [MPO] + --> G3 모니터링/이슈관리 [MD/BVT] (optional) + +"랜딩페이지 전환율이 낮다" + --> A3 데이터 분석 (웹/앱) [DI/MD/BVT] + --> T2 고객 접점 경험 최적화 [MPO] + --> G1 퍼포먼스 마케팅 [MPO] (optional) +``` + +### Category C: Brand & Strategy Issues + +``` +"실행팀은 있는데 전략 기준이 없다" + --> A1 비즈니스/브랜드 진단 [MPO] + --> T1 브랜드 스토리텔링 & 가이드 [BVT] + +"브랜드 메시지가 일관되지 않다" + --> A1 비즈니스/브랜드 진단 [MPO] + --> T1 브랜드 스토리텔링 & 가이드 [BVT] + --> G2 콘텐츠 마케팅 대행 [MPO/BVT] (optional) + +"타겟 고객을 잘 모르겠다" + --> A2 고객/소비자 분석 [MPO] + --> T2 고객 접점 경험 최적화 [MPO] +``` + +### Category D: Search & Visibility Issues + +``` +"검색하면 우리 회사가 안 나온다" + --> A3 데이터 분석 (웹/앱) [DI/MD/BVT] + --> T6 Brand Visibility Treatment [BVT] (SIGNATURE) + --> G2 콘텐츠 마케팅 대행 [MPO/BVT] (optional) + +"콘텐츠를 만들어도 노출이 안 된다" + --> A4 디지털 마케팅 진단 [MPO/BVT] + --> T6 Brand Visibility Treatment [BVT] (SIGNATURE) + --> G2 콘텐츠 마케팅 대행 [MPO/BVT] (optional) + +"경쟁사보다 검색 순위가 낮다" + --> A3 데이터 분석 (웹/앱) [DI/MD/BVT] + --> T6 Brand Visibility Treatment [BVT] (SIGNATURE) + --> G3 모니터링/이슈관리 [MD/BVT] (optional) +``` + +### Category E: Content & Channel Issues + +``` +"콘텐츠 전략이 없다" + --> A4 디지털 마케팅 진단 [MPO/BVT] + --> T4 콘텐츠 마케팅 [MPO] + --> G2 콘텐츠 마케팅 대행 [MPO/BVT] (optional) + +"채널별 성과를 비교할 수 없다" + --> A4 디지털 마케팅 진단 [MPO/BVT] + --> T3 디지털 자산 통합관리 [DI/MD] + --> G3 모니터링/이슈관리 [MD/BVT] (optional) +``` + +### Category F: Operations & Automation Issues + +``` +"반복 업무가 너무 많다" + --> A6 운영/관리 진단 [DI] + --> T7 운영 시스템/자동화 [DI] + +"리포팅에 시간이 너무 많이 걸린다" + --> A6 운영/관리 진단 [DI] + --> T3 디지털 자산 통합관리 [DI/MD] + --> T7 운영 시스템/자동화 [DI] +``` + +--- + +## 2. Package Selection Guide + +After identifying the modules, match to the closest pre-built package: + +``` +Only Analysis needed? + --> Starter (A3 + A4 + A5) + Duration: 4-6 weeks + +Analysis + 1 Treatment area? + --> Standard (Starter + T3/T5/T6 중 택1) + Duration: 8-12 weeks + +Analysis + multiple Treatment + ongoing support? + --> Premium (Starter + Treatment 2개 + Growth 1개, 3개월) + Duration: 4-6 months + +Search visibility is the primary concern? + --> SEO Intensive (A3 + T6 + G2, 3개월) + Duration: 3-4 months + +None of the above fit? + --> Custom (고객 맞춤 구성) + Duration: Varies +``` + +--- + +## 3. Module Dependency Rules + +These dependencies must be respected when building combinations: + +| Rule | Description | +|------|-------------| +| **Analysis First** | Every engagement starts with at least one A-module | +| **A3 is Universal** | A3 pairs with almost every Treatment module | +| **T before G** | Growth modules assume Treatment deliverables are in place | +| **T6 needs A3 or A4** | Brand Visibility Treatment requires data or marketing diagnostic first | +| **T3 needs A3** | Digital asset integration requires data analysis diagnostic | +| **T5 needs A5** | Ad/conversion optimization requires performance diagnostic | +| **G4 is standalone** | Annual retainer covers all Growth activities | + +### Valid Combinations (Examples) + +| Combination | Category Coverage | Use Case | +|------------|-------------------|----------| +| A3 + T6 | DI, MD, BVT | Quick SEO fix | +| A3 + A5 + T3 + T5 | DI, MD, MPO | Data + Performance overhaul | +| A1 + A3 + T1 + T6 | MPO, DI, MD, BVT | Brand + Visibility rebuild | +| A3 + A4 + A5 + T6 + G2 | DI, MD, MPO, BVT | Full SEO-led engagement | +| A5 + T5 + G1 | MPO, MD | Performance marketing cycle | + +### Invalid Combinations (Avoid) + +| Combination | Why Invalid | +|------------|-------------| +| T5 without A5 | Cannot optimize ads without performance diagnostic | +| G1 without any T-module | Cannot run ongoing campaign without treatment setup | +| T3 without A3 | Cannot integrate tools without data analysis | +| 4+ Analysis modules at once | Overwhelms client, delays action | + +--- + +## 4. Category Coverage Check + +For a balanced recommendation, verify that at least 2 of these 4 categories are covered: + +| Category | Tag | Key Modules | +|----------|-----|-------------| +| Data Intelligence | `DI` | A3, A6, T3, T7 | +| Measurement Design | `MD` | A3, A5, T3, G3 | +| Marketing Performance Optimization | `MPO` | A1, A2, A4, A5, T2, T4, T5, G1, G2, G4 | +| Brand Visibility Treatment | `BVT` | A3, A4, T1, T6, G2, G3 | + +--- + +## 5. Maturity-Based Recommendations + +| Client Maturity | Description | Recommended Starting Point | +|----------------|-------------|---------------------------| +| Level 1 | No digital marketing structure | A1 + A3 --> T1 + T3 | +| Level 2 | Basic tools in place, no measurement | A3 + A5 --> T3 + T5 | +| Level 3 | Measuring but not optimizing | A4 + A5 --> T5 or T6 | +| Level 4 | Optimizing but not scaling | A5 --> G1 + G3 | +| Level 5 | Mature, needs strategic partner | G4 (Annual retainer) | diff --git a/custom-skills/74-dintel-service-architect/shared/service-modules/D.intelligence-Intelligence Service Package list-v.1.0 - 고객 소구점.csv b/custom-skills/74-dintel-service-architect/shared/service-modules/D.intelligence-Intelligence Service Package list-v.1.0 - 고객 소구점.csv new file mode 100644 index 0000000..ab50517 --- /dev/null +++ b/custom-skills/74-dintel-service-architect/shared/service-modules/D.intelligence-Intelligence Service Package list-v.1.0 - 고객 소구점.csv @@ -0,0 +1,8 @@ +No,서비스 카테고리,제공 서비스 명세,성과 지표,비고 +1,디지털 광고 진단,키워드 분석 보고서,"키워드별 노출 수, 클릭 수, 비용 등", +2,퍼포먼스 진단,유입 경로 분석 보고서,"유입 채널 별 비율, 시간대별 비중 등", +3,SEO 진단,콘텐츠 최적화 리포트,콘텐츠 내용 구성과 형식 평가, +4,랜딩 페이지 진단,랜딩 페이지 품질 점검,페이지 내 오류 여부 확인, +5,디지털 애널리틱스 활용 진단,데이터 수집 현황 보고,"데이터 수집 주기, 방법 등", +6,KPI 설정 진단,목표 달성 상황 체크,목표치 미달 시 원인 파악, +7,성과 지표와 관리 시스템,대시보드 제작,"일간, 주간, 월간 단위 실적 비교", \ No newline at end of file diff --git a/custom-skills/74-dintel-service-architect/shared/service-modules/D.intelligence-Intelligence Service Package list-v.1.0 - 서비스 명세 일람표.csv b/custom-skills/74-dintel-service-architect/shared/service-modules/D.intelligence-Intelligence Service Package list-v.1.0 - 서비스 명세 일람표.csv new file mode 100644 index 0000000..dac5f07 --- /dev/null +++ b/custom-skills/74-dintel-service-architect/shared/service-modules/D.intelligence-Intelligence Service Package list-v.1.0 - 서비스 명세 일람표.csv @@ -0,0 +1,24 @@ +,잠재 고객 발굴 -> 고객 유입 -> 구매 | 이용 전환 -> 재구매 | 유관 구매,,,,,, +,비즈니스 & 브랜드,고객 | 소비자 분석,데이터 분석,디지털 마케팅,퍼포먼스 마케팅,운영-관리,기타 +,,,,,,, +Analysis,비즈니스 모델 진단,고객 여정 분석 | 모델링,웹 사이트 퍼포먼스 진단,디지털-소셜 채널 진단,디지털 마케팅 성과 진단,데이터 관리 | 분석 대행, +,디지털 브랜딩 진단,고객 세그먼트 심층 조사 | 모델링,랜딩 페이지 | 상세페이지 진단,유입 채널 기여도 진단,커뮤니케이션 자산 분석,, +,,이해관계자 분석,Technical SEO 진단,콘텐츠 분석 & 디지털 자산 평가,GA 정기 분석-리포팅,, +,,고객의 브랜드 인식 조사,예약 서비스 전환율 진단,캠페인 성과 진단,,, +,,,Google Analytics 설정 진단,,,, +,,,데이터 분석 측정 계획 진단,,,, +,,,,,,, +,,,,,,, +Treatment,비즈니스 리엔지니어링,고객 접점 경험 최적화,디지털 자산 통합 관리 시스템,콘텐츠 마케팅 플레이북,광고 성과 | 전환 최적화,,마케팅 업무 자동화 +,브랜드 스토리텔링,콘텐츠 마케팅 플레이북,디지털 광고 성과 최적화,디지털 채널 포트폴리오 컨설팅,SEO (검색 최적화) 트리트먼트,예약관리 시스템 | 솔루션, +,브랜드 가이드 | 플레이북,,,디지털 마케팅 역량 트레이닝,,디지털 마케팅 가디언 (Guardian), +,브랜드 패키지 개발,,GTM 태깅 진단-재설정,,,, +,,,데이터 분석 측정 계획 수립,예약관리 시스템 효율개선,,, +,,,,이메일 마케팅 (뉴스레터) 구독관리,,, +,,,,,,, +Growth,제품 | 브랜드 위탁판매 ,브랜드 관련 버즈 모니터링,리타겟팅 | 리마케팅,콘텐츠 마케팅 대행,랜딩 페이지 최적화,퍼포먼스 마케팅 연간 계약, +,,잠재 이슈 요인 탐지,,제휴-협업 기여도 관리 시스템,콘텐츠 검색 최적화,콘텐츠 마케팅 연간 계약, +,퍼포먼스 마케팅,,,,마케팅 성과 관리 (KPI) 시스템 구축,, +,,,,,성과 관리 대시보드 ,인플루언서 협업 성과 관리 시스템, +,,,,,,, +,,,,,,CDP/DMP 구축, \ No newline at end of file diff --git a/custom-skills/74-dintel-service-architect/shared/service-modules/D.intelligence-Intelligence Service Package list-v.1.0 - 전략 키워드 셋.csv b/custom-skills/74-dintel-service-architect/shared/service-modules/D.intelligence-Intelligence Service Package list-v.1.0 - 전략 키워드 셋.csv new file mode 100644 index 0000000..4cddcd4 --- /dev/null +++ b/custom-skills/74-dintel-service-architect/shared/service-modules/D.intelligence-Intelligence Service Package list-v.1.0 - 전략 키워드 셋.csv @@ -0,0 +1,25 @@ +D.intelligence Value Proposition,Service Category,Service Ttitle,Tagline,Primary Keywords,Description Phrases,Document,Remarks,Key Players,URL,Competitor Keywords,Tag Line,Service Offerfing +,,,,,,,,,,,, +Analysis,데이터 분석,,,마케팅 인텔리전스,,,,,,,, +,,,,데이터분석,,,,,,,, +,,,,,,,,,,,, +,,,,,,,,,,,, +,진단 컨설팅,,,마케팅 성과분석,,,,,,,, +,,,,검색엔진최적화,,,,,,,, +,,,,SEO,,,,,,,, +,,,,Google Analytics,,,,,,,, +Treatment,콘텐츠 마케팅,,,,,,,,,,, +,,,,,,,,,,,, +,,,,,,,,,,,, +,,,,,,,,,,,, +,디지털 마케팅,,,디지털 마케팅,,,,,,,, +,,,,,,,,,,,, +,,,,,,,,,,,, +,,,,,,,,,,,, +,,,,,,,,,,,, +Growth,퍼포먼스 마케팅,,,퍼포먼스 마케팅,,,,,,,, +,,,,,,,,,,,, +,,,,,,,,,,,, +,,,,,,,,,,,, +,,,,,,,,,,,, +,디지털 브랜딩,,,디지털 브랜딩,,,,,,,, \ No newline at end of file diff --git a/custom-skills/74-dintel-service-architect/shared/service-modules/D.intelligence-Intelligence Service Package list-v.1.0 - 타겟 오디언스 설정.csv b/custom-skills/74-dintel-service-architect/shared/service-modules/D.intelligence-Intelligence Service Package list-v.1.0 - 타겟 오디언스 설정.csv new file mode 100644 index 0000000..265980e --- /dev/null +++ b/custom-skills/74-dintel-service-architect/shared/service-modules/D.intelligence-Intelligence Service Package list-v.1.0 - 타겟 오디언스 설정.csv @@ -0,0 +1,44 @@ +Target Audience,Interests,related Keywords,Touch points,Landing Page,Primary Keyword,Call-to-Action,Remarks +마케팅 책임자,,,,,,, +,,,,,,, +,,,,,,, +사업주 | 창업자,,,,,,, +,,,,,,, +,,,,,,, +eCommerce 책임자,전환 최적화,,,,,, +,랜딩 페이지 최적화,,,,,, +,채널 유입 전략,,,,,, +,,,,,,, +브랜드 담당자,,,,,,, +,,,,,,, +,,,,,,, +디지털 마케팅 담당자,,,,,,, +,,,,,,, +,,,,,,, +콘텐츠 마케팅 담당자,콘텐츠 진단 | 분석,,,,,, +,콘텐츠 유통,,,,,, +,콘텐츠 마케팅 사례,,,,,, +,,,,,,, +데이터 분석가,,,,,,, +,,,,,,, +,,,,,,, +,,,,,,, +스타트업 기획자 | Growth Manager,,,,,,, +,,,,,,, +,,,,,,, +,,,,,,, +,,,,,,, +,,,,,,, +,,,,,,, +,,,,,,, +,,,,,,, +,,,,,,, +,,,,,,, +,,,,,,, +,,,,,,, +,,,,,,, +,,,,,,, +,,,,,,, +,,,,,,, +,,,,,,, +커뮤니케이션 담당자,,,,,,, \ No newline at end of file diff --git a/custom-skills/75-dintel-marketing-mgr/README.md b/custom-skills/75-dintel-marketing-mgr/README.md new file mode 100644 index 0000000..3f7f68d --- /dev/null +++ b/custom-skills/75-dintel-marketing-mgr/README.md @@ -0,0 +1,69 @@ +# 75 — D.intelligence Marketing Manager + +**Agent #75** in the [D.intelligence Agent Corps](../../dintel-shared/README.md). +Marketing content pipeline management for [D.intelligence](https://dintelligence.co.kr). + +## What It Does + +1. **Magazine D. Articles** — Draft blog posts for dintelligence.co.kr/dintelligence-magazine/ +2. **Newsletter Content** — Prepare newsletter editions with insights and key metrics +3. **Social Media** — Draft LinkedIn posts and social content +4. **WordPress Publishing** — Prepare content for WordPress CMS (dintelligence.co.kr) +5. **Content Calendar** — Plan and track content publication schedule +6. **SEO Integration** — Ensure content follows SEO best practices and strategic keywords + +## Agent Corps Context + +| Field | Value | +|-------|-------| +| Agent # | 75 | +| Skill Name | `dintel-marketing-mgr` | +| Version | 1.0.0 | +| Autonomy | **Draft & Wait** — drafts content, waits for Andrew's approval before publishing | +| Collaborates With | **#71 Brand Editor** (writing check), **#70 Brand Guardian** (compliance review), **dintel-shared** (shared constants) | + +This agent uses shared brand constants from `dintel-shared/src/dintel/brand.py` for colors, terminology, and style rules. + +## Content Pipeline (Chain C) + +``` +Marketing Mgr (#75) drafts + → Brand Editor (#71) checks writing + → Brand Guardian (#70) reviews compliance + → Andrew approves + → WordPress publish +``` + +## Triggers + +- "draft Magazine D. article", "Magazine D. 아티클 초안" +- "prepare newsletter", "뉴스레터 준비" +- "draft LinkedIn post", "LinkedIn 포스트 작성" +- "content calendar", "콘텐츠 캘린더" +- "plan marketing content", "마케팅 콘텐츠 기획" +- "WordPress content", "워드프레스 콘텐츠" + +## Brand Reference + +Based on the [D.intelligence Brand Guide](https://www.notion.so/dintelligence/Review-D-intelligence-Brand-Guide-31c581e58a1e805eb980cf01ccc9a8d4) from Notion. + +## Universal Guardrails + +1. **Never send to clients without Andrew's approval** — All client-facing content must be reviewed and approved by Andrew before delivery. +2. **Never delete — always archive** — Move outdated content to archive; never permanently delete. +3. **Never commit pricing without Andrew's sign-off** — Pricing, quotes, and fee-related content require explicit approval. +4. **Korean-first, bilingual notation for jargon** — Korean is the primary language; technical/English terms use 한글(English) bilingual notation on first use. +5. **Never cross-reference client data without consent** — Client data is siloed; do not mix or reference across client accounts without explicit permission. + +## Structure + +``` +75-dintel-marketing-mgr/ +├── code/ +│ └── CLAUDE.md # Claude Code directive +├── desktop/ +│ └── SKILL.md # Claude Desktop skill +├── shared/ +│ └── content-calendar-template.md # Content calendar template +└── README.md +``` diff --git a/custom-skills/75-dintel-marketing-mgr/code/CLAUDE.md b/custom-skills/75-dintel-marketing-mgr/code/CLAUDE.md new file mode 100644 index 0000000..6b17b01 --- /dev/null +++ b/custom-skills/75-dintel-marketing-mgr/code/CLAUDE.md @@ -0,0 +1,186 @@ +# D.intelligence Marketing Manager + +> **Agent #75** | `dintel-marketing-mgr` v1.0.0 | D.intelligence Agent Corps + +Manage D.intelligence's marketing content pipeline: Magazine D. articles, newsletters, LinkedIn posts, and WordPress content preparation. + +## Agent Corps Context + +- **Agent #75** — Marketing Manager +- **Autonomy**: Draft & Wait — drafts content, waits for Andrew's approval before publishing +- **Collaborates with**: Agent #71 (Brand Editor) for writing check, Agent #70 (Brand Guardian) for compliance review +- **Shared constants**: `dintel-shared/src/dintel/brand.py` (colors, terminology, style tokens) + +## Universal Guardrails + +1. **Never send to clients without Andrew's approval** — All client-facing content requires Andrew's review. +2. **Never delete — always archive** — Move outdated content to archive; never permanently delete. +3. **Never commit pricing without Andrew's sign-off** — Pricing and fee content requires explicit approval. +4. **Korean-first, bilingual notation** — Korean primary; jargon uses 한글(English) notation on first use. +5. **Never cross-reference client data without consent** — Client data is siloed by account. + +## Quick Reference + +- **Brand**: D.intelligence — Marketing Intelligence 파트너 +- **Website**: dintelligence.co.kr (WordPress) +- **Tagline**: Analysis, Treatment & Growth +- **Internal Motto**: Think Forward +- **Keywords**: Context, Content, Connection +- **Concept**: SMART Marketing Clinic +- **Brand Guide**: `../../dintel-shared/references/dintelligence_brand_guide.md` +- **Shared Constants**: `../../dintel-shared/src/dintel/brand.py` + +## Training & Education Materials + +Training content available in `shared/training-materials/`: + +| File | Description | +|------|-------------| +| `GA4-GTM-실무가이드-통합본.md` | Comprehensive GA4+GTM practical guide (one-document reference) | + +Additional training resources in the Service Package: +- `Source Files/교육 자료/ga4-in-action/` — 9-module GA4 course (00-목차 through 08-고급설정) +- `Source Files/교육 자료/강의용_AI 에이전트와 비즈니스 인사이트_20251120.pdf` — AI agent training deck + +Use these when creating training-related content, workshop promotions, or Data Intelligence Workshop pages. + +## Content Pipeline (Chain C) + +All content follows this approval chain: + +``` +Marketing Mgr (#75) drafts + → Brand Editor (#71) checks writing + → Brand Guardian (#70) reviews compliance + → Andrew approves + → WordPress publish +``` + +**IMPORTANT**: This agent operates in "Draft & Wait" mode. Never publish or send content directly. Always present drafts to Andrew for approval. + +## Core Workflows + +### Workflow 1: Magazine D. Article + +Draft blog articles for dintelligence.co.kr/dintelligence-magazine/. + +**Article Structure**: +``` +[카테고리 태그] 제목 (질문형 또는 방법제시형) +→ 도입: 주제 배경 및 중요성 +→ 본론 1: 핵심 개념 설명 +→ 본론 2: 구체적 사례 및 활용법 +→ 결론: '결론적으로' 시작, 핵심 메시지 요약 +→ 참고 링크: [출처명] 제목 형식 +``` + +**Category Tags**: `[Google Analytics 4]`, `[Meta ADs]`, `[Mixpanel]`, `[SEO]`, `[Data Analytics]`, `[Marketing Strategy]`, `[Content Marketing]` + +**Tone**: ~다 간결 서술체, 논리적, 실무 관점 + +### Workflow 2: Newsletter Content + +Prepare newsletter editions with: +- 핵심 수치 + 실무 시사점 structure +- Key industry insights and data points +- Links to recent Magazine D. articles +- Upcoming training/event announcements + +**Tone**: 간결, 인사이트 중심 + +### Workflow 3: LinkedIn Posts + +Draft professional social content: +- 업계 인사이트 + 적용 방법 structure +- Data-driven observations with practical takeaways +- Reference D.intelligence service modules where relevant +- Include relevant hashtags in English + +**Tone**: 인사이트, 실무 중심 + +### Workflow 4: WordPress Content Preparation + +Prepare content for WordPress CMS sections: +- **About**: Company/service introduction +- **SMART Marketing Clinic**: Service architecture pages +- **Data Intelligence Workshop**: Training content +- **Magazine D.**: Blog articles +- **상담문의**: Inquiry/contact content + +**Navigation**: English menu names except 상담문의 (Korean CTA) + +### Workflow 5: Content Calendar + +Plan and track content publication schedule using `../shared/content-calendar-template.md`: +- Monthly planning with weekly cadence +- Track status: IDEA → DRAFT → REVIEW → APPROVED → PUBLISHED +- Assign content types and target channels +- Coordinate with SEO keyword strategy + +### Workflow 6: SEO Integration + +Ensure all content follows SEO best practices: +- Reference strategic keywords from `03_STRATEGIC-KEYWORDS.md` in the Service Package +- Optimize meta titles, descriptions, and heading structure +- Internal linking to relevant service modules +- Use DataForSEO (dfs-mcp) for keyword research when available + +## Tone Map + +| Content Type | Ending Style | Focus | +|-------------|-------------|-------| +| Magazine D. articles | ~다 간결 서술체 | 논리적, 실무 관점 | +| Service pages | ~합니다 존칭 서술체 | 신뢰, 전문 | +| Newsletter | 간결, 인사이트 | 핵심 수치 + 실무 시사점 | +| LinkedIn | 인사이트, 실무 | 업계 인사이트 + 적용 방법 | +| Training promo | ~합니다/~세요 혼용 | 동기부여, 행동 유도 | + +## Non-Negotiable Writing Rules + +- Sino-Korean vocabulary: 극대화, 세분화, 도출, 수립, 진단 (not 늘리기, 나누기, etc.) +- Bilingual notation on first use: 핵심 성과 지표(KPI) +- Product names in original: Google Analytics 4, Meta ADs, Mixpanel +- English titles: Title Case with & (not "and") +- Section labels: ALL CAPS +- No colloquial: no ~해요, 엄청, 꿀팁, ㅎㅎ, emoji +- Sentence length: 40~80 chars, complex structures preferred +- Magazine D. articles end with 결론적으로 summary +- Article titles: [Category] + question/topic format + +## Service Architecture Reference + +When referencing D.intelligence services, use official module codes: + +| Phase | Prefix | Description | +|-------|--------|-------------| +| Analysis (진단) | A1-A6 | Diagnostic phase | +| Treatment (처방) | T1-T7 | Implementation phase | +| Growth (성장) | G1-G4 | Ongoing management | + +Always pair module code with Korean name (e.g., "A3 데이터 분석"). + +## Output Format + +When drafting content, always present output as: + +``` +## CONTENT DRAFT + +**Type**: [Magazine D. / Newsletter / LinkedIn / Service Page / Training Promo] +**Status**: DRAFT — Pending approval +**Target Channel**: [channel/URL] +**Target Date**: [planned publish date] +**SEO Keywords**: [primary, secondary] + +--- + +[Content body here] + +--- + +## NEXT STEPS +1. → Brand Editor (#71) review +2. → Brand Guardian (#70) compliance check +3. → Andrew approval +4. → Publish to WordPress +``` diff --git a/custom-skills/75-dintel-marketing-mgr/desktop/SKILL.md b/custom-skills/75-dintel-marketing-mgr/desktop/SKILL.md new file mode 100644 index 0000000..6183e18 --- /dev/null +++ b/custom-skills/75-dintel-marketing-mgr/desktop/SKILL.md @@ -0,0 +1,198 @@ +--- +name: dintel-marketing-mgr +description: | + This skill should be used when the user asks to "draft Magazine D. article", + "prepare newsletter", "draft LinkedIn post", "plan content calendar", + "마케팅 콘텐츠 기획", "Magazine D. 아티클 초안", "뉴스레터 준비", + "LinkedIn 포스트 작성", "콘텐츠 캘린더", "WordPress content", or mentions + D.intelligence marketing content planning and drafting. + Manages D.intelligence's marketing content pipeline with Draft & Wait autonomy. + Agent #75 in the D.intelligence Agent Corps. Works with Brand Editor (#71) and Brand Guardian (#70). +version: 1.0.0 +--- + +# D.intelligence Marketing Manager + +> **Agent #75** | `dintel-marketing-mgr` v1.0.0 | D.intelligence Agent Corps + +Manage D.intelligence's marketing content pipeline: Magazine D. articles, newsletters, LinkedIn posts, and WordPress content preparation. Operates in **Draft & Wait** mode — all content requires Andrew's approval before publishing. + +## Agent Corps Context + +- **Agent #75** — Marketing Manager +- **Autonomy**: Draft & Wait +- **Collaborates with**: Agent #71 (Brand Editor) for writing check, Agent #70 (Brand Guardian) for compliance review +- **Shared constants**: `dintel-shared/src/dintel/brand.py` (colors, terminology, style tokens) + +## Universal Guardrails + +1. **Never send to clients without Andrew's approval** — All client-facing content requires Andrew's review. +2. **Never delete — always archive** — Move outdated content to archive; never permanently delete. +3. **Never commit pricing without Andrew's sign-off** — Pricing and fee content requires explicit approval. +4. **Korean-first, bilingual notation** — Korean primary; jargon uses 한글(English) notation on first use. +5. **Never cross-reference client data without consent** — Client data is siloed by account. + +## Brand Identity (Quick Reference) + +- **Brand**: D.intelligence — Marketing Intelligence 파트너 +- **Mission**: 데이터 기반 의사결정으로 기업의 지속가능한 성장을 실현 +- **Tagline**: Analysis, Treatment & Growth +- **Internal Motto**: Think Forward +- **Keywords**: Context, Content, Connection +- **Concept**: SMART Marketing Clinic +- **Website**: dintelligence.co.kr (WordPress) + +## Content Pipeline (Chain C) + +All content follows this approval chain before publishing: + +``` +Marketing Mgr (#75) drafts + → Brand Editor (#71) checks writing + → Brand Guardian (#70) reviews compliance + → Andrew approves + → WordPress publish +``` + +## Six Core Workflows + +### Workflow 1: Magazine D. Article + +Draft blog articles for dintelligence.co.kr/dintelligence-magazine/. + +**Steps**: +1. Identify topic and select category tag +2. Research supporting data and examples +3. Draft following the article structure below +4. Include SEO keywords and meta description +5. Present as DRAFT for approval chain + +**Article Structure**: +``` +[카테고리 태그] 제목 (질문형 또는 방법제시형) +→ 도입: 주제 배경 및 중요성 +→ 본론 1: 핵심 개념 설명 +→ 본론 2: 구체적 사례 및 활용법 +→ 결론: '결론적으로' 시작, 핵심 메시지 요약 +→ 참고 링크: [출처명] 제목 형식 +``` + +**Category Tags**: `[Google Analytics 4]`, `[Meta ADs]`, `[Mixpanel]`, `[SEO]`, `[Data Analytics]`, `[Marketing Strategy]`, `[Content Marketing]` + +**Tone**: ~다 간결 서술체, 논리적, 실무 관점 + +### Workflow 2: Newsletter Content + +Prepare newsletter editions: + +1. Curate key industry data points and metrics +2. Summarize recent Magazine D. articles +3. Include upcoming events/training announcements +4. Structure as 핵심 수치 + 실무 시사점 + +**Tone**: 간결, 인사이트 중심 + +### Workflow 3: LinkedIn Posts + +Draft professional social content: + +1. Identify industry insight or data point +2. Frame with practical application angle +3. Reference D.intelligence service modules where relevant +4. Include relevant English hashtags + +**Tone**: 인사이트, 실무 중심 — 업계 인사이트 + 적용 방법 + +### Workflow 4: WordPress Content Preparation + +Prepare content for WordPress CMS sections: + +| Section | Content Type | +|---------|-------------| +| About | Company/service introduction | +| SMART Marketing Clinic | Service architecture pages | +| Data Intelligence Workshop | Training content | +| Magazine D. | Blog articles | +| 상담문의 | Inquiry/contact content | + +**Navigation**: English menu names except 상담문의 (Korean CTA) + +### Workflow 5: Content Calendar + +Plan and track content publication schedule: + +1. Use the content calendar template from `shared/content-calendar-template.md` +2. Plan monthly with weekly cadence +3. Track status: IDEA → DRAFT → REVIEW → APPROVED → PUBLISHED +4. Coordinate topics with SEO keyword strategy +5. Balance content types across channels + +### Workflow 6: SEO Integration + +Ensure all content follows SEO best practices: + +1. Research target keywords (use DataForSEO/dfs-mcp when available) +2. Optimize meta titles and descriptions +3. Structure headings (H1-H3) with keyword placement +4. Plan internal linking to relevant service module pages +5. Reference strategic keywords from service package + +## Tone Map + +| Content Type | Ending Style | Focus | +|-------------|-------------|-------| +| Magazine D. articles | ~다 간결 서술체 | 논리적, 실무 관점 | +| Service pages | ~합니다 존칭 서술체 | 신뢰, 전문 | +| Newsletter | 간결, 인사이트 | 핵심 수치 + 실무 시사점 | +| LinkedIn | 인사이트, 실무 | 업계 인사이트 + 적용 방법 | +| Training promo | ~합니다/~세요 혼용 | 동기부여, 행동 유도 | + +## Non-Negotiable Writing Rules + +- Sino-Korean formal vocabulary: 극대화, 세분화, 도출, 수립, 진단 +- Bilingual notation on first use: 핵심 성과 지표(KPI) +- Product names in original language: Google Analytics 4, Meta ADs, Mixpanel +- English titles: Title Case with & (not "and") +- Section labels: ALL CAPS +- No colloquial expressions: no ~해요, 엄청, 꿀팁, ㅎㅎ, emoji +- Sentence length: 40~80 characters, complex sentence structures preferred +- Magazine D. articles conclude with 결론적으로 summary paragraph +- Article titles: [Category Tag] + question or method-proposal format + +## Service Architecture Reference + +When referencing D.intelligence services, use official module codes: + +| Phase | Prefix | Modules | +|-------|--------|---------| +| Analysis (진단) | A1-A6 | 비즈니스/브랜드, 고객/소비자, 데이터분석, 디지털마케팅, 퍼포먼스, 운영/관리 | +| Treatment (처방) | T1-T7 | 브랜드스토리텔링, 고객접점, 디지털자산, 콘텐츠마케팅, 광고/전환, Brand Visibility, 운영자동화 | +| Growth (성장) | G1-G4 | 퍼포먼스마케팅, 콘텐츠대행, 모니터링/이슈관리, 연간운영 | + +Always pair module code with Korean name (e.g., "A3 데이터 분석"). + +## Output Format + +When drafting any content, always present output as: + +``` +## CONTENT DRAFT + +**Type**: [Magazine D. / Newsletter / LinkedIn / Service Page / Training Promo] +**Status**: DRAFT — Pending approval +**Target Channel**: [channel/URL] +**Target Date**: [planned publish date] +**SEO Keywords**: [primary, secondary] + +--- + +[Content body here] + +--- + +## NEXT STEPS +1. → Brand Editor (#71) review +2. → Brand Guardian (#70) compliance check +3. → Andrew approval +4. → Publish to WordPress +``` diff --git a/custom-skills/75-dintel-marketing-mgr/shared/content-calendar-template.md b/custom-skills/75-dintel-marketing-mgr/shared/content-calendar-template.md new file mode 100644 index 0000000..32bb2dc --- /dev/null +++ b/custom-skills/75-dintel-marketing-mgr/shared/content-calendar-template.md @@ -0,0 +1,76 @@ +# D.intelligence Content Calendar Template + +> Marketing Manager (#75) | Content Planning & Tracking + +## Monthly Content Calendar + +### YYYY-MM: [Month Theme/Focus] + +| Week | Date | Type | Channel | Title/Topic | Category Tag | SEO Keywords | Status | Owner | Notes | +|------|------|------|---------|-------------|-------------|-------------|--------|-------|-------| +| W1 | MM-DD | Magazine D. | Blog | | [Category] | | IDEA | #75 | | +| W1 | MM-DD | LinkedIn | Social | | - | | IDEA | #75 | | +| W2 | MM-DD | Newsletter | Email | | - | | IDEA | #75 | | +| W2 | MM-DD | Magazine D. | Blog | | [Category] | | IDEA | #75 | | +| W3 | MM-DD | LinkedIn | Social | | - | | IDEA | #75 | | +| W3 | MM-DD | Magazine D. | Blog | | [Category] | | IDEA | #75 | | +| W4 | MM-DD | Newsletter | Email | | - | | IDEA | #75 | | +| W4 | MM-DD | LinkedIn | Social | | - | | IDEA | #75 | | + +## Status Definitions + +| Status | Description | +|--------|-------------| +| IDEA | Topic identified, not yet drafted | +| DRAFT | Content drafted by Marketing Mgr (#75) | +| REVIEW | Under review by Brand Editor (#71) and/or Brand Guardian (#70) | +| APPROVED | Andrew has approved for publishing | +| PUBLISHED | Live on target channel | +| ARCHIVED | Removed from active calendar | + +## Content Type Guidelines + +### Magazine D. (Blog) +- **Cadence**: 2-3 articles per month +- **URL**: dintelligence.co.kr/dintelligence-magazine/ +- **Category Tags**: [Google Analytics 4], [Meta ADs], [Mixpanel], [SEO], [Data Analytics], [Marketing Strategy], [Content Marketing] +- **Tone**: ~다 간결 서술체 + +### Newsletter +- **Cadence**: 2x per month (bi-weekly) +- **Format**: Key metrics + practical insights + Magazine D. highlights +- **Tone**: 간결, 인사이트 중심 + +### LinkedIn +- **Cadence**: 2-3 posts per month +- **Format**: Industry insight + practical application +- **Tone**: 인사이트, 실무 중심 + +### Service Pages +- **Cadence**: As needed (new services, updates) +- **URL**: dintelligence.co.kr sections +- **Tone**: ~합니다 존칭 서술체 + +### Training Promo +- **Cadence**: Per training event schedule +- **Format**: Workshop/training announcement and promotion +- **Tone**: ~합니다/~세요 혼용 + +## Approval Chain Reminder + +``` +Marketing Mgr (#75) drafts + → Brand Editor (#71) checks writing + → Brand Guardian (#70) reviews compliance + → Andrew approves + → WordPress publish +``` + +## Monthly Review Checklist + +- [ ] All planned content published on schedule +- [ ] SEO keywords aligned with strategic keyword plan +- [ ] Content mix balanced across types and channels +- [ ] Internal links to service modules included +- [ ] Analytics review: top-performing content from previous month +- [ ] Next month topics identified and calendar drafted diff --git a/custom-skills/75-dintel-marketing-mgr/shared/training-materials/GA4-GTM-실무가이드-통합본.md b/custom-skills/75-dintel-marketing-mgr/shared/training-materials/GA4-GTM-실무가이드-통합본.md new file mode 100644 index 0000000..7017b62 --- /dev/null +++ b/custom-skills/75-dintel-marketing-mgr/shared/training-materials/GA4-GTM-실무가이드-통합본.md @@ -0,0 +1,5603 @@ +# GA4 & GTM 실무 가이드 + +**Google Analytics 4 & Google Tag Manager 설정, 감사, 활용 매뉴얼** + +> 본 가이드는 GA4를 처음 접하는 마케팅 담당자부터 이미 운영 중인 실무자까지, 실전에서 바로 활용할 수 있도록 구성되었습니다. 각 챕터는 독립적으로 활용 가능하며, NotebookLM 등 AI 학습 소스로도 사용할 수 있습니다. + +--- + +**최종 업데이트**: 2026년 3월 +**반영된 주요 변경사항**: Analytics Advisor 출시, Key Events 명칭 변경, Generated Insights, Measurement Protocol EU 엔드포인트, GTM Google 태그 자동 로드 + +--- + +## 이 가이드의 대상 독자 + +| 독자 유형 | 활용 방법 | 권장 시작 챕터 | +|-----------|-----------|---------------| +| GA4 입문자 (마케팅 담당자) | 기초 개념부터 설정까지 순서대로 학습 | Chapter 01부터 순차 진행 | +| GA4 실무자 (감사/최적화) | 필요한 챕터를 선택하여 체크리스트 기반 점검 | Chapter 06-07 중심 | +| 데이터 분석가 | 고급 설정 및 AI 기능 활용 | Chapter 07-08 중심 | +| 컨설턴트/대행사 | 프로젝트 착수 체크리스트 및 진단 프레임워크 | Chapter 01, 04 중심 | + +--- + +## 목차 + +### Chapter 01. [계정 권한 및 초기 진단](01-계정-권한-설정.md) +- GA4 계정 구조 이해 (Account > Property > Data Stream) +- 계정 접근 권한 획득 및 관리 +- 크롬 확장 프로그램을 활용한 태그 설치 현황 진단 +- 프로젝트 착수 인터뷰 체크리스트 +- 2025-2026 GTM 업데이트 (Google 태그 자동 로드, 태그 게이트웨이) + +### Chapter 02. [웹사이트/앱 구조 분석](02-웹사이트-앱-분석.md) +- 메뉴 구조 및 정보 구조 (Information Architecture) 분석 +- 검색 엔진 결과 페이지 (SERP) 노출 진단 (구글, 네이버) +- SEO 진단: 메타 정보, 키워드, 콘텐츠 점검 +- UTM 매개변수 (UTM Parameters) 설정 및 네이밍 컨벤션 +- 모바일 앱 분석 기초 (Firebase 연동) + +### Chapter 03. [사용자 세그먼트 정의](03-사용자-세그먼트.md) +- 목표 사용자 그룹 설정 및 고객 프로파일링 +- 퍼스트 파티 데이터 (1st Party Data) 전략 +- 이탈 분석 및 리마케팅 (Re-marketing) 전략 +- OMTM (One Metric That Matters) 설정 +- GA4 잠재고객 (Audience) 설정: 조건식, 트리거, 스코프 + +### Chapter 04. [사용자 행동 가설 & 측정 계획](04-행동-가설-측정계획.md) +- 사용자 행동 가설 수립: 유입처, 접점, 이동 경로 +- 측정 프레임워크 (Measurement Framework) 설계 +- 핵심 성과 지표 (KPI) 및 매크로/마이크로 전환 설정 +- 리드 생성 (Lead Generation) 전략 +- 측정 계획서 (Measurement Plan) 작성 템플릿 + +### Chapter 05. [이벤트 & 주요 이벤트 설정](05-이벤트-전환-설정.md) +- GA4 이벤트 기반 데이터 모델 이해 +- 주요 이벤트 (Key Events) 설정 — 구 "전환 (Conversions)" +- 이커머스, 회원가입, 콘텐츠 반응 이벤트 설계 +- 트리거 조건 분석: 클릭, 링크, 폼, 스크롤, 요소 공개 +- 이벤트 태깅 플랜 및 보고서 매핑 + +### Chapter 06. [GA4 속성 및 데이터 수집 설정](06-GA4-속성-설정.md) +- 속성 기본 설정: 시간대, 통화, 업종 카테고리 +- 데이터 스트림 및 향상된 측정 (Enhanced Measurement) 상세 설정 +- Google 태그 설정: 교차 도메인, 내부 트래픽, 세션 타임아웃 +- 데이터 수집: Google Signals, User-ID, 동의 관리 +- 데이터 보존 (14개월), 필터, 가져오기 + +### Chapter 07. [리포트 구성 & 분석 활용](07-리포트-분석-활용.md) +- 리포트 사용자 분류별 활용 전략 +- 기본 보고서 맞춤 설정 및 보고서 라이브러리 +- 탐색 분석 (Explorations) 7가지 기법 +- 맞춤 측정기준, 맞춤 측정항목, 계산된 측정항목 (Calculated Metrics) +- 채널 그룹, 기여 분석 (Attribution), 보고 ID 설정 + +### Chapter 08. [고급 설정 & AI 기능 (2025-2026)](08-고급설정-AI기능.md) +- BigQuery 연동 및 Looker Studio 리포트 +- User-ID 및 측정 프로토콜 (Measurement Protocol) 최신 업데이트 +- Analytics Advisor: Gemini 기반 AI 대화형 분석 (2025.12) +- Generated Insights: AI 자동 인사이트 요약 (2026.02) +- 예측 측정항목 (Predictive Metrics) 및 예측 잠재고객 +- 프라이버시/동의 관리, GTM 2025-2026 업데이트 +- 정기 감사 및 운영 체계 수립 + +--- + +## 워크플로우 개요 + +``` +[1단계: 진단] + 계정 권한 확인 → 태그 설치 진단 → 웹사이트 구조 분석 + | +[2단계: 설계] v + 사용자 세그먼트 정의 → 행동 가설 수립 → 측정 계획 작성 + | +[3단계: 구현] v + 이벤트/Key Event 설정 → GA4 속성 설정 → 데이터 수집 구성 + | +[4단계: 활용] v + 리포트 맞춤 구성 → 탐색 분석 → 잠재고객/채널 설정 + | +[5단계: 고급] v + BigQuery 연동 → AI 기능 활용 → 정기 감사 체계 운영 +``` + +--- + +## GA4 주요 변경 이력 (2024-2026) + +| 시기 | 변경 사항 | +|------|-----------| +| 2024년 | "전환 (Conversions)" → "주요 이벤트 (Key Events)" 명칭 변경 | +| 2024년 | Google Signals가 보고 ID (Reporting Identity)에서 제외 | +| 2025년 4월 | GTM 컨테이너 내 Google Ads/Floodlight 태그 시 Google 태그 자동 로드 | +| 2025년 5월 | Measurement Protocol EU 전용 엔드포인트 추가 | +| 2025년 6월 | Measurement Protocol 디바이스/지리 정보 필드 추가 | +| 2025년 9월 | GA4 Event Builder: screen_view, ad_impression 앱 스트림 지원 | +| 2025년 12월 | Analytics Advisor (Gemini 기반 AI 분석 어드바이저) 출시 | +| 2025년 12월 | Measurement Protocol 앱 스트림 in_app_purchase, session_id 지원 | +| 2026년 1월 | Google 태그 게이트웨이 (Akamai 경유) 도입 | +| 2026년 1월 | 크로스 채널 예산 관리, 전환 기여 분석 보고서 (베타) | +| 2026년 2월 | Generated Insights: 홈 페이지 AI 인사이트 요약 기능 | +| 2026년 2월 | Measurement Protocol 쿠키 기반 client_id/session_id 수용 | + +--- + +## 참고 자료 (공식 문서) + +- [GA4 새로운 기능](https://support.google.com/analytics/answer/9164320?hl=en) — What's new in Google Analytics +- [GA4 공지사항](https://support.google.com/analytics/announcements/10707884?hl=en) — GA4 Announcements +- [GTM 릴리스 노트](https://support.google.com/tagmanager/answer/4620708?hl=en) — Tag Manager Release Notes +- [Measurement Protocol 변경 로그](https://developers.google.com/analytics/devguides/collection/protocol/ga4/changelog) — Measurement Protocol Changelog +- [서버 사이드 태깅 릴리스 노트](https://developers.google.com/tag-platform/tag-manager/server-side/release-notes) — Server-side Tagging Release Notes +- [GA4 도움말 센터](https://support.google.com/analytics) — Google Analytics Help Center + +--- + +## 가이드 활용 안내 + +**Markdown 변환**: 각 챕터 파일은 독립적인 Markdown 문서로, 다음과 같이 변환 가능합니다. + +| 변환 대상 | 도구/방법 | +|-----------|-----------| +| Google Docs | Markdown을 복사-붙여넣기 또는 Docs Markdown 확장 사용 | +| Microsoft Word (.docx) | Pandoc: `pandoc chapter.md -o chapter.docx` | +| Google Slides / PowerPoint | 섹션별 발췌 후 슬라이드 구성, 또는 Marp 활용 | +| NotebookLM | 각 챕터 .md 파일을 소스로 직접 업로드 | +| PDF | Pandoc 또는 브라우저 인쇄 기능 활용 | + +> 전체 가이드를 하나의 파일로 합치려면: `cat 0*.md > ga4-gtm-complete-guide.md` + + +--- + + +# Chapter 01. 계정 권한 및 초기 진단 + +--- + +**목차** + +- [1. GA4 계정 구조 이해](#1-ga4-계정-구조-이해) +- [2. 계정 접근 권한 획득 및 관리](#2-계정-접근-권한-획득-및-관리) +- [3. 기존 태그 설치 현황 진단](#3-기존-태그-설치-현황-진단) +- [4. 프로젝트 착수 인터뷰 체크리스트](#4-프로젝트-착수-인터뷰-체크리스트) +- [5. 2025-2026 주요 업데이트](#5-2025-2026-주요-업데이트) + +--- + +## 1. GA4 계정 구조 이해 + +GA4를 처음 접하는 분이라면 가장 먼저 이해해야 할 것이 **계정의 계층 구조**입니다. GA4는 세 단계의 계층으로 구성되며, 각 단계마다 관리할 수 있는 범위와 권한이 다릅니다. + +### 1.1 계층 구조 개요 + +``` +계정 (Account) + └── 속성 (Property) + └── 데이터 스트림 (Data Stream) +``` + +| 계층 | 설명 | 예시 | +|------|------|------| +| **계정 (Account)** | 최상위 관리 단위. 하나의 조직 또는 회사 단위로 생성합니다. | "OurDigital Inc." | +| **속성 (Property)** | 데이터를 수집하고 보고서를 생성하는 단위. 하나의 브랜드, 제품, 또는 서비스 단위로 생성합니다. | "OurDigital 공식 웹사이트" | +| **데이터 스트림 (Data Stream)** | 실제 데이터가 유입되는 경로. 웹사이트, iOS 앱, Android 앱 각각에 대해 별도로 생성합니다. | "웹 스트림 - ourdigital.com" | + +### 1.2 각 레벨별 역할 + +#### 계정 (Account) + +- 하나의 Google 계정으로 **최대 2,000개의 GA4 속성**을 관리할 수 있습니다. +- 계정 레벨에서 설정하는 항목: 사용자 권한, 계정 변경 내역, 휴지통 관리 +- 계정을 삭제하면 하위의 모든 속성과 데이터 스트림이 함께 삭제됩니다. + +#### 속성 (Property) + +- GA4에서 데이터 분석의 핵심 단위입니다. +- 속성 레벨에서 관리하는 항목: 이벤트 (Events), 전환 설정, 잠재고객 (Audiences), 맞춤 측정기준 (Custom Dimension), 데이터 보관 기간 +- 하나의 속성 안에 **여러 데이터 스트림**을 연결하여 웹과 앱 데이터를 통합 분석할 수 있습니다. + +#### 데이터 스트림 (Data Stream) + +- 플랫폼별 데이터 수집 채널입니다. +- 세 가지 유형: **웹 스트림**, **iOS 앱 스트림**, **Android 앱 스트림** +- 웹 스트림 생성 시 **측정 ID (Measurement ID)**가 발급됩니다 (형식: G-XXXXXXXXXX). +- 향상된 측정 (Enhanced Measurement) 기능을 통해 별도 코딩 없이 스크롤, 이탈 클릭, 사이트 검색 등의 이벤트를 자동 수집할 수 있습니다. + +> **초보자 팁**: GA4 속성 하나에 웹사이트와 앱 스트림을 함께 연결하면, 동일 사용자가 웹과 앱을 넘나드는 행동을 하나의 보고서에서 확인할 수 있습니다. 다만, 웹 전용 서비스라면 웹 스트림 하나만 생성해도 충분합니다. + +### 1.3 계정 구조 설계 시 고려사항 + +| 상황 | 권장 구조 | +|------|-----------| +| 단일 브랜드, 웹사이트 1개 | 계정 1개 > 속성 1개 > 웹 스트림 1개 | +| 단일 브랜드, 웹 + 앱 | 계정 1개 > 속성 1개 > 웹 스트림 1개 + 앱 스트림 1~2개 | +| 다수 브랜드를 운영하는 회사 | 계정 1개 > 브랜드별 속성 각각 생성 | +| 대행사가 여러 클라이언트 관리 | 클라이언트별 계정 각각 생성 (데이터 분리 및 권한 관리 용이) | + +> **실무 참고**: 대행사가 클라이언트의 GA4를 관리할 때는, 클라이언트 소유의 계정에 대행사 담당자를 사용자로 추가하는 방식을 권장합니다. 대행사 계정 아래에 클라이언트 속성을 만들면, 계약 종료 시 데이터 이관이 복잡해집니다. + +### 더 읽어보기 (Further Reading) + +- [GA4 액세스 및 데이터 제한 관리](https://support.google.com/analytics/answer/9305587) +- [웹사이트 및 앱의 애널리틱스 설정](https://support.google.com/analytics/answer/9304153) + +--- + +## 2. 계정 접근 권한 획득 및 관리 + +GA4 프로젝트를 시작하려면 적절한 수준의 접근 권한이 확보되어야 합니다. 이 절에서는 권한 체계를 이해하고, 실무에서 권한을 요청하거나 부여하는 절차를 다룹니다. + +### 2.1 설정 대상 채널 확인 + +권한을 요청하기 전에, 프로젝트에서 추적해야 할 디지털 채널을 먼저 파악합니다. + +**채널 확인 체크리스트** + +- [ ] 메인 웹사이트 URL 확인 +- [ ] 서브도메인 또는 별도 도메인 운영 여부 확인 (예: blog.example.com, shop.example.com) +- [ ] 모바일 앱 운영 여부 및 플랫폼 확인 (iOS / Android) +- [ ] 랜딩 페이지 또는 이벤트 페이지 별도 운영 여부 확인 +- [ ] 기존 GA (UA 또는 GA4) 설치 여부 및 계정 정보 확인 +- [ ] GTM (Google Tag Manager) 설치 여부 및 컨테이너 정보 확인 + +### 2.2 GA4 권한 레벨 + +GA4는 계정 레벨과 속성 레벨 각각에서 사용자 권한을 설정할 수 있습니다. 상위 레벨에서 부여한 권한은 하위 레벨로 자동 상속됩니다. + +| 권한 레벨 | 설명 | 주요 가능 작업 | +|-----------|------|----------------| +| **관리자 (Administrator)** | 최고 권한. 사용자 관리 및 전체 설정 변경 가능 | 사용자 추가/삭제, 속성 생성/삭제, 모든 설정 변경 | +| **편집자 (Editor)** | 설정 변경이 가능하나 사용자 관리 불가 | 이벤트 생성, 전환 설정, 잠재고객 생성, 데이터 스트림 관리 | +| **분석가 (Analyst)** | 보고서 열람 및 개인 탐색 보고서 생성 가능 | 탐색 분석 (Explorations) 생성, 공유된 보고서 조회 | +| **뷰어 (Viewer)** | 보고서 열람만 가능 | 대시보드 및 보고서 조회 (설정 변경 불가) | + +> **주의**: 관리자 권한은 반드시 클라이언트 측 담당자가 최소 1명 이상 보유해야 합니다. 대행사 담당자만 관리자 권한을 갖고 있을 경우, 계약 종료 시 클라이언트가 자사 데이터에 접근하지 못하는 상황이 발생할 수 있습니다. + +#### 데이터 제한 추가 옵션 + +권한 레벨과 별도로, 다음과 같은 데이터 제한을 추가 설정할 수 있습니다. + +| 데이터 제한 옵션 | 설명 | +|------------------|------| +| **비용 측정항목 없음 (No Cost Metrics)** | Google Ads 연동 시 비용 관련 데이터 접근 차단 | +| **수익 측정항목 없음 (No Revenue Metrics)** | 수익, 거래 관련 데이터 접근 차단 | + +### 2.3 권한 설정 절차 + +#### GA4에서 사용자 추가하기 + +1. [Google 애널리틱스](https://analytics.google.com/)에 관리자 계정으로 로그인합니다. +2. 좌측 하단의 **관리 (Admin)** 아이콘을 클릭합니다. +3. 권한을 부여할 레벨을 선택합니다. + - 계정 레벨: **계정 > 계정 액세스 관리 (Account Access Management)** + - 속성 레벨: **속성 > 속성 액세스 관리 (Property Access Management)** +4. 우측 상단의 **+** 버튼을 클릭한 뒤, **사용자 추가 (Add users)**를 선택합니다. +5. 추가할 사용자의 **Google 계정 이메일 주소**를 입력합니다. +6. 부여할 권한 레벨을 선택하고, 필요 시 데이터 제한을 설정합니다. +7. **추가 (Add)** 버튼을 클릭합니다. + +#### GTM에서 사용자 추가하기 + +1. [Google Tag Manager](https://tagmanager.google.com/)에 관리자 계정으로 로그인합니다. +2. 상단의 **관리 (Admin)** 탭을 클릭합니다. +3. **계정** 또는 **컨테이너** 레벨에서 **사용자 관리 (User Management)**를 선택합니다. +4. **+** 버튼을 클릭하고 사용자를 추가합니다. + +GTM의 권한 체계는 GA4와 다릅니다. + +| GTM 권한 레벨 | 설명 | +|---------------|------| +| **관리자 (Admin)** | 모든 권한 + 사용자 관리 | +| **게시 (Publish)** | 워크스페이스 생성, 버전 생성 및 게시 | +| **승인 (Approve)** | 버전 생성은 가능하나 게시 불가 | +| **수정 (Edit)** | 워크스페이스 내 태그, 트리거, 변수 수정 | +| **읽기 (Read)** | 열람만 가능 | + +### 2.4 실무 권한 요청 체크리스트 + +프로젝트 시작 시 클라이언트에게 요청해야 할 권한 목록입니다. + +- [ ] GA4 속성 - 편집자 이상 권한 (이벤트, 전환 설정을 위해 필수) +- [ ] GTM 컨테이너 - 게시 이상 권한 (태그 배포를 위해 필수) +- [ ] Google Ads 계정 - 읽기 이상 권한 (광고 데이터 연동 확인용) +- [ ] Google Search Console - 소유자 또는 전체 사용자 권한 (검색 데이터 연동용) +- [ ] 웹사이트 관리자 페이지 접근 권한 (GTM 코드 직접 설치 시 필요) + +> **실무 팁**: 권한 요청 시에는 왜 해당 권한이 필요한지, 어떤 작업을 수행할 것인지를 명시하여 메일로 요청하면 승인이 빠릅니다. "GA4 이벤트 설정 및 GTM 태그 배포를 위해 편집자/게시 권한이 필요합니다"와 같이 구체적으로 작성하세요. + +### 더 읽어보기 (Further Reading) + +- [GA4 액세스 및 데이터 제한 관리](https://support.google.com/analytics/answer/9305587) +- [Tag Manager 소개](https://support.google.com/tagmanager/answer/6102821) + +--- + +## 3. 기존 태그 설치 현황 진단 + +새로운 GA4 프로젝트를 시작하기 전에, 대상 웹사이트에 이미 설치된 태그와 스크립트의 현황을 파악하는 것이 중요합니다. 기존 설정을 파악하지 않으면 데이터 중복 수집, 충돌, 페이지 성능 저하 등의 문제가 발생할 수 있습니다. + +### 3.1 크롬 확장 프로그램을 활용한 진단 + +아래의 크롬 확장 프로그램들을 활용하면 별도의 코드 분석 없이도 사이트의 태그 설치 현황을 빠르게 파악할 수 있습니다. + +#### WASP (Web Analytics Solution Profiler) + +| 항목 | 내용 | +|------|------| +| **용도** | 웹 애널리틱스 솔루션의 전반적 설치 상태 점검 | +| **주요 확인 사항** | 쿠키 상태, 페이지 헤더 정보, 데이터 수집 구조, 히트(Hit) 전송 내역 | +| **활용법** | 페이지 로드 후 확장 프로그램 아이콘을 클릭하면 해당 페이지에서 발생하는 모든 애널리틱스 요청을 실시간으로 표시합니다. GA4, UA, Adobe Analytics 등 주요 솔루션을 자동 감지합니다. | + +#### Ghostery + +| 항목 | 내용 | +|------|------| +| **용도** | 사이트에 포함된 광고 트래커, 애드온, 분석 도구 식별 | +| **주요 확인 사항** | 광고 네트워크 (Google Ads, Meta Pixel 등), 분석 도구, 마케팅 자동화 도구, 소셜 미디어 위젯 | +| **활용법** | 페이지 방문 시 자동으로 감지된 트래커 목록을 카테고리별로 분류하여 보여줍니다. 불필요하거나 중복된 트래커를 한눈에 파악할 수 있습니다. | + +#### Analytics Debugger + +| 항목 | 내용 | +|------|------| +| **용도** | GA4 및 기타 애널리틱스 도구의 실시간 디버깅 | +| **주요 확인 사항** | 이벤트 발화 (Event Firing) 여부, 이벤트 매개변수 (Event Parameters) 값, 측정 ID 확인, 데이터 전송 상태 | +| **활용법** | 확장 프로그램 활성화 후 페이지를 탐색하면, 브라우저 화면 위에 실시간으로 발생하는 이벤트를 오버레이로 표시합니다. 이벤트명, 매개변수, 전송 대상 속성 ID를 즉시 확인할 수 있습니다. | + +#### META SEO Inspector + +| 항목 | 내용 | +|------|------| +| **용도** | SEO 관련 메타 태그 및 구조화 데이터 점검 | +| **주요 확인 사항** | title, description, canonical URL, OG (Open Graph) 태그, 구조화된 데이터 (Structured Data), hreflang 설정 | +| **활용법** | 페이지의 SEO 설정 상태를 한 화면에서 확인할 수 있으며, 누락되거나 잘못된 설정은 경고 표시로 알려줍니다. GA4 프로젝트와 직접 관련은 없으나, 전체 사이트 건강도를 파악하는 데 유용합니다. | + +#### ADSWERVE dataLayer Inspector+ + +| 항목 | 내용 | +|------|------| +| **용도** | 종합 태그 관리 툴킷. GA4 활동 검수 및 데이터 레이어 (dataLayer) 모니터링 | +| **주요 확인 사항** | dataLayer 푸시 이벤트, GTM 컨테이너 로드 상태, GA4 이벤트 검증, 태그 발화 순서 | +| **활용법** | 크롬 개발자 도구 (DevTools) 패널에 통합되어, dataLayer에 푸시되는 모든 데이터를 시간순으로 추적합니다. GTM을 통한 태그 관리 환경에서 특히 유용합니다. | + +### 3.2 진단 절차 + +다음 단계에 따라 체계적으로 기존 설치 현황을 진단합니다. + +**Step 1. 설치된 태그 식별** + +- [ ] WASP 또는 Ghostery를 활용하여 사이트에 설치된 모든 분석/광고 도구 목록 작성 +- [ ] 각 도구의 계정 ID 또는 측정 ID 기록 (예: G-XXXXXXXXXX, UA-XXXXXXX-X, AW-XXXXXXXXX) +- [ ] GTM 컨테이너 설치 여부 및 컨테이너 ID 확인 (형식: GTM-XXXXXXX) + +**Step 2. 태그 설치 방식 확인** + +| 설치 방식 | 특징 | 확인 방법 | +|-----------|------|-----------| +| GTM을 통한 설치 | 태그 관리가 용이, 권장 방식 | GTM 컨테이너 로그인 후 태그 목록 확인 | +| 직접 코드 삽입 (하드코딩) | HTML에 직접 스크립트가 삽입됨 | 페이지 소스 보기에서 gtag.js, analytics.js 등 검색 | +| 워드프레스 플러그인 등 | CMS 플러그인을 통한 설치 | 관리자 페이지에서 설치된 플러그인 확인 | + +- [ ] 각 태그의 설치 방식 파악 및 기록 +- [ ] GTM과 하드코딩이 혼재되어 있는지 확인 (데이터 중복 수집의 주요 원인) + +**Step 3. 기존 설정의 용도 파악** + +- [ ] 각 태그/스크립트가 어떤 목적으로 설치되었는지 담당자에게 확인 +- [ ] 현재 활용 중인 태그와 더 이상 사용하지 않는 태그 분류 +- [ ] 전환 추적 (Conversion Tracking) 설정이 있다면, 추적 대상 액션과 매핑 확인 + +**Step 4. 데이터 수집 상태 검증** + +- [ ] Analytics Debugger로 실제 이벤트 발화 여부 확인 +- [ ] GA4 실시간 보고서 (Realtime Report)에서 데이터 수신 여부 확인 +- [ ] ADSWERVE dataLayer Inspector로 dataLayer 데이터 구조 점검 + +### 3.3 미활용 스크립트 제거의 필요성 + +기존 사이트에는 과거에 설치했으나 더 이상 사용하지 않는 스크립트가 남아 있는 경우가 많습니다. 이를 방치하면 다음과 같은 문제가 발생합니다. + +| 문제 유형 | 상세 설명 | +|-----------|-----------| +| **페이지 로딩 속도 저하** | 불필요한 외부 스크립트 로드로 인해 페이지 렌더링이 지연됩니다. Core Web Vitals 점수에 부정적 영향을 미칩니다. | +| **데이터 디버깅 방해** | 사용하지 않는 태그가 여전히 데이터를 수집하거나 요청을 보내면, 유효한 데이터와 혼재되어 디버깅이 어려워집니다. | +| **개인정보 규정 위반 위험** | 방치된 트래커가 사용자 동의 없이 데이터를 수집할 경우, 개인정보보호법 또는 GDPR 위반 소지가 있습니다. | +| **보안 취약점** | 업데이트되지 않는 서드파티 스크립트는 보안 취약점의 원인이 될 수 있습니다. | + +> **권장 사항**: 프로젝트 초기에 사이트 내 모든 서드파티 스크립트를 목록화하고, 사용 여부를 확인한 뒤, 미사용 스크립트는 제거하는 것을 권장합니다. 이 작업은 GA4 설정의 정확성을 높이고 사이트 성능을 개선하는 데 기여합니다. + +### 3.4 초기 진단 결과 정리 템플릿 + +진단 결과를 아래 형식으로 정리하면 이후 설정 작업에 활용하기 좋습니다. + +``` +## 사이트 태그 진단 결과 + +### 기본 정보 +- 사이트 URL: +- 진단 일자: +- 진단 담당자: + +### 설치된 도구 목록 +| 도구명 | 계정/측정 ID | 설치 방식 | 활용 상태 | 비고 | +|--------|-------------|-----------|-----------|------| +| GA4 | G-XXXXXXXXXX | GTM | 활용 중 | | +| Meta Pixel | XXXXXXX | 하드코딩 | 활용 중 | | + +### GTM 컨테이너 현황 +- 컨테이너 ID: +- 태그 수: +- 트리거 수: +- 변수 수: +- 마지막 게시 일자: + +### 제거 대상 스크립트 +| 스크립트/태그명 | 사유 | 제거 예정일 | +|----------------|------|------------| +| | | | + +### 특이사항 및 주의점 +- +``` + +### 더 읽어보기 (Further Reading) + +- [Tag Manager 소개](https://support.google.com/tagmanager/answer/6102821) +- [웹사이트 및 앱의 애널리틱스 설정](https://support.google.com/analytics/answer/9304153) + +--- + +## 4. 프로젝트 착수 인터뷰 체크리스트 + +GA4 설정은 단순한 기술 작업이 아닙니다. 비즈니스 목표와 마케팅 전략에 맞는 데이터 수집 체계를 설계하려면, 프로젝트 착수 전에 클라이언트와 충분한 인터뷰를 진행해야 합니다. + +### 4.1 마케팅 전략 및 브랜딩 방향 확인 + +GA4에서 어떤 이벤트를 추적하고, 어떤 지표를 주요 이벤트 (Key Events)로 설정할지는 비즈니스의 마케팅 전략에 따라 달라집니다. + +- [ ] 현재 비즈니스의 핵심 목표는 무엇입니까? (매출 증대, 브랜드 인지도 확대, 리드 생성 등) +- [ ] 온라인 마케팅의 주요 채널은 무엇입니까? (검색 광고, 소셜 미디어, 이메일 마케팅, 콘텐츠 마케팅 등) +- [ ] 브랜드 포지셔닝과 타겟 고객층은 어떻게 정의하고 있습니까? +- [ ] 경쟁사 대비 차별화 포인트는 무엇입니까? +- [ ] 올해(또는 이번 분기)의 마케팅 KPI는 무엇입니까? + +### 4.2 기존 마케팅 활동 내역 및 브랜드 에셋 확인 + +- [ ] 현재 진행 중인 광고 캠페인 목록 (Google Ads, Meta Ads, 네이버 광고 등) +- [ ] 광고 예산 규모 및 배분 현황 +- [ ] 기존에 활용 중인 분석 도구 및 보고서 (GA, Adobe Analytics, 내부 BI 등) +- [ ] UTM 파라미터 (UTM Parameters) 사용 규칙이 있는지 확인 +- [ ] 보유 중인 브랜드 에셋: 로고, 브랜드 가이드라인, 랜딩 페이지 등 +- [ ] CRM (Customer Relationship Management) 시스템 사용 여부 및 연동 가능성 + +### 4.3 주력 상품 및 카테고리별 소구 포인트 + +전자상거래 (E-commerce) 사이트이거나 상품/서비스를 판매하는 사이트라면, 상품 구조를 이해해야 향상된 전자상거래 (Enhanced E-commerce) 이벤트를 올바르게 설계할 수 있습니다. + +- [ ] 주력 상품 또는 서비스는 무엇입니까? +- [ ] 상품 카테고리 분류 체계는 어떻게 되어 있습니까? +- [ ] 각 카테고리별 주요 소구 포인트 (가격, 품질, 편의성, 디자인 등)는 무엇입니까? +- [ ] 시즌별 또는 시기별 주력 상품이 변경됩니까? +- [ ] 상품별 마진율 또는 우선순위 차이가 있습니까? +- [ ] 프로모션, 할인, 멤버십 등의 가격 정책이 있습니까? + +### 4.4 주력 상품의 키워드 및 인지 속성 + +검색 광고 및 SEO 전략과 GA4 데이터를 연계하기 위해, 상품 관련 키워드 체계를 파악합니다. + +- [ ] 주력 상품/서비스의 핵심 키워드 목록 +- [ ] 브랜드 키워드 vs. 비브랜드 키워드 구분 +- [ ] 고객이 해당 상품을 검색할 때 사용하는 주요 검색어 +- [ ] 상품/서비스의 인지 경로 (검색, 광고, 입소문, SNS 등) +- [ ] 고객의 구매 의사결정에 영향을 미치는 주요 요인 +- [ ] 리뷰, 평점, 인증 등 신뢰도 관련 요소 + +### 4.5 기술 환경 확인 + +- [ ] 웹사이트 개발 플랫폼/CMS (워드프레스, Shopify, 카페24, 자체 개발 등) +- [ ] 개발팀 협업 가능 여부 및 개발 리소스 수준 +- [ ] 사이트 변경 배포 주기 (수시, 주 1회, 격주 등) +- [ ] 기존 dataLayer 구현 여부 +- [ ] 쿠키 동의 배너 (Cookie Consent Banner) 구현 여부 +- [ ] SPA (Single Page Application) 여부 + +> **실무 팁**: 인터뷰 결과는 반드시 문서화하여 프로젝트 관계자 전원이 공유할 수 있도록 합니다. 이 문서는 이후 측정 계획서 (Measurement Plan) 작성의 기초 자료가 됩니다. + +### 더 읽어보기 (Further Reading) + +- [웹사이트 및 앱의 애널리틱스 설정](https://support.google.com/analytics/answer/9304153) + +--- + +## 5. 2025-2026 주요 업데이트 + +GA4와 GTM 생태계는 지속적으로 변화하고 있습니다. 프로젝트 착수 시점에 최신 변경 사항을 인지하고 있어야 설정에 반영할 수 있습니다. + +### 5.1 GTM의 Google 태그 자동 로드 (2025년 4월~) + +**변경 내용**: GTM 컨테이너에 Google Ads 태그 또는 Floodlight 태그가 포함되어 있을 경우, GTM이 해당 태그보다 먼저 **Google 태그 (Google Tag)**를 자동으로 로드합니다. + +**영향 및 대응**: + +| 항목 | 상세 | +|------|------| +| **배경** | Google 태그는 Google Ads 전환 추적, 리마케팅, GA4 등 Google 제품군의 공통 기반 태그입니다. 기존에는 수동으로 Google 태그를 별도 설정해야 했습니다. | +| **변경 효과** | Google Ads 또는 Floodlight 태그를 사용하는 GTM 컨테이너에서 Google 태그가 자동 로드되므로, 별도 설정 없이도 동의 모드 (Consent Mode) 연동 및 퍼스트파티 데이터 수집이 원활해집니다. | +| **주의사항** | 이미 Google 태그를 수동으로 설정한 경우, 중복 로드 여부를 확인해야 합니다. GTM 컨테이너 내 태그 설정을 점검하여 불필요한 중복을 제거하세요. | +| **확인 방법** | GTM 미리보기 모드 (Preview Mode) 또는 Analytics Debugger로 Google 태그 로드 순서를 확인합니다. | + +### 5.2 Google 태그 게이트웨이 도입 (2026년 1월~) + +**변경 내용**: Google 태그가 **Akamai CDN (Content Delivery Network)을 경유하는 게이트웨이 방식**으로 데이터를 전송합니다. + +**영향 및 대응**: + +| 항목 | 상세 | +|------|------| +| **배경** | 기존에는 Google 태그가 google-analytics.com 또는 googletagmanager.com 도메인으로 직접 데이터를 전송했습니다. 일부 광고 차단기 (Ad Blocker)나 브라우저 정책에 의해 이 요청이 차단되는 경우가 있었습니다. | +| **변경 효과** | Akamai CDN을 경유함으로써 데이터 전송의 안정성이 향상되고, 일부 네트워크 환경에서의 차단 문제가 완화됩니다. 또한, 전송 속도가 향상될 수 있습니다. | +| **주의사항** | 방화벽이나 콘텐츠 보안 정책 (CSP, Content Security Policy)을 엄격하게 운영하는 사이트의 경우, Akamai 도메인을 허용 목록에 추가해야 할 수 있습니다. | +| **확인 방법** | 크롬 개발자 도구의 네트워크 (Network) 탭에서 Google 태그 요청의 도메인을 확인합니다. | + +> **실무 참고**: 위 두 변경 사항은 GTM을 통해 Google 광고 제품을 사용하는 모든 사이트에 영향을 미칩니다. 신규 프로젝트 착수 시에는 GTM 미리보기 모드에서 태그 로드 순서와 네트워크 요청을 반드시 확인하세요. + +### 5.3 기타 참고할 최신 동향 + +| 업데이트 항목 | 시기 | 핵심 내용 | +|--------------|------|-----------| +| 동의 모드 v2 (Consent Mode v2) 필수화 | 2024년 3월~ (EEA 대상) | EU/EEA 지역 대상 사이트는 동의 모드 v2를 필수로 구현해야 Google Ads 리마케팅 기능을 사용할 수 있습니다. | +| GA4 보고서 ID (Reporting Identity) 변경 | 2024년~ | 블렌디드 (Blended) 보고서 ID가 기본값으로 설정되어, 기기 간 사용자 식별이 개선되었습니다. | +| BigQuery 무료 내보내기 한도 | 상시 | GA4 표준 속성에서 BigQuery로 일일 100만 이벤트까지 무료로 내보낼 수 있습니다. 대량 데이터 처리가 필요한 프로젝트라면 사전에 확인이 필요합니다. | + +### 더 읽어보기 (Further Reading) + +- [GA4 액세스 및 데이터 제한 관리](https://support.google.com/analytics/answer/9305587) +- [Tag Manager 소개](https://support.google.com/tagmanager/answer/6102821) +- [웹사이트 및 앱의 애널리틱스 설정](https://support.google.com/analytics/answer/9304153) + +--- + +## 부록: Chapter 01 종합 체크리스트 + +프로젝트 착수 전에 아래 항목을 모두 완료했는지 확인하세요. + +### A. 계정 및 권한 + +- [ ] GA4 계정 구조 (계정 > 속성 > 데이터 스트림) 확인 완료 +- [ ] 추적 대상 채널 (웹사이트, 앱, 랜딩페이지 등) 목록 작성 완료 +- [ ] GA4 편집자 이상 권한 획득 완료 +- [ ] GTM 게시 이상 권한 획득 완료 +- [ ] 연관 Google 서비스 (Ads, Search Console) 권한 확인 완료 +- [ ] 클라이언트 측 관리자 권한 보유자 확인 완료 + +### B. 기존 설치 현황 진단 + +- [ ] 크롬 확장 프로그램을 활용한 사이트 스캔 완료 +- [ ] 설치된 분석/광고 도구 목록 작성 완료 +- [ ] 각 태그의 설치 방식 (GTM / 하드코딩 / 플러그인) 파악 완료 +- [ ] GTM과 하드코딩 중복 여부 확인 완료 +- [ ] 미활용 스크립트 식별 및 제거 계획 수립 완료 +- [ ] 진단 결과 문서 작성 및 공유 완료 + +### C. 비즈니스 인터뷰 + +- [ ] 마케팅 전략 및 KPI 확인 완료 +- [ ] 기존 마케팅 활동 내역 파악 완료 +- [ ] 주력 상품/서비스 및 소구 포인트 정리 완료 +- [ ] 핵심 키워드 및 인지 속성 정리 완료 +- [ ] 기술 환경 (CMS, 개발 리소스, SPA 여부 등) 확인 완료 + +### D. 최신 업데이트 확인 + +- [ ] GTM Google 태그 자동 로드 정책 인지 및 기존 설정 점검 완료 +- [ ] Google 태그 게이트웨이 (Akamai 경유) 도입 사항 인지 완료 +- [ ] CSP 또는 방화벽 설정에 Akamai 도메인 허용 필요 여부 확인 완료 + + +--- + + +# Chapter 02. 웹사이트/앱 구조 분석 + +> GA4 데이터를 올바르게 수집하고 해석하려면, 먼저 분석 대상인 웹사이트와 앱의 구조를 정확히 이해해야 합니다. 이 장에서는 사이트의 정보 구조 파악부터 검색 엔진 노출 현황 진단, SEO 점검, UTM 매개변수 설정, 그리고 모바일 앱 분석 기초까지 다룹니다. + +--- + +**목차** + +1. [메뉴 구조 및 정보 구조 분석](#1-메뉴-구조-및-정보-구조-분석-information-architecture) +2. [외부 검색 엔진 결과 페이지 노출 진단](#2-외부-검색-엔진-결과-페이지-노출-진단) +3. [SEO 진단](#3-seo-진단) +4. [UTM 매개변수 설정 진단](#4-utm-매개변수-설정-진단) +5. [모바일 앱 분석 기초](#5-모바일-앱-분석-기초) + +--- + +## 1. 메뉴 구조 및 정보 구조 분석 (Information Architecture) + +웹사이트 분석의 첫 단계는 사이트의 **정보 구조 (Information Architecture, IA)**를 파악하는 것입니다. 사용자가 어떤 경로로 사이트에 들어와서, 어떤 페이지를 거쳐, 최종적으로 어떤 행동(전환)을 하는지를 이해해야 GA4 이벤트 설계와 보고서 해석이 가능합니다. + +### 1.1 사이트 네비게이션 구조 파악 + +사이트의 전체 구조를 시각적으로 정리하면, GA4에서 어떤 페이지 그룹을 중점적으로 분석해야 하는지 명확해집니다. + +**네비게이션 구조 파악 방법:** + +1. **GNB (Global Navigation Bar) 분석**: 상단 메뉴 구조를 1차, 2차, 3차 뎁스(depth)로 정리합니다. +2. **푸터(Footer) 링크 확인**: 사이트맵, 이용약관, 개인정보처리방침 등 하단 영역의 링크를 파악합니다. +3. **사이드바 및 보조 네비게이션**: 카테고리 필터, 검색 기능, 최근 본 상품 등 보조 탐색 요소를 정리합니다. +4. **URL 구조 패턴 분석**: URL 경로(path)가 어떤 규칙으로 구성되어 있는지 확인합니다. + +> **실무 팁**: 사이트맵(sitemap.xml)을 먼저 확인하면 전체 페이지 구조를 빠르게 파악할 수 있습니다. 브라우저에서 `도메인/sitemap.xml`을 입력해 보세요. + +**네비게이션 구조 정리 템플릿:** + +| 뎁스 1 (대분류) | 뎁스 2 (중분류) | 뎁스 3 (소분류) | URL 패턴 | 비고 | +|---|---|---|---|---| +| 홈 | - | - | / | 메인 랜딩 | +| 제품 | 카테고리 A | 상품 상세 | /products/category-a/{id} | 상품 페이지 | +| 블로그 | 카테고리별 | 개별 글 | /blog/{slug} | 콘텐츠 영역 | +| 회사 소개 | 팀 소개 | - | /about/team | 정보 페이지 | +| 고객 지원 | FAQ | - | /support/faq | 지원 영역 | + +### 1.2 전환 포인트 매핑 (Conversion Point Mapping) + +**전환 포인트 (Conversion Point)**란 사용자가 비즈니스 목표에 부합하는 특정 행동을 완료하는 지점을 말합니다. GA4에서는 이를 **핵심 이벤트 (Key Event)**로 설정하여 추적합니다. + +**주요 전환 포인트 유형:** + +| 전환 유형 | 예시 | GA4 이벤트 예시 | +|---|---|---| +| 구매/결제 | 상품 구매, 서비스 신청 | `purchase` | +| 회원 가입 | 신규 회원 가입 완료 | `sign_up` | +| 리드 생성 (Lead Generation) | 상담 신청, 문의 양식 제출 | `generate_lead` | +| 뉴스레터 구독 | 이메일 구독 신청 | `newsletter_signup` (맞춤 이벤트) | +| 광고 수신 동의 | 마케팅 수신 동의 | `marketing_optin` (맞춤 이벤트) | +| 콘텐츠 다운로드 | PDF, 백서 다운로드 | `file_download` | +| 앱 설치 유도 | 앱 다운로드 버튼 클릭 | `app_install_click` (맞춤 이벤트) | + +**전환 포인트 매핑 체크리스트:** + +- [ ] 사이트 내 모든 폼(form) 요소를 목록화했는가? +- [ ] 각 폼의 제출 완료 후 감사(Thank You) 페이지 또는 확인 메시지가 있는가? +- [ ] CTA (Call-to-Action) 버튼의 위치와 목적을 정리했는가? +- [ ] 전화 걸기, 카카오톡 상담 등 오프사이트(off-site) 전환 포인트를 파악했는가? +- [ ] 각 전환 포인트에 대응하는 GA4 이벤트명을 정의했는가? +- [ ] 전환의 우선순위(매크로 전환 vs 마이크로 전환)를 구분했는가? + +> **매크로 전환 vs 마이크로 전환**: 매크로 전환 (Macro Conversion)은 비즈니스 목표에 직접 기여하는 행동(예: 구매, 상담 신청)이고, 마이크로 전환 (Micro Conversion)은 매크로 전환으로 이어질 가능성이 높은 보조 행동(예: 장바구니 추가, 뉴스레터 구독)입니다. 두 가지를 모두 추적해야 사용자 여정 (User Journey)을 완전히 이해할 수 있습니다. + +### 1.3 페이지 유형 분류 + +GA4에서 의미 있는 분석을 하려면 페이지를 유형별로 그룹화해야 합니다. 이를 **콘텐츠 그룹 (Content Group)**이라고 하며, GA4에서 맞춤 측정기준으로 설정할 수 있습니다. + +**대표적인 페이지 유형:** + +| 페이지 유형 | 설명 | GA4 분석 관점 | +|---|---|---| +| 랜딩 페이지 (Landing Page) | 사용자가 외부에서 처음 도착하는 페이지 | 유입 소스별 첫 접점 분석 | +| 상품/서비스 페이지 | 제품 목록, 상세 페이지 | 조회수, 장바구니 추가율 | +| 콘텐츠 페이지 | 블로그, 뉴스, 가이드 | 참여도, 스크롤 깊이 | +| 카테고리/목록 페이지 | 상품 또는 콘텐츠의 분류 페이지 | 탐색 패턴, 이탈률 | +| 전환 페이지 | 장바구니, 결제, 신청 양식 | 전환율, 이탈 지점 | +| 감사 페이지 (Thank You Page) | 전환 완료 후 표시되는 확인 페이지 | 전환 완료 수 검증 | +| 유틸리티 페이지 | 로그인, 마이페이지, 설정 | 회원 활동 분석 | + +**콘텐츠 그룹 설정을 위한 URL 패턴 매핑 예시:** + +``` +/products/* → 상품 페이지 +/blog/* → 블로그 콘텐츠 +/category/* → 카테고리 페이지 +/cart, /checkout/* → 전환 페이지 +/thank-you/* → 감사 페이지 +/account/* → 유틸리티 페이지 +``` + +> **GA4에서 콘텐츠 그룹 설정하기**: GTM(Google Tag Manager)에서 `page_view` 이벤트에 `content_group`이라는 이벤트 매개변수를 추가하고, URL 경로 기반 규칙으로 값을 할당합니다. 이렇게 설정하면 GA4 보고서에서 페이지 유형별로 데이터를 필터링하고 비교할 수 있습니다. + +### 더 읽어보기 (Further Reading) + +- [GA4 데이터 스트림 설정](https://support.google.com/analytics/answer/9304153) - Google 공식 가이드 +- [GA4 태그 설정 가이드](https://developers.google.com/analytics/devguides/collection/ga4/tag-guide) - Google Developers + +--- + +## 2. 외부 검색 엔진 결과 페이지 노출 진단 + +GA4로 유입 트래픽을 분석하기 전에, 현재 내 웹사이트가 주요 검색 엔진에서 어떻게 노출되고 있는지 직접 확인하는 것이 중요합니다. 검색 결과 페이지 (SERP, Search Engine Results Page)에서의 노출 상태는 자연 검색 (Organic Search) 트래픽의 양과 질에 직접적인 영향을 미칩니다. + +### 2.1 구글 검색 결과 페이지 (SERP) 노출 현황 확인 + +구글에서 자사 브랜드명, 핵심 키워드를 검색하여 다음 항목을 점검합니다. + +**구글 SERP 점검 항목:** + +| 점검 항목 | 확인 내용 | 중요도 | +|---|---|---| +| 브랜드 검색 결과 | 브랜드명 검색 시 자사 사이트가 1위에 노출되는가? | 매우 높음 | +| 사이트링크 (Sitelinks) | 검색 결과 아래에 주요 페이지 링크가 표시되는가? | 높음 | +| 리치 스니펫 (Rich Snippet) | 별점, 가격, FAQ 등 구조화된 정보가 표시되는가? | 중간 | +| 지식 패널 (Knowledge Panel) | 브랜드 관련 정보 패널이 우측에 표시되는가? | 중간 | +| 이미지/동영상 결과 | 자사 콘텐츠가 이미지, 비디오 탭에 노출되는가? | 중간 | +| 경쟁사 광고 노출 | 자사 브랜드명에 경쟁사 광고가 노출되는가? | 높음 | + +**구글 검색 연산자를 활용한 진단:** + +``` +site:example.com → 구글에 인덱싱된 전체 페이지 수 확인 +site:example.com inurl:blog → 블로그 페이지 인덱싱 현황 +site:example.com intitle:"핵심 키워드" → 특정 키워드가 타이틀에 포함된 페이지 +"example.com" -site:example.com → 외부에서 자사 도메인을 언급한 페이지 +cache:example.com → 구글이 캐시한 최신 버전 확인 +``` + +### 2.2 네이버 검색 결과 확인 + +한국 시장에서 네이버는 여전히 가장 높은 검색 점유율을 차지합니다. 네이버의 검색 결과는 구글과 달리 **통합 검색 (Universal Search)** 형태로, 여러 영역(탭)이 하나의 결과 페이지에 혼합되어 표시됩니다. + +**네이버 검색 영역별 점검표:** + +| 검색 영역 | 확인 내용 | 콘텐츠 대응 전략 | +|---|---|---| +| VIEW (블로그/카페 통합) | 자사 또는 관련 콘텐츠가 노출되는가? | 네이버 블로그, 카페 활용 | +| 이미지 | 자사 제품/서비스 이미지가 노출되는가? | 이미지 ALT 텍스트, 파일명 최적화 | +| 지식iN | 자사 관련 질문/답변이 있는가? | 지식iN 답변 활동 | +| 뉴스 | 자사 관련 뉴스 기사가 노출되는가? | 보도자료 배포 | +| 지식백과 | 관련 백과사전 항목이 있는가? | 두산백과, 나무위키 등 기여 | +| 쇼핑 | 자사 상품이 네이버 쇼핑에 노출되는가? | 스마트스토어, 쇼핑 EP 연동 | +| 지도/플레이스 | 네이버 플레이스에 업체 정보가 등록되어 있는가? | 네이버 플레이스 최적화 | +| 웹사이트 (사이트) | 자사 웹사이트 페이지가 직접 노출되는가? | 네이버 서치어드바이저 등록 | + +> **네이버 서치어드바이저**: 네이버에서 제공하는 웹마스터 도구입니다. `searchadvisor.naver.com`에서 사이트를 등록하고, 인덱싱 현황을 확인할 수 있습니다. 구글의 Search Console에 해당하는 서비스입니다. + +### 2.3 한국 시장 특화: 검색 엔진 비중 분석 + +한국에서는 네이버, 구글, 다음(Daum) 세 검색 엔진의 비중을 함께 고려해야 합니다. 업종과 타겟 연령에 따라 검색 엔진 비중이 크게 달라집니다. + +**업종별 검색 엔진 활용 경향:** + +| 업종/분야 | 주요 검색 엔진 | 특이사항 | +|---|---|---| +| IT/기술/개발 | 구글 비중 높음 | 영문 검색 비중도 높음 | +| 맛집/지역 정보 | 네이버 비중 높음 | 네이버 지도, 플레이스 연동 | +| 뉴스/시사 | 네이버, 다음 | 포털 뉴스 제휴 여부가 중요 | +| 쇼핑/이커머스 | 네이버, 쿠팡 내부 검색 | 네이버 쇼핑 검색 광고 활용 | +| B2B 서비스 | 구글 비중 증가 추세 | LinkedIn 등 해외 채널 연동 | +| 의료/건강 | 네이버 비중 높음 | 네이버 지식iN, 블로그 영향력 큼 | + +**GA4에서 검색 엔진별 트래픽 확인 방법:** + +GA4 보고서 > 획득 (Acquisition) > 트래픽 획득 (Traffic Acquisition)에서 **세션 소스 (Session source)** 측정기준을 사용하면 검색 엔진별 유입 비중을 확인할 수 있습니다. + +| 소스 값 | 검색 엔진 | +|---|---| +| `google` | 구글 | +| `naver` | 네이버 | +| `daum` | 다음 | +| `bing` | 마이크로소프트 빙 | +| `zum` | 줌(ZUM) | + +**검색 엔진 노출 진단 체크리스트:** + +- [ ] 구글에서 브랜드명 검색 시 자사 사이트가 최상단에 노출되는가? +- [ ] 네이버에서 브랜드명 검색 시 각 영역별 노출 상태를 확인했는가? +- [ ] 다음에서 브랜드명 검색 결과를 확인했는가? +- [ ] 주요 키워드 3~5개에 대한 검색 결과 노출 순위를 기록했는가? +- [ ] 구글 Search Console에 사이트가 등록되어 있는가? +- [ ] 네이버 서치어드바이저에 사이트가 등록되어 있는가? +- [ ] 경쟁사의 검색 결과 노출 상태를 비교 분석했는가? + +### 더 읽어보기 (Further Reading) + +- [Google Search Console과 GA4 연동](https://support.google.com/webmasters/answer/9128668) - Google 공식 가이드 +- [네이버 서치어드바이저](https://searchadvisor.naver.com/) - 네이버 웹마스터 도구 + +--- + +## 3. SEO 진단 + +검색엔진 최적화 (SEO, Search Engine Optimization)는 자연 검색 트래픽의 양과 질을 결정짓는 핵심 요소입니다. GA4 데이터를 올바르게 해석하려면, 먼저 웹사이트의 SEO 상태가 어떤 수준인지 진단해야 합니다. SEO가 부실하면 GA4에서 자연 검색 유입 자체가 적어 분석할 데이터가 부족해지기 때문입니다. + +### 3.1 메타 정보 점검 + +**타이틀 태그 (Title Tag)**와 **메타 디스크립션 (Meta Description)**은 검색 결과에 직접 표시되는 요소로, 클릭률 (CTR, Click-Through Rate)에 큰 영향을 미칩니다. + +**타이틀 태그 점검 기준:** + +| 점검 항목 | 권장 기준 | 비고 | +|---|---|---| +| 길이 | 50~60자 (영문 기준) / 25~30자 (한글 기준) | 초과 시 검색 결과에서 말줄임 처리됨 | +| 핵심 키워드 포함 | 주요 키워드를 앞쪽에 배치 | 뒤쪽에 배치하면 노출 효과 감소 | +| 브랜드명 | 타이틀 끝에 브랜드명 포함 | 예: "GA4 가이드 - 브랜드명" | +| 고유성 | 페이지마다 고유한 타이틀 사용 | 중복 타이틀은 SEO에 부정적 | +| 사용자 의도 반영 | 검색 의도에 부합하는 표현 사용 | "방법", "가이드", "비교" 등 | + +**메타 디스크립션 점검 기준:** + +| 점검 항목 | 권장 기준 | 비고 | +|---|---|---| +| 길이 | 150~160자 (영문) / 70~80자 (한글) | 초과 시 말줄임 처리 | +| 핵심 키워드 포함 | 자연스럽게 1~2회 포함 | 키워드 스터핑 금지 | +| 행동 유도 문구 | "지금 확인하세요", "무료로 알아보기" | CTR 향상에 기여 | +| 고유성 | 페이지마다 고유한 디스크립션 작성 | 중복 또는 미작성 주의 | + +**그 외 점검해야 할 메타/HTML 요소:** + +| 요소 | 설명 | 점검 포인트 | +|---|---|---| +| H1 태그 | 페이지의 대제목 | 페이지당 1개, 키워드 포함 | +| H2~H6 태그 | 소제목 구조 | 논리적 계층 구조 유지 | +| 이미지 ALT 속성 | 이미지 대체 텍스트 | 모든 주요 이미지에 설명 텍스트 | +| 캐노니컬 태그 (Canonical Tag) | 대표 URL 지정 | 중복 페이지 문제 방지 | +| OG 태그 (Open Graph Tag) | 소셜 미디어 공유 시 표시 정보 | og:title, og:description, og:image | +| 구조화 데이터 (Structured Data) | 검색 결과 리치 스니펫용 | JSON-LD 형식 권장 | +| robots.txt | 크롤러 접근 제어 | 중요 페이지 차단 여부 확인 | +| hreflang 태그 | 다국어 사이트의 언어/지역 지정 | 한국어 사이트: `ko-KR` | + +**빠른 메타 정보 확인 방법:** + +브라우저 개발자 도구(F12)의 콘솔(Console)에서 다음 코드를 실행하면 현재 페이지의 메타 정보를 한눈에 확인할 수 있습니다. + +```javascript +console.log('Title:', document.title); +console.log('Description:', document.querySelector('meta[name="description"]')?.content); +console.log('Canonical:', document.querySelector('link[rel="canonical"]')?.href); +console.log('H1:', document.querySelector('h1')?.textContent); +console.log('OG Title:', document.querySelector('meta[property="og:title"]')?.content); +console.log('OG Description:', document.querySelector('meta[property="og:description"]')?.content); +``` + +### 3.2 전략 키워드 및 관련 콘텐츠 현황 점검 + +SEO는 단순히 기술적 요소만 점검하는 것이 아니라, **어떤 키워드로 검색하는 사용자를 타겟할 것인지**를 전략적으로 결정하고, 그에 맞는 콘텐츠가 존재하는지 확인하는 과정을 포함합니다. + +**키워드 분류 체계:** + +| 키워드 유형 | 설명 | 예시 (피부과 기준) | +|---|---|---| +| 브랜드 키워드 | 자사 브랜드 관련 | "XX피부과", "XX클리닉" | +| 핵심 키워드 (Head) | 검색량 높음, 경쟁 치열 | "여드름 치료" | +| 중간 키워드 (Body) | 2~3단어, 적절한 검색량 | "여드름 흉터 치료 비용" | +| 롱테일 키워드 (Long-tail) | 구체적, 전환율 높음 | "강남 여드름 흉터 레이저 치료 후기" | +| 정보성 키워드 | 정보 탐색 의도 | "여드름 원인", "여드름 예방법" | +| 거래성 키워드 | 구매/전환 의도 | "여드름 치료 예약", "피부과 상담" | + +**콘텐츠 갭 분석 (Content Gap Analysis) 절차:** + +1. **자사 키워드 목록 작성**: 비즈니스와 관련된 키워드 50~100개를 도출합니다. +2. **현재 콘텐츠 매핑**: 각 키워드에 대응하는 페이지가 자사 사이트에 있는지 확인합니다. +3. **갭(Gap) 식별**: 키워드는 있지만 대응 콘텐츠가 없는 영역을 찾습니다. +4. **경쟁사 비교**: 경쟁사가 다루고 있지만 자사가 다루지 않는 키워드/콘텐츠를 파악합니다. +5. **우선순위 결정**: 검색량, 경쟁 강도, 비즈니스 연관성을 기준으로 콘텐츠 제작 우선순위를 정합니다. + +**콘텐츠 현황 점검 시트 예시:** + +| 전략 키워드 | 월간 검색량 | 현재 순위 | 대응 페이지 URL | 콘텐츠 상태 | 조치 필요 사항 | +|---|---|---|---|---|---| +| GA4 설치 방법 | 1,200 | 15위 | /blog/ga4-setup | 업데이트 필요 | 최신 UI 스크린샷 추가 | +| GTM 사용법 | 800 | - | 없음 | 미작성 | 신규 콘텐츠 제작 | +| 구글 애널리틱스 전환 설정 | 600 | 8위 | /guide/conversion | 양호 | 내부 링크 강화 | + +### 3.3 Google Search Console 연동의 중요성 + +**Google Search Console (GSC)**은 구글 검색에서의 사이트 성과를 직접 측정할 수 있는 무료 도구입니다. GA4와 연동하면 검색 쿼리(Search Query) 데이터를 GA4 보고서에서 함께 확인할 수 있어, 자연 검색 트래픽 분석의 깊이가 크게 달라집니다. + +**GSC에서 확인할 수 있는 핵심 지표:** + +| 지표 | 설명 | 활용 방법 | +|---|---|---| +| 노출수 (Impressions) | 검색 결과에 페이지가 표시된 횟수 | 키워드 커버리지 파악 | +| 클릭수 (Clicks) | 검색 결과에서 자사 사이트로 유입된 횟수 | 실제 유입 규모 파악 | +| 평균 CTR | 노출 대비 클릭 비율 | 타이틀/디스크립션 매력도 진단 | +| 평균 게재순위 (Position) | 검색 결과 내 평균 순위 | SEO 성과 추적 | + +**GA4와 GSC 연동 방법:** + +1. GA4 속성의 **관리 (Admin)** 메뉴로 이동합니다. +2. **서비스 연결 (Product Links)** 섹션에서 **Search Console 연결**을 선택합니다. +3. 연동할 Search Console 속성을 선택하고 연결을 완료합니다. +4. 연동 후 GA4의 **보고서 > 획득 > Search Console** 메뉴에서 검색어(쿼리) 보고서를 확인할 수 있습니다. + +> **주의 사항**: GA4와 GSC 연동은 연동 시점 이후의 데이터만 표시됩니다. 과거 데이터를 소급 적용하지 않으므로 가능한 한 빨리 연동하는 것이 좋습니다. 또한, GA4 속성 1개에는 GSC 속성 1개만 연결할 수 있습니다. + +**SEO 진단 종합 체크리스트:** + +- [ ] 주요 페이지의 타이틀 태그가 적절한 길이와 키워드를 포함하고 있는가? +- [ ] 모든 페이지에 고유한 메타 디스크립션이 작성되어 있는가? +- [ ] 각 페이지에 H1 태그가 1개씩 존재하며 키워드를 포함하는가? +- [ ] 이미지에 ALT 속성이 적절히 작성되어 있는가? +- [ ] 캐노니컬 태그가 올바르게 설정되어 있는가? +- [ ] 사이트맵(sitemap.xml)이 존재하고 최신 상태인가? +- [ ] robots.txt 파일이 중요 페이지를 차단하고 있지 않은가? +- [ ] Google Search Console이 GA4와 연동되어 있는가? +- [ ] 네이버 서치어드바이저에 사이트가 등록되어 있는가? +- [ ] 모바일 친화성 (Mobile-Friendliness) 테스트를 통과하는가? +- [ ] 페이지 로딩 속도가 3초 이내인가? +- [ ] 전략 키워드 목록이 정리되어 있는가? +- [ ] 콘텐츠 갭 분석이 완료되었는가? + +### 더 읽어보기 (Further Reading) + +- [Search Console과 GA4 연동 가이드](https://support.google.com/webmasters/answer/9128668) - Google 공식 가이드 +- [GA4 태그 설정 가이드](https://developers.google.com/analytics/devguides/collection/ga4/tag-guide) - Google Developers + +--- + +## 4. UTM 매개변수 설정 진단 + +UTM 매개변수 (UTM Parameters)는 마케팅 캠페인의 유입 경로를 추적하기 위해 URL에 추가하는 태그입니다. GA4에서 트래픽 소스를 정확하게 분석하려면 UTM이 체계적으로 설정되어 있어야 합니다. UTM은 "Urchin Tracking Module"의 약자로, 구글 애널리틱스의 전신인 Urchin에서 유래한 이름입니다. + +### 4.1 UTM 파라미터 구조 + +UTM은 5개의 표준 매개변수로 구성됩니다. + +| 매개변수 | 필수 여부 | 설명 | 예시 | +|---|---|---|---| +| `utm_source` | 필수 | 트래픽을 보내는 플랫폼/매체 | `google`, `naver`, `facebook`, `newsletter` | +| `utm_medium` | 필수 | 마케팅 매체 유형 | `cpc`, `email`, `social`, `banner`, `referral` | +| `utm_campaign` | 필수 | 캠페인 이름 | `spring_sale_2026`, `brand_awareness_q1` | +| `utm_term` | 선택 | 유료 검색 키워드 | `ga4_guide`, `data_analytics` | +| `utm_content` | 선택 | 동일 캠페인 내 콘텐츠 구분 | `banner_a`, `cta_button`, `text_link` | + +**UTM이 적용된 URL 예시:** + +``` +https://example.com/products/ga4-guide + ?utm_source=naver + &utm_medium=cpc + &utm_campaign=ga4_guide_launch_2026 + &utm_term=ga4+사용법 + &utm_content=banner_top +``` + +> **중요**: UTM 매개변수는 외부에서 자사 사이트로 유입되는 링크에만 사용합니다. 자사 사이트 내부 링크에 UTM을 붙이면 기존 세션의 소스/매체 정보가 덮어쓰기 되어 데이터가 왜곡됩니다. 이는 GA4 분석에서 가장 흔히 발생하는 실수 중 하나입니다. + +### 4.2 UTM 네이밍 컨벤션 (Naming Convention) + +UTM 값의 일관성은 GA4 보고서의 정확성에 직접적인 영향을 미칩니다. 팀 내에서 반드시 네이밍 규칙을 정하고 문서화해야 합니다. + +**네이밍 컨벤션 핵심 원칙:** + +1. **소문자 통일**: UTM 값은 대소문자를 구분합니다. `Facebook`과 `facebook`은 GA4에서 별도의 소스로 인식됩니다. +2. **단어 구분자 통일**: 언더스코어(`_`) 또는 하이픈(`-`) 중 하나를 선택하여 일관되게 사용합니다. +3. **공백 금지**: URL에서 공백은 `%20` 또는 `+`로 변환되어 혼란을 야기합니다. +4. **한글 사용 최소화**: 가능하면 영문을 사용합니다. 한글 사용 시 URL 인코딩 문제가 발생할 수 있습니다. +5. **약어 규칙 문서화**: 약어를 사용할 경우 팀 내 합의된 약어표를 만듭니다. + +**utm_source 표준값 예시:** + +| 플랫폼 | 권장값 | 비권장 (비일관) | +|---|---|---| +| 구글 (유료) | `google` | `Google`, `GOOGLE`, `google_ads` | +| 네이버 (유료) | `naver` | `Naver`, `naver_sa`, `NAVER` | +| 페이스북/메타 | `facebook` 또는 `meta` | `Facebook`, `fb`, `FB` | +| 인스타그램 | `instagram` | `Instagram`, `insta`, `IG` | +| 카카오 | `kakao` | `Kakao`, `kakaotalk`, `KakaoTalk` | +| 이메일 뉴스레터 | `newsletter` | `email`, `Email`, `e-mail` | +| 문자 메시지 | `sms` | `SMS`, `문자`, `text` | + +**utm_medium 표준값 예시:** + +| 매체 유형 | 권장값 | GA4 기본 채널 그룹 매핑 | +|---|---|---| +| 유료 검색 (클릭당 과금) | `cpc` | Paid Search | +| 자연 검색 | (UTM 불필요) | Organic Search | +| 디스플레이 광고 | `display` | Display | +| 소셜 미디어 (유료) | `paid_social` | Paid Social | +| 소셜 미디어 (무료) | `social` | Organic Social | +| 이메일 | `email` | Email | +| 제휴 마케팅 | `affiliate` | Affiliates | +| 배너 광고 | `banner` | Display | +| 리타게팅/리마케팅 | `retargeting` | Display | +| SMS/문자 | `sms` | SMS | + +> **GA4 기본 채널 그룹 (Default Channel Group)**: GA4는 `source`와 `medium` 값의 조합을 기반으로 트래픽을 자동으로 채널 그룹에 분류합니다. 예를 들어, `source=google / medium=cpc`는 **Paid Search** 채널로 분류됩니다. 비표준 medium 값을 사용하면 "Unassigned" 채널로 분류될 수 있으므로, GA4의 채널 그룹 규칙을 이해하고 이에 맞는 값을 사용하는 것이 중요합니다. + +**utm_campaign 네이밍 구조 권장안:** + +캠페인명은 다음 요소를 조합하여 구성하면 보고서에서 분류와 필터링이 용이합니다. + +``` +[연도/분기]_[캠페인 목적]_[타겟/상품]_[기타 식별자] +``` + +예시: + +| utm_campaign 값 | 설명 | +|---|---| +| `2026q1_brand_awareness_ga4guide` | 2026년 1분기, 브랜드 인지도, GA4 가이드 | +| `2026_spring_sale_skincare` | 2026년 봄 세일, 스킨케어 | +| `2026_always_on_retargeting` | 2026년 상시 운영, 리타게팅 | + +### 4.3 UTM 통합 관리 시트 활용법 + +팀 내 여러 명이 UTM 링크를 생성하면 일관성이 무너지기 쉽습니다. **UTM 통합 관리 시트**를 운영하면 이 문제를 예방할 수 있습니다. + +**UTM 관리 시트 구성 항목:** + +| 열(Column) | 설명 | 예시 | +|---|---|---| +| 생성일 | UTM 링크 생성 날짜 | 2026-03-07 | +| 담당자 | 링크 생성자 | 홍길동 | +| 캠페인명 (내부용) | 내부 관리용 캠페인 이름 | 봄 세일 메인 배너 | +| 랜딩 URL | UTM을 적용할 원본 URL | https://example.com/sale | +| utm_source | 소스 | naver | +| utm_medium | 매체 | cpc | +| utm_campaign | 캠페인 | 2026_spring_sale | +| utm_term | 키워드 (선택) | 봄세일 | +| utm_content | 콘텐츠 구분 (선택) | banner_main | +| 최종 URL | UTM이 포함된 전체 URL | (자동 생성) | +| 단축 URL | 필요 시 단축 처리된 URL | (선택) | +| 메모 | 사용 맥락, 주의사항 | 네이버 SA 3월 캠페인용 | + +> **UTM 링크 생성 도구**: 구글에서 제공하는 [Campaign URL Builder](https://ga-dev-tools.google/ga4/campaign-url-builder/)를 활용하면 UTM 매개변수가 포함된 URL을 쉽게 생성할 수 있습니다. 단, 팀 단위로 운영할 때는 구글 스프레드시트 기반의 관리 시트를 병행하는 것이 바람직합니다. + +**UTM 관리 체크리스트:** + +- [ ] 팀 내 UTM 네이밍 컨벤션 문서가 존재하는가? +- [ ] 모든 유료 캠페인 링크에 UTM이 적용되어 있는가? +- [ ] UTM 통합 관리 시트를 운영하고 있는가? +- [ ] utm_source와 utm_medium 값이 GA4 기본 채널 그룹 규칙에 부합하는가? +- [ ] 소문자 통일, 공백 미사용 등 기본 규칙을 준수하고 있는가? +- [ ] 자사 사이트 내부 링크에 UTM을 사용하고 있지 않은가? +- [ ] UTM 링크가 정상 작동하는지 (리다이렉트, 깨진 링크 등) 테스트했는가? +- [ ] 이메일 뉴스레터, SMS 등 비웹 채널에도 UTM을 적용하고 있는가? + +### 4.4 GA4에서 UTM 데이터가 보고서에 반영되는 구조 + +UTM 매개변수가 URL에 포함된 상태로 사용자가 사이트에 방문하면, GA4는 해당 값을 자동으로 수집하여 **트래픽 소스 (Traffic Source)** 측정기준에 매핑합니다. + +**UTM 매개변수와 GA4 측정기준 매핑:** + +| UTM 매개변수 | GA4 측정기준 (세션 범위) | GA4 측정기준 (사용자 범위) | +|---|---|---| +| `utm_source` | 세션 소스 (Session source) | 첫 번째 사용자 소스 (First user source) | +| `utm_medium` | 세션 매체 (Session medium) | 첫 번째 사용자 매체 (First user medium) | +| `utm_campaign` | 세션 캠페인 (Session campaign) | 첫 번째 사용자 캠페인 (First user campaign) | +| `utm_term` | 세션 수동 검색어 (Session manual term) | 첫 번째 사용자 수동 검색어 | +| `utm_content` | 세션 수동 광고 콘텐츠 (Session manual ad content) | 첫 번째 사용자 수동 광고 콘텐츠 | + +**세션 범위 vs 사용자 범위의 차이:** + +- **세션 범위 (Session-scoped)**: 해당 방문(세션)의 유입 소스를 나타냅니다. 사용자가 여러 번 방문하면 방문마다 다른 세션 소스를 가질 수 있습니다. +- **사용자 범위 (User-scoped, "첫 번째 사용자")**: 사용자가 최초로 사이트를 방문했을 때의 유입 소스를 나타냅니다. 이후 방문과 무관하게 고정됩니다. + +**GA4 보고서에서 UTM 데이터 확인 위치:** + +| 보고서 | 확인할 수 있는 정보 | +|---|---| +| 획득 > 사용자 획득 (User Acquisition) | 첫 번째 사용자 소스/매체/캠페인 (최초 유입 기준) | +| 획득 > 트래픽 획득 (Traffic Acquisition) | 세션 소스/매체/캠페인 (방문별 기준) | +| 광고 > 모든 채널 (All Channels) | Google Ads 연동 시 캠페인 성과 통합 | +| 탐색 (Explorations) | 맞춤 보고서에서 UTM 관련 측정기준 자유 조합 | + +> **자동 태그 추가 (Auto-tagging) vs UTM**: Google Ads를 사용하는 경우, 자동 태그 추가 기능(`gclid` 매개변수)이 UTM보다 우선 적용됩니다. Google Ads 캠페인에는 별도로 UTM을 설정할 필요가 없습니다. UTM은 Google Ads 외의 유료 매체(네이버 SA, 카카오 광고, 페이스북 광고 등)와 비유료 채널(이메일, SMS 등)에 사용합니다. + +### 더 읽어보기 (Further Reading) + +- [UTM 매개변수 활용 가이드](https://support.google.com/analytics/answer/10089681) - Google 공식 가이드 +- [GA4 기본 채널 그룹 정의](https://support.google.com/analytics/answer/9756891) - Google 공식 가이드 + +--- + +## 5. 모바일 앱 분석 기초 + +GA4의 가장 큰 차별점 중 하나는 웹사이트와 모바일 앱 데이터를 하나의 속성(Property)에서 통합 분석할 수 있다는 것입니다. 기존 유니버설 애널리틱스 (Universal Analytics, UA)에서는 웹과 앱을 별도로 추적해야 했지만, GA4는 처음부터 크로스 플랫폼 분석 (Cross-platform Analysis)을 위해 설계되었습니다. + +### 5.1 앱 데이터 스트림 설정 개요 + +GA4에서 앱 데이터를 수집하려면 **데이터 스트림 (Data Stream)**을 추가해야 합니다. + +**GA4 데이터 스트림 유형:** + +| 데이터 스트림 유형 | 대상 | SDK/도구 | +|---|---|---| +| 웹 (Web) | 웹사이트 | gtag.js 또는 GTM | +| Android 앱 | Android 앱 | Firebase SDK for Android | +| iOS 앱 | iOS 앱 | Firebase SDK for iOS | + +**앱 데이터 스트림 설정 절차 (개요):** + +1. **Firebase 프로젝트 생성**: Firebase 콘솔(console.firebase.google.com)에서 프로젝트를 생성합니다. +2. **앱 등록**: Firebase 프로젝트에 Android 앱(패키지명) 또는 iOS 앱(번들 ID)을 등록합니다. +3. **설정 파일 다운로드**: Android는 `google-services.json`, iOS는 `GoogleService-Info.plist` 파일을 다운로드하여 앱 프로젝트에 추가합니다. +4. **Firebase SDK 설치**: 앱 코드에 Firebase Analytics SDK를 추가합니다. +5. **GA4 속성과 연결**: Firebase 프로젝트를 GA4 속성과 연결합니다 (Firebase 콘솔의 프로젝트 설정에서 GA4 속성 연결). +6. **GA4에서 데이터 스트림 확인**: GA4 관리 메뉴에서 앱 데이터 스트림이 생성되었는지 확인합니다. + +> **참고**: 앱 데이터 스트림 설정에는 모바일 앱 개발 환경에 대한 기술적 이해가 필요합니다. 마케터가 직접 설정하기보다는, 이 절차를 이해한 후 개발팀과 협업하여 진행하는 것이 일반적입니다. + +### 5.2 Firebase 연동 기본 개념 + +**Firebase**는 구글이 제공하는 모바일 및 웹 앱 개발 플랫폼으로, GA4의 앱 분석은 Firebase Analytics를 기반으로 동작합니다. + +**Firebase와 GA4의 관계:** + +| 항목 | Firebase Analytics | GA4 | +|---|---|---| +| 역할 | 앱에서 이벤트 데이터를 수집하는 SDK | 수집된 데이터를 분석하는 보고서/인터페이스 | +| 이벤트 수집 | Firebase SDK가 앱 내 이벤트를 자동/수동 수집 | Firebase에서 전달받은 데이터를 처리 | +| 보고서 위치 | Firebase 콘솔 (기본 보고서) | GA4 콘솔 (상세 분석 보고서) | +| 관계 | GA4 속성 1개에 연결 가능 | 여러 데이터 스트림(웹+앱) 통합 | + +**Firebase SDK가 자동 수집하는 주요 이벤트:** + +| 이벤트 | 설명 | +|---|---| +| `first_open` | 앱 최초 실행 | +| `session_start` | 세션 시작 | +| `screen_view` | 화면(스크린) 조회 | +| `app_update` | 앱 업데이트 후 최초 실행 | +| `app_remove` | 앱 삭제 (Android만 해당) | +| `os_update` | OS 업데이트 후 최초 실행 | +| `app_exception` | 앱 크래시/오류 발생 | +| `user_engagement` | 앱이 포그라운드 상태에서 활성 사용 | + +**웹과 앱의 이벤트 대응 관계:** + +| 사용자 행동 | 웹 이벤트 | 앱 이벤트 | +|---|---|---| +| 최초 방문/실행 | `first_visit` | `first_open` | +| 페이지/화면 조회 | `page_view` | `screen_view` | +| 세션 시작 | `session_start` | `session_start` | +| 스크롤 | `scroll` | (맞춤 구현 필요) | +| 외부 링크 클릭 | `click` | (맞춤 구현 필요) | +| 구매 | `purchase` | `purchase` | +| 로그인 | `login` | `login` | +| 회원가입 | `sign_up` | `sign_up` | + +### 5.3 웹+앱 통합 분석의 이점 + +GA4에서 웹과 앱을 하나의 속성으로 통합하면 다음과 같은 분석이 가능해집니다. + +**통합 분석의 핵심 이점:** + +| 이점 | 설명 | +|---|---| +| **교차 플랫폼 사용자 식별** | 동일 사용자가 웹과 앱을 번갈아 사용하는 패턴을 파악할 수 있습니다. 예를 들어, 웹에서 검색 후 앱에서 구매하는 경로를 추적할 수 있습니다. | +| **중복 집계 방지** | 웹과 앱을 별도로 분석하면 동일 사용자를 2명으로 집계할 수 있습니다. 통합 분석은 이를 방지합니다. | +| **통합 전환 경로 분석** | 첫 접점(웹 광고 클릭)부터 최종 전환(앱 내 구매)까지의 전체 여정을 하나의 보고서에서 확인할 수 있습니다. | +| **일관된 이벤트 체계** | 웹과 앱에서 동일한 이벤트 이름과 매개변수를 사용하여 비교 분석이 가능합니다. | +| **통합 잠재고객 생성** | 웹과 앱 행동 데이터를 결합하여 보다 정교한 잠재고객 (Audience) 세그먼트를 생성할 수 있습니다. | + +**통합 사용자 식별을 위한 조건:** + +GA4에서 웹과 앱 사용자를 동일인으로 인식하려면 다음 중 하나의 조건이 필요합니다. + +| 식별 방법 | 설명 | 구현 난이도 | +|---|---|---| +| User-ID | 로그인 시 동일한 사용자 ID를 웹과 앱에서 GA4로 전송 | 중간 (로그인 기능 필요) | +| Google Signals | 구글 계정에 로그인한 사용자를 자동 매칭 | 낮음 (GA4 설정에서 활성화) | +| Device ID | 기기 ID 기반 (동일 기기 내에서만 유효) | 자동 (제한적) | + +> **실무 권장 사항**: 가장 정확한 교차 플랫폼 분석을 위해서는 **User-ID** 방식을 구현하는 것이 좋습니다. 사용자가 웹과 앱 모두에서 로그인하도록 유도하고, 동일한 사용자 식별자를 GA4에 전송하면 됩니다. Google Signals는 별도 구현 없이 활성화할 수 있지만, 구글 계정 로그인 사용자에 한정되며 데이터 임계값 (Thresholds) 적용으로 일부 보고서에서 데이터가 가려질 수 있습니다. + +**앱 분석 시작을 위한 체크리스트:** + +- [ ] Firebase 프로젝트가 생성되어 있는가? +- [ ] 앱(Android/iOS)이 Firebase에 등록되어 있는가? +- [ ] Firebase SDK가 앱에 정상적으로 설치되어 있는가? +- [ ] Firebase 프로젝트가 GA4 속성과 연결되어 있는가? +- [ ] GA4에서 앱 데이터 스트림을 확인할 수 있는가? +- [ ] 자동 수집 이벤트(first_open, screen_view 등)가 정상 수신되는가? +- [ ] 웹과 앱에서 동일한 이벤트 이름 체계를 사용하고 있는가? +- [ ] User-ID 설정이 구현되어 있는가? (로그인 기능이 있는 경우) +- [ ] Google Signals가 GA4 속성에서 활성화되어 있는가? + +### 더 읽어보기 (Further Reading) + +- [GA4 데이터 스트림 설정](https://support.google.com/analytics/answer/9304153) - Google 공식 가이드 +- [GA4 태그 설정 가이드](https://developers.google.com/analytics/devguides/collection/ga4/tag-guide) - Google Developers + +--- + +## 이 장의 요약 + +이 장에서는 GA4 분석의 기초가 되는 웹사이트/앱 구조 분석을 다섯 가지 관점에서 살펴보았습니다. + +| 분석 영역 | 핵심 질문 | 주요 산출물 | +|---|---|---| +| 정보 구조 (IA) | 사이트가 어떤 구조로 되어 있는가? | 네비게이션 구조도, 전환 포인트 맵, 페이지 유형 분류표 | +| 검색 엔진 노출 | 주요 검색 엔진에서 어떻게 보이는가? | SERP 노출 현황 보고서, 검색 엔진별 점유율 | +| SEO | 검색 엔진이 사이트를 잘 이해하고 있는가? | 메타 정보 점검표, 키워드 전략 시트, 콘텐츠 갭 분석 | +| UTM | 마케팅 채널별 성과를 정확히 추적할 수 있는가? | UTM 네이밍 컨벤션 문서, UTM 통합 관리 시트 | +| 모바일 앱 | 앱 데이터를 웹과 통합 분석할 준비가 되어 있는가? | Firebase 연동 체크리스트, 이벤트 매핑표 | + +> **다음 장 안내**: Chapter 03에서는 이 장에서 파악한 사이트 구조를 기반으로, GA4 속성 및 데이터 스트림을 실제로 설정하고 GTM을 활용한 이벤트 추적을 구현하는 방법을 다룹니다. + + +--- + + +# Chapter 03. 사용자 세그먼트 정의 + +> 데이터 분석의 출발점은 "우리 고객이 누구인가?"라는 질문이다. 이 장에서는 목표 사용자 그룹을 정의하고, 퍼스트 파티 데이터를 수집하며, GA4의 잠재고객 기능을 활용해 정밀한 세그먼트를 만드는 방법을 다룬다. + +--- + +## 목차 + +1. [목표 사용자 그룹 설정](#1-목표-사용자-그룹-설정) +2. [퍼스트 파티 데이터 전략](#2-퍼스트-파티-데이터-1st-party-data-전략) +3. [사용자 관심사 및 행동 경향 분석](#3-사용자-관심사-및-행동-경향-분석) +4. [이탈 분석 및 리마케팅 전략](#4-이탈-분석-및-리마케팅-전략) +5. [OMTM: 가장 중요한 단 하나의 지표](#5-omtm-가장-중요한-단-하나의-지표) +6. [GA4에서의 잠재고객 설정](#6-ga4에서의-잠재고객-audience-설정) + +--- + +## 1. 목표 사용자 그룹 설정 + +### 1.1 왜 사용자 그룹을 정의해야 하는가 + +마케팅 예산은 한정되어 있고, 모든 사람에게 동일한 메시지를 보내는 것은 비효율적이다. 사용자 세그먼트 (User Segment)를 명확히 정의하면 다음과 같은 이점을 얻는다. + +- 광고 비용 대비 전환율 (Conversion Rate) 향상 +- 개인화된 사용자 경험 제공 +- 제품/서비스 개선 방향의 명확화 +- 리마케팅 (Re-marketing) 대상의 정밀한 선별 + +### 1.2 데모그래픽, 관심사, 라이프스타일 속성 + +사용자 그룹을 정의할 때 사용하는 대표적인 세 가지 축이 있다. + +| 분류 | 설명 | 예시 | +|------|------|------| +| 데모그래픽 (Demographics) | 나이, 성별, 소득, 직업, 학력, 거주지역 등 인구통계학적 속성 | 25~34세 여성, 수도권 거주, 연소득 4,000만 원 이상 | +| 관심사 (Interests) | 사용자가 평소 관심을 가지는 주제나 카테고리 | 패션, 여행, 건강, 테크놀로지 | +| 라이프스타일 (Lifestyle) | 생활 방식, 가치관, 소비 성향 등 심리적 특성 | 환경 의식 소비자, 얼리어답터, 가성비 추구형 | + +> **실무 팁**: GA4의 "사용자 속성 (User Properties)" 보고서에서 데모그래픽 정보를 확인할 수 있다. 단, Google 신호 데이터 (Google Signals)를 활성화해야 관심사 카테고리가 수집된다. 관리 > 데이터 설정 > 데이터 수집에서 활성화한다. + +### 1.3 목표 고객 프로파일링 방법론 + +목표 고객을 프로파일링하는 것은 추상적인 "타겟"을 구체적인 인물상으로 만드는 과정이다. 다음 단계를 따른다. + +**단계 1: 기존 데이터 분석** + +GA4에서 이미 수집된 데이터를 기반으로 현재 방문자의 특성을 파악한다. + +- 보고서 > 사용자 > 사용자 속성 > 인구통계 세부정보 +- 보고서 > 사용자 > 기술 > 기술 세부정보 +- 보고서 > 수명 주기 > 획득 > 사용자 획득 + +**단계 2: 페르소나 (Persona) 작성** + +수집된 데이터를 바탕으로 대표 고객 유형을 2~4개로 압축한다. 각 페르소나에는 다음 항목을 포함한다. + +| 항목 | 작성 내용 | +|------|-----------| +| 이름 (가상) | 예: "직장인 민지" | +| 나이/성별 | 29세 여성 | +| 직업/소득 | IT기업 마케터, 연봉 3,800만 원 | +| 주요 관심사 | 자기계발, 온라인 쇼핑, 여행 | +| 정보 탐색 방식 | 인스타그램, 블로그 검색, 유튜브 리뷰 | +| 구매 의사결정 요인 | 후기 개수, 가격 비교, 무료 배송 여부 | +| 불편 사항/이탈 요인 | 복잡한 결제 과정, 느린 페이지 로딩 | + +**단계 3: 가설 수립 및 검증** + +각 페르소나별로 "이 사용자는 왜 우리 사이트에 오는가?", "무엇이 전환을 막는가?"에 대한 가설을 세우고, 데이터로 검증한다. + +### 1.4 실제 예시: "장바구니에 담았지만 결제하지 않는 사용자" + +이커머스에서 가장 흔하고 중요한 세그먼트 중 하나가 장바구니 이탈자 (Cart Abandoner)다. 이 사용자들을 이해하려면 다음 질문에 답해야 한다. + +**이 사용자는 누구인가?** + +| 분석 항목 | 확인 방법 (GA4) | +|-----------|-----------------| +| 어떤 채널에서 유입되었는가 | 탐색 > 유입경로 탐색 분석에서 `session_source` / `session_medium` 확인 | +| 어떤 기기를 사용하는가 | `device_category` 기준으로 세그먼트 비교 | +| 장바구니에 머문 시간 | `engagement_time_msec` 이벤트 파라미터 분석 | +| 장바구니에 담긴 상품 가격대 | `add_to_cart` 이벤트의 `value` 파라미터 | + +**왜 결제하지 않는가? (가설)** + +1. 배송비가 추가되어 총 결제 금액이 예상보다 높아짐 +2. 회원가입 또는 로그인 요구로 인한 이탈 +3. 결제 수단이 제한적임 (예: 카드 결제만 가능, 간편결제 미지원) +4. 모바일 환경에서 결제 UX가 불편함 +5. 비교 쇼핑 중으로, 아직 구매 의사결정을 하지 않은 상태 + +> **실무 체크리스트**: +> +> - [ ] GA4에서 `add_to_cart` 이벤트와 `purchase` 이벤트 사이의 전환율 확인 +> - [ ] 유입경로 탐색 (Funnel Exploration)으로 이탈 단계 시각화 +> - [ ] 기기별(데스크톱/모바일/태블릿) 장바구니 전환율 비교 +> - [ ] 장바구니 이탈자 대상 설문조사 실시 (이메일 또는 팝업) + +### 더 읽어보기 (Further Reading) + +- [GA4 잠재고객 만들기](https://support.google.com/analytics/answer/9267572) +- [GA4 추천 잠재고객](https://support.google.com/analytics/answer/9269751) + +--- + +## 2. 퍼스트 파티 데이터 (1st Party Data) 전략 + +### 2.1 프라이버시 환경의 변화와 1st Party Data의 중요성 + +2024~2026년 디지털 마케팅 환경에서 가장 큰 변화는 프라이버시 규제 강화다. + +| 변화 | 영향 | +|------|------| +| 서드파티 쿠키 (3rd Party Cookie) 단계적 폐지 | 크로스 사이트 추적 제한, 리타게팅 광고 정확도 감소 | +| iOS ATT (App Tracking Transparency) 정책 | 앱 추적 동의율 약 25~30%로 하락, 모바일 데이터 수집 제한 | +| 개인정보 보호법 강화 (한국 PIPA 개정) | 동의 기반 데이터 수집 의무화, 위반 시 과징금 | +| 브라우저 ITP (Intelligent Tracking Prevention) | Safari/Firefox의 쿠키 수명 단축 (최대 7일) | + +이러한 환경에서 퍼스트 파티 데이터 (1st Party Data), 즉 기업이 고객과의 직접적인 관계를 통해 수집한 데이터의 가치가 급격히 상승하고 있다. + +> **핵심 원칙**: 서드파티 데이터에 의존하던 시대는 끝났다. 자사 데이터를 체계적으로 수집하고 활용하는 것이 데이터 분석과 마케팅의 기본 전제가 되었다. + +### 2.2 퍼스트 파티 데이터의 유형 + +| 유형 | 수집 채널 | 예시 | +|------|-----------|------| +| 선언적 데이터 (Declared Data) | 회원가입, 설문조사, 프로필 설정 | 나이, 성별, 직업, 관심 카테고리 | +| 행동 데이터 (Behavioral Data) | 웹사이트/앱 이용 행동 | 페이지 조회, 클릭, 구매, 검색어 | +| 거래 데이터 (Transactional Data) | 결제, 주문, 반품 | 구매 금액, 구매 빈도, 구매 상품 | +| 참여 데이터 (Engagement Data) | 이메일, 소셜 미디어, 앱 알림 | 이메일 오픈율, 푸시 클릭률 | + +### 2.3 고객 설문조사 (Customer Survey) 정기 운영 + +GA4가 수집하는 행동 데이터만으로는 사용자의 "이유"를 알 수 없다. 설문조사는 행동 데이터의 빈틈을 채우는 핵심 수단이다. + +**정기 설문조사에서 수집해야 할 항목** + +| 카테고리 | 수집 항목 | 활용 목적 | +|----------|-----------|-----------| +| 기본 인구통계 | 나이, 성별, 거주 지역 | GA4 데모그래픽 데이터 보완 | +| 직업/소득 | 직업군, 월 평균 소득 구간 | 가격 정책, 상품 추천 | +| 정보 탐색 | 주로 사용하는 검색 채널, SNS 플랫폼 | 미디어 믹스 최적화 | +| 구매 동기 | 구매 결정에 가장 영향을 주는 요소 | 랜딩페이지 (Landing Page) 최적화 | +| 이탈 사유 | 구매를 포기한 이유 | UX 개선, 가격 전략 수정 | +| NPS (Net Promoter Score) | 추천 의향 (0~10점) | 고객 만족도 추적 | + +**설문조사 운영 주기 권장안** + +| 설문 유형 | 주기 | 대상 | +|-----------|------|------| +| 신규 가입자 온보딩 설문 | 가입 후 3일 이내 | 신규 회원 | +| 구매 후 만족도 설문 | 구매 후 7일 이내 | 구매 고객 | +| 장바구니 이탈 설문 | 이탈 후 24시간 이내 | 장바구니 이탈자 | +| 정기 브랜드 인식 설문 | 분기 1회 | 전체 회원 | +| 서비스 이용 경험 설문 | 반기 1회 | 활성 사용자 | + +> **실무 팁**: 설문조사 데이터를 GA4와 연결하려면, 설문 응답 시 사용자의 `client_id` 또는 `user_id`를 함께 저장하고, 이를 GA4의 사용자 속성 (User Properties)으로 전송한다. 이렇게 하면 "설문에서 가격이 비싸다고 응답한 사용자"의 실제 행동 패턴을 GA4에서 분석할 수 있다. + +### 2.4 서드파티 쿠키 폐지 대응 전략 + +서드파티 쿠키 의존도를 줄이기 위한 실행 가능한 전략은 다음과 같다. + +**전략 1: 로그인 사용자 확대** + +- 회원가입/로그인 인센티브 제공 (포인트, 할인 쿠폰) +- 소셜 로그인 (Social Login) 옵션 추가 +- 로그인 사용자에게만 제공되는 콘텐츠/기능 설계 + +**전략 2: GA4 동의 모드 (Consent Mode) v2 구현** + +- 사용자 동의 여부에 따라 데이터 수집 범위를 자동 조절 +- 동의하지 않은 사용자에 대해서도 모델링된 데이터를 확보 +- GTM의 동의 모드 태그 설정 필수 + +**전략 3: 서버 사이드 태깅 (Server-Side Tagging) 도입** + +- 클라이언트 측이 아닌 서버에서 데이터를 수집/전송 +- 브라우저의 쿠키 제한을 우회할 수 있음 +- Google Tag Manager 서버 컨테이너 활용 + +**전략 4: Google Enhanced Conversions 활성화** + +- 해시 처리된 자사 고객 데이터 (이메일, 전화번호 등)를 Google에 전송 +- 서드파티 쿠키 없이도 전환 측정 정확도 유지 +- GA4 + Google Ads 연동 시 설정 + +> **실무 체크리스트**: +> +> - [ ] 웹사이트에 동의 관리 플랫폼 (CMP, Consent Management Platform) 구축 +> - [ ] GA4 동의 모드 v2 태그 설정 완료 +> - [ ] 로그인 사용자 비율 모니터링 대시보드 구축 +> - [ ] 이메일, 전화번호 등 PII (Personally Identifiable Information) 해시 전송 체계 마련 +> - [ ] 설문조사 정기 운영 프로세스 수립 + +### 더 읽어보기 (Further Reading) + +- [GA4 잠재고객 만들기](https://support.google.com/analytics/answer/9267572) +- [GA4 추천 잠재고객](https://support.google.com/analytics/answer/9269751) + +--- + +## 3. 사용자 관심사 및 행동 경향 분석 + +### 3.1 사용 기기/디바이스 분석 + +사용자가 어떤 기기로 접속하는지를 파악하는 것은 UX 최적화와 광고 타겟팅의 기본이다. + +**GA4에서 기기 데이터 확인 경로** + +- 보고서 > 사용자 > 기술 > 기술 세부정보 +- 탐색 > 자유 형식에서 `device_category`, `operating_system`, `browser` 등을 차원 (Dimension)으로 설정 + +**분석 시 확인해야 할 항목** + +| 분석 항목 | 차원 (Dimension) | 확인 포인트 | +|-----------|-------------------|-------------| +| 기기 유형 | `device_category` | 모바일 vs 데스크톱 vs 태블릿 비율 | +| 운영체제 | `operating_system` | iOS vs Android 비율 (앱의 경우) | +| 브라우저 | `browser` | Chrome, Safari, Samsung Internet 등 점유율 | +| 화면 해상도 | `screen_resolution` | 반응형 디자인 최적화 기준 | +| 기기 모델 | `device_model` | 주요 사용 단말기 확인 (앱의 경우) | + +> **실무 팁**: 한국 시장에서는 모바일 트래픽 비중이 70~80%에 달하는 경우가 많다. 모바일 전환율이 데스크톱 대비 현저히 낮다면, 모바일 결제 UX나 페이지 로딩 속도에 문제가 있을 가능성이 높다. 이 경우 기기별 전환율 차이를 OMTM 후보 지표로 설정할 수 있다. + +### 3.2 정보 탐색 행동의 경향성 + +사용자가 구매 또는 전환에 이르기까지 어떤 정보 탐색 경로를 거치는지 이해하면, 콘텐츠 전략과 미디어 전략을 최적화할 수 있다. + +**탐색 행동 분석 프레임워크** + +| 단계 | 사용자 행동 | GA4 분석 방법 | +|------|-------------|---------------| +| 인지 (Awareness) | 브랜드를 처음 알게 됨 | `first_user_source` / `first_user_medium` 분석 | +| 탐색 (Exploration) | 정보를 비교하고 검색함 | 사이트 내 검색어 (`search_term`) 분석, 페이지별 조회 수 | +| 고려 (Consideration) | 상세 페이지 열람, 리뷰 확인 | `view_item` 이벤트, 페이지 체류 시간 | +| 결정 (Decision) | 장바구니 담기, 결제 시도 | `add_to_cart`, `begin_checkout` 이벤트 | +| 구매 (Purchase) | 결제 완료 | `purchase` 이벤트 | + +**GA4 탐색 보고서 활용** + +탐색 > 경로 탐색 분석 (Path Exploration)을 사용하면, 사용자가 특정 페이지에서 다음으로 어디로 이동하는지 시각적으로 확인할 수 있다. + +- 시작 노드 (Starting Node): 랜딩페이지 또는 특정 이벤트 +- 후속 단계: 사용자가 이후 방문한 페이지 또는 발생시킨 이벤트 +- 세그먼트 비교 (Segment Comparison): 전환 사용자 vs 비전환 사용자의 경로 차이 + +### 3.3 주 정보 획득처 분석 + +사용자가 어디에서 정보를 얻어 우리 사이트에 도달하는지를 파악하면, 마케팅 채널 투자 우선순위를 결정할 수 있다. + +**GA4의 트래픽 소스 분석** + +| 보고서 | 확인 내용 | +|--------|-----------| +| 수명 주기 > 획득 > 사용자 획득 | 사용자가 처음 유입된 채널 (첫 방문 기준) | +| 수명 주기 > 획득 > 트래픽 획득 | 각 세션별 유입 채널 (재방문 포함) | +| 광고 > 어트리뷰션 (Attribution) > 전환 경로 | 전환에 기여한 터치포인트 (Touchpoint) 분석 | + +**한국 시장 주요 유입 채널** + +| 채널 | 소스/매체 예시 | 특징 | +|------|----------------|------| +| 네이버 검색 | `naver / organic` | 한국 검색 시장 점유율 50%+, 블로그/카페/지식인 포함 | +| 구글 검색 | `google / organic` | 기술/영어권 콘텐츠 검색 시 점유율 높음 | +| 네이버 광고 | `naver / cpc` | 네이버 검색광고, 파워링크, 쇼핑검색 | +| Google Ads | `google / cpc` | 검색광고, 디스플레이, 유튜브 광고 | +| 카카오 | `kakao / referral` | 카카오톡 공유, 카카오 비즈보드 | +| 인스타그램 | `instagram / social` | 20~30대 타겟 시 중요 | +| 유튜브 | `youtube / referral` | 영상 리뷰 기반 유입 | + +> **실무 팁**: GA4에서 네이버 유입을 정확히 추적하려면, 네이버 검색광고에 UTM 파라미터를 반드시 설정해야 한다. 설정하지 않으면 `naver / organic`과 `naver / cpc`가 구분되지 않아 광고 성과 분석이 불가능하다. + +### 더 읽어보기 (Further Reading) + +- [GA4 잠재고객 만들기](https://support.google.com/analytics/answer/9267572) +- [GA4 추천 잠재고객](https://support.google.com/analytics/answer/9269751) + +--- + +## 4. 이탈 분석 및 리마케팅 전략 + +### 4.1 이탈 지점 분석 + +이탈 (Drop-off)은 사용자가 전환 퍼널 (Conversion Funnel)의 특정 단계에서 다음 단계로 진행하지 않고 빠져나가는 것을 의미한다. + +**GA4 유입경로 탐색 분석 (Funnel Exploration) 설정** + +이커머스를 기준으로 한 표준 퍼널 단계는 다음과 같다. + +| 단계 | 이벤트 | 설명 | +|------|--------|------| +| 1단계 | `page_view` (상품 목록 페이지) | 상품 목록 조회 | +| 2단계 | `view_item` | 상품 상세 페이지 조회 | +| 3단계 | `add_to_cart` | 장바구니 담기 | +| 4단계 | `begin_checkout` | 결제 시작 | +| 5단계 | `add_payment_info` | 결제 정보 입력 | +| 6단계 | `purchase` | 구매 완료 | + +**이탈 분석 시 핵심 확인 사항** + +| 이탈 지점 | 가능한 원인 | 확인 방법 | +|-----------|-------------|-----------| +| 목록 > 상세 | 상품 이미지/가격 매력도 부족 | 목록 페이지의 CTR (Click-Through Rate) 분석 | +| 상세 > 장바구니 | 상품 정보 부족, 가격 거부감 | 상세 페이지 체류 시간, 스크롤 깊이 분석 | +| 장바구니 > 결제 시작 | 배송비 추가, 회원가입 요구 | 장바구니 페이지 이탈률 분석 | +| 결제 시작 > 결제 정보 입력 | 결제 수단 부족, UX 복잡 | 결제 페이지 에러 로그 확인 | +| 결제 정보 입력 > 구매 완료 | 결제 실패, 최종 금액 확인 후 이탈 | 결제 에러율, PG사 로그 확인 | + +### 4.2 이탈 행위 분석 + +이탈 "지점"뿐 아니라 이탈 "행위"를 분석하면 더 깊은 인사이트를 얻을 수 있다. + +**분석해야 할 이탈 행위 패턴** + +- **빠른 이탈 (Bounce)**: 페이지를 열자마자 떠나는 경우. 잘못된 광고 타겟팅이나 랜딩페이지 불일치가 원인일 가능성이 높다. +- **반복 방문 후 이탈**: 여러 번 방문하지만 전환하지 않는 경우. 가격 비교 중이거나, 확신이 부족한 상태. +- **깊은 탐색 후 이탈**: 상세 페이지를 여러 개 보고도 장바구니에 담지 않는 경우. 의사결정을 위한 정보(리뷰, 비교)가 부족할 수 있다. +- **장바구니 반복 수정 후 이탈**: 수량이나 옵션을 여러 번 변경하다 이탈. 총 금액에 대한 저항이 있을 수 있다. + +GA4에서 이러한 행위를 분석하려면 탐색 > 자유 형식 보고서에서 세그먼트를 활용한다. + +### 4.3 리마케팅 (Re-marketing) 전략 + +이탈한 사용자를 다시 전환으로 유도하는 리마케팅은, 신규 사용자 획득보다 비용 효율이 높은 경우가 많다. + +**이탈 단계별 리마케팅 전략** + +| 이탈 단계 | 리마케팅 전략 | 실행 채널 | +|-----------|---------------|-----------| +| 상품 조회 후 이탈 | 관심 상품 기반 디스플레이 광고 | Google Ads 리마케팅, 네이버 GFA | +| 장바구니 이탈 | 장바구니 상품 리마인드 + 한정 할인 쿠폰 | 이메일, 카카오 알림톡, 앱 푸시 | +| 결제 시도 후 이탈 | 결제 완료 유도 + 추가 혜택 제안 | 이메일, SMS, 앱 푸시 | +| 구매 후 비활성 | 재구매 유도 할인, 관련 상품 추천 | 이메일, CRM 자동화 | + +**리마케팅 시 유의사항** + +- 리마케팅 빈도 상한 (Frequency Cap) 설정: 과도한 노출은 브랜드 이미지를 훼손한다. +- 리마케팅 기간 설정: 상품 특성에 따라 다르다. 소비재는 7~14일, 고가 상품은 30~60일이 적절하다. +- 혜택의 차등화: 이탈 단계가 깊을수록 (결제 시작 이후 이탈) 더 강한 인센티브를 제공한다. +- 개인정보 보호법 준수: 리마케팅 메시지 발송 시 마케팅 수신 동의를 받은 사용자에게만 발송한다. + +### 4.4 서베이를 통한 이탈 원인 파악 + +데이터만으로 이탈 원인의 "왜"를 알기 어렵다. 직접 물어보는 것이 가장 정확하다. + +**이탈 서베이 설계 예시** + +장바구니 이탈자에게 보내는 이메일 설문: + +``` +Q1. 최근 장바구니에 담으신 상품의 구매를 완료하지 않으신 이유는 무엇인가요? +(복수 선택 가능) + +[ ] 배송비가 예상보다 높았습니다 +[ ] 다른 사이트와 가격을 비교하고 있습니다 +[ ] 원하는 결제 수단이 없었습니다 +[ ] 아직 구매를 결정하지 못했습니다 +[ ] 회원가입/로그인이 불편했습니다 +[ ] 상품 정보(사이즈, 색상 등)가 부족했습니다 +[ ] 배송일이 너무 오래 걸립니다 +[ ] 기타: ________________ + +Q2. 어떤 조건이 충족되면 구매를 완료하시겠습니까? +(자유 서술) +``` + +> **실무 팁**: 이탈 서베이 응답률을 높이려면 설문 완료 시 소정의 혜택(포인트, 할인 쿠폰)을 제공하고, 설문 문항은 5개 이내로 간결하게 유지한다. + +### 더 읽어보기 (Further Reading) + +- [GA4 잠재고객 만들기](https://support.google.com/analytics/answer/9267572) +- [GA4 잠재고객 트리거](https://support.google.com/analytics/answer/12799498) + +--- + +## 5. OMTM: 가장 중요한 단 하나의 지표 + +### 5.1 OMTM (One Metric That Matters)이란 + +OMTM (One Metric That Matters)은 린 분석 (Lean Analytics) 방법론에서 제시된 개념으로, 현재 비즈니스 단계에서 가장 중요한 단 하나의 핵심 지표를 의미한다. + +모든 지표를 동시에 개선하려 하면 집중력이 분산되고 성과를 내기 어렵다. OMTM을 설정하면 조직 전체가 하나의 목표에 집중할 수 있다. + +### 5.2 OMTM과 다른 지표 프레임워크의 차이 + +| 프레임워크 | 특징 | OMTM과의 관계 | +|------------|------|---------------| +| KPI (Key Performance Indicator) | 비즈니스 성과를 측정하는 핵심 성과 지표. 여러 개 존재 가능 | OMTM은 KPI 중에서 현재 가장 중요한 하나를 선택한 것 | +| OKR (Objectives and Key Results) | 목표와 핵심 결과. 보통 3~5개의 Key Results 설정 | OMTM은 Key Results 중 최우선 지표 | +| 노스스타 메트릭 (North Star Metric) | 장기적 비즈니스 성장을 대표하는 지표 | OMTM은 현재 단계에 집중, 노스스타는 장기적 방향성 | + +### 5.3 OMTM 설정 방법론 + +**단계 1: 비즈니스 단계 진단** + +현재 비즈니스가 어떤 단계에 있는지에 따라 집중해야 할 지표가 달라진다. + +| 비즈니스 단계 | 핵심 질문 | OMTM 후보 | +|---------------|-----------|-----------| +| 공감 (Empathy) | 고객의 문제를 이해하고 있는가? | 고객 인터뷰 수, 설문 응답률 | +| 점착성 (Stickiness) | 사용자가 제품을 반복 사용하는가? | DAU/MAU 비율, 재방문율 | +| 바이럴 (Virality) | 사용자가 다른 사람에게 추천하는가? | 초대 전환율, 공유율, NPS | +| 매출 (Revenue) | 수익이 발생하고 있는가? | ARPU (Average Revenue Per User), LTV (Lifetime Value) | +| 확장 (Scale) | 시장을 확대할 수 있는가? | CAC (Customer Acquisition Cost), 채널별 ROI | + +**단계 2: OMTM 선정 기준** + +좋은 OMTM은 다음 기준을 충족해야 한다. + +| 기준 | 설명 | +|------|------| +| 측정 가능 (Measurable) | 정량적으로 추적할 수 있어야 한다 | +| 행동 유발 (Actionable) | 지표를 보고 구체적 행동을 취할 수 있어야 한다 | +| 비교 가능 (Comparable) | 기간별, 세그먼트별 비교가 가능해야 한다 | +| 이해 가능 (Understandable) | 조직 구성원 누구나 의미를 이해할 수 있어야 한다 | +| 비즈니스 연결 (Business-relevant) | 최종 비즈니스 성과(매출, 이익)와 인과관계가 있어야 한다 | + +### 5.4 OMTM 예시 + +**예시 1: 이커머스 쇼핑몰** + +- 현재 상황: 트래픽은 충분하나 구매 전환이 낮음 +- OMTM: **장바구니 > 결제 완료 전환율** +- 이유: 유입은 잘 되고 있으므로 전환 퍼널의 병목을 해결하는 것이 매출에 가장 큰 영향을 준다 +- 목표: 현재 2.3%에서 30일 내 3.0%로 개선 + +**예시 2: SaaS 서비스** + +- 현재 상황: 무료 체험 가입은 많으나 유료 전환이 낮음 +- OMTM: **무료 체험 > 유료 전환율 (Trial-to-Paid Conversion Rate)** +- 이유: 무료 사용자를 유료로 전환하는 것이 현재 가장 시급한 과제 +- 목표: 현재 5%에서 60일 내 8%로 개선 + +**예시 3: 콘텐츠 미디어** + +- 현재 상황: 방문자 수는 많으나 재방문율이 낮음 +- OMTM: **주간 재방문율 (Weekly Returning Users Rate)** +- 이유: 충성 독자 확보가 광고 수익과 직결됨 +- 목표: 현재 15%에서 90일 내 25%로 개선 + +> **핵심 원칙**: OMTM은 고정불변이 아니다. 현재 지표가 목표에 도달하면 다음 단계의 OMTM으로 전환한다. 보통 4~8주 주기로 점검하고, 필요 시 재설정한다. + +### 5.5 GA4에서 OMTM 추적 설정 + +GA4에서 OMTM을 효과적으로 추적하려면 다음과 같이 설정한다. + +1. **맞춤 보고서 (Custom Report)** 생성: OMTM 지표를 중심으로 일별/주별 추이를 볼 수 있는 보고서를 구성한다. +2. **커스텀 인사이트 (Custom Insights)** 설정: OMTM이 일정 기준 이하로 떨어지면 자동 알림을 받도록 설정한다 (관리 > 커스텀 인사이트). +3. **루커 스튜디오 (Looker Studio)** 대시보드 연동: GA4 데이터를 연결하여 OMTM 전용 대시보드를 구축하고, 팀 전체가 공유한다. + +### 더 읽어보기 (Further Reading) + +- [GA4 잠재고객 만들기](https://support.google.com/analytics/answer/9267572) +- [GA4 예측 잠재고객](https://support.google.com/analytics/answer/11986125) + +--- + +## 6. GA4에서의 잠재고객 (Audience) 설정 + +### 6.1 잠재고객 생성 기본 개념 + +잠재고객 (Audience)은 특정 조건을 만족하는 사용자들의 그룹이다. GA4에서 잠재고객을 만들면 다음과 같은 용도로 활용할 수 있다. + +- **보고서 비교**: 탐색 보고서에서 잠재고객별 행동 차이를 비교 +- **Google Ads 연동**: 잠재고객을 광고 타겟으로 활용 (리마케팅, 유사 잠재고객) +- **맞춤 알림**: 특정 잠재고객의 행동 변화 시 알림 수신 +- **A/B 테스트**: 잠재고객 기반으로 실험 대상 그룹 설정 + +**잠재고객 생성 경로**: 관리 > 데이터 표시 > 잠재고객 > 새 잠재고객 + +### 6.2 행동 기반 세그먼트 vs 전환 기반 세그먼트 + +| 유형 | 정의 | 예시 | +|------|------|------| +| 행동 기반 세그먼트 (Behavior-based) | 특정 행동을 수행한 사용자 | 최근 7일간 3회 이상 방문한 사용자, 특정 카테고리 페이지를 본 사용자 | +| 전환 기반 세그먼트 (Conversion-based) | 전환 이벤트를 기준으로 분류한 사용자 | 구매 완료 사용자, 회원가입 완료 사용자, 장바구니에 담았지만 구매하지 않은 사용자 | + +**실전에서 자주 사용하는 잠재고객 예시** + +| 잠재고객 이름 | 조건 | 활용 목적 | +|---------------|------|-----------| +| 고가치 고객 (High-Value Customers) | `purchase` 이벤트의 `value` 합계가 100,000원 이상 | VIP 대상 프로모션 | +| 장바구니 이탈자 (Cart Abandoners) | `add_to_cart` 발생 AND `purchase` 미발생 | 리마케팅 광고 | +| 반복 방문자 (Frequent Visitors) | 최근 30일간 세션 수 5회 이상 | 충성 고객 전환 유도 | +| 신규 방문자 (New Users) | `first_visit` 이벤트 발생 후 7일 이내 | 온보딩 캠페인 | +| 이탈 위험 고객 (Churn Risk) | 과거 활성 사용자 중 최근 30일간 방문 없음 | 재활성화 캠페인 | +| 특정 카테고리 관심자 | 특정 카테고리 페이지 3회 이상 조회 | 카테고리별 타겟 광고 | + +### 6.3 스코프 설정 (Scope) + +GA4에서 잠재고객 조건을 설정할 때, 스코프 (Scope)는 조건이 적용되는 범위를 의미한다. + +| 스코프 | 적용 범위 | 설명 | 예시 | +|--------|-----------|------|------| +| 모든 세션 (User scope) | 사용자의 전체 기록 | 사용자의 전체 방문 이력에서 조건을 충족하는지 평가 | "지금까지 총 구매 금액이 50만 원 이상인 사용자" | +| 세션 내 (Session scope) | 단일 세션 | 하나의 세션 내에서 조건을 충족하는지 평가 | "한 번의 방문에서 5개 이상 상품을 조회한 사용자" | +| 이벤트 내 (Event scope) | 단일 이벤트 | 개별 이벤트 수준에서 조건을 충족하는지 평가 | "가격이 10만 원 이상인 상품을 장바구니에 담은 사용자" | + +> **주의**: 스코프 설정을 잘못하면 의도와 다른 잠재고객이 만들어진다. 예를 들어, "상품 A를 보고 AND 상품 B를 구매한 사용자"를 만들 때, 세션 스코프로 설정하면 "같은 세션에서 A를 보고 B를 산 사용자"가 되고, 유저 스코프로 설정하면 "언젠가 A를 본 적이 있고 언젠가 B를 산 적이 있는 사용자"가 된다. 분석 목적에 맞는 스코프를 선택해야 한다. + +### 6.4 집계 기간 설정 + +잠재고객의 멤버십 기간 (Membership Duration)은 조건을 충족한 사용자가 해당 잠재고객에 포함되는 기간이다. + +| 기간 | 적합한 경우 | 예시 | +|------|-------------|------| +| 7일 | 단기 프로모션, 긴급 리마케팅 | 최근 7일 내 장바구니 이탈자 | +| 30일 | 일반적인 리마케팅, 월간 행동 분석 | 최근 30일 내 구매자 | +| 60일 | 중기 캠페인, 재구매 주기가 긴 상품 | 최근 60일 내 특정 카테고리 조회자 | +| 90일 | 장기 캠페인, 시즌 상품 | 분기별 구매 패턴 분석 | +| 120일 | 장기 리마케팅, 고가 상품 | 고관여 상품(가전, 가구 등) 관심자 | +| 540일 (최대) | 장기 고객 분석 | 연간 구매 행동 분석 | + +> **실무 팁**: Google Ads와 연동하여 리마케팅에 활용하는 경우, 멤버십 기간은 상품의 평균 구매 결정 기간을 기준으로 설정한다. 예를 들어, 의류는 7~14일, 가전제품은 30~60일, 자동차는 90~120일이 적절하다. + +### 6.5 잠재고객 트리거 (Audience Trigger) 활용 + +잠재고객 트리거 (Audience Trigger)는 사용자가 잠재고객 조건을 충족하는 순간 GA4 이벤트를 자동으로 발생시키는 기능이다. 이 이벤트는 전환 (Key Event)으로 설정하거나, 다른 잠재고객 조건에 활용할 수 있다. + +**설정 방법** + +1. 잠재고객 생성 화면에서 "새 잠재고객" 클릭 +2. 조건 설정 완료 후 "잠재고객 트리거" 섹션에서 이벤트 이름 입력 +3. 저장하면, 조건 충족 시 해당 이벤트가 자동으로 기록됨 + +**활용 예시** + +| 잠재고객 트리거 이벤트 | 조건 | 후속 활용 | +|------------------------|------|-----------| +| `became_high_value` | 총 구매 금액 50만 원 돌파 시 | 이 이벤트를 Key Event로 설정하여 전환 추적 | +| `cart_abandoner_identified` | 장바구니 담기 후 48시간 내 미구매 | 이벤트 발생 시 CRM 시스템에서 자동 이메일 발송 트리거 | +| `engaged_user_milestone` | 세션 수 10회 도달 시 | 충성 고객 세그먼트 자동 분류 | + +> **주의**: 잠재고객 트리거 이벤트는 사용자가 조건을 충족하는 최초 1회만 발생한다. 반복 발생시키려면 잠재고객 조건을 재설정해야 한다. + +### 6.6 조건식 설정: AND/OR 및 임의의 시점 (At Any Point) + +GA4 잠재고객의 조건은 논리 연산자 (Logical Operator)를 사용하여 복합 조건을 만들 수 있다. + +**AND 조건** + +두 가지 조건을 모두 충족하는 사용자를 선택한다. + +- 예: `add_to_cart` 이벤트 발생 **AND** `purchase` 이벤트 미발생 +- 의미: "장바구니에 담았지만 구매하지 않은 사용자" + +**OR 조건** + +두 가지 조건 중 하나라도 충족하는 사용자를 선택한다. + +- 예: `page_view`에서 `/shoes/` 경로 포함 **OR** `/sneakers/` 경로 포함 +- 의미: "신발 또는 스니커즈 카테고리를 조회한 사용자" + +**조건 그룹 (Condition Group)** + +AND와 OR을 조합하여 복잡한 조건을 설정할 수 있다. + +``` +(조건 그룹 1: 관심 표현) + view_item 이벤트 발생 (item_category = "전자제품") + OR + add_to_cart 이벤트 발생 (item_category = "전자제품") + +AND + +(조건 그룹 2: 미전환) + purchase 이벤트 미발생 +``` + +의미: "전자제품을 조회하거나 장바구니에 담았지만 구매하지 않은 사용자" + +**"임의의 시점" (At Any Point) 지정** + +조건이 특정 시점이 아니라 사용자의 전체 이력에서 한 번이라도 충족된 적이 있는지를 평가한다. + +- 체크 해제: 현재 멤버십 기간 내에서만 조건 평가 +- 체크 활성화: 사용자의 전체 이력에서 조건 평가 + +예시 비교: + +| 설정 | "임의의 시점" 해제 | "임의의 시점" 활성화 | +|------|---------------------|----------------------| +| `purchase` 이벤트 발생, `value` >= 100,000 | 최근 멤버십 기간(예: 30일) 내 10만 원 이상 구매한 사용자 | 과거 어느 시점이든 10만 원 이상 구매한 적이 있는 사용자 | + +### 6.7 시퀀스 (Sequence) 조건 활용 + +GA4 잠재고객에서는 시퀀스 (Sequence) 조건을 사용하여 특정 순서로 행동한 사용자를 선택할 수 있다. + +**설정 방법** + +1. 잠재고객 생성 화면에서 "시퀀스 추가" 클릭 +2. 단계 1, 단계 2, ... 순서대로 조건 설정 +3. 각 단계 사이에 시간 제약 (Time Constraint) 설정 가능 + +**예시: 상품 조회 후 24시간 내 장바구니 이탈** + +``` +단계 1: view_item 이벤트 발생 (item_category = "패션") + ↓ 24시간 이내 +단계 2: add_to_cart 이벤트 발생 + ↓ +제외 조건: purchase 이벤트 발생 +``` + +의미: "패션 카테고리 상품을 본 후 24시간 내에 장바구니에 담았지만, 결국 구매하지 않은 사용자" + +### 6.8 Google Ads 연동 시 잠재고객 활용 + +GA4에서 생성한 잠재고객을 Google Ads에 공유하면, 강력한 리마케팅과 타겟 광고가 가능해진다. + +**연동 설정 단계** + +1. GA4 관리 > 제품 링크 > Google Ads 링크 설정 +2. Google Ads 계정을 연결 +3. 잠재고객 생성 시 "이 잠재고객을 Google Ads에 게시" 옵션 활성화 (또는 광고 개인 최적화 설정) + +**Google Ads에서 GA4 잠재고객 활용 방법** + +| 활용 방법 | 설명 | 예시 | +|-----------|------|------| +| 리마케팅 (Remarketing) | 잠재고객에 해당하는 사용자에게 광고 표시 | 장바구니 이탈자에게 해당 상품 광고 노출 | +| 유사 잠재고객 (Similar Audiences) | 잠재고객과 유사한 특성을 가진 신규 사용자 타겟 | 구매 고객과 유사한 신규 사용자에게 광고 노출 | +| 입찰 조정 (Bid Adjustment) | 잠재고객별로 입찰가를 다르게 설정 | 고가치 고객에게는 입찰가를 높여 노출 확대 | +| 제외 타겟 (Exclusion) | 특정 잠재고객을 광고 대상에서 제외 | 이미 구매한 사용자를 동일 상품 광고에서 제외 | + +> **실무 체크리스트 - GA4 잠재고객 설정**: +> +> - [ ] GA4와 Google Ads 계정 연결 완료 +> - [ ] 기본 잠재고객 5종 이상 생성 (구매자, 장바구니 이탈자, 고가치 고객, 신규 방문자, 이탈 위험 고객) +> - [ ] 각 잠재고객에 적절한 멤버십 기간 설정 +> - [ ] 잠재고객 트리거를 활용한 Key Event 설정 +> - [ ] Google Ads에 잠재고객 공유 활성화 +> - [ ] 잠재고객별 리마케팅 캠페인 설계 +> - [ ] 월 1회 잠재고객 크기 및 전환 성과 점검 + +### 6.9 GA4 추천 잠재고객 및 예측 잠재고객 + +GA4는 자동으로 추천하는 잠재고객 템플릿과, 머신러닝 기반의 예측 잠재고객 (Predictive Audience)을 제공한다. + +**추천 잠재고객 (Suggested Audiences)** + +잠재고객 생성 화면에서 "추천" 탭을 선택하면 업종별로 미리 정의된 잠재고객 템플릿을 사용할 수 있다. + +| 추천 잠재고객 | 조건 요약 | +|---------------|-----------| +| 최근 구매자 (Recent Purchasers) | 최근 N일 내 `purchase` 이벤트 발생 | +| 비구매 방문자 (Non-Purchasers) | 방문했으나 `purchase` 미발생 | +| 장바구니 이탈자 (Cart Abandoners) | `add_to_cart` 발생, `purchase` 미발생 | +| 검색 사용자 (Searchers) | `search` 이벤트 발생 | +| 고가치 고객 (High-Value Customers) | 구매 금액 상위 N% | + +**예측 잠재고객 (Predictive Audiences)** + +GA4의 머신러닝 모델이 사용자의 미래 행동을 예측하여 자동 분류한다. + +| 예측 잠재고객 | 예측 내용 | 요구 조건 | +|---------------|-----------|-----------| +| 구매 가능성 높은 사용자 (Likely Purchasers) | 향후 7일 내 구매할 가능성이 높은 사용자 | 최근 28일간 구매자 1,000명 이상, 비구매자 1,000명 이상 필요 | +| 이탈 가능성 높은 사용자 (Likely Churning Users) | 향후 7일간 활동하지 않을 가능성이 높은 사용자 | 최근 7일간 활성 사용자 1,000명 이상, 비활성 전환 사용자 1,000명 이상 필요 | +| 예측 지출 상위 사용자 (Predicted Top Spenders) | 향후 28일간 가장 많이 지출할 것으로 예측되는 사용자 | 최근 28일간 구매자 1,000명 이상 필요 | + +> **주의**: 예측 잠재고객을 사용하려면 일정 수준 이상의 데이터 양이 필요하다. 소규모 사이트에서는 데이터 요구 조건을 충족하지 못해 예측 잠재고객을 사용할 수 없는 경우가 많다. 이 경우 행동 기반 잠재고객을 활용한다. + +### 더 읽어보기 (Further Reading) + +- [GA4 잠재고객 만들기](https://support.google.com/analytics/answer/9267572) +- [GA4 잠재고객 트리거](https://support.google.com/analytics/answer/12799498) +- [GA4 추천 잠재고객](https://support.google.com/analytics/answer/9269751) +- [GA4 예측 잠재고객](https://support.google.com/analytics/answer/11986125) + +--- + +## 요약: 사용자 세그먼트 정의 실행 로드맵 + +이 장에서 다룬 내용을 실행 순서로 정리하면 다음과 같다. + +| 순서 | 실행 항목 | 소요 기간 | +|------|-----------|-----------| +| 1 | 기존 GA4 데이터로 현재 방문자 특성 분석 | 1~2일 | +| 2 | 페르소나 2~4개 작성 | 2~3일 | +| 3 | 이탈 퍼널 분석 및 병목 지점 파악 | 1~2일 | +| 4 | OMTM 선정 및 팀 공유 | 1일 | +| 5 | GA4 잠재고객 5종 이상 생성 | 1일 | +| 6 | Google Ads 연동 및 리마케팅 캠페인 설정 | 2~3일 | +| 7 | 퍼스트 파티 데이터 수집 계획 수립 (설문조사 등) | 3~5일 | +| 8 | 동의 모드 v2 및 서버 사이드 태깅 검토/구현 | 1~2주 | +| 9 | 월간 잠재고객 성과 리뷰 프로세스 수립 | 지속 | + +> **최종 체크**: 사용자 세그먼트 정의는 한 번 하고 끝나는 것이 아니다. 비즈니스 환경, 제품 라인업, 시장 상황이 변하면 세그먼트도 갱신해야 한다. 최소 분기 1회 이상 전체 세그먼트를 점검하고, 새로운 데이터에 기반하여 재정의하는 것을 권장한다. + + +--- + + +# Chapter 04. 사용자 행동 가설 & 측정 계획 + +--- + +**목차** + +- [4.1 사용자 행동 가설 수립](#41-사용자-행동-가설-수립) +- [4.2 측정 프레임워크 설계 (Measurement Framework)](#42-측정-프레임워크-설계-measurement-framework) +- [4.3 핵심 성과 지표 (KPI) 설정](#43-핵심-성과-지표-kpi-설정) +- [4.4 리드 생성 (Lead Generation) 전략](#44-리드-생성-lead-generation-전략) +- [4.5 마이크로 전환 (Micro Conversion) 설정](#45-마이크로-전환-micro-conversion-설정) +- [4.6 측정 계획서 (Measurement Plan) 작성](#46-측정-계획서-measurement-plan-작성) + +--- + +데이터 분석의 출발점은 "무엇을 측정할 것인가"를 정하는 일이다. 아무리 정교한 도구를 갖추고 있어도 측정 대상이 불명확하면 의미 있는 인사이트를 얻기 어렵다. 이 장에서는 사용자 행동에 대한 가설을 세우고, 비즈니스 목표에 부합하는 측정 계획을 체계적으로 수립하는 방법을 다룬다. 측정 계획이 명확해야 GA4 이벤트 설계와 GTM 태깅 구현이 효율적으로 진행될 수 있다. + +--- + +## 4.1 사용자 행동 가설 수립 + +데이터 분석에 앞서, 우리 웹사이트(또는 앱)에서 사용자가 어떻게 행동할 것인지에 대한 가설을 먼저 세워야 한다. 가설 없는 데이터 수집은 방향 없는 항해와 같다. + +### 4.1.1 사용자 방문 유입처 가설 + +GA4에서는 사용자가 웹사이트에 도달하는 경로를 기본 채널 그룹 (Default Channel Grouping)으로 자동 분류한다. 이 채널 그룹핑은 `source`, `medium`, `campaign` 파라미터 조합에 따라 결정된다. + +> **Tip**: 대부분의 웹사이트에서 유기적 검색 (Organic Search) 트래픽이 전체 유입의 60~70%를 차지한다. 자사 웹사이트의 유입 채널 비율이 이 기준과 크게 다르다면, 마케팅 채널 전략이나 UTM 파라미터 설정을 점검해 볼 필요가 있다. + +**주요 유입 채널과 가설 수립 포인트** + +| 채널 그룹 | 설명 | 가설 수립 포인트 | +|-----------|------|-----------------| +| Organic Search | 검색엔진을 통한 자연 유입 | 어떤 키워드로 유입되는가? 검색 의도는 정보 탐색인가, 구매 의도인가? | +| Paid Search | 검색 광고를 통한 유입 | 광고 키워드별 전환율 차이가 있는가? | +| Direct | URL 직접 입력 또는 북마크 | 브랜드 인지도가 높은가? 재방문 사용자 비율은? | +| Referral | 외부 사이트 링크를 통한 유입 | 어떤 외부 사이트에서 양질의 트래픽이 발생하는가? | +| Organic Social | 소셜 미디어 자연 유입 | 어떤 소셜 채널이 가장 효과적인가? | +| Paid Social | 소셜 미디어 광고 유입 | 광고 소재별 참여도 차이는? | +| Email | 이메일 캠페인을 통한 유입 | 이메일 캠페인 유형별 반응률은? | +| Display | 디스플레이 광고를 통한 유입 | 리타겟팅 vs. 신규 노출 캠페인의 효율은? | + +### 4.1.2 사용자 유입 접점 분류 + +사용자가 웹사이트에 처음 도달하는 페이지, 즉 랜딩 페이지 (Landing Page)는 사용자 행동의 시작점이다. 유입 접점을 체계적으로 분류하면 사용자의 방문 의도를 파악할 수 있다. + +**유입 접점 유형과 사용자 의도** + +| 유입 접점 유형 | 사용자 의도 | 측정 관점 | +|---------------|-----------|----------| +| 홈페이지/메인 페이지 | 브랜드 탐색, 전반적 정보 확인 | 이탈률 (Bounce Rate), 다음 페이지 이동 경로 | +| 프로모션/캠페인 페이지 | 특정 혜택 확인, 할인 정보 탐색 | 전환율, 쿠폰 사용율, 참여 시간 | +| 회원가입/로그인 페이지 | 서비스 이용 의사 | 가입 완료율, 로그인 성공률, 이탈 구간 | +| 제품 상세/서비스 소개 페이지 | 구매 고려, 상세 정보 탐색 | 페이지 체류 시간, 장바구니 추가율, 스크롤 깊이 | +| 콘텐츠 페이지 (블로그, 뉴스룸 등) | 정보 탐색, 학습 | 페이지 뷰 (Page View) 수, 공유율, 재방문율 | +| 사이트 내 검색 페이지 | 특정 제품/정보에 대한 명확한 관심 | 검색 키워드, 검색 결과 클릭률, 검색 후 전환율 | + +> **Tip**: 사이트 내 검색 (Site Search)은 사용자의 관심 키워드를 직접적으로 파악할 수 있는 가장 강력한 데이터 소스다. GA4에서 `view_search_results` 이벤트를 설정하면 사용자가 입력한 검색어를 `search_term` 파라미터로 수집할 수 있다. 이 데이터는 콘텐츠 기획과 상품 구성에 직접적인 인사이트를 제공한다. + +### 4.1.3 사용자 페이지 이동 경로 가설 + +사용자가 웹사이트 내에서 어떤 순서로 페이지를 이동하는지 가설을 세우면, 이상적인 사용자 여정 (User Journey)과 실제 행동 사이의 차이를 발견할 수 있다. + +**이커머스 사이트의 이동 경로 가설 예시** + +``` +[이상적 경로] +메인 페이지 → 카테고리 페이지 → 제품 상세 → 장바구니 → 결제 → 구매 완료 + +[검색 유입 경로] +검색엔진 → 제품 상세 → 관련 상품 탐색 → 장바구니 → 결제 → 구매 완료 + +[프로모션 유입 경로] +광고 클릭 → 프로모션 랜딩 → 제품 상세 → 장바구니 → 결제 → 구매 완료 +``` + +**가설 수립 시 핵심 질문** + +- 각 단계에서 이탈하는 사용자의 비율은 얼마나 되는가? +- 이탈이 집중되는 특정 단계가 있는가? +- 이상적 경로를 따르지 않는 사용자는 어디로 이동하는가? +- 구매를 완료한 사용자와 이탈한 사용자의 경로 차이는 무엇인가? + +> **Tip**: GA4의 탐색 (Explorations) 기능 중 경로 탐색 (Path Exploration)과 유입경로 탐색 (Funnel Exploration)을 활용하면 실제 사용자 이동 경로를 시각적으로 확인할 수 있다. 가설을 먼저 세운 뒤 데이터로 검증하는 순서가 효과적이다. + +### 더 읽어보기 (Further Reading) + +- [GA4 획득 보고서](https://support.google.com/analytics/answer/9267568) -- 사용자 유입 경로 분석의 기본 보고서 활용법 + +--- + +## 4.2 측정 프레임워크 설계 (Measurement Framework) + +측정 프레임워크 (Measurement Framework)는 비즈니스 목표를 데이터 측정 항목으로 변환하는 체계적인 구조다. 이 프레임워크 없이 GA4를 설정하면 "수집은 많이 했지만 활용할 수 없는" 데이터가 쌓이게 된다. + +### 4.2.1 Top-down 방식의 목표 설정 + +측정 프레임워크는 반드시 비즈니스 최상위 목표에서 출발하여 세부 측정 항목으로 내려가는 하향식 (Top-down) 방식으로 설계해야 한다. + +``` +비즈니스 목표 (Business Objective) + └── 마케팅 목표 (Marketing Objective) + └── 단위 업무 미션 (Mission Statement) + └── 핵심 성과 지표 (KPI) + └── 세부 측정 지표 (Metrics & Dimensions) + └── GA4 이벤트 & 파라미터 +``` + +### 4.2.2 프레임워크 설계 단계 + +**1단계: 비즈니스 목표 정의** + +비즈니스 목표는 조직 전체의 최상위 목표다. 구체적이고 측정 가능해야 한다. + +| 비즈니스 유형 | 비즈니스 목표 예시 | +|--------------|-------------------| +| 이커머스 | 자사몰 내 상품 매출 증대 | +| SaaS | 유료 구독자 수 확대 | +| 미디어/콘텐츠 | 광고 수익 극대화를 위한 트래픽 증대 | +| 리드 생성 | 영업 기회 창출을 위한 문의 건수 확대 | +| 브랜딩 | 브랜드 인지도 및 호감도 제고 | + +**2단계: 마케팅 목표 수립** + +비즈니스 목표를 달성하기 위한 마케팅 차원의 목표를 수립한다. + +예시: 비즈니스 목표가 "자사몰 내 상품 매출 증대"인 경우 + +| 마케팅 목표 | 방향 | +|------------|------| +| 신규 고객 유입 확대 | 검색광고, 소셜 광고, SEO 강화 | +| 기존 고객 재구매율 향상 | CRM 마케팅, 리타겟팅 캠페인 | +| 객단가 증대 | 교차판매 (Cross-sell), 상향판매 (Up-sell) 전략 | +| 구매 전환율 개선 | 랜딩 페이지 최적화, UX 개선 | + +**3단계: 단위 업무 미션 정의** + +각 마케팅 목표를 담당 조직이나 팀 단위의 구체적 업무 미션으로 분해한다. + +> **Tip**: 단위 업무 미션 (Mission Statement)은 "~를 통해 ~를 달성한다"의 형태로 작성하면 측정 가능한 KPI로 전환하기 쉽다. 예: "검색광고 캠페인 최적화를 통해 월간 신규 방문자 20% 증대를 달성한다." + +### 4.2.3 측정 프레임워크 실전 예시 + +**비즈니스 목표: 자사몰 내 상품 매출 증대** + +| 구분 | 항목 | 상세 | +|------|------|------| +| 비즈니스 목표 | 자사몰 내 상품 매출 증대 | 전년 대비 매출 30% 성장 | +| 마케팅 목표 1 | 신규 고객 유입 확대 | 월간 신규 사용자 50,000명 달성 | +| 단위 업무 미션 | SEO 최적화를 통한 검색 유입 강화 | 유기적 검색 트래픽 40% 증대 | +| KPI | 유기적 검색 신규 사용자 수 | 월간 30,000명 | +| 세부 지표 | 키워드별 유입 수, 랜딩 페이지별 이탈률 | GA4 이벤트로 측정 | +| 마케팅 목표 2 | 구매 전환율 개선 | 전환율 2.5% → 3.5% 달성 | +| 단위 업무 미션 | 제품 상세 페이지 UX 개선 | 장바구니 추가율 15% 향상 | +| KPI | 장바구니 추가율 (Add-to-Cart Rate) | 목표 25% | +| 세부 지표 | 상품별 장바구니 추가율, 이탈 구간 | GA4 이벤트로 측정 | + +### 더 읽어보기 (Further Reading) + +- [GA4 이벤트 정보](https://support.google.com/analytics/answer/9143382) -- GA4 이벤트 모델의 기본 개념과 구조 + +--- + +## 4.3 핵심 성과 지표 (KPI) 설정 + +핵심 성과 지표 (KPI, Key Performance Indicator)는 비즈니스 목표 달성 여부를 판단하는 가장 중요한 지표다. KPI는 매크로 전환 (Macro Conversion) 지표와 이를 뒷받침하는 세부 지표로 구성된다. + +### 4.3.1 매크로 전환 (Macro Conversion) + +매크로 전환은 비즈니스에 직접적인 가치를 만들어 내는 최종 전환 행동이다. GA4에서는 이를 핵심 이벤트 (Key Events)로 설정하여 추적한다. + +매크로 전환은 다음과 같은 동사 형태로 정의한다: + +- **~달성한다**: 매출 목표 달성, 가입자 수 목표 달성 +- **~얻는다**: 구매 완료, 유료 구독 전환 +- **~획득한다**: 신규 회원 획득, 리드 획득 + +**비즈니스 유형별 매크로 전환 예시** + +| 비즈니스 유형 | 매크로 전환 | GA4 핵심 이벤트 | +|--------------|-----------|-----------------| +| 이커머스 | 상품 구매 완료 | `purchase` | +| SaaS | 유료 플랜 구독 | `subscribe` (맞춤 이벤트) | +| 미디어 | 유료 콘텐츠 구독 | `subscribe` (맞춤 이벤트) | +| 리드 생성 | 상담 신청 완료 | `generate_lead` | +| 앱 서비스 | 앱 설치 후 회원 가입 | `sign_up` | + +### 4.3.2 트래픽 증대 지표 + +트래픽 지표를 분석할 때는 사용자 범위 (User Scope)와 세션 범위 (Session Scope)를 구분해야 한다. + +| 범위 | 지표 | 설명 | 활용 | +|------|------|------|------| +| User Scope | 총 사용자 수 (Total Users) | 기간 내 고유 사용자 수 | 순수 방문자 규모 파악 | +| User Scope | 신규 사용자 수 (New Users) | 첫 방문 사용자 수 | 마케팅 유입 효과 측정 | +| User Scope | 재방문 사용자 수 (Returning Users) | 재방문한 사용자 수 | 고객 충성도 판단 | +| Session Scope | 세션 수 (Sessions) | 총 방문 횟수 | 방문 빈도 파악 | +| Session Scope | 참여 세션 수 (Engaged Sessions) | 10초 이상 체류, 2페이지 이상 조회, 또는 전환 발생 세션 | 실질적 방문 품질 | +| Session Scope | 사용자당 세션 수 (Sessions per User) | 평균 방문 빈도 | 재방문 패턴 분석 | + +> **Tip**: GA4에서 활성 사용자 (Active Users)는 단순 방문자가 아니라, 참여 세션 (Engaged Session)이 발생한 사용자를 의미한다. GA4의 대부분의 보고서에서 "사용자" 지표는 기본적으로 활성 사용자를 가리킨다. 참여 세션의 기본 조건은 10초 이상 체류, 2페이지 이상 조회, 또는 핵심 이벤트 발생 중 하나를 충족하는 것이다. + +### 4.3.3 구매 전환율 (Transaction Conversion Rate) + +구매 전환율은 이커머스에서 가장 중요한 KPI 중 하나다. GA4에서는 다음과 같이 계산한다. + +``` +구매 전환율 = (purchase 이벤트 발생 수 / 세션 수) x 100 + +또는 + +사용자 기준 전환율 = (구매 사용자 수 / 총 사용자 수) x 100 +``` + +**전환율 분석 시 고려할 세분화 기준** + +| 세분화 기준 | 분석 관점 | +|------------|----------| +| 채널별 | 어떤 유입 채널의 전환율이 가장 높은가? | +| 기기별 | 모바일 vs. 데스크톱 전환율 차이는? | +| 신규 vs. 재방문 | 재방문 사용자의 전환율이 얼마나 높은가? | +| 랜딩 페이지별 | 어떤 랜딩 페이지가 전환에 기여하는가? | +| 상품 카테고리별 | 어떤 카테고리의 전환율이 높은가? | + +### 4.3.4 사용자 유지율 (Retention Rate) + +사용자 유지율 (Retention Rate)은 특정 기간 동안 사용자가 서비스를 계속 이용하는 비율이다. GA4에서는 이를 활성 사용자 (Active Users) 비율로 측정한다. + +``` +사용자 유지율 = (특정 기간 후 재방문한 사용자 수 / 최초 방문 사용자 수) x 100 +``` + +**GA4 활성 사용자 유형** + +| 지표 | 정의 | 활용 | +|------|------|------| +| DAU (일일 활성 사용자) | 당일 참여 세션이 발생한 사용자 | 일간 서비스 이용 현황 모니터링 | +| WAU (주간 활성 사용자) | 최근 7일간 참여 세션이 발생한 사용자 | 주간 트렌드 분석 | +| MAU (월간 활성 사용자) | 최근 28일간 참여 세션이 발생한 사용자 | 월간 성장 추이 분석 | + +> **Tip**: DAU/MAU 비율은 사용자 참여도를 나타내는 핵심 비율 지표다. 이 비율이 높을수록 사용자가 서비스를 자주, 그리고 꾸준히 사용하고 있음을 의미한다. 일반적으로 DAU/MAU 비율이 20% 이상이면 양호한 수준으로 본다. + +### 더 읽어보기 (Further Reading) + +- [활성 사용자](https://support.google.com/analytics/answer/12253918) -- GA4의 활성 사용자 정의와 집계 방식 +- [핵심 이벤트 정보](https://support.google.com/analytics/answer/12844695) -- 핵심 이벤트(구 전환) 설정 및 관리 방법 + +--- + +## 4.4 리드 생성 (Lead Generation) 전략 + +모든 비즈니스가 즉각적인 구매 전환을 목표로 하지는 않는다. B2B 서비스, 고가 제품, 교육 서비스 등은 잠재고객 (Lead)을 먼저 확보한 뒤, 영업 활동이나 너처링 (Nurturing)을 통해 전환으로 이끄는 전략을 취한다. + +### 4.4.1 Quality 높은 리드 창출을 위한 고객 행동 지표 + +리드의 품질은 최종 전환(구매, 계약 등)으로 이어지는 확률로 판단한다. 단순히 리드 수를 늘리는 것이 아니라, 전환 가능성이 높은 리드를 식별하는 것이 핵심이다. + +**리드 품질 판단을 위한 행동 지표** + +| 행동 지표 | 높은 품질 신호 | 낮은 품질 신호 | +|----------|--------------|---------------| +| 페이지 조회 수 | 제품/가격 페이지를 여러 번 조회 | 블로그 1페이지만 조회 후 이탈 | +| 체류 시간 | 서비스 소개 페이지에서 3분 이상 체류 | 10초 미만 체류 후 이탈 | +| 사이트 내 검색 | 구체적 제품명/서비스명 검색 | 일반적 키워드만 검색 | +| 방문 빈도 | 7일 내 3회 이상 재방문 | 1회 방문 후 미재방문 | +| 콘텐츠 소비 | 사례 연구, 기술 문서 다운로드 | 표면적 콘텐츠만 조회 | + +### 4.4.2 리드 생성 이벤트와 GA4 설정 + +리드 생성 활동을 GA4에서 추적하기 위한 이벤트 매핑 전략을 수립해야 한다. + +**리드 목표 (Lead Goal) 유형과 이벤트 매핑** + +| 리드 활동 | 전환 가치 수준 | GA4 이벤트 (권장) | 핵심 이벤트 설정 | +|----------|---------------|-------------------|-----------------| +| 회원 가입 | 높음 | `sign_up` | O (핵심 이벤트) | +| 유료 구독 전환 | 매우 높음 | `purchase` 또는 맞춤 이벤트 | O (핵심 이벤트) | +| 뉴스레터 구독 | 중간 | `newsletter_subscribe` (맞춤) | O (핵심 이벤트) | +| 무료 회원 가입 | 중간 | `sign_up` (method 파라미터로 구분) | O (핵심 이벤트) | +| 자료 다운로드 | 중간 | `file_download` | 상황에 따라 설정 | +| 쿠폰 다운로드 | 낮음~중간 | `coupon_download` (맞춤) | 상황에 따라 설정 | +| 상담 신청 | 높음 | `generate_lead` | O (핵심 이벤트) | + +> **Tip**: 쿠폰 다운로드는 직접적인 리드 확보보다는 잠재고객의 반응 확인 (Response Check) 목적으로 활용하는 것이 적절하다. 쿠폰 다운로드 후 실제 사용까지의 전환율을 추적하면 프로모션 효과를 보다 정확하게 평가할 수 있다. + +### 4.4.3 리드 스코어링과 GA4 연계 + +GA4 데이터를 활용하여 리드 스코어링 (Lead Scoring) 기준을 수립할 수 있다. + +**GA4 기반 리드 스코어링 모델 예시** + +| 행동 | 점수 | GA4 데이터 소스 | +|------|------|----------------| +| 가격 페이지 조회 | +10 | `page_view` (page_location 필터) | +| 사례 연구 다운로드 | +15 | `file_download` | +| 데모 신청 | +30 | `generate_lead` (맞춤 파라미터) | +| 3회 이상 재방문 | +20 | User 속성 (session_count) | +| 5분 이상 체류 | +10 | `user_engagement` | +| 뉴스레터 구독 | +5 | `newsletter_subscribe` (맞춤) | + +> **Tip**: GA4 자체에는 리드 스코어링 기능이 내장되어 있지 않다. GA4에서 수집한 행동 데이터를 BigQuery로 내보낸 뒤 CRM 시스템과 연계하거나, GA4 잠재고객 (Audiences) 기능을 활용하여 행동 기반 세그먼트를 만들어 간접적으로 리드 품질을 분류할 수 있다. + +### 더 읽어보기 (Further Reading) + +- [GA4 핵심 이벤트 정보](https://support.google.com/analytics/answer/12844695) -- 핵심 이벤트 설정으로 리드 전환 추적하기 + +--- + +## 4.5 마이크로 전환 (Micro Conversion) 설정 + +마이크로 전환 (Micro Conversion)은 매크로 전환에 이르기까지의 중간 단계 행동을 말한다. 사용자가 최종 전환에 도달하기 전에 거치는 핵심 활동 (Key Activities)을 정의하고 측정하는 것이 이 단계의 목표다. + +### 4.5.1 핵심 활동 (Key Activities) 정의 방법 + +핵심 활동을 정의하려면 비즈니스 담당자와의 긴밀한 협업이 필요하다. 데이터 분석가 혼자서 가설을 세우기보다, 현장의 경험과 지식을 반영해야 한다. + +**핵심 활동 정의를 위한 3가지 방법** + +| 방법 | 설명 | 적용 상황 | +|------|------|----------| +| 담당자 인터뷰 | 마케팅/영업/CS 담당자와의 1:1 면담을 통해 고객 행동 패턴 파악 | 프로젝트 초기 단계, 신규 비즈니스 | +| 서면 질의 | 표준화된 질문지를 통해 각 부서의 핵심 지표 수집 | 다수 부서 협업 시, 대규모 조직 | +| 상담 브리프 (Consultation Brief) | 고객사/프로젝트 이해관계자와의 공식 상담 문서 작성 | 에이전시 업무, 외부 컨설팅 | + +**인터뷰 및 서면 질의 시 핵심 질문 목록** + +1. 현재 비즈니스에서 가장 중요한 고객 행동은 무엇입니까? +2. 고객이 구매(또는 전환)를 결정하기 전에 반드시 거치는 단계가 있습니까? +3. 가장 많이 이탈이 발생하는 구간은 어디라고 생각하십니까? +4. 마케팅 캠페인의 성과를 어떤 기준으로 판단하고 계십니까? +5. 현재 추적하고 있지 않지만 알고 싶은 사용자 행동이 있습니까? + +### 4.5.2 사용자 증대 관련 세부 지표 + +트래픽과 사용자 증대를 위한 마이크로 전환 지표를 체계적으로 구성한다. + +| 세부 지표 | 정의 | 측정 방법 (GA4) | 활용 | +|----------|------|----------------|------| +| 일일 활성 사용자 (DAU) | 하루 동안 참여 세션이 발생한 고유 사용자 | 기본 보고서 > 사용자 수 | 일간 서비스 활성도 모니터링 | +| 세션 트래픽 | 일정 기간의 총 세션 수 | 기본 보고서 > 세션 수 | 전체 방문 볼륨 파악 | +| 채널 기여도 | 각 유입 채널이 전체 트래픽에서 차지하는 비율 | 획득 보고서 > 채널 그룹 | 마케팅 예산 배분 의사결정 | +| 재방문율 (Return Visit Rate) | 재방문 사용자 / 총 사용자 비율 | 유지 보고서 (Retention Report) | 사용자 충성도 판단 | +| 참여율 (Engagement Rate) | 참여 세션 / 전체 세션 비율 | 기본 보고서 > 참여율 | 트래픽 품질 평가 | +| 사용자당 참여 시간 | 사용자 1명당 평균 참여 시간 | 기본 보고서 > 평균 참여 시간 | 콘텐츠 매력도 판단 | + +### 4.5.3 구매 전환 관련 세부 지표 + +구매 전환율 개선을 위한 마이크로 전환 지표를 정의한다. + +| 세부 지표 | 정의 | GA4 이벤트 | 산출 공식 | +|----------|------|-----------|----------| +| 프로모션 참여율 | 프로모션에 반응한 사용자 비율 | `select_promotion`, `view_promotion` | (프로모션 클릭 수 / 프로모션 노출 수) x 100 | +| 랜딩 페이지 전환율 | 랜딩 페이지에서 다음 행동으로 이어진 비율 | `page_view` + 후속 이벤트 | (후속 행동 발생 수 / 랜딩 페이지 세션 수) x 100 | +| 장바구니 추가율 | 제품 조회 후 장바구니에 추가한 비율 | `add_to_cart` | (장바구니 추가 수 / 제품 상세 조회 수) x 100 | +| 결제 시작율 | 장바구니에서 결제를 시작한 비율 | `begin_checkout` | (결제 시작 수 / 장바구니 추가 수) x 100 | +| 결제 완료율 | 결제를 시작한 후 완료한 비율 | `purchase` | (구매 완료 수 / 결제 시작 수) x 100 | +| 위시리스트 추가율 | 위시리스트에 제품을 추가한 비율 | `add_to_wishlist` | (위시리스트 추가 수 / 제품 상세 조회 수) x 100 | + +> **Tip**: 이커머스 퍼널 (Funnel)의 각 단계별 전환율을 추적하면 어디에서 가장 큰 이탈이 발생하는지 파악할 수 있다. 예를 들어, 장바구니 추가율은 높지만 결제 시작율이 낮다면 결제 페이지 UX나 배송비 정책을 점검해야 할 수 있다. + +### 더 읽어보기 (Further Reading) + +- [GA4 이벤트 정보](https://support.google.com/analytics/answer/9143382) -- 마이크로 전환 추적을 위한 이벤트 설계 기초 + +--- + +## 4.6 측정 계획서 (Measurement Plan) 작성 + +측정 계획서 (Measurement Plan)는 앞서 수립한 가설과 KPI를 GA4 구현으로 연결하는 실행 문서다. 이 문서가 완성되어야 GTM 태깅 작업과 GA4 설정을 체계적으로 진행할 수 있다. + +### 4.6.1 측정 계획서 템플릿 구조 + +측정 계획서는 다음 5개 영역으로 구성한다. + +``` +[1] 비즈니스 목표 (Business Objective) + ↓ +[2] KPI 정의 (Key Performance Indicators) + ↓ +[3] 사용자 세그먼트 (User Segments) + ↓ +[4] 타겟 설정 (Targets) + ↓ +[5] GA4 이벤트 매핑 (Event Mapping) +``` + +### 4.6.2 측정 계획서 작성 실전 예시 + +다음은 이커머스 사이트를 기준으로 한 측정 계획서 작성 예시다. + +**영역 1: 비즈니스 목표** + +| 항목 | 내용 | +|------|------| +| 비즈니스명 | 가상 쇼핑몰 "K-Style" | +| 비즈니스 유형 | 패션 이커머스 | +| 비즈니스 목표 | 자사몰 매출 전년 대비 30% 성장 | +| 기간 | 2026년 1월 ~ 12월 | + +**영역 2: KPI 정의** + +| KPI 구분 | KPI | 현재 수치 | 목표 수치 | 측정 주기 | +|----------|-----|----------|----------|----------| +| 매크로 전환 | 월간 매출액 | 5억 원 | 6.5억 원 | 월간 | +| 매크로 전환 | 구매 전환율 | 2.1% | 2.8% | 주간 | +| 트래픽 | 월간 활성 사용자 수 | 150,000명 | 200,000명 | 월간 | +| 리드 | 신규 회원 가입 수 | 3,000명/월 | 5,000명/월 | 월간 | +| 유지 | 30일 유지율 | 15% | 20% | 월간 | + +**영역 3: 사용자 세그먼트** + +| 세그먼트 | 정의 | 분석 목적 | +|---------|------|----------| +| 신규 사용자 | 첫 방문 사용자 | 유입 채널별 효율 비교 | +| 재방문 사용자 | 2회 이상 방문 사용자 | 유지 전략 효과 측정 | +| 구매 사용자 | purchase 이벤트 발생 사용자 | 구매 패턴 분석, 객단가 분석 | +| 장바구니 이탈 사용자 | add_to_cart 후 purchase 미발생 | 리타겟팅 대상 선정 | +| 고가치 사용자 | LTV 상위 20% 사용자 | VIP 마케팅 전략 수립 | +| 모바일 사용자 | 모바일 기기 접속 사용자 | 모바일 UX 최적화 우선순위 | + +**영역 4: 타겟 설정** + +| KPI | 세그먼트 | 현재 | 목표 | 달성 전략 | +|-----|---------|------|------|----------| +| 구매 전환율 | 검색 유입 사용자 | 3.2% | 4.0% | 검색 키워드별 랜딩 페이지 최적화 | +| 구매 전환율 | 소셜 유입 사용자 | 1.5% | 2.5% | 소셜 전용 프로모션 페이지 제작 | +| 장바구니 추가율 | 모바일 사용자 | 8% | 12% | 모바일 상품 상세 페이지 개선 | +| 재방문율 | 전체 사용자 | 25% | 35% | 이메일 마케팅, 푸시 알림 강화 | +| 회원 가입율 | 신규 사용자 | 5% | 8% | 가입 혜택 강화, 소셜 로그인 추가 | + +**영역 5: GA4 이벤트 매핑** + +| KPI | 관련 이벤트 | 이벤트 유형 | 필수 파라미터 | 비고 | +|-----|-----------|-----------|-------------|------| +| 매출액 | `purchase` | 권장 이벤트 | `transaction_id`, `value`, `currency`, `items` | 이커머스 필수 | +| 구매 전환율 | `purchase`, `session_start` | 권장 이벤트 | -- | 산출 지표 | +| 장바구니 추가율 | `add_to_cart` | 권장 이벤트 | `items`, `value`, `currency` | -- | +| 회원 가입 | `sign_up` | 권장 이벤트 | `method` | 가입 경로 구분 | +| 뉴스레터 구독 | `newsletter_subscribe` | 맞춤 이벤트 | `email_type`, `source_page` | 맞춤 이벤트 생성 필요 | +| 쿠폰 다운로드 | `coupon_download` | 맞춤 이벤트 | `coupon_id`, `coupon_name` | 맞춤 이벤트 생성 필요 | +| 제품 조회 | `view_item` | 권장 이벤트 | `items`, `value`, `currency` | -- | +| 결제 시작 | `begin_checkout` | 권장 이벤트 | `items`, `value`, `currency`, `coupon` | -- | +| 사이트 내 검색 | `view_search_results` | 자동 수집 이벤트 | `search_term` | 향상된 측정 활성화 필요 | +| 프로모션 클릭 | `select_promotion` | 권장 이벤트 | `promotion_id`, `promotion_name`, `items` | -- | +| 자료 다운로드 | `file_download` | 자동 수집 이벤트 | `file_name`, `file_extension`, `link_url` | 향상된 측정 활성화 필요 | +| 스크롤 완료 | `scroll` | 자동 수집 이벤트 | `percent_scrolled` | 향상된 측정(90% 기준) | + +### 4.6.3 측정 계획서 작성 체크리스트 + +측정 계획서 작성 완료 후, 다음 항목을 점검한다. + +- [ ] 비즈니스 목표와 KPI가 논리적으로 연결되어 있는가? +- [ ] 매크로 전환과 마이크로 전환이 명확히 구분되어 있는가? +- [ ] 각 KPI에 대한 현재 수치와 목표 수치가 설정되어 있는가? +- [ ] 사용자 세그먼트가 분석 목적에 맞게 정의되어 있는가? +- [ ] 모든 KPI에 대응하는 GA4 이벤트가 매핑되어 있는가? +- [ ] 맞춤 이벤트의 네이밍 규칙이 일관되게 적용되어 있는가? +- [ ] 각 이벤트에 필요한 파라미터가 누락 없이 정의되어 있는가? +- [ ] 이벤트 유형(자동 수집/향상된 측정/권장/맞춤)이 명확히 구분되어 있는가? +- [ ] 이해관계자(마케팅, 개발, 경영진)의 리뷰를 받았는가? + +> **Tip**: 측정 계획서는 한 번 작성하고 끝나는 문서가 아니다. 비즈니스 환경 변화, 신규 캠페인 런칭, 웹사이트 구조 변경 시마다 업데이트해야 한다. 분기별 정기 리뷰를 권장한다. 또한 측정 계획서는 GA4 구현 이전에 반드시 완성되어야 하며, 개발팀과 마케팅팀 모두가 합의한 문서여야 한다. + +### 더 읽어보기 (Further Reading) + +- [활성 사용자](https://support.google.com/analytics/answer/12253918) -- 활성 사용자 개념과 측정 계획서의 사용자 지표 설정 +- [GA4 이벤트 정보](https://support.google.com/analytics/answer/9143382) -- 이벤트 매핑 시 참고할 GA4 이벤트 체계 +- [핵심 이벤트 정보](https://support.google.com/analytics/answer/12844695) -- 매크로/마이크로 전환의 핵심 이벤트 설정 +- [GA4 획득 보고서](https://support.google.com/analytics/answer/9267568) -- 유입 채널 분석 및 세그먼트 설정 가이드 + +--- + +**다음 장 예고**: Chapter 05에서는 이 측정 계획서를 바탕으로 GA4 이벤트를 실제로 설계하고, GTM을 통해 구현하는 방법을 다룬다. + + +--- + + +# Chapter 05. 이벤트 & 주요 이벤트 설정 + +GA4의 핵심은 **이벤트 기반 데이터 모델**이다. 이 챕터에서는 이벤트의 구조와 유형을 이해하고, 비즈니스에 중요한 사용자 행동을 **주요 이벤트 (Key Events)**로 설정하는 방법을 다룬다. 이벤트 태깅 플랜 작성부터 보고서 매핑까지, 실무에서 바로 적용할 수 있는 가이드를 제공한다. + +> **명칭 변경 안내**: 2024년부터 GA4에서 기존의 "전환 (Conversions)"이 **"주요 이벤트 (Key Events)"**로 명칭이 변경되었습니다. 본 챕터 전체에서 새 명칭인 "주요 이벤트"를 사용합니다. Google Ads 연동 시에는 여전히 "전환 (Conversions)"이라는 용어가 사용되므로, 맥락에 따라 구분하여 이해해 주세요. + +--- + +**목차** + +- [5.1 GA4 이벤트 모델 이해](#51-ga4-이벤트-모델-이해) +- [5.2 주요 이벤트 (Key Events) 설정](#52-주요-이벤트-key-events-설정) +- [5.3 주요 사용자 행동 이벤트 설계](#53-주요-사용자-행동-이벤트-설계) +- [5.4 사용자 행동 유형별 트리거 조건 분석](#54-사용자-행동-유형별-트리거-조건-분석) +- [5.5 이벤트 태깅 플랜 작성](#55-이벤트-태깅-플랜-작성) +- [5.6 측정 대상 가설과 보고서 매핑](#56-측정-대상-가설과-보고서-매핑) + +--- + +## 5.1 GA4 이벤트 모델 이해 + +### 5.1.1 이벤트 기반 데이터 모델이란 + +UA(유니버설 애널리틱스)에서는 **페이지뷰 (Pageview)**가 데이터 수집의 기본 단위였다. 사용자가 페이지를 이동할 때마다 히트(Hit)가 발생하고, 그 위에 이벤트, 거래, 소셜 인터랙션 등 별도의 히트 유형이 존재했다. + +GA4는 이 모든 것을 **이벤트 (Event)**라는 단일 개념으로 통합했다. 페이지뷰도 이벤트이고, 버튼 클릭도 이벤트이며, 구매 완료도 이벤트이다. 모든 사용자 행동이 동일한 구조로 수집된다. + +| 구분 | UA (유니버설 애널리틱스) | GA4 | +|------|--------------------------|-----| +| 데이터 수집 단위 | 히트 (Hit) — 페이지뷰, 이벤트, 거래 등 별도 유형 | 이벤트 (Event) — 모든 행동이 이벤트 | +| 이벤트 구조 | 카테고리 / 액션 / 라벨 (3단계 고정) | 이벤트 이름 + 매개변수 (유연한 구조) | +| 세션 정의 | 30분 타임아웃 기준 | 30분 타임아웃 + session_start 이벤트 기반 | +| 사용자 식별 | Client ID 중심 | User ID > Device ID > Modeling 순 | + +### 5.1.2 이벤트 + 매개변수 구조 + +GA4의 이벤트는 **이벤트 이름 (Event Name)**과 **매개변수 (Parameter)**로 구성된다. + +``` +이벤트 이름: select_content +├── 매개변수: content_type = "product" +├── 매개변수: item_id = "SKU_12345" +└── 매개변수: item_name = "블루 러닝화" +``` + +하나의 이벤트에는 최대 **25개의 매개변수**를 포함할 수 있다. 매개변수를 통해 이벤트의 맥락 정보를 풍부하게 기록할 수 있으며, 이는 이후 분석 및 보고서 작성의 핵심 재료가 된다. + +> **핵심 개념**: GA4에서 이벤트 이름은 "무엇이 일어났는가"를, 매개변수는 "어떤 맥락에서 일어났는가"를 설명한다. 예를 들어 `purchase`라는 이벤트 이름은 구매가 발생했음을 알려주고, `value`, `currency`, `items` 등의 매개변수는 얼마짜리 어떤 상품을 샀는지를 알려준다. + +**매개변수의 두 가지 유형**: + +| 유형 | 설명 | 예시 | +|------|------|------| +| 이벤트 매개변수 (Event Parameter) | 특정 이벤트에 종속된 추가 정보 | `page_title`, `link_url`, `value` | +| 사용자 속성 (User Property) | 사용자 수준에서 지속되는 속성 정보 | `membership_level`, `user_type`, `preferred_language` | + +### 5.1.3 이벤트 유형 4가지 + +GA4 이벤트는 수집 방식에 따라 네 가지 유형으로 나뉜다. + +#### 1) 자동 수집 이벤트 (Automatically Collected Events) + +GA4 태그(gtag.js 또는 GTM)를 설치하면 **별도의 설정 없이** 자동으로 수집되는 이벤트이다. + +| 이벤트 이름 | 설명 | +|-------------|------| +| `first_visit` | 사용자가 처음 방문했을 때 | +| `session_start` | 새로운 세션이 시작될 때 | +| `user_engagement` | 앱이 포그라운드 상태이거나 웹페이지에 포커스가 있을 때 | +| `page_view` | 페이지가 로드되거나 History API로 URL이 변경될 때 | +| `scroll` | 페이지 하단 90%에 도달했을 때 (향상된 측정 활성화 시) | +| `click` | 현재 도메인 외부로 이동하는 링크 클릭 시 (향상된 측정 활성화 시) | + +#### 2) 향상된 측정 이벤트 (Enhanced Measurement Events) + +GA4 관리자 화면에서 **향상된 측정 (Enhanced Measurement)** 토글을 켜면 추가로 수집되는 이벤트이다. 별도 코딩 없이 관리자 UI에서 ON/OFF할 수 있다. + +| 이벤트 이름 | 측정 항목 | 기본값 | +|-------------|-----------|--------| +| `page_view` | 페이지 조회 | ON | +| `scroll` | 스크롤 (90% 도달) | ON | +| `click` | 이탈 링크 클릭 (Outbound Click) | ON | +| `view_search_results` | 사이트 내 검색 | ON | +| `video_start` / `video_progress` / `video_complete` | YouTube 동영상 참여 | ON | +| `file_download` | 파일 다운로드 | ON | +| `form_start` / `form_submit` | 폼 인터랙션 | ON | + +> **실무 팁**: 향상된 측정의 `view_search_results`는 URL에 검색 쿼리 매개변수(q, s, search, query, keyword 등)가 포함된 경우에만 작동한다. 만약 사이트가 다른 형식의 검색 매개변수를 사용한다면, 향상된 측정 설정에서 해당 매개변수 이름을 수동으로 추가해야 한다. + +**향상된 측정 설정 경로**: GA4 관리 > 데이터 스트림 (Data Streams) > 웹 스트림 선택 > 향상된 측정 > 설정 아이콘(톱니바퀴) + +#### 3) 추천 이벤트 (Recommended Events) + +Google이 업종별로 **표준화된 이벤트 이름과 매개변수**를 권장하는 이벤트이다. 직접 구현해야 하지만, Google의 권장 사양을 따르면 GA4의 기본 보고서에서 자동으로 데이터를 활용할 수 있다. + +**이커머스 (E-commerce) 추천 이벤트 예시**: + +| 이벤트 이름 | 트리거 시점 | 필수 매개변수 | +|-------------|-------------|---------------| +| `view_item` | 상품 상세페이지 조회 | `items` | +| `add_to_cart` | 장바구니 담기 | `items`, `value`, `currency` | +| `begin_checkout` | 결제 프로세스 시작 | `items`, `value`, `currency` | +| `add_payment_info` | 결제 정보 입력 | `items`, `value`, `currency`, `payment_type` | +| `purchase` | 구매 완료 | `transaction_id`, `items`, `value`, `currency` | + +**리드 생성 (Lead Generation) 추천 이벤트 예시**: + +| 이벤트 이름 | 트리거 시점 | +|-------------|-------------| +| `generate_lead` | 문의 폼 제출, 견적 요청 | +| `sign_up` | 회원가입 완료 | +| `login` | 로그인 완료 | + +> **중요**: 추천 이벤트의 이름과 매개변수를 정확히 따라야 GA4 기본 보고서(예: 이커머스 보고서)에서 데이터가 올바르게 표시된다. 이벤트 이름의 대소문자, 언더스코어 위치 등을 반드시 확인하자. + +#### 4) 맞춤 이벤트 (Custom Events) + +위 세 가지 유형에 해당하지 않는, 비즈니스 고유의 사용자 행동을 측정하기 위해 **직접 정의하는 이벤트**이다. + +**맞춤 이벤트 예시**: + +| 이벤트 이름 | 설명 | 매개변수 예시 | +|-------------|------|---------------| +| `cta_click` | CTA 버튼 클릭 | `cta_text`, `cta_location`, `page_section` | +| `wishlist_add` | 위시리스트 추가 | `item_id`, `item_name`, `item_category` | +| `review_submit` | 리뷰 작성 완료 | `item_id`, `rating`, `review_length` | +| `coupon_copy` | 쿠폰 코드 복사 | `coupon_id`, `coupon_value`, `coupon_type` | +| `share_content` | 콘텐츠 공유 | `method`, `content_type`, `item_id` | + +> **네이밍 규칙**: 맞춤 이벤트 이름은 반드시 영문 소문자와 언더스코어만 사용하고, 숫자로 시작하지 않아야 한다. `ga_`, `google_`, `firebase_` 접두사는 예약어이므로 사용할 수 없다. 최대 40자까지 가능하다. + +### 더 읽어보기 (Further Reading) + +- [GA4 이벤트 정보](https://support.google.com/analytics/answer/9143382) +- [향상된 측정 이벤트](https://support.google.com/analytics/answer/12229021) +- [추천 이벤트](https://support.google.com/analytics/answer/9322688) + +--- + +## 5.2 주요 이벤트 (Key Events) 설정 + +### 5.2.1 주요 이벤트란? + +주요 이벤트 (Key Events)는 비즈니스에 **가장 중요한 사용자 행동**을 측정하기 위해 특별히 표시한 이벤트이다. 기존 GA4에서 "전환 (Conversions)"이라 불리던 기능이 2024년에 "주요 이벤트"로 명칭이 변경되었다. + +| 구분 | 설명 | +|------|------| +| 일반 이벤트 | 모든 사용자 행동을 기록 (페이지뷰, 스크롤, 클릭 등) | +| 주요 이벤트 (Key Event) | 비즈니스 성과에 직접 기여하는 핵심 행동만 선별 표시 | +| Google Ads 전환 (Conversion) | 주요 이벤트 중 Google Ads에 공유하여 입찰 최적화에 활용하는 이벤트 | + +> **용어 구분**: GA4 내에서는 "주요 이벤트 (Key Events)"라고 부르고, Google Ads에 연결하여 광고 최적화에 활용할 때는 "전환 (Conversions)"이라고 부른다. 동일한 이벤트가 GA4에서는 주요 이벤트, Google Ads에서는 전환으로 표시될 수 있다. + +### 5.2.2 주요 이벤트로 표시하는 방법 + +**방법 1: GA4 관리자 화면에서 설정** + +1. GA4 속성 > 관리 (Admin) > 데이터 표시 (Data Display) > 이벤트 (Events) 이동 +2. 이벤트 목록에서 주요 이벤트로 지정할 이벤트의 오른쪽 토글 **"주요 이벤트로 표시 (Mark as key event)"** 활성화 +3. 활성화 즉시 해당 이벤트가 주요 이벤트로 집계 시작 + +**방법 2: 이벤트가 아직 수집되지 않은 경우** + +1. GA4 관리 > 데이터 표시 > 이벤트 > **"이벤트 만들기 (Create event)"** 클릭 +2. 이벤트 이름과 조건을 설정하여 새 이벤트 생성 +3. 생성 후 이벤트 목록에서 주요 이벤트로 표시 + +> **주의사항**: `purchase` 이벤트는 GA4에서 기본적으로 주요 이벤트로 자동 설정된다. 이 설정은 해제할 수 없다. `first_open`(앱), `first_visit`(웹) 등도 기본 주요 이벤트로 설정되어 있을 수 있다. + +### 5.2.3 집계 방법: 이벤트당 1회 vs 세션당 1회 + +주요 이벤트의 집계 방법은 두 가지가 있다. + +| 집계 방법 | 설명 | 적합한 시나리오 | +|-----------|------|-----------------| +| 이벤트당 1회 (Once per event) | 이벤트가 발생할 때마다 주요 이벤트 1회로 집계 | 이커머스 구매 (한 세션에서 여러 번 구매 가능) | +| 세션당 1회 (Once per session) | 한 세션 내에서 최초 발생 시에만 1회로 집계 | 문의 폼 제출, 회원가입 (중복 집계 방지) | + +**설정 경로**: GA4 관리 > 데이터 표시 > 주요 이벤트 (Key Events) > 해당 이벤트 클릭 > 집계 방법 (Counting method) 선택 + +> **실무 가이드**: 이커머스 `purchase`는 "이벤트당 1회"로, `generate_lead`나 `sign_up` 같은 이벤트는 "세션당 1회"로 설정하는 것이 일반적이다. 집계 방법 선택에 따라 주요 이벤트 수가 크게 달라질 수 있으므로 신중하게 결정하자. + +### 5.2.4 주요 이벤트 가치 (Value) 설정 + +주요 이벤트에 금전적 가치를 부여하면 **ROAS (Return on Ad Spend)** 계산, 채널별 수익 기여도 분석 등이 가능해진다. + +**가치 설정 방법 1: 이벤트 매개변수의 value 사용 (동적)** + +이커머스 `purchase` 이벤트처럼 매번 금액이 다른 경우, 이벤트 발생 시 `value`와 `currency` 매개변수를 함께 전송한다. + +```javascript +gtag('event', 'purchase', { + transaction_id: 'T_12345', + value: 89000, + currency: 'KRW', + items: [{ item_id: 'SKU_001', item_name: '블루 러닝화', price: 89000, quantity: 1 }] +}); +``` + +**가치 설정 방법 2: GA4 관리에서 고정 값 지정 (정적)** + +문의 폼 제출, 뉴스레터 구독 등 금전적 가치가 명확하지 않은 이벤트에 대해 추정 가치를 부여한다. + +1. GA4 관리 > 데이터 표시 > 주요 이벤트 +2. 해당 이벤트 클릭 > "기본값 설정 (Set default value)" 활성화 +3. 통화(KRW)와 금액 입력 + +| 주요 이벤트 예시 | 추정 가치 (KRW) | 산출 근거 | +|------------------|-----------------|-----------| +| `generate_lead` (문의) | 50,000 | 문의 전환율 10% x 평균 주문가 500,000원 | +| `sign_up` (회원가입) | 30,000 | 회원 평균 LTV 300,000원 x 구매 전환율 10% | +| `newsletter_subscribe` | 5,000 | 뉴스레터 구독자 평균 구매 전환 기여액 | +| `download_catalog` | 10,000 | 카탈로그 다운로드 후 구매 전환율 기반 추정 | + +### 5.2.5 Macro vs Micro 주요 이벤트 구분 + +효과적인 분석을 위해 주요 이벤트를 **Macro (매크로)**와 **Micro (마이크로)**로 구분하여 관리하는 것을 권장한다. + +| 구분 | 정의 | 예시 | +|------|------|------| +| **Macro 주요 이벤트** | 비즈니스 목표 달성에 직접 기여하는 핵심 행동 | `purchase`, `generate_lead`, `sign_up` | +| **Micro 주요 이벤트** | Macro 달성을 향한 중간 단계 또는 참여 행동 | `add_to_cart`, `begin_checkout`, `view_item`, `newsletter_subscribe` | + +**Micro 주요 이벤트의 활용 가치**: + +- Google Ads 스마트 입찰에서 Macro 데이터가 부족할 때 Micro 이벤트로 보완 +- 퍼널 (Funnel) 분석에서 이탈 지점 파악에 활용 +- 전체 고객 여정 (Customer Journey) 내 참여도 측정 + +> **권장 사항**: 주요 이벤트는 5~10개 이내로 유지하는 것이 좋다. 너무 많으면 데이터의 초점이 흐려지고, 너무 적으면 사용자 행동의 맥락을 놓칠 수 있다. Macro 2~3개, Micro 3~7개 정도가 적절하다. + +### 더 읽어보기 (Further Reading) + +- [주요 이벤트 정보](https://support.google.com/analytics/answer/12844695) +- [GA4 이벤트 정보](https://support.google.com/analytics/answer/9143382) + +--- + +## 5.3 주요 사용자 행동 이벤트 설계 + +비즈니스 유형에 따라 추적해야 할 사용자 행동이 다르다. 이 절에서는 실무에서 가장 많이 사용되는 이벤트 설계 패턴을 유형별로 정리한다. + +### 5.3.1 이커머스 이벤트 + +이커머스 사이트에서는 Google의 추천 이벤트 사양을 따르는 것이 필수적이다. 이를 통해 GA4의 이커머스 보고서, 수익화 보고서를 자동으로 활용할 수 있다. + +**이커머스 퍼널 이벤트 (전체 흐름)**: + +``` +view_item_list → view_item → add_to_cart → view_cart → begin_checkout + │ + add_shipping_info + │ + add_payment_info + │ + purchase +``` + +**각 이벤트의 상세 설계**: + +| 단계 | 이벤트 이름 | 필수 매개변수 | 설명 | +|------|-------------|---------------|------| +| 상품 목록 조회 | `view_item_list` | `items`, `item_list_id`, `item_list_name` | 카테고리/검색 결과 페이지 | +| 상품 상세 조회 | `view_item` | `items`, `value`, `currency` | 상품 상세페이지 | +| 장바구니 담기 | `add_to_cart` | `items`, `value`, `currency` | 장바구니 추가 버튼 클릭 | +| 장바구니 조회 | `view_cart` | `items`, `value`, `currency` | 장바구니 페이지 조회 | +| 결제 시작 | `begin_checkout` | `items`, `value`, `currency` | 결제 프로세스 진입 | +| 배송 정보 입력 | `add_shipping_info` | `items`, `value`, `currency`, `shipping_tier` | 배송지 입력 완료 | +| 결제 정보 입력 | `add_payment_info` | `items`, `value`, `currency`, `payment_type` | 결제수단 선택 완료 | +| 구매 완료 | `purchase` | `transaction_id`, `items`, `value`, `currency` | 주문 확인 페이지 | +| 환불 | `refund` | `transaction_id` | 환불 처리 완료 | + +**items 배열 구조 예시** (데이터 레이어 (dataLayer) 기준): + +```javascript +dataLayer.push({ + event: 'add_to_cart', + ecommerce: { + currency: 'KRW', + value: 89000, + items: [{ + item_id: 'SKU_001', + item_name: '블루 러닝화', + item_brand: '나이키', + item_category: '신발', + item_category2: '러닝화', + item_variant: '270mm', + price: 89000, + quantity: 1, + index: 0, + item_list_id: 'search_results', + item_list_name: '검색 결과' + }] + } +}); +``` + +> **한국 이커머스 참고**: KRW는 소수점이 없으므로 `value`와 `price`에 정수를 사용한다. `currency`는 반드시 `'KRW'`로 설정해야 GA4 수익화 보고서에서 정확한 금액이 표시된다. + +### 5.3.2 회원가입 / 로그인 이벤트 + +| 이벤트 이름 | 트리거 시점 | 매개변수 | User-ID 연동 | +|-------------|-------------|----------|--------------| +| `sign_up` | 회원가입 완료 | `method` (이메일, 카카오, 네이버 등) | 가입 완료 시 User-ID 설정 | +| `login` | 로그인 성공 | `method` (이메일, 카카오, 네이버 등) | 로그인 시 User-ID 갱신 | + +**User-ID 연동 구현 예시**: + +```javascript +// 로그인 성공 시 +gtag('config', 'G-XXXXXXXXXX', { + user_id: 'USER_12345' +}); +gtag('event', 'login', { + method: 'kakao' +}); +``` + +> **User-ID 활용**: User-ID를 설정하면 GA4의 보고 정체성 (Reporting Identity) 설정에서 "혼합 (Blended)" 또는 "관찰됨 (Observed)" 모드를 활용하여 기기 간 (Cross-device) 사용자 분석이 가능해진다. 개인식별정보(PII)는 User-ID로 사용하지 않도록 주의한다. + +### 5.3.3 콘텐츠 반응 이벤트 + +사용자가 콘텐츠에 어떻게 반응하는지를 측정하는 이벤트이다. + +| 행동 | 이벤트 이름 | 매개변수 | 비고 | +|------|-------------|----------|------| +| 메인 캐러셀 클릭 | `carousel_click` | `slide_index`, `slide_title`, `link_url` | 맞춤 이벤트 | +| 사이트 내 검색 | `view_search_results` | `search_term` | 향상된 측정 or 맞춤 구현 | +| 위시리스트 추가 | `add_to_wishlist` | `items`, `value`, `currency` | 추천 이벤트 | +| 콘텐츠 공유 | `share` | `method`, `content_type`, `item_id` | 추천 이벤트 | +| 리뷰 작성 | `review_submit` | `item_id`, `rating`, `review_text_length` | 맞춤 이벤트 | + +**사이트 내 검색어 추적 심화**: + +향상된 측정의 `view_search_results`가 기본 제공되지만, 추가 정보(검색 결과 수, 검색 카테고리 등)를 수집하려면 GTM을 통한 맞춤 구현이 필요하다. + +```javascript +dataLayer.push({ + event: 'site_search', + search_term: '블루 러닝화', + search_results_count: 42, + search_category: '신발', + search_filter_applied: '가격:5만원~10만원' +}); +``` + +### 5.3.4 프로모션 및 커머스 부가 이벤트 + +| 행동 | 이벤트 이름 | 매개변수 | 비고 | +|------|-------------|----------|------| +| 프로모션 조회 | `view_promotion` | `promotion_id`, `promotion_name`, `creative_name`, `creative_slot` | 추천 이벤트 | +| 프로모션 클릭 | `select_promotion` | `promotion_id`, `promotion_name`, `creative_name`, `creative_slot` | 추천 이벤트 | +| 쿠폰 사용 | `coupon_use` | `coupon_id`, `coupon_code`, `discount_value`, `coupon_type` | 맞춤 이벤트 | +| 결제수단 선택 | `add_payment_info` | `payment_type`, `value`, `currency` | 추천 이벤트 | + +> **프로모션 이벤트 팁**: `view_promotion`은 프로모션 배너가 뷰포트에 노출되었을 때, `select_promotion`은 실제 클릭했을 때 발생시킨다. GTM의 요소 공개 (Element Visibility) 트리거를 활용하면 배너 노출을 자동으로 감지할 수 있다. + +### 더 읽어보기 (Further Reading) + +- [추천 이벤트](https://support.google.com/analytics/answer/9322688) +- [이커머스 이벤트 구현 가이드](https://developers.google.com/analytics/devguides/collection/ga4/ecommerce) + +--- + +## 5.4 사용자 행동 유형별 트리거 조건 분석 + +GTM(구글 태그 매니저)에서 이벤트를 구현할 때, 사용자 행동의 유형에 따라 적합한 **트리거 (Trigger)** 유형을 선택해야 한다. + +### 5.4.1 클릭 이벤트 (Click Events) + +사용자가 특정 요소를 클릭할 때 발생시키는 이벤트이다. + +| GTM 트리거 유형 | 설명 | 사용 시나리오 | +|----------------|------|---------------| +| **모든 요소 클릭 (All Elements - Click)** | 페이지 내 모든 클릭 감지 | 버튼, 이미지, 텍스트 등 비링크 요소 클릭 | +| **링크만 클릭 (Just Links - Click)** | `` 태그 클릭만 감지 | 내비게이션, 텍스트 링크, 배너 링크 | + +**클릭 트리거에서 사용 가능한 변수 (Built-in Variables)**: + +| 변수 | 설명 | 활용 예시 | +|------|------|-----------| +| `Click Element` | 클릭된 HTML 요소 | CSS 선택자로 특정 버튼 식별 | +| `Click Classes` | 클릭된 요소의 class 속성 | `btn-purchase`, `cta-primary` | +| `Click ID` | 클릭된 요소의 id 속성 | `submit-form`, `add-to-cart-btn` | +| `Click Text` | 클릭된 요소의 텍스트 | "구매하기", "장바구니 담기" | +| `Click URL` | 클릭된 링크의 href 속성 | 링크 클릭 트리거에서만 사용 | +| `Click Target` | 링크의 target 속성 | `_blank` 여부 확인 | + +**실전 트리거 조건 예시 — CTA 버튼 클릭**: + +``` +트리거 유형: 모든 요소 클릭 (All Elements) +조건: + Click Classes 포함(contains) "btn-cta" + Page Path 일치(equals) "/product/" +``` + +> **실무 주의**: 동적으로 생성되는 요소(AJAX로 로드되는 버튼 등)는 클릭 트리거가 정상 작동하지 않을 수 있다. 이 경우 데이터 레이어 (dataLayer) 이벤트를 직접 푸시하는 방식이 더 안정적이다. + +### 5.4.2 링크 이벤트 (Link Events) + +외부 링크 클릭, 파일 다운로드 링크, 전화번호 링크(tel:) 등을 추적한다. + +| 추적 대상 | 트리거 조건 | 이벤트 이름 | +|-----------|-------------|-------------| +| 외부 링크 클릭 | Click URL이 현재 도메인과 다른 경우 | `outbound_link_click` | +| 전화번호 클릭 | Click URL이 `tel:`로 시작 | `phone_call_click` | +| 이메일 링크 클릭 | Click URL이 `mailto:`로 시작 | `email_link_click` | +| 파일 다운로드 | Click URL 확장자가 pdf, xlsx, docx 등 | `file_download` (향상된 측정과 중복 주의) | +| 소셜 미디어 링크 | Click URL에 특정 소셜 도메인 포함 | `social_link_click` | + +**전화번호 클릭 트리거 예시**: + +``` +트리거 유형: 링크만 클릭 (Just Links) +조건: + Click URL 시작(starts with) "tel:" +태그 → 관련 활성화 옵션: + "태그 실행 전 링크 대기 (Wait for Tags)" 체크 + 최대 대기 시간: 2000ms +``` + +### 5.4.3 폼 이벤트 (Form Events) + +사용자가 폼을 작성하고 제출하는 행동을 추적한다. + +| GTM 트리거 유형 | 설명 | 주의사항 | +|----------------|------|----------| +| **폼 제출 (Form Submission)** | `
` 태그의 submit 이벤트 감지 | AJAX 폼에서는 작동하지 않을 수 있음 | + +**폼 트리거에서 사용 가능한 변수**: + +| 변수 | 설명 | +|------|------| +| `Form Element` | 제출된 폼 HTML 요소 | +| `Form Classes` | 폼의 class 속성 | +| `Form ID` | 폼의 id 속성 | +| `Form Target` | 폼의 target 속성 | +| `Form URL` | 폼의 action 속성 (제출 대상 URL) | +| `Form Text` | 폼 내부의 텍스트 | + +**AJAX 폼 대응 방법**: + +최근 웹사이트는 전통적인 폼 제출 대신 AJAX(비동기) 방식으로 폼을 처리하는 경우가 많다. 이 경우 GTM 기본 폼 제출 트리거가 작동하지 않으므로, 다음 방법을 사용한다. + +1. **데이터 레이어 푸시**: 폼 제출 성공 콜백에서 dataLayer.push() 호출 +2. **URL 변경 감지**: 폼 제출 후 감사(Thank you) 페이지로 이동하는 경우 페이지뷰 트리거 활용 +3. **DOM 변경 감지**: 성공 메시지 요소가 나타나는 것을 Element Visibility 트리거로 감지 + +```javascript +// AJAX 폼 제출 성공 시 dataLayer 푸시 예시 +fetch('/api/contact', { + method: 'POST', + body: formData +}).then(response => { + if (response.ok) { + dataLayer.push({ + event: 'form_submit_success', + form_id: 'contact_form', + form_name: '문의하기', + form_type: 'lead_generation' + }); + } +}); +``` + +### 5.4.4 기타 트리거 유형 + +#### 스크롤 깊이 (Scroll Depth) + +| 설정 항목 | 설명 | +|-----------|------| +| 트리거 유형 | 스크롤 깊이 (Scroll Depth) | +| 측정 방식 | 세로 스크롤 비율(%) 또는 픽셀(px) | +| 권장 임계값 | 25%, 50%, 75%, 90% | +| 활용 | 콘텐츠 소비 깊이 분석, 기사/블로그 열독률 측정 | + +> **향상된 측정과의 차이**: 향상된 측정의 `scroll` 이벤트는 90% 도달만 감지한다. 25%, 50%, 75% 등 세분화된 스크롤 추적이 필요하면 GTM에서 스크롤 깊이 트리거를 별도로 설정해야 한다. + +#### 체류 시간 / 타이머 (Timer) + +| 설정 항목 | 설명 | +|-----------|------| +| 트리거 유형 | 타이머 (Timer) | +| 간격 | 밀리초 단위 (예: 30000 = 30초) | +| 제한 | 실행 횟수 제한 (예: 1회만 실행) | +| 활용 | 특정 시간 이상 체류한 사용자를 "참여 사용자"로 분류 | + +#### 요소 공개 (Element Visibility) + +| 설정 항목 | 설명 | +|-----------|------| +| 트리거 유형 | 요소 공개 (Element Visibility) | +| 선택 방법 | CSS 선택자 또는 Element ID | +| 공개 조건 | 뷰포트 노출 비율(%), 최소 노출 시간(ms) | +| 활용 | 프로모션 배너 노출 추적, 특정 섹션 도달 여부 확인 | + +**요소 공개 트리거 예시 — 프로모션 배너 노출**: + +``` +트리거 유형: 요소 공개 (Element Visibility) +선택 방법: CSS 선택자 +요소 선택자: .promo-banner +실행 시점: 요소당 1회 (Once per element) +최소 뷰포트 비율: 50% +최소 체류 시간: 1000ms +``` + +### 트리거 유형 선택 가이드 + +| 사용자 행동 | 추천 트리거 유형 | 대체 방법 | +|-------------|------------------|-----------| +| 버튼 클릭 | 모든 요소 클릭 | dataLayer 이벤트 | +| 링크 이동 | 링크만 클릭 | 모든 요소 클릭 | +| 폼 제출 | 폼 제출 | dataLayer 이벤트 (AJAX 폼) | +| 페이지 도달 | 페이지뷰 | 히스토리 변경 (SPA) | +| 배너 노출 | 요소 공개 | dataLayer 이벤트 | +| 스크롤 구간 | 스크롤 깊이 | 맞춤 JavaScript | +| 장시간 체류 | 타이머 | 맞춤 JavaScript | + +### 더 읽어보기 (Further Reading) + +- [GA4 이벤트 정보](https://support.google.com/analytics/answer/9143382) +- [향상된 측정 이벤트](https://support.google.com/analytics/answer/12229021) + +--- + +## 5.5 이벤트 태깅 플랜 작성 + +체계적인 이벤트 추적을 위해서는 구현 전에 **태깅 플랜 (Tagging Plan)**을 작성하는 것이 필수적이다. 태깅 플랜은 "어떤 이벤트를, 어떤 조건에서, 어떤 매개변수와 함께 수집할 것인가"를 문서화한 것이다. + +### 5.5.1 이벤트 네이밍 컨벤션 (Naming Convention) + +일관된 네이밍 규칙은 데이터 품질과 분석 효율성의 기반이다. + +**GA4 이벤트 네이밍 규칙**: + +| 규칙 | 설명 | 올바른 예시 | 잘못된 예시 | +|------|------|-------------|-------------| +| 소문자만 사용 | 대문자 사용 금지 | `add_to_cart` | `Add_To_Cart` | +| 단어 구분은 언더스코어 | 하이픈, 공백, 카멜케이스 금지 | `page_view` | `page-view`, `pageView` | +| 동사_목적어 구조 | 행동을 명확히 표현 | `submit_form`, `click_cta` | `form`, `cta` | +| 숫자로 시작 금지 | 영문자로 시작 | `step_1_complete` | `1_step_complete` | +| 예약 접두사 금지 | `ga_`, `google_`, `firebase_` 사용 불가 | `custom_search` | `ga_search` | +| 40자 이내 | 이벤트 이름 최대 길이 | `product_detail_view` | (40자 초과 이름) | + +**매개변수 네이밍 규칙**: + +| 규칙 | 설명 | +|------|------| +| 소문자 + 언더스코어 | 이벤트 이름과 동일한 규칙 적용 | +| 40자 이내 | 매개변수 이름 최대 길이 | +| 매개변수 값 최대 100자 | 문자열 값의 최대 길이 | +| 이벤트당 최대 25개 | 하나의 이벤트에 포함 가능한 매개변수 수 | + +> **실무 팁**: Google의 추천 이벤트와 매개변수 이름이 이미 존재하는 경우, 반드시 해당 이름을 그대로 사용하자. 예를 들어 `item_name`이 추천되는 곳에 `product_name`을 사용하면 GA4 기본 보고서에서 데이터가 인식되지 않는다. + +### 5.5.2 매개변수 설계: 이벤트 매개변수 vs 사용자 속성 + +| 구분 | 이벤트 매개변수 (Event Parameter) | 사용자 속성 (User Property) | +|------|-----------------------------------|----------------------------| +| 범위 | 이벤트 수준 (해당 이벤트에만 적용) | 사용자 수준 (모든 이벤트에 적용) | +| 변경 빈도 | 이벤트마다 다를 수 있음 | 비교적 안정적 (가끔 변경) | +| 등록 한도 | 이벤트 범위 맞춤 측정기준 50개, 맞춤 측정항목 50개 | 사용자 범위 맞춤 측정기준 25개 | +| 예시 | `page_title`, `button_text`, `item_category` | `membership_tier`, `preferred_language`, `age_group` | +| 활용 | 특정 행동의 세부 맥락 분석 | 사용자 세그먼트 생성, 잠재고객 (Audience) 정의 | + +**사용자 속성 설정 예시**: + +```javascript +// 사용자 속성 설정 (gtag.js) +gtag('set', 'user_properties', { + membership_tier: 'gold', + account_creation_date: '2024-03-15', + preferred_category: 'electronics' +}); +``` + +**GA4에서 맞춤 측정기준 (Custom Dimension) 등록**: + +이벤트 매개변수와 사용자 속성은 GA4 관리자에서 **맞춤 정의 (Custom Definitions)**로 등록해야 보고서에서 사용할 수 있다. + +1. GA4 관리 > 속성 (Property) > 데이터 표시 (Data Display) > 맞춤 정의 (Custom Definitions) +2. **"맞춤 측정기준 만들기 (Create custom dimension)"** 클릭 +3. 측정기준 이름, 범위(이벤트/사용자), 이벤트 매개변수 이름 입력 + +> **중요**: 맞춤 측정기준을 등록하지 않으면 매개변수 데이터가 수집은 되지만 보고서에서 조회할 수 없다. DebugView에서는 확인 가능하나, 표준 보고서와 탐색 (Explore) 보고서에서는 등록 후에야 사용할 수 있다. 또한 등록 후 데이터가 표시되기까지 24~48시간이 소요될 수 있다. + +### 5.5.3 이벤트 조회/확인 시트 작성법 + +태깅 플랜을 체계적으로 관리하기 위해 스프레드시트 형식의 이벤트 추적 시트를 작성한다. + +**이벤트 추적 시트 (Event Tracking Sheet) 템플릿**: + +| 구분 | 이벤트 이름 | 이벤트 유형 | 트리거 조건 | 매개변수 | 값 예시 | 주요 이벤트 여부 | 구현 방법 | 담당자 | 상태 | +|------|-------------|-------------|-------------|----------|---------|------------------|-----------|--------|------| +| 이커머스 | `purchase` | 추천 | 주문완료 페이지 로드 | `transaction_id`, `value`, `currency`, `items` | T_001, 89000, KRW, [...] | O (Macro) | GTM - dataLayer | 개발팀 | 완료 | +| 이커머스 | `add_to_cart` | 추천 | 장바구니 담기 버튼 클릭 | `items`, `value`, `currency` | [...], 89000, KRW | O (Micro) | GTM - dataLayer | 개발팀 | 진행중 | +| 리드 | `generate_lead` | 추천 | 문의 폼 제출 성공 | `form_id`, `form_name`, `value`, `currency` | contact_01, 문의하기, 50000, KRW | O (Macro) | GTM - DOM 이벤트 | 마케팅팀 | 대기 | +| 참여 | `cta_click` | 맞춤 | CTA 버튼 클릭 | `cta_text`, `cta_location`, `page_path` | 무료체험, hero_section, /home | X | GTM - 클릭 트리거 | 마케팅팀 | 대기 | +| 콘텐츠 | `scroll_depth` | 맞춤 | 스크롤 25/50/75/90% | `percent_scrolled`, `page_path` | 50, /blog/post-1 | X | GTM - 스크롤 트리거 | 마케팅팀 | 완료 | + +**시트 작성 시 포함해야 할 열 (Column) 목록**: + +| 열 이름 | 필수 여부 | 설명 | +|---------|-----------|------| +| 구분/카테고리 | 필수 | 이벤트 그룹 분류 (이커머스, 리드, 콘텐츠 등) | +| 이벤트 이름 | 필수 | GA4에 전송되는 이벤트 이름 | +| 이벤트 유형 | 필수 | 자동/향상된 측정/추천/맞춤 | +| 트리거 조건 | 필수 | 이벤트가 발생하는 사용자 행동 설명 | +| 매개변수 | 필수 | 함께 전송하는 매개변수 목록 | +| 값 예시 | 권장 | 매개변수 값의 예시 (QA 검증 시 참고) | +| 주요 이벤트 여부 | 필수 | Macro/Micro/아니오 | +| 구현 방법 | 필수 | GTM 트리거 유형 또는 직접 코딩 | +| 담당자 | 권장 | 구현 및 검증 담당자 | +| 상태 | 필수 | 대기/진행중/완료/검증완료 | +| 비고 | 선택 | 특이사항, 제한 조건 등 | + +### 5.5.4 GTM 활용 권장 및 GA4 UI 이벤트 수정 비추천 + +이벤트 구현 방식에는 크게 세 가지가 있으며, 각각의 장단점은 다음과 같다. + +| 방식 | 장점 | 단점 | 권장 여부 | +|------|------|------|-----------| +| **GTM (구글 태그 매니저)** | 코드 수정 없이 태그 관리 가능, 버전 관리, 미리보기 모드로 디버깅 가능, 팀 협업 용이 | 초기 학습 곡선 존재, GTM 컨테이너 설치 필요 | **강력 권장** | +| **직접 코딩 (gtag.js / SDK)** | 완전한 코드 제어 가능, 복잡한 로직 구현 용이 | 코드 배포 사이클에 종속, 마케터가 독립적으로 수정 불가 | 특수한 경우에만 | +| **GA4 UI 이벤트 수정** | 별도 도구 없이 GA4 관리 화면에서 직접 생성 | 조건 설정 제한적, 디버깅 어려움, 복잡한 로직 불가, 관리 어려움 | **비추천** | + +> **GA4 UI 이벤트 수정이 비추천인 이유**: GA4 관리 화면에서 만든 이벤트는 서버 측에서 기존 이벤트를 기반으로 새 이벤트를 파생시키는 방식이다. 조건 설정이 제한적이고, 디버깅이 어려우며, 복잡한 매개변수 조합이 불가능하다. 또한 GTM처럼 버전 관리나 롤백이 되지 않아 운영 리스크가 있다. 간단한 이벤트 이름 변경 외에는 GTM을 사용하는 것이 바람직하다. + +### 이벤트 태깅 플랜 작성 체크리스트 + +태깅 플랜 작성 시 다음 항목을 점검한다. + +- [ ] 비즈니스 목표(KPI)가 명확히 정의되었는가? +- [ ] Macro 주요 이벤트가 2~3개 이내로 선정되었는가? +- [ ] Micro 주요 이벤트가 Macro 달성 경로를 설명하는가? +- [ ] 이커머스 이벤트는 Google 추천 사양을 따르는가? +- [ ] 맞춤 이벤트의 네이밍 컨벤션이 일관적인가? +- [ ] 모든 매개변수에 예시 값이 포함되어 있는가? +- [ ] 맞춤 측정기준/측정항목 등록 한도(50/50/25)를 초과하지 않는가? +- [ ] 구현 방법(GTM 트리거 유형)이 명시되어 있는가? +- [ ] 구현 담당자와 검증 담당자가 지정되어 있는가? +- [ ] QA 시나리오(검증 방법)가 포함되어 있는가? + +### 더 읽어보기 (Further Reading) + +- [GA4 이벤트 정보](https://support.google.com/analytics/answer/9143382) +- [추천 이벤트](https://support.google.com/analytics/answer/9322688) + +--- + +## 5.6 측정 대상 가설과 보고서 매핑 + +이벤트와 주요 이벤트를 설계했다면, 이제 **"무엇을 알고 싶은가 (측정 가설)"**와 **"어디서 확인할 것인가 (보고서)"**를 연결해야 한다. 이 매핑이 없으면 데이터는 수집되지만 활용되지 않는다. + +### 5.6.1 트래픽 소스 분석 + +**가설**: "어떤 채널에서 유입된 사용자가 가장 많이 전환하는가?" + +| 측정 요소 | GA4 보고서 | 필요 설정 | +|-----------|-----------|-----------| +| 채널별 트래픽 | 획득 (Acquisition) > 트래픽 획득 (Traffic Acquisition) | 기본 제공 | +| 유기적 검색 성과 | 획득 > Search Console 보고서 | Search Console 연결 필요 | +| 캠페인별 유입 | 획득 > 트래픽 획득 > 세션 캠페인 측정기준 | UTM 매개변수 설정 필요 | + +**UTM 매개변수 설정 가이드**: + +| UTM 매개변수 | 필수 여부 | 설명 | 값 예시 | +|-------------|-----------|------|---------| +| `utm_source` | 필수 | 트래픽 소스 | `naver`, `google`, `kakao`, `instagram` | +| `utm_medium` | 필수 | 마케팅 매체 유형 | `cpc`, `organic`, `email`, `social`, `referral` | +| `utm_campaign` | 필수 | 캠페인 이름 | `spring_sale_2025`, `brand_awareness_q1` | +| `utm_term` | 선택 | 유료 검색 키워드 | `러닝화`, `블루투스이어폰` | +| `utm_content` | 선택 | 광고 소재 구분 | `banner_a`, `text_link`, `video_30s` | + +> **UTM 네이밍 규칙**: UTM 값은 소문자와 언더스코어를 사용하여 일관성을 유지한다. `Spring Sale`과 `spring_sale`은 GA4에서 별도의 캠페인으로 집계되므로 반드시 통일된 규칙을 적용하자. + +### 5.6.2 캠페인 효율성 분석 + +**가설**: "어떤 광고 캠페인이 가장 높은 ROI를 달성하는가?" + +| 측정 요소 | GA4 보고서 | 필요 설정 | +|-----------|-----------|-----------| +| Google Ads 캠페인 성과 | 광고 (Advertising) > 성과 (Performance) | Google Ads 연결 필요 | +| 캠페인별 전환 수 | 획득 > 트래픽 획득 (주요 이벤트 측정항목 추가) | 주요 이벤트 설정 + UTM | +| 채널별 ROAS | 광고 > 성과 > ROAS 열 | 주요 이벤트 가치(Value) 설정 | +| 광고 비용 대비 수익 | Google Ads 보고서에서 직접 확인 | GA4 ↔ Google Ads 연결 + 주요 이벤트 공유 | + +**Google Ads 연결 방법**: + +1. GA4 관리 > 제품 연결 (Product Links) > Google Ads 연결 (Google Ads Links) +2. **"연결 (Link)"** 클릭 +3. Google Ads 계정 선택 후 연결 완료 +4. GA4 주요 이벤트를 Google Ads 전환으로 가져오기 + +### 5.6.3 마케팅 프로그램 성과 분석 + +**가설**: "프로모션 A와 프로모션 B 중 어느 것이 구매 전환에 더 효과적인가?" + +| 측정 요소 | GA4 보고서 | 분석 방법 | +|-----------|-----------|-----------| +| 프로모션별 전환 비교 | 탐색 (Explore) > 자유 형식 (Free-form) | 프로모션 이벤트 매개변수를 측정기준으로 활용 | +| 프로모션 참여 퍼널 | 탐색 > 퍼널 탐색 (Funnel Exploration) | view_promotion → select_promotion → purchase | +| 쿠폰 사용 효과 | 탐색 > 자유 형식 | coupon 매개변수 기준 세그먼트 비교 | + +**탐색 (Explore) 보고서 활용 팁**: + +탐색 보고서는 GA4의 가장 강력한 분석 도구이다. 기본 보고서에서 제공하지 않는 맞춤 분석이 가능하다. + +| 탐색 기법 | 용도 | 활용 시나리오 | +|-----------|------|---------------| +| 자유 형식 (Free-form) | 맞춤 테이블, 차트 생성 | 이벤트별 성과 비교, 매개변수 드릴다운 | +| 퍼널 탐색 (Funnel Exploration) | 단계별 이탈률 분석 | 이커머스 구매 퍼널, 회원가입 퍼널 | +| 경로 탐색 (Path Exploration) | 사용자 이동 경로 분석 | 특정 페이지 전후 행동 패턴 | +| 세그먼트 중복 (Segment Overlap) | 잠재고객 세그먼트 간 교집합 분석 | VIP + 모바일 + 서울 사용자 중복 확인 | +| 코호트 탐색 (Cohort Exploration) | 시간에 따른 사용자 그룹 행동 변화 | 주간별 재방문율, 월별 구매 전환율 | +| 사용자 전체 기간 (User Lifetime) | 개별 사용자의 전체 여정 분석 | 고가치 사용자의 행동 패턴 이해 | + +### 5.6.4 핵심 고객 세그먼트 분석 + +**가설**: "고가치 사용자와 일반 사용자의 행동 차이는 무엇인가?" + +| 측정 요소 | GA4 기능 | 설정 방법 | +|-----------|----------|-----------| +| 잠재고객 (Audience) 정의 | 관리 > 잠재고객 (Audiences) | 조건 기반 사용자 그룹 생성 | +| 세그먼트 비교 | 탐색 > 세그먼트 | 탐색 보고서 내 세그먼트 적용 | +| 잠재고객 트리거 | 잠재고객 생성 시 트리거 이벤트 설정 | 잠재고객 조건 충족 시 자동 이벤트 발생 | + +**잠재고객 (Audience) 생성 예시**: + +| 잠재고객 이름 | 조건 | 활용 | +|---------------|------|------| +| 고가치 구매자 | `purchase` 이벤트 발생 + `value` >= 100,000 (최근 30일) | Google Ads 리마케팅, VIP 분석 | +| 장바구니 이탈자 | `add_to_cart` 발생 + `purchase` 미발생 (최근 7일) | 리타겟팅 광고, 이메일 마케팅 | +| 콘텐츠 적극 참여자 | `scroll` 이벤트 (90%) 발생 3회 이상 (최근 7일) | 콘텐츠 관심 그룹 분석 | +| 신규 가입 미구매자 | `sign_up` 발생 + `purchase` 미발생 (최근 14일) | 온보딩 캠페인 대상 | + +### 5.6.5 사용자 행동 가설 검증 — 경로 분석 (Path Analysis) + +**가설**: "구매를 완료한 사용자는 구매 전에 어떤 경로를 거치는가?" + +| 분석 유형 | GA4 보고서 | 설정 | +|-----------|-----------|------| +| 순방향 경로 (Forward Path) | 탐색 > 경로 탐색 | 시작점: `session_start` → 이후 경로 확인 | +| 역방향 경로 (Reverse Path) | 탐색 > 경로 탐색 | 종료점: `purchase` → 이전 경로 확인 | +| 전환 퍼널 | 탐색 > 퍼널 탐색 | 단계 정의: view_item → add_to_cart → begin_checkout → purchase | + +**경로 분석 활용 시나리오**: + +``` +질문: "구매 완료 사용자는 평균 몇 개의 상품 상세페이지를 조회하는가?" + +방법: +1. 탐색 > 경로 탐색 (Path Exploration) +2. 종료점 (Ending point): purchase 이벤트 +3. 역방향 (Reverse) 경로 확인 +4. view_item 이벤트의 평균 발생 횟수 확인 + +결과 해석: +- 평균 3.2개의 상품을 조회한 후 구매 → 비교 탐색 행동이 활발 +- 상품 추천 위젯이 교차 판매에 기여하는지 확인 가능 +``` + +### 측정 가설 — 보고서 매핑 종합표 + +| 측정 가설 (알고 싶은 것) | 필요 이벤트/설정 | GA4 보고서 | 추가 설정 | +|--------------------------|------------------|-----------|-----------| +| 어떤 채널이 가장 많이 전환하는가? | 주요 이벤트 + UTM | 획득 > 트래픽 획득 | UTM 태깅 규칙 통일 | +| 광고비 대비 수익은 얼마인가? | purchase + value | 광고 > 성과 | Google Ads 연결 | +| 어느 프로모션이 효과적인가? | view_promotion, select_promotion | 탐색 > 자유 형식 | 프로모션 매개변수 설계 | +| 이탈 지점은 어디인가? | 이커머스 퍼널 이벤트 | 탐색 > 퍼널 탐색 | 퍼널 단계 정의 | +| 고가치 고객의 특징은? | 사용자 속성 + purchase | 탐색 > 세그먼트 중복 | 잠재고객 정의 | +| 구매 전 행동 패턴은? | 주요 이벤트 + page_view | 탐색 > 경로 탐색 | - | +| 검색어가 전환에 기여하는가? | view_search_results | 탐색 > 자유 형식 | 검색어 매개변수 수집 | +| 회원가입이 구매로 이어지는가? | sign_up, purchase | 탐색 > 코호트 탐색 | User-ID 설정 | + +### 더 읽어보기 (Further Reading) + +- [주요 이벤트 정보](https://support.google.com/analytics/answer/12844695) +- [이커머스 이벤트 구현 가이드](https://developers.google.com/analytics/devguides/collection/ga4/ecommerce) +- [추천 이벤트](https://support.google.com/analytics/answer/9322688) + +--- + +## 구현 체크리스트 (Implementation Checklist) + +이벤트와 주요 이벤트 설정 작업을 완료하기 전에 다음 항목을 점검한다. + +### 1단계: 기획 + +- [ ] 비즈니스 목표(KPI)를 정의했는가? +- [ ] Macro / Micro 주요 이벤트를 구분하여 선정했는가? +- [ ] 이벤트 추적 시트(태깅 플랜)를 작성했는가? +- [ ] 네이밍 컨벤션을 팀 내에 공유했는가? +- [ ] 맞춤 측정기준/측정항목 등록 한도를 확인했는가? + +### 2단계: 구현 + +- [ ] 향상된 측정 (Enhanced Measurement) 설정을 확인했는가? +- [ ] GTM 컨테이너가 모든 페이지에 올바르게 설치되었는가? +- [ ] 이커머스 이벤트는 Google 추천 사양을 준수하는가? +- [ ] 데이터 레이어 (dataLayer) 구조가 올바르게 구현되었는가? +- [ ] 맞춤 이벤트의 매개변수가 정확한 값을 전달하는가? +- [ ] User-ID 설정이 필요한 경우 구현되었는가? + +### 3단계: 검증 + +- [ ] GTM 미리보기 (Preview) 모드에서 모든 태그가 정상 발동하는가? +- [ ] GA4 DebugView에서 이벤트와 매개변수가 올바르게 표시되는가? +- [ ] GA4 실시간 (Realtime) 보고서에서 이벤트가 수집되는가? +- [ ] 주요 이벤트로 표시한 이벤트가 정상 집계되는가? +- [ ] 이커머스 보고서에서 구매 데이터가 정확한가? +- [ ] 맞춤 측정기준이 탐색 보고서에서 조회 가능한가? + +### 4단계: 운영 + +- [ ] UTM 매개변수 규칙을 팀 전체에 배포했는가? +- [ ] 주요 이벤트 가치(Value)를 설정하고 정기 검토 일정을 잡았는가? +- [ ] Google Ads 연결 및 주요 이벤트 공유가 완료되었는가? +- [ ] 잠재고객 (Audience)을 생성하고 광고 플랫폼에 공유했는가? +- [ ] 정기적인 데이터 품질 점검(QA) 프로세스가 수립되었는가? + +--- + +> **다음 챕터 안내**: Chapter 06에서는 GTM을 활용한 이벤트 태그 구현 실습을 다룬다. 본 챕터에서 설계한 이벤트 태깅 플랜을 바탕으로, GTM에서 태그-트리거-변수를 설정하고 DebugView를 통해 검증하는 과정을 단계별로 안내한다. + + +--- + + +# Chapter 06. GA4 속성 및 데이터 수집 설정 + +GA4 속성 (Property)을 처음 만들었다면, 데이터가 쌓이기 전에 반드시 점검해야 할 설정들이 있다. 이 장에서는 속성 기본 설정부터 데이터 스트림, Google 태그, 데이터 수집 옵션, 데이터 보존, 필터, 그리고 데이터 가져오기까지 — 실무에서 놓치기 쉬운 항목을 빠짐없이 다룬다. + +--- + +## 목차 + +1. [속성 기본 설정 (Property Settings)](#1-속성-기본-설정-property-settings) +2. [데이터 스트림 (Data Streams) 설정](#2-데이터-스트림-data-streams-설정) +3. [Google 태그 설정](#3-google-태그-설정) +4. [데이터 수집 (Data Collection) 설정](#4-데이터-수집-data-collection-설정) +5. [데이터 보존 (Data Retention)](#5-데이터-보존-data-retention) +6. [데이터 필터 (Data Filters)](#6-데이터-필터-data-filters) +7. [데이터 가져오기 (Data Import)](#7-데이터-가져오기-data-import) + +--- + +## 1. 속성 기본 설정 (Property Settings) + +관리 > 속성 > 속성 설정에서 확인할 수 있다. + +### 1.1 지역, 시간대, 통화 설정 + +GA4 속성을 생성할 때 설정하는 세 가지 기본 항목이다. 이 설정은 보고서의 날짜 기준과 수익 데이터 표시에 직접 영향을 준다. + +| 설정 항목 | 권장값 (한국 비즈니스) | 설명 | +|-----------|----------------------|------| +| 보고 시간대 (Reporting Time Zone) | 대한민국 (GMT+09:00) | 보고서의 "오늘" 기준. 변경 시 데이터 공백 또는 중복 발생 가능 | +| 통화 (Currency) | KRW (한국 원화) | 전자상거래 수익, 전환 가치 등 금액 표시 기준 | +| 업종 카테고리 (Industry Category) | 실제 업종에 맞게 선택 | 벤치마킹 데이터 조회용. 정확히 설정해야 의미 있는 비교 가능 | + +> **주의**: 보고 시간대를 변경하면 변경 시점 기준으로 데이터에 공백이 생기거나 같은 시간대의 데이터가 중복 집계될 수 있다. 속성 생성 초기에 정확히 설정하고 이후 변경을 최소화해야 한다. + +> **팁**: 업종 카테고리를 정확히 설정하면 Google이 제공하는 벤치마크 보고서 (Benchmarking Reports)에서 동종 업계 평균과 자사 지표를 비교할 수 있다. "기타"로 두면 벤치마킹 데이터가 제공되지 않는다. + +### 1.2 속성 변경 이력 관리 + +GA4에는 속성 설정 변경에 대한 별도의 감사 로그 (Audit Log)가 내장되어 있지 않다. 따라서 다음과 같은 방법으로 변경 이력을 관리하는 것을 권장한다. + +**변경 이력 관리 체크리스트:** + +- [ ] 변경 전 현재 설정 스크린샷 보관 +- [ ] 변경 일시, 변경자, 변경 내용을 별도 문서(스프레드시트 등)에 기록 +- [ ] 주요 변경 사항은 팀 내 공유 채널에 공지 +- [ ] GA4 속성에 접근 권한이 있는 사용자 목록을 정기적으로 검토 + +> **팁**: Google Workspace를 사용하는 조직이라면 Google 스프레드시트에 "GA4 변경 이력" 시트를 만들어 날짜, 변경 항목, 변경 전 값, 변경 후 값, 변경 사유, 변경자를 기록하는 것이 가장 실용적이다. + +### 더 읽어보기 (Further Reading) + +- [GA4 속성 설정 - Google 공식 문서](https://support.google.com/analytics/answer/9304153) + +--- + +## 2. 데이터 스트림 (Data Streams) 설정 + +관리 > 속성 > 데이터 스트림에서 확인할 수 있다. + +데이터 스트림 (Data Streams)은 GA4 속성으로 데이터가 유입되는 경로를 정의한다. 웹사이트, Android 앱, iOS 앱 각각에 대해 별도의 데이터 스트림을 생성해야 한다. + +### 2.1 웹/앱 데이터 소스 등록 + +| 스트림 유형 | 등록 시 필요 정보 | 비고 | +|------------|------------------|------| +| 웹 (Web) | 웹사이트 URL, 스트림 이름 | 측정 ID (Measurement ID, G-XXXXXXX) 자동 생성 | +| Android 앱 | Firebase 프로젝트 연결, 패키지 이름 | Firebase SDK 필수 | +| iOS 앱 | Firebase 프로젝트 연결, 번들 ID | Firebase SDK 필수 | + +> **팁**: 하나의 GA4 속성에 웹과 앱 스트림을 함께 등록하면 크로스 플랫폼 (Cross-platform) 사용자 행동을 통합 분석할 수 있다. 단, 앱 스트림은 Firebase 프로젝트와 연결이 필수이며, Firebase 없이는 앱 데이터를 수집할 수 없다. + +### 2.2 향상된 측정 (Enhanced Measurement) 상세 설정 + +향상된 측정 (Enhanced Measurement)은 웹 데이터 스트림에서만 제공되는 기능으로, 별도의 코드 수정 없이 주요 사용자 상호작용을 자동으로 추적한다. 데이터 스트림 상세 화면에서 톱니바퀴 아이콘을 클릭하면 개별 항목을 켜거나 끌 수 있다. + +#### 항목별 상세 설명 및 on/off 판단 기준 + +| 항목 | 수집 이벤트 | 기본값 | on 권장 조건 | off 권장 조건 | +|------|-----------|--------|-------------|--------------| +| 페이지 조회 (Page views) | `page_view` | ON | 항상 ON 유지 | 끄지 않는다. 이 항목을 끄면 GA4 보고서 대부분이 무의미해진다 | +| 스크롤 (Scrolls) | `scroll` | ON | 단순한 90% 스크롤 도달 여부만 필요한 경우 | 25%, 50%, 75% 등 세분화된 스크롤 깊이를 GTM으로 측정하려는 경우 | +| 이탈 클릭 (Outbound clicks) | `click` | ON | 외부 링크 클릭을 별도 이벤트로 추적하고 싶은 경우 | 외부 링크가 거의 없거나, GTM으로 더 정밀하게 추적하는 경우 | +| 사이트 검색 (Site search) | `view_search_results` | ON | 사이트 내 검색 기능이 있는 경우 | 사이트에 검색 기능이 없는 경우 | +| 양식 상호작용 (Form interactions) | `form_start`, `form_submit` | ON | 간단한 문의 양식 제출 추적이 필요한 경우 | Facebook Pixel과 병행 사용 시, GTM으로 정밀 추적하는 경우 | +| 동영상 참여 (Video engagement) | `video_start`, `video_progress`, `video_complete` | ON | YouTube 삽입 영상이 있는 경우 | YouTube 외 동영상 플랫폼(Vimeo 등)을 사용하는 경우 | +| 파일 다운로드 (File downloads) | `file_download` | ON | PDF, 문서, 이미지 등 다운로드 링크가 있는 경우 | 다운로드 가능한 파일이 없는 경우 | + +#### 사이트 검색 매개변수 설정 + +사이트 검색 이벤트가 정상적으로 수집되려면 검색 매개변수 (Query Parameter)를 정확히 지정해야 한다. + +**검색 매개변수 확인 방법:** + +1. 사이트에서 실제로 검색을 수행한다 +2. 검색 결과 페이지의 URL을 확인한다 +3. URL에서 검색어가 포함된 매개변수를 식별한다 + +**예시:** + +| URL 형태 | 검색 매개변수 | +|----------|-------------| +| `example.com/search?q=키워드` | `q` | +| `example.com/search?query=키워드` | `query` | +| `example.com/search?s=키워드` | `s` | +| `example.com/?s=키워드` | `s` (WordPress 기본값) | +| `example.com/search?search_term=키워드` | `search_term` | + +**설정 방법:** + +1. 데이터 스트림 > 향상된 측정 > 톱니바퀴 아이콘 클릭 +2. "사이트 검색" 항목의 "고급 설정 표시" 클릭 +3. 검색어 매개변수 입력란에 확인한 매개변수 입력 +4. 여러 매개변수가 있으면 쉼표로 구분하여 입력 (예: `q, query, s`) + +> **주의**: GA4는 기본적으로 `q, s, search, query, keyword`를 자동 인식하지만, 사이트가 이 외의 매개변수를 사용하면 반드시 수동으로 추가해야 한다. + +#### 양식 상호작용: Facebook Pixel 병행 사용 시 주의사항 + +향상된 측정의 양식 상호작용 (Form interactions)이 켜져 있으면, GA4가 자동으로 모든 `` 태그의 `submit` 이벤트를 감지한다. 이때 Facebook Pixel (Meta Pixel)이 동일 페이지에서 `Lead` 또는 `CompleteRegistration` 이벤트를 전송하는 경우 다음 문제가 발생할 수 있다. + +- GA4의 `form_submit` 이벤트와 Facebook Pixel의 폼 관련 이벤트가 서로 간섭하여 이중 전송 발생 +- Facebook Pixel의 자동 이벤트 (Automatic Events)가 GA4의 양식 감지와 충돌 +- 리다이렉트 방식의 폼 제출 시, GA4 이벤트가 전송되기 전에 페이지가 전환되어 데이터 누락 + +**권장 대응:** + +1. 향상된 측정의 양식 상호작용은 OFF +2. GTM에서 폼 제출 트리거를 별도로 구성하여 GA4와 Facebook Pixel 모두에 정확한 데이터를 전송 +3. 특히 전환 (Conversion)으로 사용하는 중요한 폼은 반드시 GTM으로 관리 + +#### 동영상 참여: YouTube 외 플랫폼 사용 시 + +향상된 측정의 동영상 참여 (Video engagement)는 YouTube의 JS API를 활용하므로, **YouTube 임베드 영상에서만 작동한다**. 구체적으로 다음 조건을 충족해야 한다. + +- YouTube iframe 삽입 방식 사용 +- URL에 `enablejsapi=1` 매개변수가 포함되어 있어야 함 (GA4가 자동으로 추가 시도) + +**YouTube 외 동영상 플랫폼 대응:** + +| 플랫폼 | 향상된 측정 작동 여부 | 대안 | +|--------|---------------------|------| +| YouTube (iframe) | 작동함 | 향상된 측정 ON 유지 | +| Vimeo | 작동하지 않음 | Vimeo Player API + GTM 맞춤 이벤트 | +| Wistia | 작동하지 않음 | Wistia JS API + GTM 맞춤 이벤트 | +| HTML5 Video (`