sppurt 0.0.0-stage → 0.6.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 +109 -2
- package/dist/cli.js +2 -0
- package/dist/dashboard-ui/assets/SupplyChainCanvas-7QWuKZkc.js +1 -0
- package/dist/dashboard-ui/assets/index-DDMobcDz.css +1 -0
- package/dist/dashboard-ui/assets/index-idYPQJpm.js +809 -0
- package/dist/dashboard-ui/favicons/29cm.co.kr.png +0 -0
- package/dist/dashboard-ui/favicons/aliexpress.com.png +0 -0
- package/dist/dashboard-ui/favicons/amazon.com.png +0 -0
- package/dist/dashboard-ui/favicons/apify.com.png +0 -0
- package/dist/dashboard-ui/favicons/argo.camp.png +0 -0
- package/dist/dashboard-ui/favicons/boxhero.io.png +0 -0
- package/dist/dashboard-ui/favicons/bronte.co.kr.png +0 -0
- package/dist/dashboard-ui/favicons/cafe24.com.png +0 -0
- package/dist/dashboard-ui/favicons/cjdropshipping.com.png +0 -0
- package/dist/dashboard-ui/favicons/claude.ai.png +0 -0
- package/dist/dashboard-ui/favicons/coupang.com.png +0 -0
- package/dist/dashboard-ui/favicons/datalab.naver.com.png +0 -0
- package/dist/dashboard-ui/favicons/domeggook.com.png +0 -0
- package/dist/dashboard-ui/favicons/domeme.com.png +0 -0
- package/dist/dashboard-ui/favicons/domeme.domeggook.com.png +0 -0
- package/dist/dashboard-ui/favicons/ecount.com.png +0 -0
- package/dist/dashboard-ui/favicons/ezadmin.co.kr.png +0 -0
- package/dist/dashboard-ui/favicons/fallback.svg +1 -0
- package/dist/dashboard-ui/favicons/hwahae.com.png +0 -0
- package/dist/dashboard-ui/favicons/ksystem.co.kr.png +0 -0
- package/dist/dashboard-ui/favicons/kurly.com.png +0 -0
- package/dist/dashboard-ui/favicons/mail.google.com.ico +0 -0
- package/dist/dashboard-ui/favicons/meta.com.jpg +0 -0
- package/dist/dashboard-ui/favicons/musinsa.com.png +0 -0
- package/dist/dashboard-ui/favicons/oliveyoung.co.kr.png +0 -0
- package/dist/dashboard-ui/favicons/onewms.co.kr.png +0 -0
- package/dist/dashboard-ui/favicons/openai.com.png +0 -0
- package/dist/dashboard-ui/favicons/openclaw.ai.png +0 -0
- package/dist/dashboard-ui/favicons/plto.com.png +0 -0
- package/dist/dashboard-ui/favicons/poomgo.co.kr.ico +0 -0
- package/dist/dashboard-ui/favicons/qoo10.jp.png +0 -0
- package/dist/dashboard-ui/favicons/sabangnet.co.kr.png +0 -0
- package/dist/dashboard-ui/favicons/say-go.co.kr.png +0 -0
- package/dist/dashboard-ui/favicons/searchad.naver.com.png +0 -0
- package/dist/dashboard-ui/favicons/shopify.com.png +0 -0
- package/dist/dashboard-ui/favicons/shopping.naver.com.ico +0 -0
- package/dist/dashboard-ui/favicons/smartstore.ico +0 -0
- package/dist/dashboard-ui/favicons/sources.json +170 -0
- package/dist/dashboard-ui/favicons/specialoffer.co.kr.png +0 -0
- package/dist/dashboard-ui/favicons/ssfshop.com.png +0 -0
- package/dist/dashboard-ui/favicons/toss.im.png +0 -0
- package/dist/dashboard-ui/favicons/wconcept.co.kr.ico +0 -0
- package/dist/dashboard-ui/favicons/wehago.com.png +0 -0
- package/dist/dashboard-ui/favicons/zigzag.kr.png +0 -0
- package/dist/dashboard-ui/index.html +13 -0
- package/dist/skills/README.md +104 -0
- package/dist/skills/cost-calc/SKILL.md +104 -0
- package/dist/skills/cost-calc/agents/openai.yaml +8 -0
- package/dist/skills/cost-register/SKILL.md +116 -0
- package/dist/skills/daily-report/SKILL.md +80 -0
- package/dist/skills/daily-report/agents/openai.yaml +8 -0
- package/dist/skills/dashboard/SKILL.md +50 -0
- package/dist/skills/dashboard/agents/openai.yaml +8 -0
- package/dist/skills/inventory-sync/SKILL.md +85 -0
- package/dist/skills/inventory-sync/agents/openai.yaml +8 -0
- package/dist/skills/order-collect/SKILL.md +132 -0
- package/dist/skills/order-collect/agents/openai.yaml +8 -0
- package/dist/skills/order-fulfill/SKILL.md +97 -0
- package/dist/skills/order-fulfill/agents/openai.yaml +8 -0
- package/dist/skills/policy-ask/SKILL.md +52 -0
- package/dist/skills/price-monitor/SKILL.md +103 -0
- package/dist/skills/price-monitor/agents/openai.yaml +8 -0
- package/dist/skills/product-parse/SKILL.md +233 -0
- package/dist/skills/product-parse/agents/openai.yaml +8 -0
- package/dist/skills/product-sync/SKILL.md +85 -0
- package/dist/skills/product-sync/agents/openai.yaml +8 -0
- package/dist/skills/settlement-deposit/SKILL.md +88 -0
- package/dist/skills/settlement-report/SKILL.md +121 -0
- package/dist/skills/settlement-report/agents/openai.yaml +8 -0
- package/dist/skills/shopport/SKILL.md +123 -0
- package/dist/skills/shopport/agents/openai.yaml +8 -0
- package/dist/skills/source-to-register/SKILL.md +92 -0
- package/dist/skills/source-to-register/agents/openai.yaml +8 -0
- package/dist/skills/sppt/SKILL.md +234 -0
- package/dist/skills/sppt/agents/openai.yaml +8 -0
- package/dist/skills/sppurt/SKILL.md +234 -0
- package/dist/skills/sppurt/agents/openai.yaml +8 -0
- package/dist/skills/status-check/SKILL.md +78 -0
- package/dist/skills/status-check/agents/openai.yaml +8 -0
- package/dist/skills/trend-research/SKILL.md +79 -0
- package/dist/skills/trend-research/agents/openai.yaml +8 -0
- package/dist/skills/update/SKILL.md +83 -0
- package/dist/skills/waterfall-source/SKILL.md +80 -0
- package/dist/skills/waterfall-source/agents/openai.yaml +8 -0
- package/dist/skills/weekly-analysis/SKILL.md +84 -0
- package/dist/skills/weekly-analysis/agents/openai.yaml +8 -0
- package/package.json +60 -5
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: sppt-status-check
|
|
3
|
+
description: |
|
|
4
|
+
전채널 연결 상태 + API 건강 체크 + 스토어 브리핑.
|
|
5
|
+
Use when asked to "상태 확인", "채널 연결 돼있어?", "헬스체크", "지금 상황 알려줘".
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# status-check
|
|
9
|
+
|
|
10
|
+
전체 채널 연결 상태를 점검하고 스토어 운영 현황을 브리핑하는 워크플로우.
|
|
11
|
+
|
|
12
|
+
## When to use
|
|
13
|
+
|
|
14
|
+
- "지금 상태 어때?", "채널 다 연결돼있어?", "헬스체크 해줘"
|
|
15
|
+
- 작업 시작 전 환경 점검
|
|
16
|
+
- 오류 발생 후 연결 상태 진단
|
|
17
|
+
|
|
18
|
+
## Steps
|
|
19
|
+
|
|
20
|
+
### 1. 채널 연결 상태
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
sppt status
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
각 판매/소싱 채널의 연결 상태, 토큰 만료 여부, API 레이턴시를 확인합니다.
|
|
27
|
+
|
|
28
|
+
### 2. 스토어 브리핑
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
sppt context
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
AI용 스토어 정보를 확인합니다:
|
|
35
|
+
- 스토어 프로필 (브랜드, 포지셔닝)
|
|
36
|
+
- 상품 분류 규칙
|
|
37
|
+
- 판매 인사이트
|
|
38
|
+
|
|
39
|
+
### 3. API 기능 현황
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
sppt cap
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
채널별로 어떤 API 기능이 사용 가능한지 확인합니다.
|
|
46
|
+
|
|
47
|
+
### 4. API 사용량
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
sppt budget
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
채널별 API 호출량과 한도를 확인합니다.
|
|
54
|
+
|
|
55
|
+
### 5. 진단 결과 요약
|
|
56
|
+
|
|
57
|
+
```
|
|
58
|
+
🏥 Sppurt 헬스체크
|
|
59
|
+
────────────────────────────────────
|
|
60
|
+
채널 상태 토큰 레이턴시
|
|
61
|
+
cafe24 ✅ 유효 120ms
|
|
62
|
+
coupang ✅ 유효 85ms
|
|
63
|
+
smartstore ⚠️ 만료임박 200ms
|
|
64
|
+
shopify ❌ 미설정 -
|
|
65
|
+
────────────────────────────────────
|
|
66
|
+
소싱 채널: domeggook ✅ | specialoffer ✅
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
문제가 있는 채널은 해결 방법을 안내합니다:
|
|
70
|
+
- 토큰 만료 → `sppt auth <channel>`
|
|
71
|
+
- 미설정 → `sppt init <channel>`
|
|
72
|
+
- 레이턴시 높음 → API 상태 모니터링 권장
|
|
73
|
+
|
|
74
|
+
## Notes
|
|
75
|
+
|
|
76
|
+
- 작업 시작 전 `sppt status` 습관화 권장
|
|
77
|
+
- cafe24 토큰은 2시간마다 자동 갱신됩니다
|
|
78
|
+
- `--json` 플래그로 프로그래밍적 활용 가능
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: sppt-trend-research
|
|
3
|
+
description: |
|
|
4
|
+
트렌드 키워드 리서치 — 검색량 조회, 키워드 비교, 전문몰 랭킹.
|
|
5
|
+
Use when asked to "트렌드 확인", "키워드 검색량", "뭐가 잘 팔려", "시장 조사".
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# trend-research
|
|
9
|
+
|
|
10
|
+
트렌드 키워드를 리서치하고 시장 수요를 파악하는 워크플로우.
|
|
11
|
+
|
|
12
|
+
## When to use
|
|
13
|
+
|
|
14
|
+
- "이 키워드 검색량 어때?", "뭐가 잘 팔려?", "트렌드 분석해줘"
|
|
15
|
+
- 신규 상품 소싱 전 수요 확인
|
|
16
|
+
- 키워드 간 비교가 필요할 때
|
|
17
|
+
- 전문몰(무신사, 올리브영 등) 랭킹 확인
|
|
18
|
+
|
|
19
|
+
## Prerequisites
|
|
20
|
+
|
|
21
|
+
- `sppt` CLI 설치 완료
|
|
22
|
+
|
|
23
|
+
## Steps
|
|
24
|
+
|
|
25
|
+
### 1. 키워드 검색량 조회
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
sppt trend keyword <키워드>
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
네이버 데이터랩 기반 검색량 + 트렌드 방향을 확인합니다.
|
|
32
|
+
|
|
33
|
+
판단 기준:
|
|
34
|
+
| 월 검색량 | 수요 |
|
|
35
|
+
|---|---|
|
|
36
|
+
| 10,000+ | 높음 — 경쟁도 높을 수 있음 |
|
|
37
|
+
| 1,000~10,000 | 적정 — 니치 시장 가능성 |
|
|
38
|
+
| 1,000 미만 | 낮음 — 틈새 or 비인기 |
|
|
39
|
+
|
|
40
|
+
### 2. 키워드 비교
|
|
41
|
+
|
|
42
|
+
후보 키워드가 여러 개일 때 상대 비교:
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
sppt trend compare <키워드1> <키워드2> [키워드3]
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
검색량, 트렌드 방향, 경쟁강도를 비교합니다.
|
|
49
|
+
|
|
50
|
+
### 3. 전문몰 랭킹 확인
|
|
51
|
+
|
|
52
|
+
특정 카테고리의 전문몰 인기 상품을 확인합니다:
|
|
53
|
+
|
|
54
|
+
```bash
|
|
55
|
+
sppt trend platform musinsa
|
|
56
|
+
sppt trend platform oliveyoung
|
|
57
|
+
sppt trend platform hwahae
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
지원 플랫폼: 무신사, 올리브영, 화해 등
|
|
61
|
+
|
|
62
|
+
### 4. 결과 종합
|
|
63
|
+
|
|
64
|
+
사용자에게 다음을 제안합니다:
|
|
65
|
+
|
|
66
|
+
1. **검색량 충분 + 상승 트렌드**: 소싱 적기 → `/sppt-source-to-register`로 진행
|
|
67
|
+
2. **검색량 충분 + 하락 트렌드**: 재고 리스크 있음, 소량 테스트 권장
|
|
68
|
+
3. **검색량 부족**: 키워드 변경 또는 연관 키워드로 확장
|
|
69
|
+
|
|
70
|
+
## Error handling
|
|
71
|
+
|
|
72
|
+
- **검색량 데이터 없음**: 키워드 오타 확인, 영문/한글 변환 시도
|
|
73
|
+
- **전문몰 데이터 실패**: 해당 플랫폼 API 상태 확인
|
|
74
|
+
|
|
75
|
+
## Notes
|
|
76
|
+
|
|
77
|
+
- 네이버 데이터랩은 상대값 기반이므로 절대 검색량은 추정치입니다
|
|
78
|
+
- 시즌 상품은 전년 동기 대비 확인 권장
|
|
79
|
+
- 소싱 전 트렌드 확인은 재고 리스크를 줄이는 핵심 단계입니다
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: sppt-update
|
|
3
|
+
description: |
|
|
4
|
+
Sppurt CLI 버전 업데이트 + 릴리즈 노트 확인.
|
|
5
|
+
Use when asked to "업데이트", "최신 버전", "sppt update", "버전 올려줘", "새 버전 있어?".
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# update
|
|
9
|
+
|
|
10
|
+
Sppurt CLI를 최신 버전으로 업데이트하고 변경사항을 확인하는 워크플로우.
|
|
11
|
+
|
|
12
|
+
## When to use
|
|
13
|
+
|
|
14
|
+
- "업데이트 해줘", "최신 버전으로 올려줘"
|
|
15
|
+
- "새 버전 나왔어?", "지금 몇 버전이야?"
|
|
16
|
+
- 스킬이 안 되거나 새 커맨드가 없을 때
|
|
17
|
+
|
|
18
|
+
## Steps
|
|
19
|
+
|
|
20
|
+
### 1. 현재 버전 확인
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
sppt --version
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
### 2. 최신 버전 확인
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
npm view sppurt version
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
현재 버전과 최신 버전을 비교합니다.
|
|
33
|
+
- 같으면 → "이미 최신 버전입니다" 안내 후 종료
|
|
34
|
+
- 다르면 → 3단계로 진행
|
|
35
|
+
|
|
36
|
+
### 3. 업데이트 실행
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
npm update -g sppurt
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
설치 시 `postinstall` 훅이 자동으로 `setup-skills`를 실행하여 새 스킬도 함께 등록됩니다.
|
|
43
|
+
|
|
44
|
+
### 4. 업데이트 확인
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
sppt --version
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
버전이 올라갔는지 확인합니다.
|
|
51
|
+
|
|
52
|
+
### 5. 릴리즈 노트 확인
|
|
53
|
+
|
|
54
|
+
```bash
|
|
55
|
+
gh release view v<최신버전> --repo onlymytho/sppurt
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
주요 변경사항을 사용자에게 요약해줍니다:
|
|
59
|
+
- 새로 추가된 기능/스킬
|
|
60
|
+
- 버그 수정 사항
|
|
61
|
+
- Breaking changes (있는 경우)
|
|
62
|
+
|
|
63
|
+
## 결과 요약 형식
|
|
64
|
+
|
|
65
|
+
```
|
|
66
|
+
📦 Sppurt 업데이트 완료
|
|
67
|
+
────────────────────────────────────
|
|
68
|
+
이전 버전: v0.2.4
|
|
69
|
+
현재 버전: v0.3.0
|
|
70
|
+
────────────────────────────────────
|
|
71
|
+
주요 변경:
|
|
72
|
+
• 정산 엔진 대폭 강화 (채널×PG 분리 계산)
|
|
73
|
+
• 알림 체계 구축
|
|
74
|
+
• 새 스킬: /sppt-policy-ask
|
|
75
|
+
────────────────────────────────────
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
## Notes
|
|
79
|
+
|
|
80
|
+
- 기존 `shopport` 패키지 사용자라면 한 번 `npm uninstall -g shopport` 후 `npm install -g sppurt`를 실행하세요. `sppt` 명령과 기존 사용자 데이터는 유지됩니다.
|
|
81
|
+
- `npm update -g`가 안 되면 `npm install -g sppurt@latest`로 시도
|
|
82
|
+
- 권한 오류 시 `sudo npm update -g sppurt` 또는 nvm/volta 사용 권장
|
|
83
|
+
- 업데이트 후 스킬이 갱신되지 않으면 `sppt setup-skills` 수동 실행
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: sppt-waterfall-source
|
|
3
|
+
description: |
|
|
4
|
+
3개 소싱 채널(도매매→specialoffer→cjdropshipping) 워터폴 가격 비교.
|
|
5
|
+
Use when asked to "가장 싼 공급사 찾아줘", "소싱 비교", "최적 소싱처".
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# waterfall-source
|
|
9
|
+
|
|
10
|
+
3개 소싱 채널을 비용 낮은 순서대로 검색하는 워터폴 소싱 워크플로우.
|
|
11
|
+
|
|
12
|
+
## When to use
|
|
13
|
+
|
|
14
|
+
- 사용자가 "가장 싼 공급사 찾아줘", "최적 소싱처 검색", "소싱 비교해줘" 같은 요청을 할 때
|
|
15
|
+
- 여러 소싱 채널에서 동일 상품의 가격/조건을 비교할 때
|
|
16
|
+
|
|
17
|
+
## Prerequisites
|
|
18
|
+
|
|
19
|
+
- 최소 2개 이상 소싱 채널 설정
|
|
20
|
+
- `sppt config list`로 소싱 채널 확인
|
|
21
|
+
|
|
22
|
+
## Steps
|
|
23
|
+
|
|
24
|
+
### 1. 워터폴 검색 실행
|
|
25
|
+
|
|
26
|
+
`--waterfall` 플래그로 3채널을 자동으로 순서대로 검색합니다.
|
|
27
|
+
|
|
28
|
+
**비용 절약 모드 (기본)** — 첫 유효 결과에서 중단:
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
sppt source search domeggook "<keyword>" --waterfall --strategy first
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
**최적 품질 모드** — 3채널 전부 검색 후 스코어 비교:
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
sppt source search domeggook "<keyword>" --waterfall --strategy best
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
워터폴 순서: domeggook(도매매) → specialoffer → cjdropshipping (비용 오름차순)
|
|
41
|
+
|
|
42
|
+
결과에는 각 상품의 마진율과 종합 스코어(마진 40% + 재고유연성 30% + 공급사신뢰도 30%)가 표시됩니다.
|
|
43
|
+
|
|
44
|
+
### 2. 상세 조회
|
|
45
|
+
|
|
46
|
+
워터폴 결과에서 선택한 상품의 상세 정보를 확인합니다:
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
sppt source detail <channel> <productId>
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
### 3. 결과 요약
|
|
53
|
+
|
|
54
|
+
사용자에게 채널별 비교 결과를 표로 정리합니다:
|
|
55
|
+
|
|
56
|
+
```
|
|
57
|
+
워터폴 소싱 결과: "키워드"
|
|
58
|
+
검색 채널: 도매매, specialoffer, cjdropshipping 캐시 히트: 0 API 호출: 2 결과: 8건
|
|
59
|
+
|
|
60
|
+
채널 상품명 도매가 마진 스코어
|
|
61
|
+
도매매 상품A 8,500원 32% 78/100
|
|
62
|
+
specialoffer 상품B 9,200원 28% 71/100
|
|
63
|
+
cjdropshipping 상품C 7,150원 35% 65/100
|
|
64
|
+
─────────────────────────────────────
|
|
65
|
+
추천: 도매매 — 상품A (스코어 1위)
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
## Error handling
|
|
69
|
+
|
|
70
|
+
- **전체 채널 검색 실패**: 키워드를 변경하거나 영문으로 검색 시도
|
|
71
|
+
- **도매매 일일 한도 초과**: CLI가 자동으로 다음 채널로 진행
|
|
72
|
+
- **Rate limit**: CLI의 rate limiter가 자동 처리하므로 대기
|
|
73
|
+
|
|
74
|
+
## Notes
|
|
75
|
+
|
|
76
|
+
- `--strategy first` (기본): 첫 유효 결과에서 중단 — API 호출 최소화
|
|
77
|
+
- `--strategy best`: 전체 검색 후 스코어 기반 최적 선택
|
|
78
|
+
- 검색 결과는 2시간 캐시됨 — 같은 키워드 재검색 시 캐시 반환
|
|
79
|
+
- CJ Dropshipping USD 가격은 기본 환율(1,380원) 또는 `--usd-krw N`으로 지정
|
|
80
|
+
- 공급사 신뢰도 스코어는 `order score record`로 쌓인 실데이터 기반
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: sppt-weekly-analysis
|
|
3
|
+
description: |
|
|
4
|
+
전주 대비 매출 변화 원인 분석 + 채널 수수료 최적화 컨설팅 워크플로우.
|
|
5
|
+
Use when asked to "주간 분석", "왜 매출이 줄었어", "채널별 원인 분석", "지난 주 비교",
|
|
6
|
+
"매출이익률 분석", "수수료율 변화", "원인 분석해줘".
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# weekly-analysis
|
|
10
|
+
|
|
11
|
+
## 채널 분류 컨텍스트
|
|
12
|
+
|
|
13
|
+
`channelMeta` 응답의 각 채널에는 `type`(own-mall/open-market/vertical-specialist), `entryRequirement`(open/contract), `hasChannelBrandValue`가 정의되어 있다.
|
|
14
|
+
|
|
15
|
+
**수수료 최적화 시 주의:**
|
|
16
|
+
- `entryRequirement: "contract"` 채널은 계약 관계이므로 단순 수수료 비교로 비중 축소를 권고하면 안 된다.
|
|
17
|
+
- `hasChannelBrandValue: true` 채널은 높은 수수료에 마케팅·브랜딩·노출 가치가 포함된다.
|
|
18
|
+
- 채널 간 이동보다 **같은 채널 내 최적화**(유입경로, 단가, 프로모션)가 실행 가능성이 높다.
|
|
19
|
+
|
|
20
|
+
## Data Collection
|
|
21
|
+
|
|
22
|
+
커맨드 **1회**로 모든 데이터를 가져옵니다:
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
sppt report weekly --json
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
옵션:
|
|
29
|
+
- `--period 7d` (기본값) — 채널/상품 비교 기간
|
|
30
|
+
- `--top 10` (기본값) — 채널/상품 표시 개수
|
|
31
|
+
- `--settlement-days 30` (기본값) — 정산 집계 기간
|
|
32
|
+
|
|
33
|
+
응답 구조:
|
|
34
|
+
- `channelMeta` — 채널 특성 (type/entryRequirement/hasChannelBrandValue)
|
|
35
|
+
- `channelFees` — 채널별 수수료 전체 (유입경로별 포함)
|
|
36
|
+
- `reportByChannel` — 채널별 현재/전주 비교 + diff
|
|
37
|
+
- `reportByProduct` — 상품별 현재/전주 비교 + diff (top 10)
|
|
38
|
+
- `settlement` — 채널별 정산 요약 (매출/수수료/순수익/실효수수료율)
|
|
39
|
+
- `costs` — SKU별 원가 목록 (미등록 시 null)
|
|
40
|
+
|
|
41
|
+
## Analysis Steps
|
|
42
|
+
|
|
43
|
+
### Step 1: 채널 수수료율 분석
|
|
44
|
+
|
|
45
|
+
1. **채널별 수수료율 랭킹** — 채널 분류(자사몰/오픈마켓/버티컬)와 함께 표시. 표본 < 5건은 신뢰도 낮음 표기.
|
|
46
|
+
2. **실효수수료율** = Σ(채널_비중 × 채널_수수료율), 오픈마켓 채널 간 비중과 버티컬 채널 비중을 분리해서 보여줌.
|
|
47
|
+
3. **스마트스토어 유입경로 분석** — `fee list smartstore` 결과로 마케팅링크 유입 비중이 실효율에 미치는 영향 추정. 규칙 미등록 시 annualRevenue/브랜드스토어 여부에 따른 오차 가능성 언급.
|
|
48
|
+
4. **오픈마켓 내 믹스 최적화** — smartstore ↔ cafe24 비중 이동 시 절감 효과. 버티컬 채널은 별도 분석.
|
|
49
|
+
5. **집중 리스크** — 단일 채널 비중 > 70% 경고. 단, 버티컬 채널의 비중 감소는 리스크가 아닌 채널 특성으로 해석.
|
|
50
|
+
6. **전주 대비 변화** (데이터 있을 때만) — 채널믹스 효과 vs 채널내 수수료율 변화로 분해.
|
|
51
|
+
|
|
52
|
+
### Step 2: 채널별 매출 변화 분해
|
|
53
|
+
|
|
54
|
+
`reportByChannel.diff` 배열에서 직접 읽는다.
|
|
55
|
+
|
|
56
|
+
- 채널별 매출 증감, volumeEffect / priceEffect 요약
|
|
57
|
+
- 채널 점유율 변화 (이전주 비중 → 이번주 비중)
|
|
58
|
+
|
|
59
|
+
### Step 3: Top Mover 상품 귀속
|
|
60
|
+
|
|
61
|
+
`reportByProduct.diff` 배열 상위 항목을 채널 변화에 귀속시킨다.
|
|
62
|
+
|
|
63
|
+
- 매출 변화 상위 5개 상품: revenueChange, volumeDiff%, priceDiff%
|
|
64
|
+
- 특이값 (신규 등장 또는 완전 소멸 상품) 별도 언급
|
|
65
|
+
|
|
66
|
+
### Step 4: 공헌이익률 분석 (원가 있을 때만)
|
|
67
|
+
|
|
68
|
+
- 이번주 vs 지난주 공헌이익률 변화
|
|
69
|
+
- 상품 믹스 효과 vs 단가 변화 효과로 분해
|
|
70
|
+
|
|
71
|
+
## AI Interpretation
|
|
72
|
+
|
|
73
|
+
위 데이터를 바탕으로 각 변화에 대해:
|
|
74
|
+
1. 가능한 원인 (내부/외부 구분)
|
|
75
|
+
2. 우선순위 조치 (즉각 / 단기 / 검토)
|
|
76
|
+
3. 수수료 최적화: 채널 특성과 진입 가능성을 고려한 실행 가능한 방안만 제안. "버티컬 채널 축소" 같은 계약 외 조치는 제안하지 않는다.
|
|
77
|
+
|
|
78
|
+
## Error Handling
|
|
79
|
+
|
|
80
|
+
- **이번주 매출이 이전주 대비 -80% 이상**: 데이터 수집 공백 가능성 → `sppt order pull` 재실행 안내 후 분석
|
|
81
|
+
- **원가 미등록**: Step 4 skip
|
|
82
|
+
- **채널 1개만**: 수수료 비교 skip, 단가/볼륨 분석 집중
|
|
83
|
+
- **settlement 표본 부족** (채널별 < 5건): 수수료율 신뢰도 낮음 표기, `--settlement-days 90` 권장
|
|
84
|
+
- **smartstore fee rule 미등록**: 실효율 신뢰도 낮음 표기. `sppt settlement hints smartstore`로 annualRevenue 설정 권장.
|
package/package.json
CHANGED
|
@@ -1,6 +1,61 @@
|
|
|
1
1
|
{
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
2
|
+
"name": "sppurt",
|
|
3
|
+
"version": "0.6.0",
|
|
4
|
+
"description": "커머스 운영 자동화 CLI — Cafe24, Coupang, SmartStore, Shopify 통합 관리",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"bin": {
|
|
7
|
+
"sppt": "dist/cli.js",
|
|
8
|
+
"sppurt": "dist/cli.js"
|
|
9
|
+
},
|
|
10
|
+
"scripts": {
|
|
11
|
+
"dev": "tsx watch src/cli.ts",
|
|
12
|
+
"build:dashboard": "cd dashboard-ui && bun install && bun run build",
|
|
13
|
+
"build": "bun run build:dashboard && tsup && node -e \"const fs=require('fs');const f='dist/cli.js';const c=fs.readFileSync(f,'utf8');fs.writeFileSync(f,'#!/usr/bin/env bun\\n'+c);fs.chmodSync(f,0o755)\"",
|
|
14
|
+
"start": "node dist/cli.js",
|
|
15
|
+
"build:publish": "SHOPPORT_PUBLISH=1 bun run build",
|
|
16
|
+
"postinstall": "node -e \"try{require('child_process').execFileSync(process.execPath,['dist/cli.js','setup-skills'],{stdio:'pipe'})}catch(_){}\"",
|
|
17
|
+
"prepublishOnly": "bun run build:publish",
|
|
18
|
+
"test": "vitest run"
|
|
19
|
+
},
|
|
20
|
+
"keywords": [
|
|
21
|
+
"dropshipping",
|
|
22
|
+
"ecommerce",
|
|
23
|
+
"cafe24",
|
|
24
|
+
"coupang",
|
|
25
|
+
"smartstore",
|
|
26
|
+
"shopify",
|
|
27
|
+
"커머스운영",
|
|
28
|
+
"자동화"
|
|
29
|
+
],
|
|
30
|
+
"license": "UNLICENSED",
|
|
31
|
+
"engines": {
|
|
32
|
+
"node": ">=18"
|
|
33
|
+
},
|
|
34
|
+
"files": ["dist", "README.md"],
|
|
35
|
+
"dependencies": {
|
|
36
|
+
"@browserbasehq/stagehand": "^2.0.0",
|
|
37
|
+
"@e965/xlsx": "^0.20.3",
|
|
38
|
+
"@hyunbinseo/holidays-kr": "^4.2026.0",
|
|
39
|
+
"@types/bcrypt": "^6.0.0",
|
|
40
|
+
"axios": "^1.13.5",
|
|
41
|
+
"basic-ftp": "^5.3.0",
|
|
42
|
+
"bcrypt": "^6.0.0",
|
|
43
|
+
"date-fns": "^4.1.0",
|
|
44
|
+
"form-data": "^4.0.5",
|
|
45
|
+
"posthog-node": "^5.30.8",
|
|
46
|
+
"zod": "^3.24.0"
|
|
47
|
+
},
|
|
48
|
+
"devDependencies": {
|
|
49
|
+
"@shopport/core": "workspace:*",
|
|
50
|
+
"@shopport/reliability": "workspace:*",
|
|
51
|
+
"@shopport/types": "workspace:*",
|
|
52
|
+
"@types/node": "^22.13.10",
|
|
53
|
+
"javascript-obfuscator": "^5.4.1",
|
|
54
|
+
"playwright": "^1.59.1",
|
|
55
|
+
"terser": "^5.46.1",
|
|
56
|
+
"tsup": "^8.5.1",
|
|
57
|
+
"tsx": "^4.19.4",
|
|
58
|
+
"typescript": "^5.8.2",
|
|
59
|
+
"vitest": "^4.1.4"
|
|
60
|
+
}
|
|
61
|
+
}
|