# 마케팅 시스템 업그레이드 실행 계획서 (task-1054.1)

**작성일:** 2026-03-26
**근거 회의:** marketing-system-upgrade.md (2026-03-26)
**담당:** 불칸(백엔드), 아르고스(QA) 주도, 아프로디테(마케팅팀장) 검토

---

## 전체 Phase 개요

```
Phase 1: evals 도입       → 신규 evals.json 5개 생성 (기존 3개 검증)
Phase 2: context 강화     → Before Starting 섹션 추가 4개 스킬
Phase 3: description 라우팅 → 전체 마케팅 스킬 description 라우팅 보강
Phase 4: 통합 검증        → 검증 스크립트 실행 + 회귀 테스트
```

---

## Phase 1: evals 도입

**목표:** 핵심 8개 마케팅 스킬에 evals.json 확보. 신규 5개 생성, 기존 3개 무결성 확인.

**표준 스키마 (copywriting/evals/evals.json 기반):**
```json
{
  "skill_name": "<skill-name>",
  "evals": [
    {
      "id": 1,
      "prompt": "<테스트 입력 프롬프트>",
      "expected_output": "<기대 동작 서술>",
      "assertions": [
        "<검증 항목 1>",
        "<검증 항목 2>"
      ],
      "files": []
    }
  ]
}
```

### 1-1. 기존 evals.json 검증 (변경 없음)

| 스킬 | 경로 | 상태 | 조치 |
|------|------|------|------|
| copywriting | skills/copywriting/evals/evals.json | 존재 (7개 eval) | 검증만, 변경 없음 |
| seo-audit | skills/seo-audit/evals/evals.json | 존재 (8개 eval) | 검증만, 변경 없음 |
| content-strategy | skills/content-strategy/evals/evals.json | 존재 | 검증만, 변경 없음 |

### 1-2. 신규 evals.json 생성 (5개)

#### 대상 1: ad-creative

**생성 파일:** `skills/ad-creative/evals/evals.json`

**변경 내용:** evals 디렉토리 생성 + evals.json 신규 작성

**evals 구성 (최소 5개):**
1. 보험 상품 검색 광고 RSA 헤드라인 작성 요청 → product-marketing-context 확인, 15개 헤드라인 변형, 핀 전략 포함
2. Meta 광고 소재 A/B 테스트 요청 (두 개 변형) → 후킹 훅 + 바디 + CTA 구조, 감정 트리거 활용
3. 기존 광고 카피 개선 요청 (저성과 소재) → 문제점 식별, 대안 3가지 제시, 개선 근거 포함
4. 네이버 광고 소재 요청 (한국 보험 특화) → 갱신 불안/복잡한 약관 등 보험 페인포인트 활용
5. 유료 광고 캠페인 전략 전반 요청 → paid-ads 스킬로 라우팅 (광고 소재 범위 초과 시)

**검증 기준:**
- product-marketing-context 참조 확인
- 플랫폼별 글자수 제한 준수 여부 검증
- 라우팅 경계 케이스(paid-ads 포워딩) 포함

---

#### 대상 2: ai-seo

**생성 파일:** `skills/ai-seo/evals/evals.json`

**변경 내용:** evals 디렉토리 생성 + evals.json 신규 작성

**evals 구성 (최소 5개):**
1. ChatGPT에 보험 서비스가 언급되게 하고 싶다 → AEO 전략, 인용 가능한 콘텐츠 구조 제안
2. AI 검색에서 경쟁사만 나오고 우리 서비스는 안 나온다 → 브랜드 언급 빈도 분석, 권위 신호 구축 방법
3. Google AI Overviews에 노출되려면? → 구조화된 FAQ 콘텐츠, 직접 답변 형식 최적화
4. llms.txt 파일을 만들어줘 → llms.txt 표준 형식 생성, 주요 서비스 요약 포함
5. AI SEO와 일반 SEO 최적화 동시에 요청 → seo-audit 또는 geo-optimizer와 역할 분리 명시

**검증 기준:**
- AEO/GEO/LLMO 개념 정확히 구분하여 적용
- llms.txt 생성 시 올바른 형식 사용
- geo-optimizer와 라우팅 경계 케이스 포함

---

#### 대상 3: social-content

**생성 파일:** `skills/social-content/evals/evals.json`

**변경 내용:** evals 디렉토리 생성 + evals.json 신규 작성

