An end-to-end autonomous research workflow for any Amazon Best Sellers category. The user provides a category URL; the skill collects data, runs parallel analyses, and generates a comprehensive Chinese report package.
Prerequisites
- Playwright MCP server must be available (browser_navigate, browser_evaluate, browser_snapshot, browser_close)
- Agent tool used to launch parallel analysis subagents
- Reports are saved to
{project_root}/reports/{category-slug}/(for examplereports/toys-and-games/、reports/building-toys/). Create the subdirectory at the start of each run.
Workflow Overview
The skill runs in three phases: data collection, parallel analysis, and report synthesis. Use TaskCreate/TaskUpdate to track progress.
Important: All file outputs (JSON data, analysis reports, synthesis reports) must go into the reports/ category-specific subfolder. Extract a human-readable slug from the category name (for example "Building & Construction Toys" → building-toys,"Toys & Games" → toys-and-games). Create the directory before saving any files.
Phase 1: Data Collection
Step 1.1 — Parse user input
Extract from the user message:
- Category URL(required) — Amazon Best Sellers URL, for example
https://www.amazon.com/gp/bestsellers/toys-and-games/ - Subcategories(optional) — specific subcategories for in-depth research. If omitted, automatically select the Top 5 most relevant to the main Top 30 list.
- Report language(optional, default: Simplified Chinese)
Step 1.2 — Scrape the main category Top 30
Use mcp__playwright__browser_navigate to navigate to the category URL. Wait for the page to load completely.
Use mcp__playwright__browser_evaluate to run this extraction script:
() => {
const lines = document.body.innerText.split('\n');
const products = [];
let current = null;
for (let i = 0; i < lines.length; i++) {
const match = lines[i].match(/^#(\d+)$/);
if (match) {
if (current && current.title) products.push(current);
current = { rank: parseInt(match[1]) };
} else if (current) {
if (lines[i].includes('out of 5 stars')) current.stars = lines[i].trim();
else if (lines[i].includes('offers from') || lines[i].match(/^\$[\d,.]+$/)) current.price = lines[i].trim();
else if (lines[i].match(/^[\d,]+$/) && current.stars) current.reviews = lines[i].trim();
else if (lines[i].trim().length > 15 &&
!lines[i].includes('Movers') && !lines[i].includes('New Releases') &&
!current.title) {
current.title = lines[i].trim();
}
}
}
if (current && current.title) products.push(current);
const nrIdx = products.findIndex(p => p.title && (p.title.includes('New Releases') || p.title.includes('Movers')));
const result = nrIdx > 0 ? products.slice(0, nrIdx) : products.filter(p => p.title && p.title.length > 10);
return result.slice(0, 30);
}
Save the results to reports/{category-slug}/{category-slug}_top30.json(using a human-readable slug such as building-toys)。
Step 1.3 — Discover subcategories
On the same page, use mcp__playwright__browser_evaluate to find subcategory navigation links:
() => {
const allLists = document.querySelectorAll('ul, ol');
const subcats = [];
allLists.forEach(list => {
const items = list.querySelectorAll('li');
const firstText = items[0]?.textContent?.trim() || '';
if (firstText.includes('Action & Toy Figures') || firstText.includes('Arts & Crafts') || firstText.includes('Baby & Toddler') || firstText.includes('Building')) {
list.querySelectorAll('a').forEach(a => {
subcats.push({ name: a.textContent.trim(), url: a.href });
});
}
});
return subcats;
}
This returns the full list of subcategory links from the left sidebar. If it fails (returns empty), try alternative selectors:a[href*="/zgbs/"], or extract from the "Any Department" dropdown menu text.
If the user specified subcategories, match by name. Otherwise, use the following logic to automatically select 5 subcategories:
- Map each Top 30 product to its most likely subcategory
- Sort subcategories by frequency of appearance in the Top 30
- Select the top 5 (excluding the main category itself)
- If fewer than 5 appear, fill in with adjacent categories
Step 1.4 — Scrape the Top 20 of each subcategory
For each selected subcategory:
- Use
mcp__playwright__browser_navigateto navigate to its URL - Run the same extraction script as in Step 1.2 (but with
.slice(0, 20)instead of 30) - Save to
reports/{category-slug}/{subcategory_slug}_top20.json
Execute sequentially (Playwright uses a single browser tab). Locate at most 5 subcategories.
Step 1.5 — Close the browser
After all scraping is complete, run mcp__playwright__browser_close。
Phase 2: Parallel Analysis
Use run_in_background: true and subagent_type: "general-purpose" to simultaneously launch 4 analysis agents.
Each agent receives the complete raw data and writes its report to reports/。
Agent 1 — Niche Market Analysis
File:reports/{category-slug}/{category-slug}_niche_analysis.md
Prompt the agent to analyze:
- Product Type Distribution — Which categories dominate the Top 30, percentage breakdown
- Price Band Analysis — $0-7 / $7-15 / $15-30 / $30-50 / $50+ distribution and feasibility
- Star Rating Patterns — Identify quality gaps (high demand + low ratings = opportunity)
- Top 5 Niche Recommendations — Ranked by: demand level, competition intensity, profit potential, entry difficulty
- Supply Chain Guidance — Sourcing locations (Yiwu, Shantou, Dongguan, etc.), factory types, MOQ expectations
- Risk Assessment — Compliance, seasonality, intellectual property, competition risk
Agent 2 — Competitor Analysis
File:reports/{category-slug}/{category-slug}_competitor_analysis.md
Prompt the agent to analyze:
- Brand Landscape — Identify repeat brands, brand concentration, China sellers vs US sellers ratio
- Product Strategy — SKU matrix/variation tactics, bundling, IP licensing, pricing strategy
- Review Barriers — Estimate review thresholds for new seller competition by price tier
- Entry Difficulty Rating(1-5 stars) for each major subcategory
- Top 3 Entry Recommendations including target price, differentiation angle, and risk level
- Review Building Strategy — Vine program, request a review, social seeding timeline
Agent 3 — Keyword Analysis
File:reports/{category-slug}/{category-slug}_keyword_analysis.md
Prompt the agent to analyze:
- High-Frequency Keywords — Extract from all product titles, sort by frequency, group by subcategory
- Search Intent Analysis — By age group (0-2, 2-4, 4-8, 8-12), by scenario (birthday, education, travel, holiday)
- Keyword Strategy — High-volume low-competition opportunities, title formula for each subcategory, backend keyword template (250 bytes)
- PPC Keyword Matrix — For the top 4 subcategories: broad/phrase/exact match recommendations + negative keywords
- Seasonal Keyword Calendar — Monthly plan for Q2 (summer), Q3 (back to school), Q4 (holidays)
Agent 4 — Profit Analysis
File:reports/{category-slug}/{category-slug}_profit_analysis.md
Prompt the agent to analyze:
- Price Tier Profit Model — For each price band ($0-7, $7-15, $15-30, $30-50, $50+): estimate COGS from Alibaba, FBA fees (15% referral fee, fulfillment fee, storage fee), net margin range
- Unit Economics per Category — For the top 5 subcategories: estimated COGS, FBA fees, net profit per unit, margin %
- FBA Optimization — Packaging size tier reduction strategies, storage tips
- Launch Cost Model — Minimum viable launch budget (2 SKUs x 500 units), advertising budget recommendations
- Break-Even Analysis — monthly unit sales required to cover fixed costs
- Return on investment ranking — rank subcategories by estimated return on investment
Important: pass the actually scraped data (not a summary) to each agent. Include all product titles, prices, ratings, and review counts. Agents need real data to produce meaningful analysis.
Phase 3: Report Synthesis
Wait for all 4 agents to complete (you will receive task notifications). Then launch a final synthesis agent
(subagent_type: "general-purpose", this time running in the foreground because we need the results) to generate the synthesis report.
Final Report
File:reports/{category-slug}/{category-slug}_comprehensive_report.md
The synthesis agent should:
- From
reports/read all 4 analysis reports - Combine the raw product data
- Generate a synthesis report with the following exact structure:
# 亚马逊美国站 {Category Name} 品类综合研究报告
## 目录
1. 执行摘要
2. 品类全景概览
3. 子品类深度分析 (Deep dive per subcategory)
4. 市场机会矩阵
5. 新卖家入场策略
6. 运营落地指南
7. 财务模型
8. 风险管控
9. 行动路线图
Key sections that must be included:
- Executive Summary: 1-page overview, including a Top 5 opportunities table (niche, rating, profit, startup cost, payback period)
- Category Landscape: Top 30 product type distribution table, price band analysis by FBA fee ratio
- Subcategory Deep Dive: for each scraped subcategory: market characteristics, competitive landscape, pricing analysis, key players, entry difficulty rating (1-5 stars)
- Market Opportunity Matrix: rate 8-12 niches across 4 dimensions (demand, competition, profit, difficulty), assign S/A/B/C grades
- Entry Strategy: 3 phases — validation phase (1-2 months), expansion phase (3-6 months), brand building phase (6-12 months)
- Operations Playbook: Listing title formula, keyword strategy, phased PPC plan, review building, seasonal calendar
- Financial Model: two startup budgets (lean version $3-5K, standard version $8-15K), unit economics for the first 3 products, break-even analysis, 6-month P&L forecast
- Risk Management: compliance checklist (applicable CPC/CPSIA/ASTM/FCC), intellectual property protection, seasonal inventory, competitive defense
- Action Roadmap: detailed 30/60/90-day plan with milestones
Output Summary
After all phases are complete, present to the user:
- A summary table of all generated reports and their file paths
- The Top 5 key findings from the research
- The Top 3 recommended action items
Error Handling
- If Playwright navigation fails, retry once, then try
mcp__web_reader__webReaderas an alternative - If the extraction script returns empty results, the page structure may be different — use
browser_snapshotto inspect the page structure and adjust the selectors - If subcategory discovery fails, ask the user to provide subcategory URLs
- If any analysis agent fails, regenerate that report