E-commerce Logistics Aggregator(电商物流聚合)
name: ecommerce-logistics
by charles-lpf · published 2026-04-01
$ claw add gh:charles-lpf/charles-lpf-ecommerce-logistics---
name: ecommerce-logistics
description: "Aggregate logistics information from Taobao, JD, PDD, and Douyin. One-click query for multi-platform order tracking. Supports persistent cookie storage and QR code login. Use when user asks to check orders, track packages from shopping platforms, or mentions 淘宝/京东/拼多多/抖音 物流/订单."
---
# E-commerce Logistics Aggregator(电商物流聚合)
Query order logistics from Taobao, JD.com, Pinduoduo, and Douyin with persistent authentication.
Features
Setup
# Install dependencies
cd scripts && npm install
# Required environment variables (optional, for headless operation)
export ECOM_LOGISTICS_DATA_DIR="$HOME/.ecommerce-logistics"Usage
First Time: Login to Platforms
cd scripts
# Login to Taobao (opens browser for QR scan)
npm run query -- --platform taobao --login
# Login to PDD
npm run query -- --platform pdd --login
# Note: JD and Douyin are not supported due to strict anti-bot measuresQuery Logistics
# Query all platforms (requires prior login)
npm run query -- --all
# Query specific platform
npm run query -- --platform taobao
npm run query -- --platform pdd
# Query with custom data directory
npm run query -- --all --data-dir /path/to/cookies
# Run in headless mode (no browser window)
npm run query -- --all --headlessQR Login Process
When cookies are missing or expired:
1. The skill opens a browser window with the platform login page
2. A QR code screenshot is saved to `~/.ecommerce-logistics/{platform}-qr.png`
3. **Scan the QR code with the platform's mobile app**
4. Complete login in the browser window
5. Cookies are automatically saved for future use
**Note:** If you see "Cookie 已过期,需要重新登录", run the login command again.
Cookie Storage
Cookies are stored encrypted in:
Architecture
scripts/src/
├── index.ts # CLI entry
├── core/
│ ├── aggregator.ts # Main orchestrator
│ ├── auth-manager.ts # Cookie & QR login
│ ├── rate-limiter.ts # Request throttling
│ └── stealth-browser.ts # Anti-detection browser
├── adapters/
│ ├── base-adapter.ts # Abstract base class
│ ├── taobao-adapter.ts
│ ├── jd-adapter.ts
│ ├── pdd-adapter.ts
│ └── douyin-adapter.ts
└── types/
└── index.ts # TypeScript interfaces
references/
└── selectors.md # Platform-specific CSS selectorsError Handling
| Error | Handling |
|-------|----------|
| Cookie expired | Prompt QR re-login |
| Rate limited | Auto-backoff retry |
| Login page detected | Graceful error with instructions |
| Network timeout | 3 retries with exponential backoff |
Platform Support Status
| Platform | Status | Notes |
|----------|--------|-------|
| Taobao | ✅ Available | Order list + logistics info |
| JD | ❌ Unsupported | Anti-bot detection too strict |
| PDD | ✅ Available | Order list + tracking number + pickup code |
| Douyin | ❌ Unsupported | Requires mobile app access |
Implementation Notes
Anti-Detection Measures
The skill implements several stealth techniques:
1. **navigator.webdriver override** - Hides automation flag
2. **Plugins spoofing** - Simulates real browser plugins
3. **Viewport & User-Agent** - Uses realistic desktop/mobile profiles
4. **Permissions API** - Overrides notification permissions
5. **Playwright-specific cleanup** - Removes `__playwright` properties
Rate Limiting
Each platform has independent rate limits:
| Platform | Max Requests | Window |
|----------|-------------|--------|
| Taobao | 10 | 60s |
| JD | 15 | 60s |
| PDD | 8 | 60s |
| Douyin | 10 | 60s |
Cookie Expiration
Development
Updating Selectors
Platform websites change frequently. Update selectors in:
Testing
# Compile TypeScript
cd scripts && npm run build
# Run in development mode
npm run dev -- --platform taobao
# Debug with visible browser
npm run query -- --platform taobao --headless=falseMore tools from the same signal band
Order food/drinks (点餐) on an Android device paired as an OpenClaw node. Uses in-app menu and cart; add goods, view cart, submit order (demo, no real payment).
Sign plugins, rotate agent credentials without losing identity, and publicly attest to plugin behavior with verifiable claims and authenticated transfers.
The philosophical layer for AI agents. Maps behavior to Spinoza's 48 affects, calculates persistence scores, and generates geometric self-reports. Give your...