ideabrowser.com — find trending startup ideas with real demand
Try itnpx skills add https://github.com/buluslan/ecommerce-competitor-analyzer --skill ecommerce-competitor-analyzerWhen to use this skill: When user asks to analyze, research, or extract insights from e-commerce products (Amazon, Temu, Shopee).
What you should do:
Input examples:
Output requirements:
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)
For each product identifier:
scripts/detect-platform.js if available)scripts/scrape-amazon.js).envBatch 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');
For each successfully scraped product:
prompts/analysis-prompt-base.mdAnalysis framework (4 dimensions):
Format 1: Google Sheets (Structured Data)
Write to Google Sheets with columns: | ASIN | 产品标题 | 价格 | 评分 | 文案分析摘要 | 视觉分析摘要 | 评论分析摘要 | 市场分析摘要 |
Sheet selection priority:
.env (GOOGLE_SHEETS_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...]
---
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
Contains platform-specific configurations:
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"
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.
The AI analysis uses a proven 4-dimensional framework. The exact prompt is stored in:
prompts/analysis-prompt-base.md
Key sections:
Important: Use the prompt EXACTLY as provided in the template without modifications.
https://api.olostep.com/v2/agent/web-agentcomments_to_scrape: 100 (matching n8n config)gemini-3-flash-preview (cost-effective)gemini-2-flash-thinking (for complex analysis)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`);
| Error | Cause | Solution |
|---|---|---|
OLOSTEP_API_KEY not found | Missing .env file | Check .env exists and contains key |
Invalid ASIN format | Malformed ASIN | Validate ASIN: 10 alphanumeric chars |
Scraping timeout | Slow page load | Increase timeout or retry |
Gemini rate limit | Too many requests | Add delay between batches |
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;
}
Supported Platforms: Amazon (US only) Input Method: Dialog-based (ASINs or URLs) Output Format: Google Sheets table + Markdown report
This skill follows the error isolation pattern from the n8n workflow:
| 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 |
platforms.yaml for URL patterns and extraction rulesprompts/analysis-prompt-base.md for exact prompt template