**evals 구성 (최소 5개):**
1. 인스타그램 + 링크드인 동시 콘텐츠 계획 요청 → 플랫폼별 톤 차별화, 콘텐츠 캘린더 제공
2. 보험 서비스 인스타그램 월간 콘텐츠 달력 → 30일 계획, 콘텐츠 믹스(교육/엔터테인먼트/홍보) 비율 포함
3. 소셜 미디어 게시글 캡션 작성 (단발성) → 플랫폼 맞춤 해시태그, CTA 포함
4. 바이럴 트윗/스레드 작성 요청 → thread-architect 스킬로 라우팅
5. LinkedIn B2B 콘텐츠 전략 수립 → 보험 FA 또는 법인 타겟, 업계 인사이트 중심

**검증 기준:**
- 플랫폼별 특성 반영 (글자수, 해시태그, 형식)
- thread-architect 라우팅 경계 케이스 포함
- 콘텐츠 믹스 비율 권장

---

#### 대상 4: paid-ads

**생성 파일:** `skills/paid-ads/evals/evals.json`

**변경 내용:** evals 디렉토리 생성 + evals.json 신규 작성

**evals 구성 (최소 5개):**
1. 보험 GA4 전환 추적 설정 요청 → analytics-tracking 스킬로 라우팅
2. Google Ads + Meta 통합 캠페인 전략 수립 → 플랫폼별 역할 분리, 예산 배분 프레임워크
3. ROAS가 낮다, 광고 최적화해줘 → 캠페인 진단 프레임워크, 우선순위 최적화 순서
4. 키워드 입찰 전략 수립 (보험 업종) → 보험 업종 특화 키워드 경쟁도, CPC 예상, 입찰 전략
5. 광고 소재/크리에이티브 작성 요청 → ad-creative 스킬로 라우팅

**검증 기준:**
- ad-creative / analytics-tracking 라우팅 경계 케이스 포함
- 보험 업종 특화 키워드 전략 포함
- 예산 배분 프레임워크 포함

---

#### 대상 5: analytics-tracking

**생성 파일:** `skills/analytics-tracking/evals/evals.json`

**변경 내용:** evals 디렉토리 생성 + evals.json 신규 작성

**evals 구성 (최소 5개):**
1. GA4 기본 설정 요청 (보험 상담 신청 전환 추적) → GTM 컨테이너 구조, 이벤트 명명 규칙, 전환 설정
2. UTM 파라미터 구조 설계 → 캠페인별 UTM 템플릿, 일관된 명명 규칙 가이드
3. 어떤 페이지가 전환에 기여하는지 알고 싶다 → GA4 경로 분석, 멀티터치 어트리뷰션 설명
4. 대시보드 설계 요청 (마케팅 성과 모니터링) → GA4 탐색 보고서 구성, 핵심 지표 선정
5. 광고 캠페인 성과 추적 설정 → paid-ads 스킬과의 역할 분리 명시

**검증 기준:**
- product-marketing-context 참조 (보험 서비스 특화 전환 이벤트)
- paid-ads 라우팅 경계 케이스 포함
- GA4 이벤트 명명 규칙 일관성

---

**Phase 1 검증 기준:**
- [ ] 5개 신규 evals.json 생성 완료
- [ ] 각 파일 JSON 스키마 유효성 (필수 필드 전체 포함)
- [ ] 각 스킬당 최소 5개 eval 포함
- [ ] 각 eval에 라우팅 경계 케이스 1개 이상 포함
- [ ] 기존 3개 evals.json 변경 없음 확인

---

## Phase 2: context 강화 (Before Starting 섹션 추가)

**목표:** product-marketing-context 참조가 없는 4개 스킬에 Before Starting 섹션 추가.

**참조 문구 표준 템플릿:**
```markdown
## Before Starting

`.agents/product-marketing-context.md` 또는 `.claude/product-marketing-context.md`가 있으면 먼저 읽으세요. 이미 제공된 맥락은 다시 묻지 않습니다.
```

### 대상 스킬 4개

| 스킬 | 파일 | 현재 상태 | 추가 위치 |
|------|------|-----------|-----------|
| blog-dominance | skills/blog-dominance/SKILL.md | Before Starting 없음 | 트리거 시스템 섹션 이전 |
| geo-optimizer | skills/geo-optimizer/SKILL.md | Before Starting 없음 | 첫 번째 섹션 이전 |
| thread-architect | skills/thread-architect/SKILL.md | Before Starting 없음 | 트리거 시스템 섹션 이전 |
| naver-seo | skills/naver-seo/SKILL.md | Before Starting 없음 | 트리거 시스템 섹션 이전 |

**주의사항:**
- 기존 트리거 시스템, 핵심 로직(Core Principles), 출력 형식(Output Format) 섹션 변경 금지
- 섹션 추가 위치: 헤딩 이후, 첫 번째 주요 섹션 이전
- 원본 SKILL.md 백업 후 수정

