Purpose
Review one or more Alibaba products for corporate gifting by collecting the product name, visible base price, MOQ, ratings, supplier and shipping signals, then presenting {use-case} suitability remarks and an approximate landed-cost estimate for {destination-country} when freight, taxes, exchange rate, or other assumptions are available.
When to Use
Use when the task provides Alibaba product URLs or product names and requires a structured comparison for gifting, procurement, or destination-specific landed-cost evaluation. This skill covers Alibaba product pages; gather Amazon products separately when the request includes both marketplaces.
Workflow
- Prefer supplied Alibaba product-detail URLs. Alibaba product pages use the durable pattern
https://www.alibaba.com/product-detail/{title-slug}_{product-id}.html; preserve the supplied opaque numeric product ID rather than guessing it. For multiple supplied URLs, navigate to each directly and run the extractor after each page loads; batch the navigations and evaluations in one browser-agent call where supported. - If only a product name is provided, navigate once to
https://www.alibaba.com/trade/search?SearchText={query}(URL-encode{query}), select the result whose title best matches the requested product, read its product-detail href and opaque ID, then navigate directly to that href. Do not infer an ID from the product name. - On each loaded product-detail page, wait briefly for hydrated pricing content, then run this extractor without exploratory snapshots:
(() => {
const clean = s => (s || '').replace(/\s+/g, ' ').trim();
const text = clean(document.body?.innerText);
const uniq = a => [...new Set(a.map(clean).filter(Boolean))];
const title = clean(document.querySelector('h1')?.innerText) || clean(document.title).replace(/\s*[|–-].*$/, '');
const priceNodes = [...document.querySelectorAll('[class*="price" i], [data-testid*="price" i], [class*="product-price" i]')];
const priceSnippets = uniq(priceNodes.map(e => e.innerText)).slice(0, 20);
const prices = uniq([...text.matchAll(/(?:US\$|USD|₹|INR|\$)\s?[0-9][0-9,.]*(?:\s*[-–]\s*(?:US\$|USD|₹|INR|\$)?\s?[0-9][0-9,.]*)?/gi)].map(m => m[0])).slice(0, 30);
const find = re => (text.match(re)?.[0] || null);
const rating = find(/(?:rating|rated)\s*[::-]?\s*[0-5](?:\.[0-9])?\s*(?:\/\s*5|stars?)?/i);
const reviewCount = find(/(?:[0-9][0-9,.]*\s*(?:reviews?|ratings?)|reviews?\s*[::-]?\s*[0-9][0-9,.]*)/i);
const moq = find(/(?:minimum order|moq|min\.? order)\s*[::-]?\s*[^|;,]{1,100}/i);
const shipping = uniq([...document.querySelectorAll('[class*="shipping" i], [class*="delivery" i], [data-testid*="shipping" i], [data-testid*="delivery" i]')].map(e => e.innerText)).slice(0, 10);
const supplier = clean(document.querySelector('[class*="company-name" i], [class*="supplier-name" i], [data-testid*="company" i]')?.innerText) || null;
const useCaseTerms = ['{use-case-term-1}', '{use-case-term-2}', 'custom', 'logo', 'OEM', 'ODM', 'warranty', 'bulk', 'personaliz[^ ]*'];
const signals = uniq([title, text].join(' ').match(new RegExp('(?:' + useCaseTerms.join('|') + ')[^.;|]{0,100}', 'gi')) || []).slice(0, 12);
return {url: location.href, title, prices, priceSnippets, rating, reviewCount, moq, supplier, shipping, suitabilitySignals: signals};
})()- Treat the lowest displayed unit-price range as the base-price candidate only after checking whether it is tied to the smallest quantity or a variant. Preserve currency, price range, MOQ, and all variant or quantity qualifiers.
- Compute or report
approximate landed cost in {destination-country}outside page extraction as: converted unit price + per-unit international freight + customs duty, import taxes, and other import charges + domestic delivery. If those inputs are unavailable, label the result as an assumption-based estimate ornot determinable from the page; never present Alibaba's base price as landed cost. - Compare products using concrete suitability remarks derived from extracted features: personalization, perceived usefulness, durability, minimum-order feasibility, shipping risk, price tier, and appropriateness for
{use-case}.
Site-Specific Gotchas
- Alibaba product pages are keyed by opaque numeric IDs embedded after the title slug; never manufacture an ID.
- Prices may be ranges, variant-dependent, quantity-dependent, or displayed in multiple currencies. Keep the original text and identify the selected basis before calculating.
- Product content can hydrate after
domcontentloaded; observed pages required roughly 1.2–1.7 seconds before extraction. If price, rating, or MOQ is absent, allow a short wait and rerun the same extractor rather than navigating through the homepage. - CSS classes are not fully stable. The extractor intentionally combines semantic class fragments,
data-testidfragments, and body-text fallbacks; treat missing fields as unavailable rather than guessing. - MOQ, supplier ratings, trade-assurance indicators, shipping quotes, duties, and destination delivery charges may require a destination or logged-in quote and are not necessarily present on the public page.
- Suitability signals are evidence for editorial remarks, not verified claims about quality, certification, warranty, or delivery.
Expected Output
Return one record per Alibaba product with:
- product name and canonical URL;
- base price, currency, range/variant qualification, and MOQ;
- rating and review count when visible;
- supplier, shipping, and relevant product-feature signals;
- approximate
{destination-country}landed cost with explicit exchange-rate, freight, duty, tax, and quantity assumptions, or a clear unavailable-data note; - concise
{use-case}suitability remarks covering personalization, usefulness, bulk feasibility, risks, and recommended use case.