# GA Agent Project Plan (Revised)

## Architecture Overview

```
┌─────────────────────────────────────────────────────────────┐
│                     Infrastructure                           │
│  ┌──────────────┐  ┌──────────────┐  ┌──────────────────┐   │
│  │ GA4 MCP      │  │ BigQuery MCP │  │ Dimension Explorer│   │
│  │ (install)    │  │ (install)    │  │ (build - small)  │   │
│  └──────────────┘  └──────────────┘  └──────────────────┘   │
└─────────────────────────────────────────────────────────────┘
                              │
                              ▼
┌─────────────────────────────────────────────────────────────┐
│                     Claude Skill                             │
│  ┌──────────────────────────────────────────────────────┐   │
│  │ 15-ourdigital-ga-agent                                │   │
│  │ • Interactive analysis                                │   │
│  │ • Report generation                                   │   │
│  │ • Period comparisons                                  │   │
│  └──────────────────────────────────────────────────────┘   │
└─────────────────────────────────────────────────────────────┘
                              │
                              ▼
┌─────────────────────────────────────────────────────────────┐
│                  Standalone Services (Later)                 │
│  ┌────────────────────┐  ┌────────────────────────────┐     │
│  │ ga4-slack-reporter │  │ ga4-realtime-watcher       │     │
│  │ (Python service)   │  │ (defer or API-based)       │     │
│  └────────────────────┘  └────────────────────────────┘     │
└─────────────────────────────────────────────────────────────┘
```

---

## Components

| # | Component | Type | Priority | Effort |
|---|-----------|------|----------|--------|
| 1 | MCP Setup | Infrastructure | P0 | Low |
| 2 | ga-agent-skill | Claude Skill | P0 | Medium |
| 3 | dimension-explorer | MCP Server / CLI | P1 | Low |
| 4 | slack-reporter | Standalone Service | P2 | Medium |
| 5 | realtime-watcher | Standalone Service | P3 | High (defer) |

---

## Component 1: MCP Setup

**Location:** `01-mcp-setup/`

**Goal:** Install and configure existing MCP servers

### Tasks

- [ ] Google Cloud project setup
  - [ ] Enable Analytics Data API
  - [ ] Enable Analytics Admin API
  - [ ] Enable BigQuery API
- [ ] Service account creation
  - [ ] Create service account
  - [ ] Grant Analytics Viewer role
  - [ ] Grant BigQuery Data Viewer role
  - [ ] Download JSON key
- [ ] GA4 property access
  - [ ] Add service account to GA4 property
- [ ] Install GA4 MCP server
  - [ ] Clone `googleanalytics/google-analytics-mcp`
  - [ ] Configure credentials
  - [ ] Test connection
- [ ] Install BigQuery MCP server
  - [ ] Configure `@ergut/mcp-bigquery-server`
  - [ ] Verify GA4 export dataset access
- [ ] Add to Claude Code config
  - [ ] Update `~/.claude/mcp_servers.json`
  - [ ] Verify with `mcp-cli servers`

### Deliverables

- `01-mcp-setup/setup-guide.md` - Step-by-step instructions
- `01-mcp-setup/mcp-config.example.json` - Example MCP configuration
- Working MCP connections verified

---

## Component 2: GA Agent Skill (Core)

**Location:** `02-ga-agent-skill/` → Final: `ourdigital-custom-skills/15-ourdigital-ga-agent/`

**Goal:** Interactive GA4 analysis and reporting skill

### Features

| Feature | Description |
|---------|-------------|
| Traffic Analysis | Users, sessions, pageviews with trends |
| Period Comparison | WoW, MoM, YoY comparisons |
| Top Content | Pages, sources, campaigns |
| Report Generation | HTML/PDF reports |
| BigQuery Queries | Complex analysis on exported data |

### Triggers (EN/KR)

- "Analyze GA4 traffic" / "GA4 트래픽 분석"
- "Compare last week vs this week" / "지난주 대비 비교"
- "Generate traffic report" / "트래픽 리포트 생성"
- "Top landing pages" / "인기 랜딩 페이지"
- "Query BigQuery for GA data" / "BigQuery GA 데이터 조회"

### Structure

```
15-ourdigital-ga-agent/
├── SKILL.md
├── scripts/
│   ├── analyze_traffic.py
│   ├── compare_periods.py
│   ├── top_content.py
│   └── generate_report.py
├── templates/
│   └── report.html
├── references/
│   └── ga4-api-reference.md
└── examples/
    └── sample-queries.md
```

### Tasks

