Analyze product reviews with AI on all popular e-commerce sites.
- โ 22 Site Support: Amazon (Global + TR), Trendyol, Hepsiburada, N11, Morhippo, รiรงeksepeti, Nautica, GittiGidiyor, Markafoni, Limango, Katฤฑlฤฑm, AliExpress, eBay, Flipkart
- โ 5 AI Providers: OpenAI GPT-4o Mini, Google Gemini 2.0 Flash, DeepSeek, Zhipu AI GLM-4 Plus, Groq Llama 3.3
- โ Smart Caching: 24-hour TTL, no re-analysis for same product
- โ Error Recovery (Fallback): Auto-switch providers if one fails
- โ 50 Review Analysis: Comprehensive insights for better decisions
- โ Rating Summary: Star distribution + average rating visualization
- โ Sentiment Chart: Polar chart with positive/neutral/negative analysis
- โ Export Options: TXT and PDF formats
- โ Analysis History: Last 10 analyses saved, re-accessible
- โ Rate Limiting: API quota protection (3 requests/minute)
- โ i18n Support: English and Turkish
- Go to Chrome Web Store
- Search for "Siftly AI"
- Click "Add to Chrome"
- Grant permissions
- Visit any e-commerce product page
- Click extension icon โ "Start Analysis"
- Clone or download this repository
- Go to
chrome://extensions/ - Enable "Developer mode"
- Click "Load unpacked"
- Select
review-analyzer-ext/folder
- Click extension icon
- Click โ๏ธ Settings button
- Select AI Model (OpenAI, Gemini, DeepSeek, GLM, Groq)
- Paste API key
- Click "Save"
Note: Each model has separate API key. All keys are stored securely in your browser.
- Go to any supported site (Amazon, Trendyol, etc.)
- Visit product page
- Click extension icon โ "Start Analysis"
- Wait for AI analysis (typically 5-10 seconds)
- Rating Summary: Star distribution and average rating
- Sentiment Chart: ๐ Click button โ View polar chart
- Export: ๐ TXT or ๐ PDF buttons for download
- Click ๐ History button
- Last 10 analyses listed
- Click any analysis โ View full result
- Use dropdown in popup
- No need to go to settings screen
- Settings auto-sync
| Site | Domain | Status | Priority |
|---|---|---|---|
| Amazon (Global) | amazon.com | โ | P0 (Global) |
| Amazon Turkey | amazon.com.tr | โ | P0 (Global) |
| Trendyol | trendyol.com | โ | P1 (TR) |
| Hepsiburada | hepsiburada.com | โ | P1 (TR) |
| N11 | n11.com | โ | P1 (TR) |
| Morhippo | morhippo.com | โ | P1 (TR) |
| รiรงeksepeti | ciceksepeti.com | โ | P1 (TR) |
| Nautica | nautica.com | โ | P1 (TR) |
| GittiGidiyor | gittigidiyor.com | โ | P1 (TR) |
| Markafoni | markafoni.com | โ | P1 (TR) |
| Limango | limango.com | โ | P1 (TR) |
| Katฤฑlฤฑm | katilim.com | โ | P1 (TR) |
| AliExpress | aliexpress.com | โ | P2 (Global) |
| eBay | ebay.com | โ | P2 (Global) |
| Flipkart | flipkart.com | โ | P2 (Global) |
- Any e-commerce site without specific config
- Uses generic DOM scraping
- Filters UI text, duplicates
- Not perfect, but works on most sites
Note: Generic fallback works on every e-commerce site (accuracy not guaranteed).
# Test setup
npm install
# Run all tests
npm test
# Run in watch mode
npm run test:watch
# Coverage report
npm run test:coverageTest Coverage:
- Config.js: 100%
- Content.js: 85%
review-analyzer-ext/
โโโ manifest.json # Chrome extension manifest (v3)
โโโ background.js # Service worker - API calls
โโโ content.js # Content script - DOM scraping
โโโ popup.html # Popup UI
โโโ popup.js # Popup interactions
โโโ config.js # Site selector configuration
โโโ styles.css # Tailwind CSS
โโโ tailwind.config.js # Tailwind settings
โโโ icons/ # Extension icons
โโโ assets/ # Logo images
โโโ _locales/ # i18n (tr, en)
โโโ tests/ # Jest tests
โโโ jest.config.js # Jest configuration
โโโ package.json # NPM scripts
1. Add to config.js
"new-site.com": {
fallbackEnabled: true,
reviewContainer: "div.review-class",
reviewText: "p.review-text",
scrollRequired: true
}2. Add to manifest.json
"host_permissions": [
"*://*.new-site.com/*"
]3. Test It
# Reload extension
chrome://extensions/ โ Reload
# Visit site, check consoleThat's it! Simple site addition.
// config.js - GLOBAL
GLOBAL: {
maxReviews: 50, // Maximum review count
minReviewLength: 20, // Minimum review length (chars)
fallbackMinLength: 40, // Fallback mode minimum
fallbackMaxLength: 1500, // Fallback mode maximum
scrollWaitTime: 800, // Scroll wait time (ms)
scrollCount: 3, // Scroll count
duplicateCheck: true // Duplicate check
}// background.js - RATE_LIMIT_CONFIG
maxRequestsPerMinute: 3, // Max 3 requests per minute
cooldownSeconds: 60, // Cooldown time// background.js - CACHE_CONFIG
enabled: true,
ttl: 86400000, // 24 hours (milliseconds)
maxEntries: 50 // Max cache entries- Real-time sentiment analysis (NLP)
- Multi-language support beyond EN/TR
- Cross-device sync (Chrome Sync API)
- Dark/Light mode toggle
- Keyboard shortcuts
- Voice commands (Web Speech API)
- Add more e-commerce sites (Mercado Libre, Mercado Livre, etc.)
- Automatic site detection (suggest new selectors)
- Community-sourced configs (users can submit site configs)
- Fork this repository
- Create feature branch:
git checkout -b feature/amazing-feature - Make your changes:
git commit -m 'Add some amazing feature' - Push:
git push origin feature/amazing-feature - Open Pull Request
If you found selectors for a new e-commerce site:
config.js- Add new site configmanifest.json- Add new host permission- Test and share screenshots
- Open PR
- Include in PR description:
- Site name and URL
- Selectors used
- Test results (review count)
- Any known issues
- JavaScript: ES6+ syntax, async/await
- Styling: Tailwind CSS utility classes
- i18n: Add new strings to both EN and TR locale files
- Tests: Write Jest tests for new features
- Commit Messages: Use
[Feature],[Fix],[Refactor],[Docs]prefixes
How users can submit change requests?
Users can submit site config via:
-
GitHub Issues:
- Bug report:
Bug: [Site Name] - Problem description - Feature request:
Feature: [Site Name] - Feature description - Site config:
Config: [Site Name] - Selector details
- Bug report:
-
Issue Template: Use
.github/ISSUE_TEMPLATE.mdfile for site config submissions -
Contribution Permissions:
- โ Everyone can open GitHub issues (maintainer approval NOT needed)
- โ Everyone can open bug reports (use issue template)
- โ Everyone can submit site configs (via issues, PRs awaited)
- โ Direct push NOT allowed (PR required, maintainer review needed)
Important Notes:
- โ Users can open PRs directly (no contributor status required)
- โ Maintainer approval REQUIRED (code review, conflict resolution)
- โ Issue template usage REQUIRED (to prevent duplicate questions)
- โ Screenshot sharing encouraged (for selector debugging)
-
Automated CI:
- Jest tests run
- Coverage checked
- Failed tests block PR
-
Maintainer Review:
- Code quality check
- Selectors tested (if needed)
- i18n messages checked
- Manifest permissions checked
-
Conflict Resolution:
- Maintainer resolves conflicts
- Extra tests may be requested
-
Merge:
- Successful PRs merged to main branch
First-time contributors get:
- Added to
CODEOWNERSfile - Added to "Contributors" section in README
- Contributor badges after 5 PRs
MIT License - See LICENSE file for details.
- Lead Developer: Berkayzeren
- Project: Zeren AI Thesis Implementation
- OpenAI - GPT-4o Mini
- Google - Gemini 2.0 Flash
- DeepSeek - DeepSeek Chat
- Zhipu AI - GLM-4 Plus
- Groq - Llama 3.3-70B-Versatile
- Issues: GitHub Issues
- Discussions: GitHub Discussions
Made with โค๏ธ for smarter shopping
