ruwangi-parfum-perempuan▌
ruwangi.com/ruwangi-parfum-laki-laki-ko0z5t · updated May 21, 2026
MDX-style export adds YAML metadata + attribution linking explainx.ai and this canonical listing URL.
Return a curated, ranked list of best local Indonesian women's perfumes from Ruwangi.com — name, brand, IDR price, rating, notes, and time-of-day suitability. Read-only directory lookup using the pre-curated /katalog/parfum-lokal-wanita-terbaik deep-link.
| name | ruwangi-parfum-perempuan |
| title | Ruwangi Best Local Indonesian Women's Perfume |
| description | >- Return a curated, ranked list of best local Indonesian women's perfumes from Ruwangi.com — name, brand, IDR price, rating, notes, and time-of-day suitability. Read-only directory lookup using the pre-curated /katalog/parfum-lokal-wanita-terbaik deep-link. |
| website | ruwangi.com |
| category | shopping |
| tags | - perfume - indonesia - ruwangi - directory - women - local-brand - read-only |
| source | 'browserbase: agent-runtime 2026-05-18' |
| updated | '2026-05-18' |
| recommended_method | browser |
| alternative_methods | - method: url-param rationale: >- Direct deep-link navigation to /katalog/parfum-lokal-wanita-terbaik is itself a URL-driven shortcut — no search/filter steps required. Pagination is path-based (/page/N). The browser is only needed to render and parse the server-side HTML. - method: api rationale: >- No public JSON API was discovered during 2026-05-18 exploration. Page is Next.js App Router server-rendered HTML; only XHR traffic is PostHog analytics (djz.ruwangi.com). Don't waste time hunting for a /api/ endpoint. |
| verified | false |
| proxies | false |
Ruwangi Best Local Indonesian Women's Perfume
Purpose
Given a request for "best local Indonesian perfume suitable for women" (or any synonym — parfum lokal wanita terbaik, parfum perempuan, parfum feminin), return a curated, ranked list of women's-leaning Indonesian-brand fragrances from Ruwangi.com, Indonesia's #1 local-perfume directory. For each item, return name, brand, IDR price, rating + review count, fragrance character (notes family), time-of-day suitability (Siang/Malam/Versatile), gender-lean tag (Feminin), and canonical detail URL. Read-only — never adds to cart, never submits the AI quiz, never registers.
When to Use
- A shopper asks for "rekomendasi parfum lokal untuk perempuan/wanita" or "best Indonesian women's perfume".
- An agent needs to enrich a recommendation with notes (Top/Middle/Base), scent profile (Manis / Bunga / Hangat / Natural / Citrus / etc.), and brand context for one or more women's-leaning local perfumes.
- Comparative shopping flows that need price + rating across the women's catalog (159 perfumes spread over 8 pages as of 2026-05-18).
- Surfacing brand information (Mykonos, HMNS, Alchemist, Alien Objects, Aerostreet Parfum, Bodibreze, Velixir, BOHE Bali, Dewdrop, Fordive, Iki Arum, Project 1945, Nifty Twice, etc.) for niche/luxury vs. budget tiers.
Workflow
Ruwangi exposes a pre-curated, gender-scoped catalog URL at a stable, sitemap-listed path — there's no need to search, apply filters, or call an API. Direct navigation to the deep-link gets you the curated "best women's" list in one HTTP round-trip. Pagination is path-based (/page/N), and the ?page= query string is silently ignored. There is no public JSON API, and sort state is client-side only — so leading with the URL and parsing browse get markdown body is the cheapest, most reliable path. A bare (non-stealth, non-proxy) session works fine — no Akamai, no Cloudflare challenge, no rate-limiting observed.
1. Open a session
export BROWSERBASE_API_KEY="$BB_API_KEY"
browse env remote
No --advanced-stealth or --proxies flags required. The site served all requests cleanly with bare-default settings during 2026-05-18 verification. Add --proxies only if you observe a 403 (none seen so far).
2. Navigate to the curated women's catalog
browse open "https://ruwangi.com/katalog/parfum-lokal-wanita-terbaik"
browse wait load
browse wait timeout 2000 # let lazy-loaded cards settle
This page is the canonical "Parfum Lokal Wanita Terbaik" catalog — Ruwangi's editorial curation of women's-leaning local perfumes, ordered by default "Relevansi" (their editorial ranking). The page header confirms 🌸Cenderung Feminin · 159 parfum and breadcrumb Katalog / Parfum Lokal Wanita Terbaik.
3. Extract listings from rendered markdown
browse get markdown body > /tmp/wanita.json
The response is a JSON envelope {"markdown": "..."}. Each listing appears as a clean block in this order:
[View {Name}](/parfum/{slug})