- [ ] Create SKILL.md with triggers
- [ ] Build analysis scripts
  - [ ] analyze_traffic.py
  - [ ] compare_periods.py
  - [ ] top_content.py
- [ ] Create report template
- [ ] Add examples
- [ ] Test with Claude Code
- [ ] Move to `ourdigital-custom-skills/15-ourdigital-ga-agent/`

---

## Component 3: Dimension Explorer

**Location:** `03-dimension-explorer/`

**Goal:** Validate GA4 dimensions/metrics with explanations

### Options

| Option | Pros | Cons |
|--------|------|------|
| **A. MCP Server** | Claude can use directly | More setup |
| **B. CLI Tool** | Simple, standalone | Manual invocation |
| **C. Reference JSON** | No code needed | Static, needs refresh |

**Recommendation:** Start with C (Reference JSON), upgrade to A (MCP Server) later

### Features

- List all available dimensions/metrics
- Validate if a dimension/metric exists
- Get description, data type, category
- Fuzzy search for typos
- Compatibility checking

### Structure

```
03-dimension-explorer/
├── README.md
├── fetch_metadata.py      # Script to refresh metadata
├── data/
│   ├── dimensions.json    # All dimensions with descriptions
│   └── metrics.json       # All metrics with descriptions
└── explorer.py            # CLI tool (optional)
```

### Tasks

- [ ] Fetch metadata from GA4 Admin API
- [ ] Structure as searchable JSON
- [ ] Create CLI explorer (optional)
- [ ] Document usage

---

## Component 4: Slack Reporter

**Location:** `04-slack-reporter/`

**Goal:** Automated GA4 reports to Slack

### Features

| Report | Schedule | Content |
|--------|----------|---------|
| Daily Summary | 9:00 AM | Users, sessions, top pages |
| Weekly Digest | Monday 9 AM | WoW comparison, trends |
| Anomaly Alert | Real-time | Traffic ±30% from baseline |

### Structure

```
04-slack-reporter/
├── README.md
├── config.yaml            # Schedules, channels, properties
├── reporter.py            # Main service
├── queries/
│   ├── daily_summary.py
│   ├── weekly_digest.py
│   └── anomaly_check.py
├── templates/
│   └── slack_blocks.py    # Slack Block Kit templates
├── requirements.txt
└── Dockerfile             # For deployment
```

### Tasks

- [ ] Create Slack App
- [ ] Build query functions
- [ ] Create Slack message templates
- [ ] Implement scheduler
- [ ] Add Docker deployment
- [ ] Document setup

---

## Component 5: Realtime Watcher (Deferred)

**Location:** `05-realtime-watcher/`

**Goal:** Real-time monitoring snapshots to Slack

**Status:** Deferred — revisit after components 1-4 complete

### Simplified Approach (API-based)

Instead of screenshots:
1. Fetch real-time data via GA4 Real-time API
2. Generate chart image with Plotly/Matplotlib
3. Send to Slack

### Structure (Future)

```
05-realtime-watcher/
├── README.md
├── realtime_api.py        # Fetch real-time data
├── chart_generator.py     # Generate chart images
├── watcher.py             # Main service
└── config.yaml
```

---

## Build Order

```
Phase 1: Foundation
├── [1] MCP Setup ←── START HERE
└── [2] GA Agent Skill (core)

Phase 2: Enhancements
├── [3] Dimension Explorer
└── [4] Slack Reporter

Phase 3: Advanced (Deferred)
└── [5] Realtime Watcher
```

---

## Environment Setup

### Required Credentials

```bash
# Google Cloud
GOOGLE_APPLICATION_CREDENTIALS=/path/to/service-account.json
GA4_PROPERTY_ID=123456789
BIGQUERY_PROJECT_ID=your-project

# Slack (for Component 4)
SLACK_BOT_TOKEN=xoxb-...
SLACK_CHANNEL_ID=C0123456789
```

### Python Dependencies

```
# Core (Components 1-3)
google-analytics-data>=0.18.0
google-cloud-bigquery>=3.12.0
google-auth>=2.23.0
pandas>=2.0.0

# Visualization
plotly>=5.18.0
jinja2>=3.1.0

# Slack Reporter (Component 4)
slack-sdk>=3.23.0
apscheduler>=3.10.0
pyyaml>=6.0
```

---

## Quick Start

```bash
# Navigate to project
cd /Users/ourdigital/Projects/claude-skills-factory/ga-agent-project

# Start with MCP setup
cat 01-mcp-setup/setup-guide.md
```
