Amazon Analysis
by @apiclaw
Amazon seller data analysis tool. Features: market research, product selection, competitor analysis, ASIN evaluation, pricing reference, category research. U...
clawhub install amazon-analysisπ About This Skill
name: Amazon Analysis β Full-Spectrum Research & Seller Intelligence version: 1.1.5 description: > Amazon seller data analysis tool. Features: market research, product selection, competitor analysis, ASIN evaluation, pricing reference, category research. Uses {skill_base_dir}/scripts/apiclaw.py to call APIClaw API, requires APICLAW_API_KEY. author: SerendipityOneInc homepage: https://github.com/SerendipityOneInc/APIClaw-Skills metadata: {"openclaw": {"requires": {"env": ["APICLAW_API_KEY"]}, "primaryEnv": "APICLAW_API_KEY"}}
APIClaw β Amazon Seller Data Analysis
> AI-powered Amazon product research. Respond in user's language.
Files
| File | Purpose |
|------|---------|
| {skill_base_dir}/scripts/apiclaw.py | Execute for all API calls (run --help for params) |
| {skill_base_dir}/references/reference.md | Load when you need exact field names or filter details |
Credential
Required: APICLAW_API_KEY. Get free key at apiclaw.io/api-keys. Stored in {skill_base_dir}/config.json in skill root.
Input
User provides: keyword, category, ASIN, or brand β depending on intent. Use intent routing below.
API Pitfalls (CRITICAL)
1. Category first: keyword search is broad β MUST lock categoryPath via categories endpoint before other calls
2. Brand + category: Brand queries MUST include --category to avoid cross-category contamination
3. Use API fields directly: revenue=sampleAvgMonthlyRevenue (NEVER calculate priceΓsales), sales=monthlySalesFloor (lower bound), opportunity=sampleOpportunityIndex
4. reviews/analysis: needs 50+ reviews per ASIN; try category mode first (single call returns all dimensions), ASIN mode only if category call fails. Filter by labelType client-side from the consumerInsights array.
5. Aggregation without categoryPath: produces severely distorted data
6. .data is array: use .data[0], not .data.field
7. labelType: NOT an API request parameter β it is a field in the response consumerInsights array, used for client-side filtering
8. history empty: try oldest-listed ASINs first, up to 3 rounds of different ASINs before giving up
9. Sales null fallback: Monthly sales β 300,000 / BSR^0.65
14 Product Selection Modes
| Mode | One-line Description |
|------|---------------------|
| hot-products | High sales + strong growth momentum |
| rising-stars | Low base + rapid growth trajectory |
| underserved | Monthly salesβ₯300, ratingβ€3.7 β improvable products |
| high-demand-low-barrier | Monthly salesβ₯300, reviewsβ€50 β easy entry |
| beginner | $15-60, FBA, monthly salesβ₯300 β new seller friendly |
| fast-movers | Monthly salesβ₯300, growthβ₯10% β quick turnover |
| emerging | Monthly salesβ€600, growthβ₯10%, β€6 months old |
| single-variant | Growthβ₯20%, 1 variant, β€6 months β small & rising |
| long-tail | BSR 10K-50K, β€$30, exclusive sellers β niche |
| new-release | Monthly salesβ€500, New Release tag |
| low-price | β€$10 products |
| top-bsr | BSRβ€1000 best sellers |
| fbm-friendly | Monthly salesβ₯300, self-fulfilled |
| broad-catalog | BSR growthβ₯99%, reviewsβ€10, β€90 days |
Modes can combine with explicit filters (--price-max, --sales-min, etc). Overrides win.
Composite Commands
report --keyword X β categories + market + products(top50) + realtime(top1)opportunity --keyword X [--mode Y] β categories + market + products(filtered) + realtime(top3)Analysis Framework
Every analysis should address these dimensions where data is available:
Market Health Assessment
| Indicator | Good | Caution | Warning | |-----------|------|---------|---------| | Monthly demand (sampleAvgMonthlySales) | >1,500 units π | 500-1,500 π | <500 π | | Brand concentration (CR10) | <40% π | 40-60% π | >60% π | | New entrant rate (sampleNewSkuRate) | >15% π | 5-15% π | <5% π | | Avg review count (sampleAvgRatingCount) | <500 π | 500-5,000 π | >5,000 π | | FBA rate (sampleFbaRate) | >60% π | 40-60% π | <40% π |Competitive Position Assessment
Opportunity Viability
When user asks "should I sell X" or "is this a good niche":Sales Estimation Notes
monthlySalesFloor is a lower-bound estimate πsampleAvgMonthlyRevenue directly β NEVER calculate price Γ sales πOutput Spec
Sections: Analysis findings β Data Source & Conditions table (interfaces, category, dateRange, sampleType, topN, filters) β Data Notes (estimated values, T+1 delay, sampling basis).
Language (required)
Output language MUST match the user's input language. If the user asks in Chinese, the entire report is in Chinese. If in English, output in English. Exception: API field names (e.g. monthlySalesFloor, categoryPath), endpoint names, technical terms (e.g. ASIN, BSR, CR10, FBA, credits) remain in English.
Disclaimer (required, at the top of every report)
> Data is based on APIClaw API sampling as of [date]. Monthly sales (monthlySalesFloor) are lower-bound estimates. This analysis is for reference only and should not be the sole basis for business decisions. Validate with additional sources before acting.
Confidence Labels (required, tag EVERY conclusion)
Rules: Strategy recommendations are NEVER π. Anomalies (>200% growth) are always π‘. User criteria override AI judgment.
Data Provenance (required)
Include a table at the end of every report:
| Data | Endpoint | Key Params | Notes |
|------|----------|------------|-------|
| (e.g. Market Overview) | markets/search | categoryPath, topN=10 | π Top N sampling, sales are lower-bound |
| ... | ... | ... | ... |
Extract endpoint and params from _query in JSON output. Add notes: sampling method, T+1 delay, realtime vs DB, minimum review threshold, etc.
API Usage (required)
| Endpoint | Calls | Credits | |----------|-------|---------| | (each endpoint used) | N | N | | Total | N | N |
Extract from meta.creditsConsumed per response. End with Credits remaining: N.
Limitations
Cannot do: keyword research, reverse ASIN, ABA data, traffic source analysis, historical price/BSR charts. Niche keywords may return empty β use category path instead.