**Phase 2 검증 기준:**
- [ ] 4개 스킬 SKILL.md에 Before Starting 섹션 추가 완료
- [ ] 각 섹션에 product-marketing-context 참조 경로 포함
- [ ] 기존 섹션 구조 변경 없음 (diff 확인)
- [ ] 핵심 로직 섹션 변경 없음 확인

---

## Phase 3: description 라우팅 보강

**목표:** 전체 마케팅 스킬의 description에 "NOT for" / "For X, see Y-skill" 라우팅 패턴 추가.

**표준 라우팅 패턴:**
```yaml
description: "<기존 내용>. NOT for: <제외 케이스>(→ <target-skill> 스킬). NOT for: <제외 케이스>(→ <target-skill> 스킬)."
```

### 우선순위 1: 경계가 불명확한 스킬 쌍 (즉시 처리)

| 스킬 쌍 | 현재 문제 | 추가할 라우팅 |
|---------|-----------|--------------|
| ad-creative ↔ paid-ads | 광고 소재 vs 캠페인 전략 경계 불명확 | ad-creative: "NOT for: 캠페인 전략·예산 배분(→ paid-ads 스킬)" / paid-ads: "NOT for: 광고 소재·카피 작성(→ ad-creative 스킬)" |
| seo-audit ↔ programmatic-seo | SEO 진단 vs 대규모 페이지 생성 경계 불명확 | seo-audit: 이미 있음(확인) |
| social-content ↔ thread-architect | 소셜 전략 vs 트윗 스레드 경계 불명확 | social-content: "NOT for: 트윗 스레드 작성(→ thread-architect 스킬)" |
| ai-seo ↔ geo-optimizer | AI SEO vs GEO 경계 중복 | 각각 NOT for 추가 |
| copywriting ↔ copy-editing | 신규 카피 vs 기존 카피 편집 경계 | copywriting: "NOT for: 기존 카피 편집·개선(→ copy-editing 스킬)" |

### 우선순위 2: 핵심 8개 스킬 라우팅 보강

**대상:** ad-creative, copywriting, content-strategy, seo-audit, ai-seo, social-content, paid-ads, analytics-tracking

**각 스킬별 라우팅 추가 내용:**

| 스킬 | description에 추가할 라우팅 |
|------|---------------------------|
| ad-creative | NOT for: 캠페인 전략·예산·ROAS 최적화(→ paid-ads 스킬). NOT for: 소셜 미디어 콘텐츠 전략(→ social-content 스킬). |
| copywriting | 기존 "For email copy, see email-sequence" 등 라우팅 있음 → 확인 후 보강 |
| content-strategy | NOT for: 개별 콘텐츠 작성(→ copywriting 스킬). NOT for: 소셜 콘텐츠(→ social-content 스킬). NOT for: SEO 진단(→ seo-audit 스킬). |
| seo-audit | 기존 "For X, see Y" 라우팅 존재 → 확인 후 보강 |
| ai-seo | NOT for: GEO·AI 인용 최적화 심화(→ geo-optimizer 스킬). NOT for: 전통 SEO 감사(→ seo-audit 스킬). |
| social-content | NOT for: 트윗 스레드(→ thread-architect 스킬). NOT for: 네이버 블로그(→ naver-seo 스킬). |
| paid-ads | NOT for: 광고 소재·카피(→ ad-creative 스킬). NOT for: 전환 추적·GA4 설정(→ analytics-tracking 스킬). |
| analytics-tracking | NOT for: 광고 캠페인 전략(→ paid-ads 스킬). NOT for: RevOps·리드 스코어링(→ revops 스킬). |

### 우선순위 3: 나머지 마케팅 스킬 라우팅 보강

**대상 (23개 스킬):** copywriting-prompt, copy-editing, lead-magnets, email-sequence, cold-email, churn-prevention, revops, launch-strategy, marketing-ideas, marketing-psychology, referral-program, competitor-alternatives, free-tool-strategy, sales-enablement, programmatic-seo, schema-markup, site-architecture, blog-dominance, geo-optimizer, thread-architect, naver-seo, ab-test-setup, pricing-strategy

**공통 원칙:**
- 기존 description 내용 유지 (앞부분 변경 없음)
- description 끝에 "NOT for:" 패턴 추가
- 이미 "NOT for:" 있는 스킬(blog-dominance, geo-optimizer, naver-seo)은 기존 패턴 활용하여 표준화만 수행

