Install
openclaw skills install lululemon-au-product-finderFind a product on the Lululemon Australia site from a natural-language clothing description and return structured details such as product name, variant colors, sizes, prices, URLs, and provenance. Includes fallback handling for anti-bot blocks.
openclaw skills install lululemon-au-product-finderThis skill finds a Lululemon Australia product from a fuzzy user description and returns structured variant data. It is optimized for live catalog lookups where direct curl-style scraping or fresh browser automation may be blocked, and it is expected to degrade gracefully instead of failing hard.
lululemon.com.au, usually under /en-au/p/.Extract the strongest product tokens from the user's description:
Define Jacket, Swiftly Tech, ABC PantNulu, Luon, Warpstremecropped, hip length, 5 inchwomen, menPreserve meaningful qualifiers. Remove filler words.
Build 2-4 search queries, for example:
site:lululemon.com.au/en-au/p "define jacket nulu"site:lululemon.com.au/en-au/p "swiftly tech long sleeve 2.0"site:lululemon.com.au/en-au/p "abc trouser warpstreme"Use web search first. Do not start with direct requests to the site's search pages.
Good candidates:
https://www.lululemon.com.au/en-au/p/...Bad candidates unless nothing else exists:
/c/When the search result is close but ambiguous, open the top candidates and compare:
Treat the slug after /p/ as the product family key.
Example:
.../p/define-jacket-nulu/154826268.html.../p/define-jacket-nulu/149502742.htmlThese usually represent the same product family with different color variants, and sometimes different sale states.
Rules:
If needed, read anti-bot-and-sources.md for the validated discovery strategy and known failure modes.
If a product page is blocked or partially readable, do not stop immediately. Fall back in this order:
lululemon.com.au product URLslululemon.com.au to confirm the product family and current price bandWhat each fallback is allowed to answer:
Do not use unofficial reseller pages to fill official catalog fields.
From each accessible variant page, extract:
product_nameurlcolorprice.currentprice.original when a regular price is shownprice.salesizeslow_stock, notify_only, online_onlyCommon page anchors:
Colour :Select US Size (AU Size)A$...Sale Price ... Regular Price ...Normalization rules:
AUD unless the page clearly shows otherwiseA$169 to numeric 1690 (AU 4)Return one product object with:
all_colors as the union of observed variant colorsvariants as an array of per-URL observationsconfidencefield_sourcescoveragesourcesUse this JSON shape by default:
{
"query": "define jacket nulu",
"product_name": "Define Jacket Nulu",
"product_slug": "define-jacket-nulu",
"currency": "AUD",
"all_colors": ["Black", "Espresso"],
"variants": [
{
"url": "https://www.lululemon.com.au/en-au/p/define-jacket-nulu/154826268.html",
"color": "Black",
"price": {
"current": 169,
"original": 169,
"sale": false
},
"sizes": ["0 (AU 4)", "2 (AU 6)", "4 (AU 8)"],
"field_sources": {
"color": "product_page",
"price.current": "product_page",
"sizes": "product_page"
}
}
],
"confidence": "medium",
"coverage": {
"variant_count_observed": 1,
"all_colors_complete": false,
"sizes_complete": true
},
"sources": [
"https://www.lululemon.com.au/en-au/p/define-jacket-nulu/154826268.html"
]
}
Default order of attack:
Avoid these as the primary path:
curl or requests against the homepage or product pages?q= or ?search=If a user explicitly wants a scriptable crawler, explain that the stable default is not a raw HTTP scraper. It is a discovery-and-extraction workflow built around search indexing plus product detail pages, with optional browser-state reuse only when the environment supports a real user session.
If you have to answer from fallbacks, downgrade confidence and mark each fallback-derived field in field_sources.
all_colors may be incomplete.Return partial structured output when at least one of these is known from official sources:
For partial output:
null or empty arraysconfidence to low or mediumcoverage.all_colors_complete to false unless multiple live variants were verified