codymaster 4.4.5 → 4.5.1
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/CHANGELOG.md +33 -0
- package/README.md +29 -14
- package/commands/demo.md +1 -1
- package/dist/context-bus.js +70 -0
- package/dist/context-db.js +265 -0
- package/dist/continuity.js +12 -0
- package/dist/file-watcher.js +79 -0
- package/dist/index.js +152 -1
- package/dist/l0-indexer.js +158 -0
- package/dist/mcp-context-server.js +400 -0
- package/dist/migrate-json-to-sqlite.js +126 -0
- package/dist/skill-chain.js +19 -3
- package/dist/token-budget.js +108 -0
- package/dist/uri-resolver.js +203 -0
- package/package.json +4 -1
- package/skills/_shared/helpers.md +50 -14
- package/skills/cm-autopilot/SKILL.md +29 -0
- package/skills/cm-autopilot/scripts/autopilot.py +190 -0
- package/skills/cm-continuity/SKILL.md +90 -28
- package/skills/cm-skill-chain/SKILL.md +47 -1
- package/skills/cm-start/SKILL.md +11 -2
- package/skills/boxme-git-config/SKILL.md +0 -56
- package/skills/boxme-local-dev/SKILL.md +0 -66
- package/skills/jobs-to-be-done/SKILL.md +0 -266
- package/skills/jobs-to-be-done/references/case-studies.md +0 -154
- package/skills/jobs-to-be-done/references/competitive-strategy.md +0 -280
- package/skills/jobs-to-be-done/references/diagnostics.md +0 -158
- package/skills/jobs-to-be-done/references/innovation-process.md +0 -392
- package/skills/jobs-to-be-done/references/organizational-change.md +0 -328
- package/skills/marketplace-report-crawler/SKILL.md +0 -176
- package/skills/marketplace-report-crawler/config/accounts.json +0 -41
- package/skills/marketplace-report-crawler/config/report-types.json +0 -422
- package/skills/marketplace-report-crawler/config/sessions.json +0 -3
- package/skills/marketplace-report-crawler/scripts/ab-wrapper.sh +0 -102
- package/skills/marketplace-report-crawler/scripts/browser-actions/lazada/lazada-actions.js +0 -114
- package/skills/marketplace-report-crawler/scripts/browser-actions/shopee/shopee-actions.js +0 -94
- package/skills/marketplace-report-crawler/scripts/browser-actions/tiktok/tiktok-actions.js +0 -272
- package/skills/marketplace-report-crawler/scripts/crawl-runner.js +0 -281
- package/skills/marketplace-report-crawler/scripts/session-check.sh +0 -72
- package/skills/marketplace-report-crawler/scripts/session-manager.sh +0 -349
- package/skills/marketplace-report-crawler/scripts/setup-folders.sh +0 -83
- package/skills/medical-research/SKILL.md +0 -194
- package/skills/medical-research/scripts/evidence_checker.py +0 -288
- package/skills/mom-test/SKILL.md +0 -267
- package/skills/mom-test/references/avoiding-bad-data.md +0 -221
- package/skills/mom-test/references/case-studies.md +0 -306
- package/skills/mom-test/references/commitment-advancement.md +0 -219
- package/skills/mom-test/references/finding-conversations.md +0 -251
- package/skills/mom-test/references/processing-learning.md +0 -256
- package/skills/mom-test/references/question-patterns.md +0 -198
- package/skills/pandasai-analytics/SKILL.md +0 -251
- package/skills/release-it/SKILL.md +0 -235
- package/skills/release-it/references/anti-patterns.md +0 -279
- package/skills/release-it/references/capacity-planning.md +0 -285
- package/skills/release-it/references/chaos-engineering.md +0 -325
- package/skills/release-it/references/deployment-strategies.md +0 -331
- package/skills/release-it/references/observability.md +0 -301
- package/skills/release-it/references/stability-patterns.md +0 -355
- package/skills/skill-creator-ultra/.agents/workflows/skill-audit.md +0 -37
- package/skills/skill-creator-ultra/.agents/workflows/skill-compare.md +0 -34
- package/skills/skill-creator-ultra/.agents/workflows/skill-export.md +0 -51
- package/skills/skill-creator-ultra/.agents/workflows/skill-generate.md +0 -39
- package/skills/skill-creator-ultra/.agents/workflows/skill-scaffold.md +0 -52
- package/skills/skill-creator-ultra/.agents/workflows/skill-simulate.md +0 -25
- package/skills/skill-creator-ultra/.agents/workflows/skill-stats.md +0 -31
- package/skills/skill-creator-ultra/.agents/workflows/skill-validate.md +0 -25
- package/skills/skill-creator-ultra/README.md +0 -1242
- package/skills/skill-creator-ultra/SKILL.md +0 -388
- package/skills/skill-creator-ultra/agents/analyzer.md +0 -274
- package/skills/skill-creator-ultra/agents/comparator.md +0 -202
- package/skills/skill-creator-ultra/agents/grader.md +0 -223
- package/skills/skill-creator-ultra/assets/eval_review.html +0 -146
- package/skills/skill-creator-ultra/eval-viewer/generate_review.py +0 -471
- package/skills/skill-creator-ultra/eval-viewer/viewer.html +0 -1325
- package/skills/skill-creator-ultra/examples/example_anthropic_frontend.md +0 -109
- package/skills/skill-creator-ultra/examples/example_anthropic_pdf.md +0 -116
- package/skills/skill-creator-ultra/examples/example_api_docs.md +0 -189
- package/skills/skill-creator-ultra/examples/example_db_migration.md +0 -253
- package/skills/skill-creator-ultra/examples/example_git_commit.md +0 -111
- package/skills/skill-creator-ultra/install.ps1 +0 -289
- package/skills/skill-creator-ultra/install.sh +0 -313
- package/skills/skill-creator-ultra/phases/phase1_interview.md +0 -202
- package/skills/skill-creator-ultra/phases/phase2_extract.md +0 -55
- package/skills/skill-creator-ultra/phases/phase3_detect.md +0 -57
- package/skills/skill-creator-ultra/phases/phase4_generate.md +0 -543
- package/skills/skill-creator-ultra/phases/phase5_test.md +0 -319
- package/skills/skill-creator-ultra/phases/phase6_eval.md +0 -301
- package/skills/skill-creator-ultra/phases/phase7_iterate.md +0 -103
- package/skills/skill-creator-ultra/phases/phase8_optimize.md +0 -113
- package/skills/skill-creator-ultra/resources/advanced_patterns.md +0 -499
- package/skills/skill-creator-ultra/resources/anti_patterns.md +0 -376
- package/skills/skill-creator-ultra/resources/blueprints.md +0 -498
- package/skills/skill-creator-ultra/resources/checklist.md +0 -243
- package/skills/skill-creator-ultra/resources/composition_cookbook.md +0 -291
- package/skills/skill-creator-ultra/resources/description_optimization.md +0 -90
- package/skills/skill-creator-ultra/resources/eval_guide.md +0 -133
- package/skills/skill-creator-ultra/resources/industry_questions.md +0 -189
- package/skills/skill-creator-ultra/resources/interview_questions.md +0 -200
- package/skills/skill-creator-ultra/resources/pattern_detection.md +0 -200
- package/skills/skill-creator-ultra/resources/prompt_engineering.md +0 -531
- package/skills/skill-creator-ultra/resources/schemas.md +0 -430
- package/skills/skill-creator-ultra/resources/script_integration.md +0 -593
- package/skills/skill-creator-ultra/resources/scripts_guide.md +0 -339
- package/skills/skill-creator-ultra/resources/skill_template.md +0 -124
- package/skills/skill-creator-ultra/resources/skill_writing_guide.md +0 -634
- package/skills/skill-creator-ultra/resources/versioning_guide.md +0 -193
- package/skills/skill-creator-ultra/scripts/ci_eval.py +0 -200
- package/skills/skill-creator-ultra/scripts/package_skill.py +0 -165
- package/skills/skill-creator-ultra/scripts/simulate_skill.py +0 -398
- package/skills/skill-creator-ultra/scripts/skill_audit.py +0 -611
- package/skills/skill-creator-ultra/scripts/skill_compare.py +0 -265
- package/skills/skill-creator-ultra/scripts/skill_export.py +0 -334
- package/skills/skill-creator-ultra/scripts/skill_scaffold.py +0 -403
- package/skills/skill-creator-ultra/scripts/skill_stats.py +0 -339
- package/skills/skill-creator-ultra/scripts/validate_skill.py +0 -411
- package/skills/tailwind-mastery/SKILL.md +0 -229
- package/skills/vercel-react-best-practices/AGENTS.md +0 -3373
- package/skills/vercel-react-best-practices/README.md +0 -123
- package/skills/vercel-react-best-practices/SKILL.md +0 -143
- package/skills/vercel-react-best-practices/rules/_sections.md +0 -46
- package/skills/vercel-react-best-practices/rules/_template.md +0 -28
- package/skills/vercel-react-best-practices/rules/advanced-event-handler-refs.md +0 -55
- package/skills/vercel-react-best-practices/rules/advanced-init-once.md +0 -42
- package/skills/vercel-react-best-practices/rules/advanced-use-latest.md +0 -39
- package/skills/vercel-react-best-practices/rules/async-api-routes.md +0 -38
- package/skills/vercel-react-best-practices/rules/async-defer-await.md +0 -80
- package/skills/vercel-react-best-practices/rules/async-dependencies.md +0 -51
- package/skills/vercel-react-best-practices/rules/async-parallel.md +0 -28
- package/skills/vercel-react-best-practices/rules/async-suspense-boundaries.md +0 -99
- package/skills/vercel-react-best-practices/rules/bundle-barrel-imports.md +0 -59
- package/skills/vercel-react-best-practices/rules/bundle-conditional.md +0 -31
- package/skills/vercel-react-best-practices/rules/bundle-defer-third-party.md +0 -49
- package/skills/vercel-react-best-practices/rules/bundle-dynamic-imports.md +0 -35
- package/skills/vercel-react-best-practices/rules/bundle-preload.md +0 -50
- package/skills/vercel-react-best-practices/rules/client-event-listeners.md +0 -74
- package/skills/vercel-react-best-practices/rules/client-localstorage-schema.md +0 -71
- package/skills/vercel-react-best-practices/rules/client-passive-event-listeners.md +0 -48
- package/skills/vercel-react-best-practices/rules/client-swr-dedup.md +0 -56
- package/skills/vercel-react-best-practices/rules/js-batch-dom-css.md +0 -107
- package/skills/vercel-react-best-practices/rules/js-cache-function-results.md +0 -80
- package/skills/vercel-react-best-practices/rules/js-cache-property-access.md +0 -28
- package/skills/vercel-react-best-practices/rules/js-cache-storage.md +0 -70
- package/skills/vercel-react-best-practices/rules/js-combine-iterations.md +0 -32
- package/skills/vercel-react-best-practices/rules/js-early-exit.md +0 -50
- package/skills/vercel-react-best-practices/rules/js-flatmap-filter.md +0 -60
- package/skills/vercel-react-best-practices/rules/js-hoist-regexp.md +0 -45
- package/skills/vercel-react-best-practices/rules/js-index-maps.md +0 -37
- package/skills/vercel-react-best-practices/rules/js-length-check-first.md +0 -49
- package/skills/vercel-react-best-practices/rules/js-min-max-loop.md +0 -82
- package/skills/vercel-react-best-practices/rules/js-set-map-lookups.md +0 -24
- package/skills/vercel-react-best-practices/rules/js-tosorted-immutable.md +0 -57
- package/skills/vercel-react-best-practices/rules/rendering-activity.md +0 -26
- package/skills/vercel-react-best-practices/rules/rendering-animate-svg-wrapper.md +0 -47
- package/skills/vercel-react-best-practices/rules/rendering-conditional-render.md +0 -40
- package/skills/vercel-react-best-practices/rules/rendering-content-visibility.md +0 -38
- package/skills/vercel-react-best-practices/rules/rendering-hoist-jsx.md +0 -46
- package/skills/vercel-react-best-practices/rules/rendering-hydration-no-flicker.md +0 -82
- package/skills/vercel-react-best-practices/rules/rendering-hydration-suppress-warning.md +0 -30
- package/skills/vercel-react-best-practices/rules/rendering-resource-hints.md +0 -85
- package/skills/vercel-react-best-practices/rules/rendering-script-defer-async.md +0 -68
- package/skills/vercel-react-best-practices/rules/rendering-svg-precision.md +0 -28
- package/skills/vercel-react-best-practices/rules/rendering-usetransition-loading.md +0 -75
- package/skills/vercel-react-best-practices/rules/rerender-defer-reads.md +0 -39
- package/skills/vercel-react-best-practices/rules/rerender-dependencies.md +0 -45
- package/skills/vercel-react-best-practices/rules/rerender-derived-state-no-effect.md +0 -40
- package/skills/vercel-react-best-practices/rules/rerender-derived-state.md +0 -29
- package/skills/vercel-react-best-practices/rules/rerender-functional-setstate.md +0 -74
- package/skills/vercel-react-best-practices/rules/rerender-lazy-state-init.md +0 -58
- package/skills/vercel-react-best-practices/rules/rerender-memo-with-default-value.md +0 -38
- package/skills/vercel-react-best-practices/rules/rerender-memo.md +0 -44
- package/skills/vercel-react-best-practices/rules/rerender-move-effect-to-event.md +0 -45
- package/skills/vercel-react-best-practices/rules/rerender-no-inline-components.md +0 -82
- package/skills/vercel-react-best-practices/rules/rerender-simple-expression-in-memo.md +0 -35
- package/skills/vercel-react-best-practices/rules/rerender-split-combined-hooks.md +0 -64
- package/skills/vercel-react-best-practices/rules/rerender-transitions.md +0 -40
- package/skills/vercel-react-best-practices/rules/rerender-use-deferred-value.md +0 -59
- package/skills/vercel-react-best-practices/rules/rerender-use-ref-transient-values.md +0 -73
- package/skills/vercel-react-best-practices/rules/server-after-nonblocking.md +0 -73
- package/skills/vercel-react-best-practices/rules/server-auth-actions.md +0 -96
- package/skills/vercel-react-best-practices/rules/server-cache-lru.md +0 -41
- package/skills/vercel-react-best-practices/rules/server-cache-react.md +0 -76
- package/skills/vercel-react-best-practices/rules/server-dedup-props.md +0 -65
- package/skills/vercel-react-best-practices/rules/server-hoist-static-io.md +0 -142
- package/skills/vercel-react-best-practices/rules/server-parallel-fetching.md +0 -83
- package/skills/vercel-react-best-practices/rules/server-serialization.md +0 -38
- package/skills/web-design-guidelines/SKILL.md +0 -39
|
@@ -1,176 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: marketplace-report-crawler
|
|
3
|
-
description: |
|
|
4
|
-
Automated marketplace report crawler for Shopee, Lazada, TikTok seller portals.
|
|
5
|
-
Uses CSV-based account config with credential security. Includes dashboard,
|
|
6
|
-
activity/bug logging, and progress reporting.
|
|
7
|
-
|
|
8
|
-
SECURITY: AI MUST NEVER read username/password columns from accounts.csv.
|
|
9
|
-
Use get-credential.js to retrieve credentials for browser-only use.
|
|
10
|
-
|
|
11
|
-
ALWAYS trigger for: marketplace report, crawl data, download marketplace report, export shopee,
|
|
12
|
-
export lazada, export tiktok, GBS data, seller report, download seller report,
|
|
13
|
-
"aggregate reports", "crawl marketplace", "data crawling", "seller data",
|
|
14
|
-
"marketplace income", "ads report", "affiliate report", "advertising report",
|
|
15
|
-
"wallet statement", "shipping fee", "shipping cost"
|
|
16
|
-
---
|
|
17
|
-
|
|
18
|
-
# Marketplace Report Crawler v2.0
|
|
19
|
-
|
|
20
|
-
## Key Principle: Agent-Native + Session Persistence
|
|
21
|
-
|
|
22
|
-
> **Login happens ONCE. OTP is entered ONCE. Sessions are saved FOREVER.**
|
|
23
|
-
|
|
24
|
-
Marketplaces require OTP/CAPTCHA to login. OTP codes are held by customers/accountants
|
|
25
|
-
and can't be requested repeatedly. Therefore:
|
|
26
|
-
|
|
27
|
-
1. **First login**: AI agent uses its OWN browser to login (bypasses CAPTCHA naturally)
|
|
28
|
-
2. **Export cookies**: After login, cookies are saved to disk
|
|
29
|
-
3. **Future runs**: Inject saved cookies → skip login entirely
|
|
30
|
-
4. **Only re-login**: When session actually expires (rare)
|
|
31
|
-
|
|
32
|
-
## 🔒 Security Rules
|
|
33
|
-
|
|
34
|
-
> **CRITICAL**: These rules MUST be followed at all times.
|
|
35
|
-
|
|
36
|
-
1. **NEVER** read/log/print `username`/`password` columns from `accounts.csv`
|
|
37
|
-
2. **ONLY** use helper scripts to access credentials:
|
|
38
|
-
- `node scripts/get-credential.js <id> username` → raw username
|
|
39
|
-
- `node scripts/get-credential.js <id> password` → raw password
|
|
40
|
-
3. Credentials go **directly** into browser form fields — never stored in context
|
|
41
|
-
|
|
42
|
-
## Architecture
|
|
43
|
-
|
|
44
|
-
```
|
|
45
|
-
scripts/
|
|
46
|
-
├── get-login-info.js # Platform config (URL, selectors) — NO credentials
|
|
47
|
-
├── get-credential.js # Raw credential value for browser fill
|
|
48
|
-
├── session-store.js # Cookie persistence (save/check/inject/list)
|
|
49
|
-
├── auto-login.js # Automated login (agent-browser) + agent-delegate
|
|
50
|
-
├── pipeline.js # Sequential pipeline orchestrator
|
|
51
|
-
├── csv-reader.js # CSV parser with credential masking
|
|
52
|
-
├── logger.js # Activity + Bug logging
|
|
53
|
-
└── run-report.js # Progress report generator
|
|
54
|
-
|
|
55
|
-
config/
|
|
56
|
-
├── accounts.csv # 🔐 Credentials (gitignored)
|
|
57
|
-
├── pipeline-config.json # Platform selectors, timeouts
|
|
58
|
-
└── report-types.json # 25 report type definitions
|
|
59
|
-
|
|
60
|
-
~/.marketplace-crawler/sessions/ # Persistent cookie storage
|
|
61
|
-
└── <account_id>/
|
|
62
|
-
├── cookies.json
|
|
63
|
-
└── session-meta.json
|
|
64
|
-
```
|
|
65
|
-
|
|
66
|
-
## Workflow: First-Time Login (One-Time)
|
|
67
|
-
|
|
68
|
-
### Step 1: Get Login Info
|
|
69
|
-
```bash
|
|
70
|
-
node scripts/get-login-info.js zott-lazada
|
|
71
|
-
# Returns: { loginUrl, platform, dashboardUrl, loginSelectors }
|
|
72
|
-
```
|
|
73
|
-
|
|
74
|
-
### Step 2: Login via Agent Browser
|
|
75
|
-
|
|
76
|
-
Use YOUR browser tool (browser_subagent / Claude browser / Manus Chrome):
|
|
77
|
-
|
|
78
|
-
1. Navigate to the `loginUrl` from step 1
|
|
79
|
-
2. Get credentials:
|
|
80
|
-
```bash
|
|
81
|
-
node scripts/get-credential.js zott-lazada username # → nguy...@zott.vn
|
|
82
|
-
node scripts/get-credential.js zott-lazada password # → raw password
|
|
83
|
-
```
|
|
84
|
-
3. Fill username into the login form
|
|
85
|
-
4. Fill password
|
|
86
|
-
5. Click login button
|
|
87
|
-
6. **If CAPTCHA**: Solve it visually (your browser looks like a real user)
|
|
88
|
-
7. **If OTP**: Ask user for the 6-digit code, enter it
|
|
89
|
-
8. Verify you reached the dashboard
|
|
90
|
-
|
|
91
|
-
### Step 3: Export & Save Cookies
|
|
92
|
-
|
|
93
|
-
After successful login, run this in the browser console:
|
|
94
|
-
```javascript
|
|
95
|
-
// Get all cookies for the current domain
|
|
96
|
-
const cookies = document.cookie.split(';').map(c => {
|
|
97
|
-
const [name, ...rest] = c.trim().split('=');
|
|
98
|
-
return { name, value: rest.join('='), domain: location.hostname, path: '/' };
|
|
99
|
-
});
|
|
100
|
-
JSON.stringify(cookies);
|
|
101
|
-
```
|
|
102
|
-
|
|
103
|
-
Save the output:
|
|
104
|
-
```bash
|
|
105
|
-
echo '<cookies_json>' | node scripts/session-store.js save zott-lazada agent-browser
|
|
106
|
-
```
|
|
107
|
-
|
|
108
|
-
### Step 4: Verify Session Saved
|
|
109
|
-
```bash
|
|
110
|
-
node scripts/session-store.js list
|
|
111
|
-
node scripts/session-store.js check zott-lazada
|
|
112
|
-
```
|
|
113
|
-
|
|
114
|
-
## Workflow: Subsequent Runs (Automatic)
|
|
115
|
-
|
|
116
|
-
```bash
|
|
117
|
-
# 1. Check if session is still valid
|
|
118
|
-
node scripts/session-store.js check zott-lazada
|
|
119
|
-
|
|
120
|
-
# 2. Inject cookies and navigate to dashboard
|
|
121
|
-
node scripts/session-store.js inject zott-lazada
|
|
122
|
-
# → Outputs JS to set cookies in browser
|
|
123
|
-
|
|
124
|
-
# 3. Run pipeline for reports
|
|
125
|
-
node scripts/pipeline.js --period 202603 --platform lazada --dry-run
|
|
126
|
-
node scripts/pipeline.js --period 202603 --platform lazada
|
|
127
|
-
```
|
|
128
|
-
|
|
129
|
-
## Auto-Login Fallback
|
|
130
|
-
|
|
131
|
-
For accounts without CAPTCHA/OTP challenges, `auto-login.js` can automate login:
|
|
132
|
-
|
|
133
|
-
```bash
|
|
134
|
-
# Automated login via agent-browser CLI
|
|
135
|
-
node scripts/auto-login.js --account zott-lazada --headed
|
|
136
|
-
|
|
137
|
-
# If CAPTCHA detected → exits with code 2 + JSON with screenshot
|
|
138
|
-
# Agent then takes over with its own browser
|
|
139
|
-
|
|
140
|
-
# After agent solves challenge:
|
|
141
|
-
node scripts/auto-login.js --account zott-lazada --verify
|
|
142
|
-
```
|
|
143
|
-
|
|
144
|
-
## Pipeline Commands
|
|
145
|
-
|
|
146
|
-
```bash
|
|
147
|
-
# Dry run — see what will happen
|
|
148
|
-
node scripts/pipeline.js --period 202603 --dry-run
|
|
149
|
-
|
|
150
|
-
# Run specific platform
|
|
151
|
-
node scripts/pipeline.js --period 202603 --platform lazada
|
|
152
|
-
|
|
153
|
-
# Run single account
|
|
154
|
-
node scripts/pipeline.js --period 202603 --account zott-lazada --headed
|
|
155
|
-
|
|
156
|
-
# Resume after interruption
|
|
157
|
-
node scripts/pipeline.js --period 202603 --resume
|
|
158
|
-
```
|
|
159
|
-
|
|
160
|
-
## Report Types (25 total)
|
|
161
|
-
|
|
162
|
-
| Platform | Reports | Format |
|
|
163
|
-
|----------|---------|--------|
|
|
164
|
-
| Shopee (7) | Income, PDF Report, Wallet, Affiliate Invoice/Product, Ads, Ads Wallet | Excel/PDF |
|
|
165
|
-
| Lazada (7) | Income, PDF Report, Wallet, Ads Onsite/Product, Ads Wallet, Shipping Fee | Excel/PDF |
|
|
166
|
-
| TikTok (7) | Income, Wallet, Affiliate Orders/Invoice, Ads Dashboard/Cost/Revenue | Excel |
|
|
167
|
-
|
|
168
|
-
## Session Store Commands
|
|
169
|
-
|
|
170
|
-
```bash
|
|
171
|
-
node scripts/session-store.js save <id> # Save cookies from stdin
|
|
172
|
-
node scripts/session-store.js check <id> # Check validity
|
|
173
|
-
node scripts/session-store.js inject <id> # Output injection JS
|
|
174
|
-
node scripts/session-store.js list # List all sessions
|
|
175
|
-
node scripts/session-store.js export-script <id> # Browser export helper
|
|
176
|
-
```
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"defaultOutputRoot": "/Users/todyle/Builder/Boxme/AutomateReport/data",
|
|
3
|
-
"accounts": [
|
|
4
|
-
{
|
|
5
|
-
"id": "vita-dairy",
|
|
6
|
-
"brand": "Vita Dairy",
|
|
7
|
-
"brandSlug": "Vita_Dairy",
|
|
8
|
-
"platforms": ["shopee", "lazada", "tiktok"],
|
|
9
|
-
"chromeProfile": "Vita Dairy",
|
|
10
|
-
"active": true,
|
|
11
|
-
"notes": "Primary brand across all platforms"
|
|
12
|
-
},
|
|
13
|
-
{
|
|
14
|
-
"id": "dutch-lady",
|
|
15
|
-
"brand": "Dutch Lady",
|
|
16
|
-
"brandSlug": "Dutch_Lady",
|
|
17
|
-
"platforms": ["shopee", "lazada", "tiktok"],
|
|
18
|
-
"chromeProfile": "Dutch Lady",
|
|
19
|
-
"active": true,
|
|
20
|
-
"notes": "Active on all 3 platforms"
|
|
21
|
-
},
|
|
22
|
-
{
|
|
23
|
-
"id": "friso",
|
|
24
|
-
"brand": "Friso",
|
|
25
|
-
"brandSlug": "Friso",
|
|
26
|
-
"platforms": ["tiktok"],
|
|
27
|
-
"chromeProfile": "Friso",
|
|
28
|
-
"active": true,
|
|
29
|
-
"notes": "TikTok only (from flow analysis)"
|
|
30
|
-
},
|
|
31
|
-
{
|
|
32
|
-
"id": "wilmar",
|
|
33
|
-
"brand": "Wilmar",
|
|
34
|
-
"brandSlug": "Wilmar",
|
|
35
|
-
"platforms": ["tiktok"],
|
|
36
|
-
"chromeProfile": "Wilmar",
|
|
37
|
-
"active": true,
|
|
38
|
-
"notes": "TikTok only (from flow analysis)"
|
|
39
|
-
}
|
|
40
|
-
]
|
|
41
|
-
}
|
|
@@ -1,422 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"reportTypes": [
|
|
3
|
-
{
|
|
4
|
-
"id": "platform_income",
|
|
5
|
-
"name": "Income Sàn",
|
|
6
|
-
"nameVi": "Thu nhập sàn",
|
|
7
|
-
"platform": "shopee",
|
|
8
|
-
"url": "https://banhang.shopee.vn/portal/finance/income?type=2&dateRange=THIS_WEEK",
|
|
9
|
-
"frequency": "monthly",
|
|
10
|
-
"priority": true,
|
|
11
|
-
"exportFormat": "excel",
|
|
12
|
-
"fileExtension": "xlsx",
|
|
13
|
-
"screenshotRef": "https://prnt.sc/K1mqjTIc1S6t",
|
|
14
|
-
"status": "active",
|
|
15
|
-
"dateSelectionType": "calendar_range",
|
|
16
|
-
"exportSteps": [
|
|
17
|
-
"Click date range dropdown → 'Chọn ngày'",
|
|
18
|
-
"Navigate calendar to target month",
|
|
19
|
-
"Select first day → last day",
|
|
20
|
-
"Click 'Xuất' button"
|
|
21
|
-
]
|
|
22
|
-
},
|
|
23
|
-
{
|
|
24
|
-
"id": "platform_report",
|
|
25
|
-
"name": "Report Sàn (PDF)",
|
|
26
|
-
"nameVi": "Báo cáo tổng hợp thu nhập (PDF)",
|
|
27
|
-
"platform": "shopee",
|
|
28
|
-
"url": "https://banhang.shopee.vn/portal/finance/income/statement",
|
|
29
|
-
"frequency": "monthly",
|
|
30
|
-
"priority": true,
|
|
31
|
-
"exportFormat": "pdf",
|
|
32
|
-
"fileExtension": "pdf",
|
|
33
|
-
"screenshotRef": "https://prnt.sc/TvOCUH0QMxEZ",
|
|
34
|
-
"status": "active",
|
|
35
|
-
"dateSelectionType": "month_picker",
|
|
36
|
-
"exportSteps": [
|
|
37
|
-
"Select target month",
|
|
38
|
-
"Click download PDF"
|
|
39
|
-
]
|
|
40
|
-
},
|
|
41
|
-
{
|
|
42
|
-
"id": "platform_wallet",
|
|
43
|
-
"name": "Sao kê số dư ví",
|
|
44
|
-
"nameVi": "Sao kê ví ShopeePay",
|
|
45
|
-
"platform": "shopee",
|
|
46
|
-
"url": "https://banhang.shopee.vn/portal/finance/wallet/shopeepay",
|
|
47
|
-
"frequency": "monthly",
|
|
48
|
-
"priority": true,
|
|
49
|
-
"exportFormat": "excel",
|
|
50
|
-
"fileExtension": "xlsx",
|
|
51
|
-
"screenshotRef": "https://prnt.sc/cLm_o9lJ0zFj",
|
|
52
|
-
"status": "active",
|
|
53
|
-
"dateSelectionType": "calendar_range",
|
|
54
|
-
"exportSteps": [
|
|
55
|
-
"Open date range picker",
|
|
56
|
-
"Navigate to target month",
|
|
57
|
-
"Select first day → last day",
|
|
58
|
-
"Click export"
|
|
59
|
-
]
|
|
60
|
-
},
|
|
61
|
-
{
|
|
62
|
-
"id": "affiliate_bill",
|
|
63
|
-
"name": "Data tiếp thị liên kết theo hóa đơn",
|
|
64
|
-
"nameVi": "Dữ liệu affiliate theo hoá đơn",
|
|
65
|
-
"platform": "shopee",
|
|
66
|
-
"url": "https://banhang.shopee.vn/portal/web-seller-affiliate/validation_bill",
|
|
67
|
-
"frequency": "monthly",
|
|
68
|
-
"priority": false,
|
|
69
|
-
"exportFormat": "excel",
|
|
70
|
-
"fileExtension": "xlsx",
|
|
71
|
-
"screenshotRef": "https://prnt.sc/H3M6TCwnUtbY",
|
|
72
|
-
"status": "active",
|
|
73
|
-
"dateSelectionType": "date_picker",
|
|
74
|
-
"exportSteps": [
|
|
75
|
-
"Select date range",
|
|
76
|
-
"Click export"
|
|
77
|
-
]
|
|
78
|
-
},
|
|
79
|
-
{
|
|
80
|
-
"id": "paid_ads_onsite_report",
|
|
81
|
-
"name": "Báo cáo paid ads onsite",
|
|
82
|
-
"nameVi": "Quảng cáo trả phí onsite",
|
|
83
|
-
"platform": "shopee",
|
|
84
|
-
"url": "https://banhang.shopee.vn/portal/marketing/pas/index",
|
|
85
|
-
"frequency": "daily_overwrite",
|
|
86
|
-
"priority": false,
|
|
87
|
-
"exportFormat": "excel",
|
|
88
|
-
"fileExtension": "xlsx",
|
|
89
|
-
"screenshotRef": "https://prnt.sc/G37bF0Qa9DB7",
|
|
90
|
-
"status": "active",
|
|
91
|
-
"dateSelectionType": "date_input",
|
|
92
|
-
"exportSteps": [
|
|
93
|
-
"Set start date input",
|
|
94
|
-
"Set end date input",
|
|
95
|
-
"Click download"
|
|
96
|
-
]
|
|
97
|
-
},
|
|
98
|
-
{
|
|
99
|
-
"id": "affiliate_product",
|
|
100
|
-
"name": "Báo cáo tiếp thị liên kết theo Product",
|
|
101
|
-
"nameVi": "Affiliate theo sản phẩm",
|
|
102
|
-
"platform": "shopee",
|
|
103
|
-
"url": "https://banhang.shopee.vn/portal/web-seller-affiliate/product_analytics",
|
|
104
|
-
"frequency": "daily_overwrite",
|
|
105
|
-
"priority": false,
|
|
106
|
-
"exportFormat": "excel",
|
|
107
|
-
"fileExtension": "xlsx",
|
|
108
|
-
"screenshotRef": "https://prnt.sc/VOUR10z1kJMT",
|
|
109
|
-
"status": "active",
|
|
110
|
-
"dateSelectionType": "date_picker",
|
|
111
|
-
"exportSteps": [
|
|
112
|
-
"Select date range",
|
|
113
|
-
"Click export"
|
|
114
|
-
]
|
|
115
|
-
},
|
|
116
|
-
{
|
|
117
|
-
"id": "ads_wallet_historical",
|
|
118
|
-
"name": "Paid ads onsite historical wallet",
|
|
119
|
-
"nameVi": "Lịch sử ví quảng cáo",
|
|
120
|
-
"platform": "shopee",
|
|
121
|
-
"url": "https://banhang.shopee.vn/portal/marketing/pas/wallet",
|
|
122
|
-
"frequency": "monthly",
|
|
123
|
-
"priority": true,
|
|
124
|
-
"exportFormat": "excel",
|
|
125
|
-
"fileExtension": "xlsx",
|
|
126
|
-
"screenshotRef": "https://prnt.sc/R-QW1TK3_aZ2",
|
|
127
|
-
"status": "active",
|
|
128
|
-
"dateSelectionType": "calendar_range",
|
|
129
|
-
"exportSteps": [
|
|
130
|
-
"Open date range picker",
|
|
131
|
-
"Select month range",
|
|
132
|
-
"Click export"
|
|
133
|
-
]
|
|
134
|
-
},
|
|
135
|
-
{
|
|
136
|
-
"id": "platform_income",
|
|
137
|
-
"name": "Income Sàn",
|
|
138
|
-
"nameVi": "Thu nhập sàn Lazada",
|
|
139
|
-
"platform": "lazada",
|
|
140
|
-
"url": "https://sellercenter.lazada.vn/portal/apps/finance/myIncome/index",
|
|
141
|
-
"frequency": "monthly",
|
|
142
|
-
"priority": true,
|
|
143
|
-
"exportFormat": "excel",
|
|
144
|
-
"fileExtension": "xlsx",
|
|
145
|
-
"screenshotRef": "https://prnt.sc/uGGgnTJ4QTjx",
|
|
146
|
-
"status": "active",
|
|
147
|
-
"dateSelectionType": "next_calendar_range",
|
|
148
|
-
"exportSteps": [
|
|
149
|
-
"Click 'Chi tiết Thu nhập'",
|
|
150
|
-
"Open date picker",
|
|
151
|
-
"Navigate calendar to target month (using next-calendar-btn)",
|
|
152
|
-
"Select first day → last day",
|
|
153
|
-
"Click 'Tải xuống' → 'Chi tiết đơn hàng (Excel)'",
|
|
154
|
-
"Wait for processing → Download Result File"
|
|
155
|
-
]
|
|
156
|
-
},
|
|
157
|
-
{
|
|
158
|
-
"id": "platform_report",
|
|
159
|
-
"name": "Report Sàn (PDF)",
|
|
160
|
-
"nameVi": "Sao kê tháng Lazada",
|
|
161
|
-
"platform": "lazada",
|
|
162
|
-
"url": "https://sellercenter.lazada.vn/portal/apps/finance/myIncome/index",
|
|
163
|
-
"frequency": "monthly",
|
|
164
|
-
"priority": true,
|
|
165
|
-
"exportFormat": "pdf",
|
|
166
|
-
"fileExtension": "pdf",
|
|
167
|
-
"screenshotRef": "https://prnt.sc/5la14Lqd2eYJ",
|
|
168
|
-
"status": "active",
|
|
169
|
-
"dateSelectionType": "month_tab",
|
|
170
|
-
"exportSteps": [
|
|
171
|
-
"Click 'Sao kê tháng' tab",
|
|
172
|
-
"Click 'Tải xuống' → 'Tổng quan giao dịch (pdf)'",
|
|
173
|
-
"Wait → Download"
|
|
174
|
-
]
|
|
175
|
-
},
|
|
176
|
-
{
|
|
177
|
-
"id": "platform_wallet",
|
|
178
|
-
"name": "Sao kê số dư ví",
|
|
179
|
-
"nameVi": "Sao kê ví Lazada",
|
|
180
|
-
"platform": "lazada",
|
|
181
|
-
"url": "https://sellercenter.lazada.vn/apps/balance",
|
|
182
|
-
"frequency": "monthly",
|
|
183
|
-
"priority": true,
|
|
184
|
-
"exportFormat": "excel",
|
|
185
|
-
"fileExtension": "xlsx",
|
|
186
|
-
"screenshotRef": "https://prnt.sc/rl7NgvOjQntp",
|
|
187
|
-
"status": "active",
|
|
188
|
-
"dateSelectionType": "next_calendar_range",
|
|
189
|
-
"exportSteps": [
|
|
190
|
-
"Open date range picker",
|
|
191
|
-
"Navigate calendar to target month",
|
|
192
|
-
"Select first day → last day",
|
|
193
|
-
"Click 'Xuất dữ liệu' → 'Chi tiết giao dịch (excel)'",
|
|
194
|
-
"Wait → Download Result File"
|
|
195
|
-
]
|
|
196
|
-
},
|
|
197
|
-
{
|
|
198
|
-
"id": "paid_ads_onsite_report",
|
|
199
|
-
"name": "Báo cáo paid ads onsite",
|
|
200
|
-
"nameVi": "Quảng cáo trả phí onsite Lazada",
|
|
201
|
-
"platform": "lazada",
|
|
202
|
-
"url": "https://sellercenter.lazada.vn/sponsor/solutions/ads/report/",
|
|
203
|
-
"frequency": "daily_overwrite",
|
|
204
|
-
"priority": false,
|
|
205
|
-
"exportFormat": "excel",
|
|
206
|
-
"fileExtension": "xlsx",
|
|
207
|
-
"screenshotRef": "https://prnt.sc/2e6e9sOfHAq2",
|
|
208
|
-
"status": "active",
|
|
209
|
-
"dateSelectionType": "date_input_lazada",
|
|
210
|
-
"exportSteps": [
|
|
211
|
-
"Check 'product' checkbox",
|
|
212
|
-
"Set start date DD/MM/YYYY",
|
|
213
|
-
"Set end date DD/MM/YYYY",
|
|
214
|
-
"Click 'Tải xuống'"
|
|
215
|
-
]
|
|
216
|
-
},
|
|
217
|
-
{
|
|
218
|
-
"id": "paid_ads_product",
|
|
219
|
-
"name": "Báo cáo paid ads onsite product",
|
|
220
|
-
"nameVi": "Quảng cáo theo sản phẩm Lazada",
|
|
221
|
-
"platform": "lazada",
|
|
222
|
-
"url": "https://sellercenter.lazada.vn/sponsor/solutions/ads/report/",
|
|
223
|
-
"frequency": "daily_overwrite",
|
|
224
|
-
"priority": false,
|
|
225
|
-
"exportFormat": "excel",
|
|
226
|
-
"fileExtension": "xlsx",
|
|
227
|
-
"screenshotRef": "https://prnt.sc/2LSm7ALMhy32",
|
|
228
|
-
"status": "active",
|
|
229
|
-
"dateSelectionType": "date_input_lazada",
|
|
230
|
-
"exportSteps": [
|
|
231
|
-
"Same as paid_ads_onsite but with product filter"
|
|
232
|
-
]
|
|
233
|
-
},
|
|
234
|
-
{
|
|
235
|
-
"id": "ads_wallet_historical",
|
|
236
|
-
"name": "Paid ads onsite historical wallet",
|
|
237
|
-
"nameVi": "Lịch sử giao dịch ví quảng cáo Lazada",
|
|
238
|
-
"platform": "lazada",
|
|
239
|
-
"url": "https://sellercenter.lazada.vn/sponsor/solutions/ads/sd-account/#!/ads/1",
|
|
240
|
-
"frequency": "monthly",
|
|
241
|
-
"priority": true,
|
|
242
|
-
"exportFormat": "excel",
|
|
243
|
-
"fileExtension": "xlsx",
|
|
244
|
-
"screenshotRef": "https://prnt.sc/jAuuSj7gcMvX",
|
|
245
|
-
"status": "active",
|
|
246
|
-
"dateSelectionType": "rc_calendar_range",
|
|
247
|
-
"exportSteps": [
|
|
248
|
-
"Scroll down to 'Lịch Sử Giao Dịch'",
|
|
249
|
-
"Open date range picker",
|
|
250
|
-
"Navigate rc-calendar to target month",
|
|
251
|
-
"Select first → last day",
|
|
252
|
-
"Click 'Tải Xuống'"
|
|
253
|
-
]
|
|
254
|
-
},
|
|
255
|
-
{
|
|
256
|
-
"id": "shipping_fee_details",
|
|
257
|
-
"name": "Chi tiết phí vận chuyển",
|
|
258
|
-
"nameVi": "Phí vận chuyển theo đơn hàng",
|
|
259
|
-
"platform": "lazada",
|
|
260
|
-
"url": "https://sellercenter.lazada.vn/apps/finance/logisticsfee/index?curtab=order-fee",
|
|
261
|
-
"frequency": "monthly",
|
|
262
|
-
"priority": true,
|
|
263
|
-
"exportFormat": "excel",
|
|
264
|
-
"fileExtension": "xlsx",
|
|
265
|
-
"screenshotRef": "https://prnt.sc/u5BX1bsaaZ5S",
|
|
266
|
-
"status": "active",
|
|
267
|
-
"dateSelectionType": "multi_select_menu",
|
|
268
|
-
"exportSteps": [
|
|
269
|
-
"Open statement period dropdown",
|
|
270
|
-
"Select all dates matching target YYYY-MM",
|
|
271
|
-
"Click 'Xuất dữ liệu tổng quan đơn hàng'",
|
|
272
|
-
"Click 'Xuất dữ liệu với bộ lọc hiện tại'",
|
|
273
|
-
"Wait (long) → Download"
|
|
274
|
-
]
|
|
275
|
-
},
|
|
276
|
-
{
|
|
277
|
-
"id": "platform_income",
|
|
278
|
-
"name": "Income Sàn",
|
|
279
|
-
"nameVi": "Thu nhập sàn TikTok",
|
|
280
|
-
"platform": "tiktok",
|
|
281
|
-
"url": "https://seller-vn.tiktok.com/finance/transactions?shop_region=VN&tab=settled_tab",
|
|
282
|
-
"frequency": "monthly",
|
|
283
|
-
"priority": true,
|
|
284
|
-
"exportFormat": "excel",
|
|
285
|
-
"fileExtension": "xlsx",
|
|
286
|
-
"screenshotRef": "https://prnt.sc/oj8apfNx6mCH",
|
|
287
|
-
"status": "active",
|
|
288
|
-
"dateSelectionType": "core_picker",
|
|
289
|
-
"exportSteps": [
|
|
290
|
-
"Wait for 'Lịch sử xuất dữ liệu' to appear",
|
|
291
|
-
"Click 'Xuất'",
|
|
292
|
-
"Open date picker (SVG icon)",
|
|
293
|
-
"Clear existing range (SVG click)",
|
|
294
|
-
"Select first day → last day using core-picker-cell-in-view",
|
|
295
|
-
"Click OK",
|
|
296
|
-
"Click 'Xuất'",
|
|
297
|
-
"Wait for 'Đang xuất' to complete",
|
|
298
|
-
"Click 'Tải xuống'"
|
|
299
|
-
]
|
|
300
|
-
},
|
|
301
|
-
{
|
|
302
|
-
"id": "platform_wallet",
|
|
303
|
-
"name": "Sao kê số dư ví",
|
|
304
|
-
"nameVi": "Sao kê ví TikTok",
|
|
305
|
-
"platform": "tiktok",
|
|
306
|
-
"url": "https://seller-vn.tiktok.com/finance/withdraw-new?is_new_connect=0®ister_libra=&shop_region=VN",
|
|
307
|
-
"frequency": "monthly",
|
|
308
|
-
"priority": true,
|
|
309
|
-
"exportFormat": "excel",
|
|
310
|
-
"fileExtension": "xlsx",
|
|
311
|
-
"screenshotRef": "https://prnt.sc/ESRF6bEhlbbu",
|
|
312
|
-
"status": "active",
|
|
313
|
-
"dateSelectionType": "core_picker",
|
|
314
|
-
"exportSteps": [
|
|
315
|
-
"Wait for 'Lịch sử xuất dữ liệu'",
|
|
316
|
-
"Scroll down 500px",
|
|
317
|
-
"Click 'Xuất'",
|
|
318
|
-
"Open date picker → clear → select range",
|
|
319
|
-
"Click OK → Export",
|
|
320
|
-
"Wait for completion → Download"
|
|
321
|
-
]
|
|
322
|
-
},
|
|
323
|
-
{
|
|
324
|
-
"id": "affiliate_orders",
|
|
325
|
-
"name": "Báo cáo đơn hàng Affiliate",
|
|
326
|
-
"nameVi": "Đơn hàng affiliate TikTok",
|
|
327
|
-
"platform": "tiktok",
|
|
328
|
-
"url": "https://affiliate.tiktok.com/product/order?shop_region=VN&order_type=1",
|
|
329
|
-
"frequency": "daily_overwrite",
|
|
330
|
-
"priority": true,
|
|
331
|
-
"exportFormat": "excel",
|
|
332
|
-
"fileExtension": "xlsx",
|
|
333
|
-
"screenshotRef": "https://prnt.sc/4bmmSLHdm_wl",
|
|
334
|
-
"status": "active",
|
|
335
|
-
"dateSelectionType": "date_picker",
|
|
336
|
-
"exportSteps": [
|
|
337
|
-
"Select date range",
|
|
338
|
-
"Click export"
|
|
339
|
-
]
|
|
340
|
-
},
|
|
341
|
-
{
|
|
342
|
-
"id": "ads_dashboard",
|
|
343
|
-
"name": "Ads TikTok Dashboard",
|
|
344
|
-
"nameVi": "Bảng điều khiển quảng cáo TikTok",
|
|
345
|
-
"platform": "tiktok",
|
|
346
|
-
"url": "https://seller-vn.tiktok.com/ads-creation/dashboard",
|
|
347
|
-
"frequency": "daily",
|
|
348
|
-
"priority": true,
|
|
349
|
-
"exportFormat": "excel",
|
|
350
|
-
"fileExtension": "xlsx",
|
|
351
|
-
"screenshotRef": "https://prnt.sc/eXGtbkNrlUQf",
|
|
352
|
-
"status": "active",
|
|
353
|
-
"dateSelectionType": "dashboard_filter",
|
|
354
|
-
"exportSteps": [
|
|
355
|
-
"Set date filter",
|
|
356
|
-
"Download dashboard data"
|
|
357
|
-
]
|
|
358
|
-
},
|
|
359
|
-
{
|
|
360
|
-
"id": "ads_cost",
|
|
361
|
-
"name": "Báo cáo paid ads onsite - chi phí",
|
|
362
|
-
"nameVi": "Chi phí quảng cáo TikTok",
|
|
363
|
-
"platform": "tiktok",
|
|
364
|
-
"url": "https://business.tiktok.com/manage/transaction?org_id=7384265942869524481",
|
|
365
|
-
"frequency": "monthly",
|
|
366
|
-
"priority": true,
|
|
367
|
-
"exportFormat": "excel",
|
|
368
|
-
"fileExtension": "xlsx",
|
|
369
|
-
"screenshotRef": "https://prnt.sc/AcnxB06ZZKHV",
|
|
370
|
-
"status": "in_progress",
|
|
371
|
-
"dateSelectionType": "business_center",
|
|
372
|
-
"exportSteps": [
|
|
373
|
-
"Navigate to transaction history",
|
|
374
|
-
"Set date range",
|
|
375
|
-
"Export data"
|
|
376
|
-
]
|
|
377
|
-
},
|
|
378
|
-
{
|
|
379
|
-
"id": "ads_revenue",
|
|
380
|
-
"name": "Báo cáo paid ads onsite - doanh thu",
|
|
381
|
-
"nameVi": "Doanh thu quảng cáo TikTok",
|
|
382
|
-
"platform": "tiktok",
|
|
383
|
-
"url": "https://business.tiktok.com/manage/transaction?org_id=7384265942869524481",
|
|
384
|
-
"frequency": "monthly",
|
|
385
|
-
"priority": true,
|
|
386
|
-
"exportFormat": "excel",
|
|
387
|
-
"fileExtension": "xlsx",
|
|
388
|
-
"screenshotRef": "https://prnt.sc/rcC_Gy47r0XT",
|
|
389
|
-
"status": "in_progress",
|
|
390
|
-
"dateSelectionType": "business_center",
|
|
391
|
-
"exportSteps": [
|
|
392
|
-
"Navigate to transaction history (revenue tab)",
|
|
393
|
-
"Set date range",
|
|
394
|
-
"Export data"
|
|
395
|
-
]
|
|
396
|
-
},
|
|
397
|
-
{
|
|
398
|
-
"id": "affiliate_invoice",
|
|
399
|
-
"name": "Báo cáo hoá đơn affiliate",
|
|
400
|
-
"nameVi": "Hoá đơn hoa hồng liên kết TikTok",
|
|
401
|
-
"platform": "tiktok",
|
|
402
|
-
"url": "https://seller-vn.tiktok.com/finance/invoice?shop_region=VN",
|
|
403
|
-
"frequency": "monthly",
|
|
404
|
-
"priority": true,
|
|
405
|
-
"exportFormat": "excel",
|
|
406
|
-
"fileExtension": "xlsx",
|
|
407
|
-
"screenshotRef": "https://prnt.sc/W8kOcqiA6mmz",
|
|
408
|
-
"status": "active",
|
|
409
|
-
"dateSelectionType": "core_month_picker",
|
|
410
|
-
"exportSteps": [
|
|
411
|
-
"Wait for page load",
|
|
412
|
-
"Click 'Biên nhận hoa hồng liên kết'",
|
|
413
|
-
"Open month picker",
|
|
414
|
-
"Select target month (Jan-Dec)",
|
|
415
|
-
"Click OK",
|
|
416
|
-
"Check if data exists",
|
|
417
|
-
"If data: set 50/Page, get max pages, extract table per page",
|
|
418
|
-
"Save each part as Excel"
|
|
419
|
-
]
|
|
420
|
-
}
|
|
421
|
-
]
|
|
422
|
-
}
|