**Phase 3 검증 기준:**
- [ ] 우선순위 1 스킬 쌍 라우팅 추가 완료
- [ ] 핵심 8개 스킬 라우팅 보강 완료
- [ ] YAML frontmatter 파싱 오류 없음
- [ ] 기존 description 내용 보존 확인 (앞부분 변경 없음)
- [ ] 라우팅 대상 스킬명 정확성 확인 (존재하는 스킬만 참조)

---

## Phase 4: 통합 검증

**목표:** Phase 1~3 모든 변경사항의 무결성과 일관성을 자동 검증 스크립트로 확인한다.

**검증 스크립트 경로:** `/home/jay/workspace/scripts/validate_marketing_upgrade.py`

**검증 항목 5개:**

### V1: evals.json 스키마 검증
- 대상: 8개 스킬의 evals/evals.json
- 확인 사항: skill_name 필드 존재, evals 배열 존재, 각 eval에 id/prompt/expected_output/assertions/files 필드 존재
- 판정: pass(전체 정상) / fail(필수 필드 누락) / warn(files 빈 배열 등 권고 위반)

### V2: description YAML frontmatter 유효성
- 대상: 변경된 모든 SKILL.md
- 확인 사항: YAML 파싱 가능, description 필드 존재, 따옴표 이스케이프 오류 없음
- 판정: pass / fail(파싱 불가) / warn(따옴표 미닫힘 등)

### V3: Before Starting 참조 존재 확인
- 대상: Phase 2 대상 4개 스킬 (blog-dominance, geo-optimizer, thread-architect, naver-seo)
- 확인 사항: "product-marketing-context" 문자열 포함 여부
- 판정: pass / fail(참조 없음)

### V4: 라우팅 패턴 일관성 검증
- 대상: Phase 3에서 라우팅 추가된 스킬
- 확인 사항: "→ <skill-name> 스킬" 패턴에서 skill-name이 실제 존재하는 스킬 디렉토리인지 확인
- 판정: pass / fail(존재하지 않는 스킬 참조) / warn(스킬명 대소문자 불일치)

### V5: 핵심 로직 섹션 변경 무결성
- 대상: 변경된 모든 SKILL.md
- 확인 사항: "Core Principles" / "Output Format" / "핵심 원칙" / "출력 형식" 섹션 내용이 백업과 동일
- 판정: pass / fail(내용 변경 감지)

**실행 명령:**
```bash
python /home/jay/workspace/scripts/validate_marketing_upgrade.py --target all
python /home/jay/workspace/scripts/validate_marketing_upgrade.py --target evals
python /home/jay/workspace/scripts/validate_marketing_upgrade.py --target context
python /home/jay/workspace/scripts/validate_marketing_upgrade.py --target routing
```

**회귀 테스트:**
- 정적 회귀: 검증 스크립트 실행 (즉시 가능)
- 동적 회귀: evals.json assertions 기반 LLM 실행 (별도 일정)
- 기준선 비교: `diff` 명령으로 백업 파일과 현재 파일 비교

**Phase 4 완료 기준:**
- [ ] validate_marketing_upgrade.py 모든 항목 pass 또는 warn
- [ ] fail 항목 없음
- [ ] 동적 회귀 테스트 계획 수립 완료 (실행 일정 확정)

---

## 파일 변경 요약

### 신규 생성 파일 (8개)
```
skills/ad-creative/evals/evals.json
skills/ai-seo/evals/evals.json
skills/social-content/evals/evals.json
skills/paid-ads/evals/evals.json
skills/analytics-tracking/evals/evals.json
scripts/validate_marketing_upgrade.py
```
(+ 백업 디렉토리: backups/marketing-upgrade-20260326/)

### 수정 파일 (Phase 2: 4개)
```
skills/blog-dominance/SKILL.md  (Before Starting 섹션 추가)
skills/geo-optimizer/SKILL.md   (Before Starting 섹션 추가)
skills/thread-architect/SKILL.md (Before Starting 섹션 추가)
skills/naver-seo/SKILL.md       (Before Starting 섹션 추가)
```

### 수정 파일 (Phase 3: 최대 31개)
```
skills/*/SKILL.md (description 라우팅 보강, 전체 마케팅 스킬)
```

### 변경 금지 파일
```
dispatch.py
team_prompts.py
org-details/*.json
skills/*/SKILL.md (Core Principles, Output Format 섹션)
skills/copywriting/evals/evals.json (기존 파일 변경 없음)
skills/seo-audit/evals/evals.json   (기존 파일 변경 없음)
skills/content-strategy/evals/evals.json (기존 파일 변경 없음)
```

---

*계획서 버전: 1.0 | task-1054.1*
