Plan làm extension browser để phân tích web bán đồ cũ
Đây là một ý tưởng rất hay và thực tế cho dân săn đồ cũ. Dưới đây là plan chi tiết từ A-Z để bạn build tool này:
1. Kiến trúc tổng quan
┌─────────────────┐ ┌──────────────────┐ ┌─────────────────┐
│ Browser Ext / │────▶│ Backend API │────▶│ AI/ML Service │
│ Web App │ │ (Node.js/Python) │ │ (Price Analysis)│
└─────────────────┘ └──────────────────┘ └─────────────────┘
│
▼
┌──────────────────┐
│ Database │
│ (PostgreSQL/ │
│ MongoDB) │
└──────────────────┘
2. Các module chính
Module 1: Data Extraction (Chợ Tốt)
Cách tiếp cận:
- Browser Extension: Inject script vào trang Chợ Tốt để scrape data trực tiếp từ DOM vietnam
- Backend API: Dùng Puppeteer/Playwright để render JS và lấy content gold.phuquy.com
Data cần lấy:
interface Product {
title: string;
price: number;
location: string;
description: string;
images: string[];
seller: {
name: string;
rating?: number;
joinDate?: string;
};
specs: {
model: string;
storage: string;
condition: string;
warranty?: string;
};
url: string;
postedDate: string;
}
Kỹ thuật:
- Extension:
document.querySelector()để lấy data từ DOM - Backend: Puppeteer +
page.evaluate()để extract facebook - Chống block: Rotate user-agent, thêm delay, dùng proxy nếu cần tiktok
Module 2: Price Intelligence
Nguồn data so sánh:
- Chợ Tốt: Search cùng model, filter theo location marketing365
- Facebook Marketplace: Scraping hoặc dùng Graph API (nếu có)
- Shopee/Lazada: API public hoặc scraping cho sản phẩm mới
- Diễn đàn: Tinhte, voz, Reddit (r/Vietnam, r/iphone)
- Google Shopping: Dùng Custom Search API baomoi
Kỹ thuật search:
# Ví dụ search query
queries = [
f"iPhone 13 Pro Max 128GB giá {location}",
f"bán iPhone 13 Pro Max cũ",
f"iPhone 13 Pro Max giá tốt",
f"iphone 13 pro max {storage}GB second hand"
]
Tools:
- SerpAPI hoặc Google Custom Search API để search Google 24h.com
- Facebook Graph API (nếu có access)
- Custom scrapers cho từng nguồn (dùng BeautifulSoup/Scrapy) instagram
Module 3: AI Price Analysis
Mô hình phân tích:
def analyze_price(product, market_data):
# 1. Extract features
features = {
'model': extract_model(product.title),
'storage': extract_storage(product.title),
'condition': classify_condition(product.description),
'location': product.location,
'days_listed': calculate_days(product.postedDate),
'seller_trust': calculate_trust_score(product.seller)
}
# 2. Market comparison
comparable = find_comparable_products(market_data, features)
# 3. Price statistics
avg_price = np.mean([p.price for p in comparable])
min_price = np.min([p.price for p in comparable])
max_price = np.max([p.price for p in comparable])
std_dev = np.std([p.price for p in comparable])
# 4. Fair price calculation
fair_price = calculate_fair_price(comparable, features)
# 5. Deal score (0-100)
deal_score = calculate_deal_score(product.price, fair_price, std_dev)
return {
'fair_price': fair_price,
'market_avg': avg_price,
'market_min': min_price,
'market_max': max_price,
'deal_score': deal_score,
'recommendation': get_recommendation(deal_score)
}
AI/ML options:
- Rule-based: Đơn giản, dễ debug, đủ dùng cho MVP instagram
- Regression model: Train trên data lịch sử để predict fair price
- LLM (GPT-4, Claude): Phân tích description, đánh giá condition từ text proximatesolutions
Module 4: UI/UX
Browser Extension UI:
┌─────────────────────────────────┐
│ 🔍 iPhone 13 Pro Max 128GB │
├─────────────────────────────────┤
│ 💰 Giá: 15.500.000đ │
│ │
│ 📊 Phân tích giá: │
│ ├─ Giá thị trường: 16.2M - 18M │
│ ├─ Giá hợp lý: ~17M │
│ └─ ⭐ Deal Score: 85/100 │
│ │
│ ✅ MUA NGAY - Rẻ hơn 1.5M! │
│ │
│ 📈 Lịch sử giá (30 ngày) │
│ [Chart] │
│ │
│ 🔗 So sánh 12 sản phẩm khác │
└─────────────────────────────────┘
Web App Dashboard:
- Danh sách sản phẩm đang theo dõi
- Alert khi có deal tốt (push notification/email)
- Lịch sử giá theo thời gian
- Config threshold (ví dụ: alert khi rẻ hơn 10% so với thị trường)
3. Tech Stack đề xuất
Backend
Language: Node.js (TypeScript) hoặc Python
Framework: FastAPI (Python) hoặc Express/NestJS (Node)
Database: PostgreSQL + Redis (cache)
Queue: Bull (Node) hoặc Celery (Python)
Scraping: Puppeteer/Playwright + Cheerio
Search: SerpAPI / Google Custom Search
AI: OpenAI API / Local LLM (Ollama)
Deployment: Docker + VPS (DigitalOcean/Linode)
Browser Extension
Framework: Plasmo (khuyến nghị) hoặc WXT
UI: React + Tailwind CSS
Storage: Chrome Storage API
Permissions: activeTab, storage, https://www.chotot.com/*
Web App (optional)
Framework: Next.js 14 (App Router)
UI: shadcn/ui + Tailwind
Auth: NextAuth.js
Database: Prisma + PostgreSQL
Deployment: Vercel
4. Roadmap triển khai
Phase 1: MVP (2-3 tuần)
- [ ] Browser extension cơ bản scrape được data từ Chợ Tốt
- [ ] Backend API nhận data và lưu vào database
- [ ] Rule-based price analysis (so sánh đơn giản)
- [ ] UI extension hiển thị deal score
Phase 2: Price Intelligence (3-4 tuần)
- [ ] Tích hợp search Google Shopping API
- [ ] Scraper cho Facebook Marketplace
- [ ] Historical price tracking
- [ ] Email/push notification
Phase 3: AI Enhancement (2-3 tuần)
- [ ] Train model predict fair price
- [ ] LLM phân tích description tự động
- [ ] Image analysis (đánh giá condition từ ảnh)
Phase 4: Scale & Monetization (ongoing)
- [ ] Support thêm trang khác (Tiki, Shopee, Lazada)
- [ ] Premium features (advanced analytics, API access)
- [ ] Affiliate integration (hoa hồng từ giao dịch)
5. Các vấn đề cần lưu ý
Chống block/scraping
- Rate limiting: Max 1 request/2-3 giây baomoi
- Rotate user-agent và headers
- Dùng proxy rotation service (Bright Data, ScraperAPI) nếu cần
- Respect robots.txt
Legal & Ethics
- Chỉ scrape data public, không vượt qua authentication
- Không spam, không overload server target
- Compliance với GDPR/privacy laws nếu lưu user data
Performance
- Cache kết quả search (Redis, TTL 1-4 giờ)
- Background job cho heavy tasks (price comparison)
- Lazy load data trong UI
6. Budget ước tính
| Item | Cost (tháng) |
|---|---|
| VPS (2GB RAM) | $10-20 |
| SerpAPI (1000 requests) | $50 |
| Proxy service (optional) | $30-100 |
| OpenAI API (optional) | $20-50 |
| Domain | $10/năm |
| Total | $120-230/tháng |
7. Code structure mẫu
price-checker/
├── extension/
│ ├── src/
│ │ ├── content/
│ │ │ └── scraper.ts
│ │ ├── popup/
│ │ │ └── App.tsx
│ │ └── utils/
│ │ └── api.ts
│ └── manifest.json
├── backend/
│ ├── src/
│ │ ├── routes/
│ │ │ └── price.ts
│ │ ├── services/
│ │ │ ├── scraper.ts
│ │ │ ├── search.ts
│ │ │ └── analyzer.ts
│ │ └── db/
│ │ └── schema.prisma
│ └── package.json
└── README.md
Bạn muốn tôi bắt đầu từ đâu? Tôi có thể:
- Viết code scraper cho Chợ Tốt
- Setup backend API với FastAPI
- Tạo browser extension với Plasmo
- Implement price analysis algorithm