gtm-autotag-mcp 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +170 -0
- package/dist/data/ga4-events.d.ts +24 -0
- package/dist/data/ga4-events.js +227 -0
- package/dist/data/page-heuristics.d.ts +46 -0
- package/dist/data/page-heuristics.js +251 -0
- package/dist/data/platform-mappings.d.ts +17 -0
- package/dist/data/platform-mappings.js +143 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +129 -0
- package/dist/services/container-compressor.d.ts +22 -0
- package/dist/services/container-compressor.js +111 -0
- package/dist/services/ecommerce-validator.d.ts +32 -0
- package/dist/services/ecommerce-validator.js +162 -0
- package/dist/services/gtm-api.d.ts +22 -0
- package/dist/services/gtm-api.js +317 -0
- package/dist/services/gtm-preview.d.ts +11 -0
- package/dist/services/gtm-preview.js +103 -0
- package/dist/services/page-analyzer.d.ts +5 -0
- package/dist/services/page-analyzer.js +93 -0
- package/dist/services/page-classifier.d.ts +10 -0
- package/dist/services/page-classifier.js +607 -0
- package/dist/services/playwright.d.ts +65 -0
- package/dist/services/playwright.js +173 -0
- package/dist/services/site-crawler.d.ts +16 -0
- package/dist/services/site-crawler.js +383 -0
- package/dist/services/spec-generator.d.ts +61 -0
- package/dist/services/spec-generator.js +224 -0
- package/dist/services/version-comparator.d.ts +41 -0
- package/dist/services/version-comparator.js +148 -0
- package/dist/tools/analyze-site-taxonomy.d.ts +95 -0
- package/dist/tools/analyze-site-taxonomy.js +52 -0
- package/dist/tools/bulk-verify.d.ts +69 -0
- package/dist/tools/bulk-verify.js +165 -0
- package/dist/tools/check-results.d.ts +28 -0
- package/dist/tools/check-results.js +112 -0
- package/dist/tools/classify-page.d.ts +19 -0
- package/dist/tools/classify-page.js +27 -0
- package/dist/tools/close-browser.d.ts +8 -0
- package/dist/tools/close-browser.js +12 -0
- package/dist/tools/compare-versions.d.ts +24 -0
- package/dist/tools/compare-versions.js +14 -0
- package/dist/tools/create-tracking.d.ts +55 -0
- package/dist/tools/create-tracking.js +200 -0
- package/dist/tools/detect-datalayer-schema.d.ts +23 -0
- package/dist/tools/detect-datalayer-schema.js +145 -0
- package/dist/tools/generate-tracking-spec.d.ts +45 -0
- package/dist/tools/generate-tracking-spec.js +28 -0
- package/dist/tools/get-tag-detail.d.ts +33 -0
- package/dist/tools/get-tag-detail.js +38 -0
- package/dist/tools/list-accounts.d.ts +48 -0
- package/dist/tools/list-accounts.js +52 -0
- package/dist/tools/publish-version.d.ts +49 -0
- package/dist/tools/publish-version.js +35 -0
- package/dist/tools/scan-container.d.ts +24 -0
- package/dist/tools/scan-container.js +32 -0
- package/dist/tools/scan-page.d.ts +12 -0
- package/dist/tools/scan-page.js +30 -0
- package/dist/tools/start-preview.d.ts +26 -0
- package/dist/tools/start-preview.js +24 -0
- package/dist/tools/validate-ecommerce.d.ts +26 -0
- package/dist/tools/validate-ecommerce.js +21 -0
- package/dist/tools/verify-tags.d.ts +42 -0
- package/dist/tools/verify-tags.js +88 -0
- package/dist/types/index.d.ts +86 -0
- package/dist/types/index.js +1 -0
- package/dist/types/taxonomy.d.ts +177 -0
- package/dist/types/taxonomy.js +2 -0
- package/dist/utils/gtm-debug-params.d.ts +1 -0
- package/dist/utils/gtm-debug-params.js +2 -0
- package/dist/utils/params-builder.d.ts +68 -0
- package/dist/utils/params-builder.js +155 -0
- package/package.json +46 -0
package/README.md
ADDED
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
# GTM AutoTag MCP
|
|
2
|
+
|
|
3
|
+
AI 에이전트(Claude Code, Cursor 등)에서 **Google Tag Manager 태그 설치/분석/검증을 자동화**하는 MCP 서버.
|
|
4
|
+
|
|
5
|
+
사이트 분석부터 태그 생성, 검증까지 전 과정을 자연어로 수행할 수 있습니다.
|
|
6
|
+
|
|
7
|
+
## Quick Start
|
|
8
|
+
|
|
9
|
+
### 1. Claude Code
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
claude mcp add gtm-autotag -- npx gtm-autotag-mcp
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
### 2. Cursor / VS Code
|
|
16
|
+
|
|
17
|
+
프로젝트 `.mcp.json` 추가:
|
|
18
|
+
|
|
19
|
+
```json
|
|
20
|
+
{
|
|
21
|
+
"mcpServers": {
|
|
22
|
+
"gtm-autotag": {
|
|
23
|
+
"command": "npx",
|
|
24
|
+
"args": ["gtm-autotag-mcp"]
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
### 3. 첫 실행 - Google 로그인
|
|
31
|
+
|
|
32
|
+
첫 실행 시 `list_accounts` 도구를 호출하면 브라우저가 열리며 Google 로그인을 요청합니다.
|
|
33
|
+
로그인 후 토큰이 `~/.gtm-autotag/token.json`에 저장되어 이후 자동 갱신됩니다.
|
|
34
|
+
|
|
35
|
+
> Playwright 브라우저가 필요합니다: `npx playwright install chromium`
|
|
36
|
+
|
|
37
|
+
## 제공 도구 (17개)
|
|
38
|
+
|
|
39
|
+
### 탐색
|
|
40
|
+
|
|
41
|
+
| 도구 | 설명 |
|
|
42
|
+
|------|------|
|
|
43
|
+
| `list_accounts` | GTM 계정/컨테이너/워크스페이스 목록 |
|
|
44
|
+
| `scan_container` | 컨테이너 태그/트리거/변수 압축 목록 |
|
|
45
|
+
| `get_tag_detail` | 태그 상세 (Custom HTML 본문 포함) |
|
|
46
|
+
| `scan_page` | 페이지 dataLayer + 인터랙티브 요소 분석 |
|
|
47
|
+
|
|
48
|
+
### 사이트 분석
|
|
49
|
+
|
|
50
|
+
| 도구 | 설명 |
|
|
51
|
+
|------|------|
|
|
52
|
+
| `classify_page` | 단일 페이지 유형 자동 분류 (상품상세/장바구니/결제 등) |
|
|
53
|
+
| `analyze_site_taxonomy` | 사이트 크롤링 → 페이지 유형 맵 + 퍼널 + 갭 분석 |
|
|
54
|
+
| `detect_datalayer_schema` | 여러 페이지 dataLayer 스키마 자동 추론 |
|
|
55
|
+
|
|
56
|
+
### 사양 생성
|
|
57
|
+
|
|
58
|
+
| 도구 | 설명 |
|
|
59
|
+
|------|------|
|
|
60
|
+
| `generate_tracking_spec` | 택소노미 → GA4/Meta/Kakao 추적 사양 자동 생성 |
|
|
61
|
+
| `validate_ecommerce` | GA4 Enhanced Ecommerce 데이터 스키마 검증 |
|
|
62
|
+
|
|
63
|
+
### 실행
|
|
64
|
+
|
|
65
|
+
| 도구 | 설명 |
|
|
66
|
+
|------|------|
|
|
67
|
+
| `create_tracking` | 태그/트리거/변수 생성 (clone/new/update 3모드 + 자동 롤백) |
|
|
68
|
+
| `publish_version` | 워크스페이스 → 버전 생성 + 게시 |
|
|
69
|
+
| `compare_versions` | 두 버전 간 변경사항 비교 |
|
|
70
|
+
|
|
71
|
+
### 검증
|
|
72
|
+
|
|
73
|
+
| 도구 | 설명 |
|
|
74
|
+
|------|------|
|
|
75
|
+
| `verify_tags` | GTM 미리보기 + 액션 수행 + Tag Assistant 결과 확인 |
|
|
76
|
+
| `bulk_verify` | 다중 페이지 x 다중 이벤트 검증 매트릭스 |
|
|
77
|
+
| `start_preview` | GTM 미리보기 모드 시작 |
|
|
78
|
+
| `check_results` | Tag Assistant 결과 확인 |
|
|
79
|
+
|
|
80
|
+
### 유틸리티
|
|
81
|
+
|
|
82
|
+
| 도구 | 설명 |
|
|
83
|
+
|------|------|
|
|
84
|
+
| `close_browser` | Playwright 브라우저 종료 |
|
|
85
|
+
|
|
86
|
+
## 워크플로우 예시
|
|
87
|
+
|
|
88
|
+
### "이 사이트 분석해줘"
|
|
89
|
+
|
|
90
|
+
```
|
|
91
|
+
analyze_site_taxonomy → 사이트 구조 + 페이지 유형 + 추적 갭 분석
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
### "태그 설치해줘"
|
|
95
|
+
|
|
96
|
+
```
|
|
97
|
+
1. list_accounts → 계정/컨테이너 확인
|
|
98
|
+
2. analyze_site_taxonomy → 사이트 구조 분석
|
|
99
|
+
3. detect_datalayer_schema → 기존 dataLayer 분석
|
|
100
|
+
4. generate_tracking_spec → 추적 사양 자동 생성
|
|
101
|
+
5. create_tracking → 태그/트리거/변수 생성
|
|
102
|
+
6. bulk_verify → 다중 페이지 검증
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
### "기존 태그 검증해줘"
|
|
106
|
+
|
|
107
|
+
```
|
|
108
|
+
bulk_verify → 페이지별 이벤트 pass/fail 매트릭스
|
|
109
|
+
validate_ecommerce → GA4 EEC 데이터 정확성 검증
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
## 인증 설정
|
|
113
|
+
|
|
114
|
+
### 기본 (설정 불필요)
|
|
115
|
+
|
|
116
|
+
내장 OAuth 클라이언트를 사용하여 별도 설정 없이 Google 로그인만으로 사용 가능합니다.
|
|
117
|
+
|
|
118
|
+
### 자체 OAuth 앱 사용 (선택)
|
|
119
|
+
|
|
120
|
+
Google Cloud Console에서 OAuth 클라이언트를 생성한 경우:
|
|
121
|
+
|
|
122
|
+
**방법 A: 환경변수**
|
|
123
|
+
|
|
124
|
+
```json
|
|
125
|
+
{
|
|
126
|
+
"mcpServers": {
|
|
127
|
+
"gtm-autotag": {
|
|
128
|
+
"command": "npx",
|
|
129
|
+
"args": ["gtm-autotag-mcp"],
|
|
130
|
+
"env": {
|
|
131
|
+
"GTM_AUTOTAG_CLIENT_ID": "your-client-id",
|
|
132
|
+
"GTM_AUTOTAG_CLIENT_SECRET": "your-client-secret"
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
**방법 B: credentials.json**
|
|
140
|
+
|
|
141
|
+
```bash
|
|
142
|
+
mkdir -p ~/.gtm-autotag
|
|
143
|
+
cp your-credentials.json ~/.gtm-autotag/credentials.json
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
## 지원 태그 타입
|
|
147
|
+
|
|
148
|
+
빌더 내장: `gaawe` (GA4 이벤트), `gaawc` (GA4 Config), `googtag` (Google Tag), `html` (Custom HTML), `awct` (Google Ads 전환), `awrmk` (Google Ads 리마케팅)
|
|
149
|
+
|
|
150
|
+
그 외 타입은 `parametersJson`으로 GTM API 원본 파라미터 직접 전달 가능.
|
|
151
|
+
|
|
152
|
+
## 요구 사항
|
|
153
|
+
|
|
154
|
+
- Node.js >= 18
|
|
155
|
+
- Chromium (`npx playwright install chromium`)
|
|
156
|
+
- GTM 편집 권한이 있는 Google 계정
|
|
157
|
+
|
|
158
|
+
## 개발
|
|
159
|
+
|
|
160
|
+
```bash
|
|
161
|
+
git clone https://github.com/madup-dct/FuncMVP.git
|
|
162
|
+
cd FuncMVP/gtm/gtm-autotag-mcp
|
|
163
|
+
npm install
|
|
164
|
+
npm run build
|
|
165
|
+
npm run dev # TypeScript watch 모드
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
## License
|
|
169
|
+
|
|
170
|
+
MIT
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GA4 권장 이벤트 레퍼런스
|
|
3
|
+
* https://developers.google.com/analytics/devguides/collection/ga4/reference/events
|
|
4
|
+
*/
|
|
5
|
+
export interface GA4EventSpec {
|
|
6
|
+
name: string;
|
|
7
|
+
category: "all" | "ecommerce" | "leadgen" | "engagement" | "search";
|
|
8
|
+
requiredParams: string[];
|
|
9
|
+
optionalParams: string[];
|
|
10
|
+
requiresItems: boolean;
|
|
11
|
+
requiredItemParams?: string[];
|
|
12
|
+
optionalItemParams?: string[];
|
|
13
|
+
applicableSiteTypes: string[];
|
|
14
|
+
funnelStage?: string;
|
|
15
|
+
}
|
|
16
|
+
export declare const GA4_RECOMMENDED_EVENTS: GA4EventSpec[];
|
|
17
|
+
/**
|
|
18
|
+
* 이커머스 전환 퍼널 순서
|
|
19
|
+
*/
|
|
20
|
+
export declare const ECOMMERCE_FUNNEL_ORDER: string[];
|
|
21
|
+
/**
|
|
22
|
+
* 페이지 유형 -> GA4 이벤트 매핑
|
|
23
|
+
*/
|
|
24
|
+
export declare const PAGE_TYPE_EVENT_MAP: Record<string, string[]>;
|
|
@@ -0,0 +1,227 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GA4 권장 이벤트 레퍼런스
|
|
3
|
+
* https://developers.google.com/analytics/devguides/collection/ga4/reference/events
|
|
4
|
+
*/
|
|
5
|
+
export const GA4_RECOMMENDED_EVENTS = [
|
|
6
|
+
// === 공통 이벤트 ===
|
|
7
|
+
{
|
|
8
|
+
name: "page_view",
|
|
9
|
+
category: "all",
|
|
10
|
+
requiredParams: [],
|
|
11
|
+
optionalParams: ["page_location", "page_referrer", "page_title"],
|
|
12
|
+
requiresItems: false,
|
|
13
|
+
applicableSiteTypes: ["ecommerce", "leadgen", "media", "saas", "content"],
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
name: "login",
|
|
17
|
+
category: "engagement",
|
|
18
|
+
requiredParams: [],
|
|
19
|
+
optionalParams: ["method"],
|
|
20
|
+
requiresItems: false,
|
|
21
|
+
applicableSiteTypes: ["ecommerce", "leadgen", "saas"],
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
name: "sign_up",
|
|
25
|
+
category: "engagement",
|
|
26
|
+
requiredParams: [],
|
|
27
|
+
optionalParams: ["method"],
|
|
28
|
+
requiresItems: false,
|
|
29
|
+
applicableSiteTypes: ["ecommerce", "leadgen", "saas"],
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
name: "search",
|
|
33
|
+
category: "search",
|
|
34
|
+
requiredParams: ["search_term"],
|
|
35
|
+
optionalParams: [],
|
|
36
|
+
requiresItems: false,
|
|
37
|
+
applicableSiteTypes: ["ecommerce", "leadgen", "media", "saas", "content"],
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
name: "share",
|
|
41
|
+
category: "engagement",
|
|
42
|
+
requiredParams: [],
|
|
43
|
+
optionalParams: ["method", "content_type", "item_id"],
|
|
44
|
+
requiresItems: false,
|
|
45
|
+
applicableSiteTypes: ["ecommerce", "media", "content"],
|
|
46
|
+
},
|
|
47
|
+
// === 이커머스 이벤트 ===
|
|
48
|
+
{
|
|
49
|
+
name: "view_item_list",
|
|
50
|
+
category: "ecommerce",
|
|
51
|
+
requiredParams: [],
|
|
52
|
+
optionalParams: ["item_list_id", "item_list_name"],
|
|
53
|
+
requiresItems: true,
|
|
54
|
+
requiredItemParams: ["item_id", "item_name"],
|
|
55
|
+
optionalItemParams: ["price", "quantity", "item_brand", "item_category", "item_variant", "index"],
|
|
56
|
+
applicableSiteTypes: ["ecommerce"],
|
|
57
|
+
funnelStage: "category",
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
name: "select_item",
|
|
61
|
+
category: "ecommerce",
|
|
62
|
+
requiredParams: [],
|
|
63
|
+
optionalParams: ["item_list_id", "item_list_name"],
|
|
64
|
+
requiresItems: true,
|
|
65
|
+
requiredItemParams: ["item_id", "item_name"],
|
|
66
|
+
optionalItemParams: ["price", "item_brand", "item_category"],
|
|
67
|
+
applicableSiteTypes: ["ecommerce"],
|
|
68
|
+
funnelStage: "category",
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
name: "view_item",
|
|
72
|
+
category: "ecommerce",
|
|
73
|
+
requiredParams: ["currency", "value"],
|
|
74
|
+
optionalParams: [],
|
|
75
|
+
requiresItems: true,
|
|
76
|
+
requiredItemParams: ["item_id", "item_name"],
|
|
77
|
+
optionalItemParams: ["price", "quantity", "item_brand", "item_category", "item_category2", "item_category3", "item_variant"],
|
|
78
|
+
applicableSiteTypes: ["ecommerce"],
|
|
79
|
+
funnelStage: "product_detail",
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
name: "add_to_cart",
|
|
83
|
+
category: "ecommerce",
|
|
84
|
+
requiredParams: ["currency", "value"],
|
|
85
|
+
optionalParams: [],
|
|
86
|
+
requiresItems: true,
|
|
87
|
+
requiredItemParams: ["item_id", "item_name"],
|
|
88
|
+
optionalItemParams: ["price", "quantity", "item_brand", "item_category"],
|
|
89
|
+
applicableSiteTypes: ["ecommerce"],
|
|
90
|
+
funnelStage: "cart",
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
name: "remove_from_cart",
|
|
94
|
+
category: "ecommerce",
|
|
95
|
+
requiredParams: ["currency", "value"],
|
|
96
|
+
optionalParams: [],
|
|
97
|
+
requiresItems: true,
|
|
98
|
+
requiredItemParams: ["item_id", "item_name"],
|
|
99
|
+
applicableSiteTypes: ["ecommerce"],
|
|
100
|
+
funnelStage: "cart",
|
|
101
|
+
},
|
|
102
|
+
{
|
|
103
|
+
name: "view_cart",
|
|
104
|
+
category: "ecommerce",
|
|
105
|
+
requiredParams: ["currency", "value"],
|
|
106
|
+
optionalParams: [],
|
|
107
|
+
requiresItems: true,
|
|
108
|
+
requiredItemParams: ["item_id", "item_name"],
|
|
109
|
+
optionalItemParams: ["price", "quantity"],
|
|
110
|
+
applicableSiteTypes: ["ecommerce"],
|
|
111
|
+
funnelStage: "cart",
|
|
112
|
+
},
|
|
113
|
+
{
|
|
114
|
+
name: "begin_checkout",
|
|
115
|
+
category: "ecommerce",
|
|
116
|
+
requiredParams: ["currency", "value"],
|
|
117
|
+
optionalParams: ["coupon"],
|
|
118
|
+
requiresItems: true,
|
|
119
|
+
requiredItemParams: ["item_id", "item_name"],
|
|
120
|
+
applicableSiteTypes: ["ecommerce"],
|
|
121
|
+
funnelStage: "checkout",
|
|
122
|
+
},
|
|
123
|
+
{
|
|
124
|
+
name: "add_shipping_info",
|
|
125
|
+
category: "ecommerce",
|
|
126
|
+
requiredParams: ["currency", "value"],
|
|
127
|
+
optionalParams: ["coupon", "shipping_tier"],
|
|
128
|
+
requiresItems: true,
|
|
129
|
+
requiredItemParams: ["item_id", "item_name"],
|
|
130
|
+
applicableSiteTypes: ["ecommerce"],
|
|
131
|
+
funnelStage: "checkout",
|
|
132
|
+
},
|
|
133
|
+
{
|
|
134
|
+
name: "add_payment_info",
|
|
135
|
+
category: "ecommerce",
|
|
136
|
+
requiredParams: ["currency", "value"],
|
|
137
|
+
optionalParams: ["coupon", "payment_type"],
|
|
138
|
+
requiresItems: true,
|
|
139
|
+
requiredItemParams: ["item_id", "item_name"],
|
|
140
|
+
applicableSiteTypes: ["ecommerce"],
|
|
141
|
+
funnelStage: "checkout",
|
|
142
|
+
},
|
|
143
|
+
{
|
|
144
|
+
name: "purchase",
|
|
145
|
+
category: "ecommerce",
|
|
146
|
+
requiredParams: ["transaction_id", "currency", "value"],
|
|
147
|
+
optionalParams: ["tax", "shipping", "coupon", "affiliation"],
|
|
148
|
+
requiresItems: true,
|
|
149
|
+
requiredItemParams: ["item_id", "item_name"],
|
|
150
|
+
optionalItemParams: ["price", "quantity", "item_brand", "item_category"],
|
|
151
|
+
applicableSiteTypes: ["ecommerce"],
|
|
152
|
+
funnelStage: "purchase_confirmation",
|
|
153
|
+
},
|
|
154
|
+
{
|
|
155
|
+
name: "refund",
|
|
156
|
+
category: "ecommerce",
|
|
157
|
+
requiredParams: ["transaction_id", "currency", "value"],
|
|
158
|
+
optionalParams: [],
|
|
159
|
+
requiresItems: false,
|
|
160
|
+
applicableSiteTypes: ["ecommerce"],
|
|
161
|
+
},
|
|
162
|
+
{
|
|
163
|
+
name: "view_promotion",
|
|
164
|
+
category: "ecommerce",
|
|
165
|
+
requiredParams: [],
|
|
166
|
+
optionalParams: ["creative_name", "creative_slot", "promotion_id", "promotion_name"],
|
|
167
|
+
requiresItems: true,
|
|
168
|
+
requiredItemParams: ["item_id", "item_name"],
|
|
169
|
+
applicableSiteTypes: ["ecommerce"],
|
|
170
|
+
},
|
|
171
|
+
{
|
|
172
|
+
name: "select_promotion",
|
|
173
|
+
category: "ecommerce",
|
|
174
|
+
requiredParams: [],
|
|
175
|
+
optionalParams: ["creative_name", "creative_slot", "promotion_id", "promotion_name"],
|
|
176
|
+
requiresItems: true,
|
|
177
|
+
requiredItemParams: ["item_id", "item_name"],
|
|
178
|
+
applicableSiteTypes: ["ecommerce"],
|
|
179
|
+
},
|
|
180
|
+
{
|
|
181
|
+
name: "add_to_wishlist",
|
|
182
|
+
category: "ecommerce",
|
|
183
|
+
requiredParams: ["currency", "value"],
|
|
184
|
+
optionalParams: [],
|
|
185
|
+
requiresItems: true,
|
|
186
|
+
requiredItemParams: ["item_id", "item_name"],
|
|
187
|
+
applicableSiteTypes: ["ecommerce"],
|
|
188
|
+
},
|
|
189
|
+
// === 리드 생성 ===
|
|
190
|
+
{
|
|
191
|
+
name: "generate_lead",
|
|
192
|
+
category: "leadgen",
|
|
193
|
+
requiredParams: [],
|
|
194
|
+
optionalParams: ["currency", "value"],
|
|
195
|
+
requiresItems: false,
|
|
196
|
+
applicableSiteTypes: ["leadgen", "saas"],
|
|
197
|
+
},
|
|
198
|
+
];
|
|
199
|
+
/**
|
|
200
|
+
* 이커머스 전환 퍼널 순서
|
|
201
|
+
*/
|
|
202
|
+
export const ECOMMERCE_FUNNEL_ORDER = [
|
|
203
|
+
"view_item_list",
|
|
204
|
+
"select_item",
|
|
205
|
+
"view_item",
|
|
206
|
+
"add_to_cart",
|
|
207
|
+
"view_cart",
|
|
208
|
+
"begin_checkout",
|
|
209
|
+
"add_shipping_info",
|
|
210
|
+
"add_payment_info",
|
|
211
|
+
"purchase",
|
|
212
|
+
];
|
|
213
|
+
/**
|
|
214
|
+
* 페이지 유형 -> GA4 이벤트 매핑
|
|
215
|
+
*/
|
|
216
|
+
export const PAGE_TYPE_EVENT_MAP = {
|
|
217
|
+
home: ["page_view"],
|
|
218
|
+
category: ["page_view", "view_item_list", "select_item"],
|
|
219
|
+
product_list: ["page_view", "view_item_list", "select_item"],
|
|
220
|
+
product_detail: ["page_view", "view_item", "add_to_cart", "add_to_wishlist"],
|
|
221
|
+
cart: ["page_view", "view_cart", "remove_from_cart"],
|
|
222
|
+
checkout: ["page_view", "begin_checkout", "add_shipping_info", "add_payment_info"],
|
|
223
|
+
purchase_confirmation: ["page_view", "purchase"],
|
|
224
|
+
login: ["page_view", "login"],
|
|
225
|
+
registration: ["page_view", "sign_up"],
|
|
226
|
+
search_results: ["page_view", "search", "view_item_list", "select_item"],
|
|
227
|
+
};
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 페이지 분류 휴리스틱 규칙
|
|
3
|
+
* 다중 신호 스코어링 기반 페이지 유형 분류
|
|
4
|
+
*/
|
|
5
|
+
import { PageType } from "../types/taxonomy.js";
|
|
6
|
+
export interface URLRule {
|
|
7
|
+
patterns: RegExp[];
|
|
8
|
+
pageType: PageType;
|
|
9
|
+
weight: number;
|
|
10
|
+
}
|
|
11
|
+
export declare const URL_RULES: URLRule[];
|
|
12
|
+
export interface CTARule {
|
|
13
|
+
patterns: RegExp[];
|
|
14
|
+
functionType: string;
|
|
15
|
+
weight: number;
|
|
16
|
+
}
|
|
17
|
+
export declare const CTA_RULES: CTARule[];
|
|
18
|
+
export interface FormFieldRule {
|
|
19
|
+
patterns: RegExp[];
|
|
20
|
+
semanticType: string;
|
|
21
|
+
}
|
|
22
|
+
export declare const FORM_FIELD_RULES: FormFieldRule[];
|
|
23
|
+
export interface FormPurposeRule {
|
|
24
|
+
requiredFields: string[];
|
|
25
|
+
excludeFields?: string[];
|
|
26
|
+
purpose: string;
|
|
27
|
+
confidence: number;
|
|
28
|
+
}
|
|
29
|
+
export declare const FORM_PURPOSE_RULES: FormPurposeRule[];
|
|
30
|
+
export declare const PRICE_PATTERNS: RegExp[];
|
|
31
|
+
export declare const PRODUCT_SELECTORS: {
|
|
32
|
+
price: string[];
|
|
33
|
+
image: string[];
|
|
34
|
+
name: string[];
|
|
35
|
+
variant: string[];
|
|
36
|
+
};
|
|
37
|
+
export declare const CART_SELECTORS: {
|
|
38
|
+
quantity: string[];
|
|
39
|
+
total: string[];
|
|
40
|
+
remove: string[];
|
|
41
|
+
};
|
|
42
|
+
export declare const CHECKOUT_SELECTORS: {
|
|
43
|
+
payment: string[];
|
|
44
|
+
address: string[];
|
|
45
|
+
orderSummary: string[];
|
|
46
|
+
};
|