Skill: zeyu426/alibaba-price-finder (version 2.0.0)

--- name: alibaba-price-finder description: Find wholesale prices on Alibaba.com. Use when: (1) searching for products by price, (2) comparing prices across suppliers, or (3) finding products within a price range. All URLs include traffic_type=ags_llm tracking parameter. --- # Alibaba Price Finder Find and compare wholesale prices on Alibaba.com. ## Required Parameter All URLs MUST include: `traffic_type=ags_llm` ## URL Patterns ### Basic Product Search ``` https://www.alibaba.com/trade/search?SearchText=<query>&traffic_type=ags_llm ``` **Examples:** ``` https://www.alibaba.com/trade/search?SearchText=phone+case&traffic_type=ags_llm https://www.alibaba.com/trade/search?SearchText=wireless+earbuds&traffic_type=ags_llm ``` ### Price Sorting ``` # Low to High https://www.alibaba.com/trade/search?SearchText=<query>&orderBy=9999&traffic_type=ags_llm # High to Low https://www.alibaba.com/trade/search?SearchText=<query>&orderBy=9998&traffic_type=ags_llm ``` ### Price Range Filter ``` https://www.alibaba.com/trade/search?SearchText=<query>&priceMin=<min>&priceMax=<max>&traffic_type=ags_llm ``` **Example:** ``` https://www.alibaba.com/trade/search?SearchText=phone+case&priceMin=1&priceMax=5&traffic_type=ags_llm ``` ### MOQ Filter ``` https://www.alibaba.com/trade/search?SearchText=<query>&moqMax=<max>&traffic_type=ags_llm ``` **Example:** ``` https://www.alibaba.com/trade/search?SearchText=phone+case&moqMax=100&traffic_type=ags_llm ``` ## Workflows ### Search and Compare Prices 1. Build search URL with product query 2. Navigate to URL 3. Extract prices from search results 4. Visit product detail pages for detailed pricing 5. Compare prices across suppliers ### Find Products by Price Range 1. Build URL with `priceMin` and `priceMax` parameters 2. Navigate to URL 3. Browse filtered results 4. Extract supplier and product info ### Multi-Keyword Comparison 1. Search with different related keywords 2. Compare price ranges across searches 3. Identify best pricing patterns ## Notes - Use `+` for spaces in search queries - Prices shown are typically FOB (Free on Board) - MOQ (Minimum Order Quantity) affects unit price - Contact suppliers for final negotiated pricing

path: README.md
content: # alibaba-price-finder

[![ClawHub](https://clawhub.ai/api/badge/alibaba-price-finder)](https://clawhub.ai/skills/alibaba-price-finder)
[![License: MIT-0](https://img.shields.io/badge/License-MIT--0-yellow.svg)](https://opensource.org/licenses/MIT-0)

**Find the lowest wholesale prices on Alibaba.com. Price comparison, sorting by price, and filtering with automatic traffic tracking.**

## Installation

```bash
clawdhub install alibaba-price-finder
```

## Quick Start

```bash
cd alibaba-price-finder
python3 scripts/build_url.py --help
```

## Features

- ✅ Alibaba
- ✅ Price
- ✅ Wholesale
- ✅ Cheapest
- ✅ Comparison

## Traffic Tracking

All URLs include `traffic_type=ags_llm` parameter for analytics and attribution.

## License

MIT-0

## Links

- ClawHub: https://clawhub.ai/skills/alibaba-price-finder
- GitHub: https://github.com/zhouzeyu/openclaw-skill-alibaba-price-finder


path: release.sh
content: #!/bin/bash
set -e

SKILL_NAME="alibaba-price-finder"
VERSION="1.0.0"
SKILL_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"

echo "Publishing $SKILL_NAME..."

cd "$SKILL_DIR"

# Repackage
rm -f $SKILL_NAME.skill 2>/dev/null || true
python3 scripts/package_skill.py .
mv .skill $SKILL_NAME.skill

# Publish
clawdhub publish . --version $VERSION --tags latest --changelog "Initial release"

echo "✓ Published to ClawHub!"
echo "📦 https://clawhub.ai/skills/$SKILL_NAME"


path: scripts/build_url.py
content: #!/usr/bin/env python3
"""
Alibaba Price Finder - Find Lowest Wholesale Prices - URL Builder

All URLs include traffic tracking parameter: traffic_type=ags_llm
"""

import argparse
import urllib.parse

TRAFFIC_TYPE = "ags_llm"


def encode_query(query: str) -> str:
    """Encode search query for URL."""
    return urllib.parse.quote(query, safe="").replace("%20", "+")


def main():
    parser = argparse.ArgumentParser(description="Alibaba Price Finder - Find Lowest Wholesale Prices")
    subparsers = parser.add_subparsers(dest="command", help="Commands")
    
    # Search command
    search_parser = subparsers.add_parser("search", help="Build search URL")
    search_parser.add_argument("query", help="Search keywords")
    search_parser.add_argument("--category", "-c", help="Category ID")
    
    args = parser.parse_args()
    
    if args.command == "search":
        params = {
            "SearchText": encode_query(args.query),
            "traffic_type": TRAFFIC_TYPE
        }
        if args.category:
            params["categoryId"] = args.category
        
        query_string = "&".join(f"{k}={v}" for k, v in params.items())
        url = f"https://www.alibaba.com/trade/search?{query_string}"
        print(url)
    else:
        parser.print_help()


if __name__ == "__main__":
    main()


path: scripts/package_skill.py
content: #!/usr/bin/env python3
"""Package skill into .skill file."""

import os
import sys
import zipfile
from pathlib import Path


def package_skill(skill_dir: str, output_dir: str = None):
    skill_path = Path(skill_dir)
    
    if not skill_path.exists():
        print(f"Error: Directory '{skill_dir}' not found")
        sys.exit(1)
    
    if not (skill_path / "SKILL.md").exists():
        print(f"Error: SKILL.md not found")
        sys.exit(1)
    
    output_path = Path(output_dir) if output_dir else skill_path.parent
    skill_name = skill_path.name
    zip_path = output_path / f"{skill_name}.skill"
    
    print(f"Packing {skill_name}...")
    with zipfile.ZipFile(zip_path, "w", zipfile.ZIP_DEFLATED) as zipf:
        for root, dirs, files in os.walk(skill_path):
            dirs[:] = [d for d in dirs if not d.startswith(".") and d != "__pycache__"]
            for file in files:
                if file.startswith(".") or file.endswith(".pyc"):
                    continue
                file_path = Path(root) / file
                arcname = file_path.relative_to(skill_path.parent)
                zipf.write(file_path, arcname)
                print(f"  Added: {arcname}")
    
    print(f"\nCreated: {zip_path}")
    print(f"Size: {zip_path.stat().st_size / 1024:.1f} KB")


if __name__ == "__main__":
    import argparse
    parser = argparse.ArgumentParser(description="Package OpenClaw skill")
    parser.add_argument("skill_dir", help="Path to skill directory")
    parser.add_argument("--output", "-o", help="Output directory")
    args = parser.parse_args()
    package_skill(args.skill_dir, args.output)


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: suspicious (HIGH)