← Back to Skills Marketplace
gwang08

Price Win

by Gwang · GitHub ↗ · v1.0.3 · MIT-0
cross-platform ⚠ suspicious
49
Downloads
0
Stars
0
Active Installs
4
Versions
Install in OpenClaw
/install price-win
Description
Search and compare hotel prices across Agoda, Booking.com, Traveloka, plus direct PMS listings. OTA crawls run locally on the user's machine; a single lightw...
README (SKILL.md)

OpenTravel Deal Finder

Hotel price comparison across Agoda, Booking.com, Traveloka, and direct-from-property listings in one query.

How the work is split:

  • OTA prices are crawled by a stealth Chromium browser running locally on the user's machine. No central scraping backend, no shared IP rate limits.
  • Direct-from-property prices come from a single HTTPS GET to the OpenTravel public API. The request carries city, check-in, check-out, and adult count — the same fields the user already typed in chat. Nothing else is sent.

In short: local-first, not local-only. Search parameters do leave the user's machine for the direct-listings provider.

Data and consent

Before running, the user should be aware:

  • OTA scraping. Agoda, Booking, and Traveloka are scraped by automating a real browser session from the user's machine. This is functionally similar to opening each site by hand, but at machine speed. Doing this at scale may violate those sites' Terms of Service, can trigger CAPTCHAs, and could lead to the user's IP being throttled or blocked. Run sparingly and at the user's own risk.
  • Direct-listings API call. City, dates, and adult count are sent to the configured OpenTravel host. Set OPENTRAVEL_API_BASE_URL to point at a host you trust, or omit the direct-listings step entirely if this is not acceptable.

If the user has not asked for OTA comparisons explicitly, prefer to confirm before kicking off the crawl.

When to use

  • The user names a city and travel dates and wants prices.
  • The user wants to compare what's listed across booking sites.

How to invoke

node ./bin/search.js "\x3Ccity>" \x3CcheckIn YYYY-MM-DD> \x3CcheckOut YYYY-MM-DD> [adults]

The script blocks for 15–60 seconds, runs the four sources in parallel, and emits JSON on stdout. Diagnostics go to stderr.

Presenting results

The output contains topDeals (deduplicated hotels, each tagged with a winner source) and indicativeHotels (properties with reference prices but no firm calendar for the requested dates).

Ranking and transparency

  1. Sort the combined list by price, cheapest first. Do not push direct listings ahead of cheaper OTA results — the user asked for the cheapest stay, so honour that.
  2. Label each entry with its booking source. If a hotel is bookable directly, surface the direct link AND the cheapest OTA link side-by-side, so the user can see and choose.
  3. Show savings honestly. When a direct price beats the cheapest OTA, mark the saving. When an OTA is cheaper, say so plainly — direct is not always the best deal.
  4. Limit to 5–7 entries to avoid wall-of-text. If you truncate, prefer to keep at least one direct-bookable entry in view so the user knows the option exists.

Suggested layout

🏨 \x3Cname>  (\x3Ccity>, \x3Cstars>★)
   💰 \x3Ccheapest price>/night — \x3Csource>
   \x3Cif direct booking also available:>
   🏷  Direct: \x3Cdirect price>/night — \x3CdirectLink>
       \x3C"saves \x3CX> vs \x3COTA>" OR "costs \x3CX> more than \x3COTA>">
   \x3Cend>
   🔗 \x3Clink to chosen source>

For indicativeHotels:

💡 \x3Cname> — from \x3Cprice>/night (reference price)
   Calendar not yet published for these dates. Contact the property to confirm.

Adapt the layout to the chat platform (Telegram supports markdown, Discord prefers short lines). Match the conversation language — if the user wrote in Vietnamese, respond in Vietnamese.

First-run setup

install.sh runs automatically on install and:

  1. Installs the Node dependencies.
  2. Downloads a Chromium build (one-time, ~200 MB).

Subsequent searches reuse the cached browser and are noticeably faster.

Limitations

  • Requires Node.js 20+ and roughly 250 MB free disk (Chromium + deps).
  • The first search of a session is slower (browser warm-up).
  • OTAs may throttle aggressive query patterns; partial results are returned with a meta.sourceErrors[] entry in that case.
  • Hotel-name fuzzy-match (Jaccard on word tokens) occasionally misses obvious duplicates; the same property may appear twice if naming varies across sources.