{TimeOfDay} # "Siang" | "Malam" | "Versatile"
🌸Feminin # gender-lean emoji + label (also 👔Maskulin, ✨Unisex on cross-listed cards)
{Name} # display name
{brand-slug} # lowercase brand handle (e.g. "mykonos", "aerostreet-parfum")
{rating}({reviewCount}) # e.g. "4.9(6600)" — count may be raw (e.g. 6600) or display-rounded
Rp{price-with-dot-thousands} # IDR, dot-grouped (e.g. "Rp349.000")
Karakter
{character} # fragrance family, e.g. "Oriental", "Fresh Floral", "Warm Floral"
Parse with a regex over the markdown — the [View ...](/parfum/{slug}) anchor is the stable per-card delimiter. A robust extractor (verified on pages 1–2, 20 items each):
const cardRe = /\[View ([^\]]+)\]\(\/parfum\/([^)]+)\)[\s\S]*?(Siang|Malam|Versatile)\s*\n\s*\n(?:👔Maskulin|🌸Feminin|✨Unisex|🚻Unisex)([^\n]*)\n\s*\n([^\n]+)\n\s*\n([^\n]+)\n\s*\n([\d.]+)\(([\d.]+)\)\n\s*\n(Rp[\d.]+)\n\s*\nKarakter\n\s*\n([^\n]+)/g;
// Groups: 1 name, 2 slug, 3 timeOfDay, 5 displayName, 6 brandSlug, 7 rating, 8 reviewCount, 9 priceIdr, 10 character
4. Paginate
There are 8 pages (12345...8 shown in the rendered pagination). Pagination uses path-based URLs:
browse open "https://ruwangi.com/katalog/parfum-lokal-wanita-terbaik/page/2"
# ...repeat through page/8
Do not use ?page=2 — the query string is silently ignored and you'll get page 1 again. Page 1 has no /page/1 suffix; subsequent pages are explicit /page/{N}.
5. (Optional) Enrich each card with full notes by visiting the detail page
browse open "https://ruwangi.com/parfum/{slug}" # e.g. /parfum/sansa
browse wait load
browse wait timeout 1500
browse get markdown body
The detail page exposes:
- Scent Profile attribute chips (e.g. Manis · Bunga · Hangat · Natural)
- Top Notes (e.g. "Black Tea, Moss, Osmanthus., Peach")
- Middle Notes (e.g. "Rose, Tuberose, Narcissus, Toffee.")
- Base Notes (e.g. "Vetiver, Cedarwood, Orris Root, Dark Chocolate.")
- Karakter (single-line family label)
- Description (Indonesian-language editorial blurb)
- External buy link ("Beli Sekarang" → Sociolla / Tokopedia / Shopee / brand store)
- Brand summary (variant count, brand-aggregate rating)
Skip this step if the user only wants a top-N list — the card data from step 3 is sufficient.
6. Rank / filter client-side
The default Relevansi (relevance) order is Ruwangi's editorial pick of "best". For an explicit "highest-rated" sort, the URL cannot encode it — ?sort=rating is ignored. You have two options:
- (Preferred — single round-trip) Collect all 8 pages of cards, then sort client-side by
ratingdescending (tie-break byreviewCountdescending). This avoids the DOM-click-and-rerender dance and is deterministic. - (UI fallback) Click the Relevansi dropdown → Rating Tertinggi, then re-scrape page 1. State is in-memory only; reloading the URL resets it to Relevansi.
For "best for women" specifically, prefer the cards that show 🌸Feminin (some cross-listed ✨Unisex / 👔Maskulin items appear in cross-recommendation rails on the same page; filter on the gender tag when emitting).
7. Emit the ranked list
See ## Expected Output for the JSON schema.
Site-Specific Gotchas
?page=Nis silently ignored — use path-based/page/N. The pagination buttons are<button>elements with nohref; they navigate via client-side router to/katalog/{slug}/page/{N}. Directbrowse opento the path-based URL works; the query-string variant returns page 1 every time, with no warning.- Sort state is client-only. The "Relevansi" dropdown surfaces four options (Relevansi, Harga: Rendah ke Tinggi, Harga: Tinggi ke Rendah, Rating Tertinggi) but selecting any of them does not update the URL.
?sort=rating,?orderBy=rating, etc. all fall through to the default Relevansi. To deliver a rating-sorted result deterministically across reloads, fetch all pages and sort client-side. - Mixed-gender cross-recommendation rails on the women's catalog page. Below the curated grid, the page renders editorial rails ("Pilihan Editor", "Kurasi Spesial Untukmu", "Rekomendasi Parfum Lokal") that include some
👔Maskulinand✨Unisexitems (e.g. Fields of Ubud, Untitled Humans Aroma 02). Filter on the per-card gender tag when the user explicitly asked for women's — the count159 parfumshown in the breadcrumb refers to the curated grid only, not the cross-rails. - 20 cards per page; total
159over 8 pages. Last page (/page/8) has 19 cards, not 20. - Brand-name casing differs by surface. Card rails on the homepage render brand as a lowercase slug ("mykonos", "aerostreet-parfum", "jayrosse"); the catalog page renders Title Case ("Mykonos", "Aerostreet Parfum"); the detail page shows display name. Normalize to the slug form (
/merek-parfum/{brandSlug}) for stable identity. - Review-count formatting is display-rounded.
4.9(6600)may represent any value 6550–6649 — the underlying API rounds to the nearest 100 for counts > 1k. Treat as approximate, not exact. For exact counts, see the detail page header (e.g. "6600 Penilaian" — same rounding). - No public JSON API observed. The catalog is server-rendered HTML (Next.js App Router, RSC payloads inline as
self.__next_f.push(...); no__NEXT_DATA__blob). The only XHR traffic on a category-page load is PostHog analytics POSTs todjz.ruwangi.com/s/and/i/v0/e/(return{"status":"Ok"}, irrelevant to data extraction). - External "Beli Sekarang" links go off-site. The buy button on
/parfum/{slug}redirects to Sociolla, Tokopedia, Shopee, or the brand's own store — Ruwangi is a directory, not a marketplace. Treat the link as informational; do not attempt a checkout flow. - No anti-bot wall observed as of 2026-05-18. A bare Browserbase session (no
--advanced-stealth, no--proxies) cleared the homepage, catalog, paginated catalog (/page/2), product detail, and sitemap.xml without challenge. Cloudflare Turnstile script (cf-turnstile-script) is included in the page but not invoked on these read paths. Add--proxiesonly if a future 403 surfaces. - Pre-built taxonomy catalogs are the agent-friendly entry surface. The sitemap lists 18 catalog deep-links —
parfum-lokal-pria-terbaik,parfum-lokal-wanita-terbaik,parfum-lokal-unisex-terbaik,parfum-lokal-segar,parfum-lokal-manis,parfum-lokal-bunga,parfum-lokal-rempah,parfum-lokal-hangat,parfum-lokal-herbal,parfum-lokal-natural,parfum-lokal-clean,parfum-siang,parfum-malam,parfum-versatile,parfum-lokal-mewah,parfum-lokal-murah,parfum-aroma-kopi,parfum-aroma-teh. For "perfume for {user-trait}" intents, prefer the matching deep-link over any client-side filter. - The
/surveyAI quiz is a 5+ question form, not a query API. It exists athttps://ruwangi.com/surveyand produces personalized recommendations after the user answers preferences, but it is not callable as a one-shot endpoint. For "best for women" specifically, the curated/katalog/parfum-lokal-wanita-terbaikpage is the right surface — don't route through/survey. - Detail-page notes can carry trailing periods. Top/Middle/Base notes strings often end with a stray "." (e.g.
"Osmanthus., Peach","Tuberose, Narcissus, Toffee."). Strip trailing periods when tokenizing into a notes array.
Expected Output
{
"source_url": "https://ruwangi.com/katalog/parfum-lokal-wanita-terbaik",
"category": "parfum-lokal-wanita-terbaik",
"category_label": "Parfum Lokal Wanita Terbaik",
"gender_lean": "feminin",
"sort_applied": "Relevansi (editorial)",
"total_in_catalog": 159,
"pages_fetched": 8,
"results": [
{
"rank": 1,
"name": "Sansa",
"slug": "sansa",
"url": "https://ruwangi.com/parfum/sansa",
"brand": "Mykonos",
"brand_slug": "mykonos",
"brand_url": "https://ruwangi.com/merek-parfum/mykonos",
"price_idr": 349000,
"price_display": "Rp349.000",
"rating": 4.9,
"review_count_approx": 6600,
"time_of_day": "Malam",
"gender_tag": "Feminin",
"character": "Oriental",
"image_url": "https://cdn.ruwangi.com/.../products/mykonos/sansa/...Sansa.webp",
"notes": {
"top": ["Black Tea", "Moss", "Osmanthus", "Peach"],
"middle": ["Rose", "Tuberose", "Narcissus", "Toffee"],
"base": ["Vetiver", "Cedarwood", "Orris Root", "Dark Chocolate"]
},
"scent_profile": ["Manis", "Bunga", "Hangat", "Natural"]
},
{
"rank": 2,
"name": "Flower Springtime Rose",
"slug": "flower-springtime-rose",
"url": "https://ruwangi.com/parfum/flower-springtime-rose",
"brand": "Aerostreet Parfum",
"brand_slug": "aerostreet-parfum",
"price_idr": 72900,
"price_display": "Rp72.900",
"rating": 4.9,
"review_count_approx": 1600,
"time_of_day": "Malam",
"gender_tag": "Feminin",
"character": "Fresh Floral"
},
{
"rank": 3,
"name": "MANIKA",
"slug": "manika",
"url": "https://ruwangi.com/parfum/manika",
"brand": "Iki Arum",
"brand_slug": "iki-arum",
"price_idr": 169000,
"price_display": "Rp169.000",
"rating": 4.9,
"review_count_approx": 1700,
"time_of_day": "Malam",
"gender_tag": "Feminin",
"character": "Warm Floral"
}
]
}
notes and scent_profile are only populated when step 5 (detail-page enrichment) runs; omit from the card-only fast path.
Empty / failure shapes:
// Catalog reachable, zero items matched the gender_tag filter (extremely unlikely on this page — sanity guard)
{ "source_url": "...", "results": [], "warning": "no_feminin_cards_after_filter" }
// Page failed to render (Cloudflare challenge or future anti-bot wall)
{ "source_url": "...", "results": [], "error": "page_blocked", "http_status_or_marker": "..." }
How to use ruwangi-parfum-perempuan on Cursor
AI-first code editor with Composer
Prerequisites
Before installing skills in Cursor, ensure your development environment meets these requirements:
- ›Cursor installed and configured on your development machine
- ›Node.js version 16.0+ with npm package manager (verify with
node --version) - ›Active project directory or workspace where you want to add ruwangi-parfum-perempuan
Execute installation command
Execute the skills CLI command in your project's root directory to begin installation:
The skills CLI fetches ruwangi-parfum-perempuan from GitHub repository ruwangi.com/ruwangi-parfum-laki-laki-ko0z5t and configures it for Cursor.
Select Cursor when prompted
The CLI will show a list of available agents. Use arrow keys to navigate and space to select Cursor:
Verify installation
Confirm successful installation by checking the skill directory location:
Reload or restart Cursor to activate ruwangi-parfum-perempuan. Access the skill through slash commands (e.g., /ruwangi-parfum-perempuan) or your agent's skill management interface.
Security & Verification Notice
We perform automated surface-level scans (Gen AI Scanner, Socket, Snyk) during installation. These checks detect common vulnerabilities but do not guarantee complete security. Always review skill source code and verify the publisher's reputation before production use.
Skills execute code in your development environment. Always verify the publisher's identity, review recent commits, and test in isolated environments before production deployment.
List & Monetize Your Skill
Submit your Claude Code skill and start earning
Use Cases▌
Task Automation & Efficiency
Automate repetitive workflows and reduce manual effort
Example
Generate reports, summarize documents, draft communications
Save 3-5 hours per week on routine tasks
Knowledge Enhancement
Learn new skills, understand complex topics, get expert guidance
Example
Explain concepts, provide examples, suggest learning resources
Accelerate learning and skill development by 2x
Quality Improvement
Enhance output quality through reviews, suggestions, and refinements
Example
Review drafts, suggest improvements, catch errors
Improve work quality by 30-40% with less effort
Implementation Guide▌
Prerequisites
- ›Claude Desktop or compatible AI client with skill support
- ›Clear understanding of task or problem to solve
- ›Willingness to iterate and refine outputs
Time Estimate
15-45 minutes depending on use case complexity
Installation Steps
- 1.Install skill using provided installation command
- 2.Test with simple use case relevant to your work
- 3.Evaluate output quality and relevance
- 4.Iterate on prompts to improve results
- 5.Integrate into regular workflow if valuable
Common Pitfalls
- ⚠Expecting perfect results without iteration
- ⚠Not providing enough context in prompts
- ⚠Using skill for tasks outside its intended scope
- ⚠Accepting outputs without review and validation
Best Practices▌
✓ Do
- +Start with clear, specific prompts
- +Provide relevant context and constraints
- +Review and refine all outputs before using
- +Iterate to improve output quality
- +Document successful prompt patterns
✗ Don't
- −Don't use without understanding skill limitations
- −Don't skip validation of outputs
- −Don't share sensitive information in prompts
- −Don't expect skill to replace human judgment
💡 Pro Tips
- ★Be specific about desired format and style
- ★Ask for multiple options to choose from
- ★Request explanations to understand reasoning
- ★Combine AI efficiency with human expertise
When to Use This▌
✓ Use When
Use when skill capabilities match your task, clear ROI on time saved, and you can validate outputs. Best for repetitive tasks, learning, and quality improvement.
✗ Avoid When
Avoid when task requires deep expertise you can't validate, involves sensitive decisions, or when learning process is more valuable than speed of completion.
Learning Path▌
- 1Familiarize yourself with skill capabilities and limitations
- 2Start with low-risk, non-critical tasks
- 3Progress to more complex and valuable use cases
- 4Build expertise through regular use and experimentation
Discussion
Product Hunt–style comments (not star reviews)- No comments yet — start the thread.
Ratings
4.7★★★★★57 reviews- ★★★★★Lucas Khanna· Dec 28, 2024
We added ruwangi-parfum-perempuan from the explainx registry; install was straightforward and the SKILL.md answered most questions upfront.
- ★★★★★Kiara Chen· Dec 28, 2024
ruwangi-parfum-perempuan reduced setup friction for our internal harness; good balance of opinion and flexibility.
- ★★★★★Chaitanya Patil· Dec 16, 2024
Registry listing for ruwangi-parfum-perempuan matched our evaluation — installs cleanly and behaves as described in the markdown.
- ★★★★★Noor Torres· Dec 16, 2024
ruwangi-parfum-perempuan reduced setup friction for our internal harness; good balance of opinion and flexibility.
- ★★★★★Layla Chen· Dec 16, 2024
Registry listing for ruwangi-parfum-perempuan matched our evaluation — installs cleanly and behaves as described in the markdown.
- ★★★★★Naina Flores· Dec 12, 2024
Solid pick for teams standardizing on skills: ruwangi-parfum-perempuan is focused, and the summary matches what you get after install.
- ★★★★★Alexander Liu· Nov 23, 2024
ruwangi-parfum-perempuan is among the better-maintained entries we tried; worth keeping pinned for repeat workflows.
- ★★★★★Rahul Santra· Nov 19, 2024
Solid pick for teams standardizing on skills: ruwangi-parfum-perempuan is focused, and the summary matches what you get after install.
- ★★★★★Ira Bansal· Nov 19, 2024
ruwangi-parfum-perempuan fits our agent workflows well — practical, well scoped, and easy to wire into existing repos.
- ★★★★★Piyush G· Nov 7, 2024
Keeps context tight: ruwangi-parfum-perempuan is the kind of skill you can hand to a new teammate without a long onboarding doc.
showing 1-10 of 57