Awesome-omni-skill ecommerce-competitor-analyzer
Multi-platform e-commerce competitor analysis skill that automatically scrapes product data from Amazon, Temu, Shopee and generates comprehensive analysis reports using AI. Use when you need to analyze competitor products, extract product insights, or batch analyze multiple product listings. Supports bulk processing with structured outputs including title, price, rating, reviews, and strategic analysis.
git clone https://github.com/diegosouzapw/awesome-omni-skill
T=$(mktemp -d) && git clone --depth=1 https://github.com/diegosouzapw/awesome-omni-skill "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/backend/ecommerce-competitor-analyzer" ~/.claude/skills/diegosouzapw-awesome-omni-skill-ecommerce-competitor-analyzer && rm -rf "$T"
skills/backend/ecommerce-competitor-analyzer/SKILL.md- references .env files
E-commerce Competitor Analyzer Skill
Quick Start (For AI)
When to use this skill: When user asks to analyze, research, or extract insights from e-commerce products (Amazon, Temu, Shopee).
What you should do:
- Extract product identifiers (ASINs or URLs) from user input
- Call the scraper script to get product data
- Call the AI analysis with the analysis prompt template
- Output results in BOTH formats: Google Sheets + Markdown
Input examples:
- "Analyze B0C4YT8S6H"
- "Analyze these products: B0C4YT8S6H, B08N5WRQ1Y, B0CLFH7CCV"
- "Research this competitor: https://amazon.com/dp/B0C4YT8S6H"
Output requirements:
- Google Sheets table with: ASIN, Title, Price, Rating, 4 analysis summaries
- Markdown report with detailed 4-dimensional analysis
How AI Should Process Requests
Step 1: Extract Product Identifiers
From user input, extract all ASINs and/or URLs:
Example inputs:
"Analyze these Amazon products: B0C4YT8S6H B08N5WRQ1Y B0CLFH7CCV"
Extract:
['B0C4YT8S6H', 'B08N5WRQ1Y', 'B0CLFH7CCV']
Mixed input handling:
"Analyze B0C4YT8S6H and https://amazon.com/dp/B08N5WRQ1Y"
Extract:
['B0C4YT8S6H', 'B08N5WRQ1Y'] (extract ASIN from URL)
Step 2: Batch Scrape Product Data
For each product identifier:
- Detect platform (use
if available)scripts/detect-platform.js - Call appropriate scraper (Amazon:
)scripts/scrape-amazon.js - Use Olostep API with configured API key from
.env
Batch processing pattern:
// Process all products in parallel const products = ['B0C4YT8S6H', 'B08N5WRQ1Y', 'B0CLFH7CCV']; const results = await Promise.allSettled( products.map(asin => scrapeAmazon(asin)) ); // Handle failures gracefully const successful = results.filter(r => r.status === 'fulfilled'); const failed = results.filter(r => r.status === 'rejected');
Step 3: Batch AI Analysis
For each successfully scraped product:
- Read the analysis prompt from
prompts/analysis-prompt-base.md - Replace product data placeholders in the prompt
- Call Gemini API (model: gemini-3-flash-preview)
- Extract structured analysis results
Analysis framework (4 dimensions):
- 文案构建逻辑与词频分析 (The Brain) - Copywriting strategy & keywords
- 视觉资产设计思路 (The Face) - Visual design methodology
- 评论定量与定性分析 (The Voice) - Review sentiment analysis
- 市场维态与盲区扫描 (The Pulse) - Market positioning & blind spots
Step 4: Generate Dual Format Output
Format 1: Google Sheets (Structured Data)
Write to Google Sheets with columns: | ASIN | 产品标题 | 价格 | 评分 | 文案分析摘要 | 视觉分析摘要 | 评论分析摘要 | 市场分析摘要 |
Sheet selection priority:
- User explicitly specified Sheet ID/Name/URL
- Default from
(.env
)GOOGLE_SHEETS_ID - Ask user to provide Sheet ID
Format 2: Markdown Report (Detailed Analysis)
Generate file:
竞品分析-YYYY-MM-DD.md
Structure:
# Amazon Competitor Analysis Report ## Analysis Overview - Products analyzed: 3 - Analysis date: 2026-01-29 - Total time: ~5 minutes --- ## Product 1: B0C4YT8S6H ### Basic Information - Title: [Product title] - Price: [Price] - Rating: [Rating] ### Copywriting Strategy & Keyword Analysis [Full analysis...] ### Visual Asset Design Methodology [Full analysis...] ### Customer Review Analysis [Full analysis...] ### Market Positioning & Competitive Intelligence [Full analysis...] ---
File Structure
ecommerce-competitor-analyzer.skill/ ├── SKILL.md # This file (AI instructions) ├── platforms.yaml # Platform configurations (URL patterns, regex) ├── .env.example # Configuration template (API keys) ├── prompts/ # AI prompt templates │ └── analysis-prompt-base.md # Base analysis framework (from n8n) ├── scripts/ # Processing scripts │ ├── detect-platform.js # Platform detection utility │ ├── scrape-amazon.js # Amazon scraper (Olostep API) │ └── batch-processor.js # Batch processing engine └── references/ # Documentation └── n8n-workflow-analysis.md # n8n workflow insights
Configuration Files
platforms.yaml
Contains platform-specific configurations:
- URL patterns for platform detection
- ASIN extraction regex patterns
- Scraper API endpoints
- Data extraction patterns
Key sections:
platforms: amazon: url_patterns: ["amazon.com", "amazon.co.uk", ...] asin_regex: standard: "/dp/([A-Z0-9]{10})" scraper: provider: "olostep" api_endpoint: "https://api.olostep.com/v2/agent/web-agent"
.env.example
Template for required API keys:
OLOSTEP_API_KEY=your_olostep_api_key_here GEMINI_API_KEY=your_gemini_api_key_here GOOGLE_SHEETS_ID=YOUR_GOOGLE_SHEETS_ID_HERE
Critical: Always check if
.env file exists and contains required keys before processing.
Analysis Prompt Template
The AI analysis uses a proven 4-dimensional framework. The exact prompt is stored in:
prompts/analysis-prompt-base.md
Key sections:
- Role: 10-year experienced Amazon Operations Director & Brand Strategist
- Goal: Deep scan of product listing to extract strategic insights
- Output Structure:
- Part 1: 文案构建逻辑与词频分析
- Part 2: 视觉资产设计思路
- Part 3: 评论定量与定性分析
- Part 4: 市场维态与盲区扫描
Important: Use the prompt EXACTLY as provided in the template without modifications.
API Services
Olostep API (Web Scraping)
- Purpose: Scrape Amazon product pages with rendered JavaScript
- Endpoint:
https://api.olostep.com/v2/agent/web-agent - Cost: 1000 free requests/month, then $0.002/request
- Key param:
(matching n8n config)comments_to_scrape: 100
Google Gemini API (AI Analysis)
- Purpose: Generate comprehensive product analysis
- Model:
(cost-effective)gemini-3-flash-preview - Cost: ~$0.001/product
- Alternative:
(for complex analysis)gemini-2-flash-thinking
Google Sheets API (Data Storage)
- Purpose: Export structured results
- Authentication: OAuth2 service account
- Cost: Free tier
Error Handling
Batch Processing with Error Isolation
Critical pattern from n8n workflow:
const items = productIdentifiers; const results = await Promise.allSettled( items.map(async (item, index) => { try { const data = await scrapeProduct(item); const analysis = await analyzeWithAI(data); return { success: true, index, data: analysis }; } catch (error) { // Single failure doesn't stop batch return { success: false, index, error: error.message }; } }) ); // Report results const successful = results.filter(r => r.status === 'fulfilled' && r.value.success); const failed = results.filter(r => r.status === 'rejected' || !r.value.success); console.log(`Processed: ${successful.length} succeeded, ${failed.length} failed`);
Common Errors & Solutions
| Error | Cause | Solution |
|---|---|---|
| Missing .env file | Check .env exists and contains key |
| Malformed ASIN | Validate ASIN: 10 alphanumeric chars |
| Slow page load | Increase timeout or retry |
| Too many requests | Add delay between batches |
Platform Detection Logic
function detectPlatform(urlOrId) { // Direct ASIN if (/^[A-Z0-9]{10}$/.test(urlOrId)) { return { platform: 'amazon', id: urlOrId }; } // Amazon URL patterns if (/amazon\.(com|co\.uk|de|es|fr|it|ca|co\.jp)/i.test(urlOrId)) { const asinMatch = urlOrId.match(/\/dp\/([A-Z0-9]{10})/i); if (asinMatch) { return { platform: 'amazon', id: asinMatch[1] }; } } // Other platforms (future) // if (/temu\.com/i.test(urlOrId)) return { platform: 'temu', id: extractId(urlOrId) }; return null; }
Implementation Notes
Current Version: Phase 1 MVP
Supported Platforms: Amazon (US only) Input Method: Dialog-based (ASINs or URLs) Output Format: Google Sheets table + Markdown report
Roadmap
- ✅ Phase 1: Amazon MVP (current)
- 🔄 Phase 2: Add Temu & Shopee platforms
- 🔄 Phase 3: Cross-platform comparison
- 🔄 Phase 4: Historical tracking & price alerts
Design Philosophy
This skill follows the error isolation pattern from the n8n workflow:
- Single product failure NEVER stops the entire batch
- Always report both successes and failures
- Provide detailed error messages for debugging
Performance Benchmarks
| Operation | Time | Cost |
|---|---|---|
| Single product scrape | ~30 seconds | $0.002 (Olostep) |
| Single product analysis | ~45 seconds | $0.001 (Gemini) |
| Total per product | ~1-2 minutes | ~$0.003 |
| Batch of 10 products | ~10-15 minutes (parallel) | ~$0.03 |
References
- n8n Workflow: Based on v81 workflow logic
- Platform Config: See
for URL patterns and extraction rulesplatforms.yaml - Analysis Prompt: See
for exact prompt templateprompts/analysis-prompt-base.md
Important Reminders for AI
- ALWAYS extract ALL product identifiers from user input before processing
- ALWAYS use batch processing with Promise.allSettled for error isolation
- ALWAYS generate BOTH output formats: Google Sheets + Markdown
- NEVER modify the analysis prompt - use it exactly as provided
- ALWAYS validate .env exists before starting processing
- ALWAYS report processing summary: X succeeded, Y failed
- If Google Sheets ID is missing, ask user to provide it
- Use the exact prompt from prompts/analysis-prompt-base.md without any modifications