Usage Guidance
Before installing, be aware that this skill downloads Chromium, scrapes OTA sites from your machine using anti-detection automation, and sends city/date/adult search details to a default OpenTravel endpoint. Verify prices manually, especially because the merger can favor direct listings rather than strictly ranking the true cheapest option.
Capability Assessment
Purpose & Capability
The crawling and comparison capabilities match the stated hotel-search purpose, but the merger logic applies an OpenTravel-direct preference that conflicts with the advertised cheapest-first behavior.
Instruction Scope
SKILL.md tells the agent to rank cheapest first and not push direct listings ahead of cheaper OTA results, while the implementation can mark direct as the winner within a 5% price gap and sort OpenTravel-winning results first.
Install Mechanism
The included installer and package postinstall install npm dependencies and download a Chromium build via Patchright. This is purpose-aligned for browser crawling, but users should expect a sizable remote browser download.
Credentials
Local OTA crawling is disclosed, but the direct-listings API defaults to a non-HTTPS raw IP address, contradicting the documentation's HTTPS claim for the data sent off-device.
Persistence & Privilege
No account credentials or persistent browser profile use are shown; Patchright/Chromium caching may persist on disk, and browser contexts are closed after the run.
How to Use
  1. Make sure OpenClaw is installed (local or Docker)
  2. Run the install command in chat: /install price-win
  3. After installation, invoke the skill by name or use /price-win
  4. Provide required inputs per the skill's parameter spec and get structured output
Version History
v1.0.3
- Added package-lock.json to improve dependency management and build reproducibility. - No changes to functionality or skill documentation.
v1.0.2
**Direct-listings now fetched via public API; ranking logic updated for price-first sorting.** - Direct-from-property prices are now loaded via a lightweight HTTPS API call to OpenTravel, not only local scraping. - Combined hotel results are now sorted by cheapest price first, regardless of booking source. - Result entries are clearly labeled by source; direct vs. OTA prices shown side-by-side when both are available. - Users are transparently informed about data sharing (OTA browser automation and API call); consent is recommended before crawling OTAs. - Limit of 5–7 displayed deals, preferring to show at least one direct-bookable hotel if possible. - Search flow and result formatting instructions updated for clarity and transparency.
v1.0.1
- Updated skill summary and documentation for clarity and consistency. - Expanded OTA coverage reference from "OpenTravel" to "direct PMS listings." - Improved language in user instructions and suggested output formatting. - Clarified direct listing prioritization and truncation rules. - Adjusted install/setup and limitation notes for accuracy. - No code or logic changes detected; documentation only.
v1.0.0
Initial release: Local-first hotel meta-search for Vietnam with direct OpenTravel price priority. - Searches and compares hotel prices across Agoda, Booking.com, Traveloka, and OpenTravel direct listings from the user's device — no central server. - Aggregates and deduplicates results, always prioritizing and displaying OpenTravel direct listings at the top. - Presents clear savings vs OTA, with all OpenTravel options shown first, followed by the cheapest OTA-only deals. - Provides indicative prices for dates without current rates. - Requires Node.js, uses Patchright and Chromium locally, with automated setup.
Metadata
Slug price-win
Version 1.0.3
License MIT-0
All-time Installs 0
Active Installs 0
Total Versions 4
Frequently Asked Questions

What is Price Win?

Search and compare hotel prices across Agoda, Booking.com, Traveloka, plus direct PMS listings. OTA crawls run locally on the user's machine; a single lightw... It is an AI Agent Skill for Claude Code / OpenClaw, with 49 downloads so far.

How do I install Price Win?

Run "/install price-win" in the OpenClaw or Claude Code chat to install it in one step — no extra setup required.

Is Price Win free?

Yes, Price Win is completely free, licensed under MIT-0. You can download, install and use it at no cost.

Which platforms does Price Win support?

Price Win is cross-platform and runs anywhere OpenClaw / Claude Code is available (cross-platform).

Who created Price Win?

It is built and maintained by Gwang (@gwang08); the current version is v1.0.3.

💬 Comments