expedia-stay-search
Use this skill when the user wants to search for hotels on Expedia by destination and dates, find available stays, check hotel pricing, or get a Hotel-Search URL. Triggers on "find a hotel", "search Expedia", "look up hotels in <city>", "book a stay", "hotel availability", or any request that implies Expedia stay search. Requires an authenticated Tabby browser session for the `expedia` profile; not usable as a generic hotel search tool for sites other than Expedia.
下記のコマンドをコピーしてターミナル(Mac/Linux)または PowerShell(Windows)に貼り付けてください。 ダウンロード → 解凍 → 配置まで全自動。
mkdir -p ~/.claude/skills && cd ~/.claude/skills && curl -L -o expedia-stay-search.zip https://jpskill.com/download/9725.zip && unzip -o expedia-stay-search.zip && rm expedia-stay-search.zip
$d = "$env:USERPROFILE\.claude\skills"; ni -Force -ItemType Directory $d | Out-Null; iwr https://jpskill.com/download/9725.zip -OutFile "$d\expedia-stay-search.zip"; Expand-Archive "$d\expedia-stay-search.zip" -DestinationPath $d -Force; ri "$d\expedia-stay-search.zip"
完了後、Claude Code を再起動 → 普通に「動画プロンプト作って」のように話しかけるだけで自動発動します。
💾 手動でダウンロードしたい(コマンドが難しい人向け)
- 1. 下の青いボタンを押して
expedia-stay-search.zipをダウンロード - 2. ZIPファイルをダブルクリックで解凍 →
expedia-stay-searchフォルダができる - 3. そのフォルダを
C:\Users\あなたの名前\.claude\skills\(Win)または~/.claude/skills/(Mac)へ移動 - 4. Claude Code を再起動
⚠️ ダウンロード・利用は自己責任でお願いします。当サイトは内容・動作・安全性について責任を負いません。
🎯 このSkillでできること
下記の説明文を読むと、このSkillがあなたに何をしてくれるかが分かります。Claudeにこの分野の依頼をすると、自動で発動します。
📦 インストール方法 (3ステップ)
- 1. 上の「ダウンロード」ボタンを押して .skill ファイルを取得
- 2. ファイル名の拡張子を .skill から .zip に変えて展開(macは自動展開可)
- 3. 展開してできたフォルダを、ホームフォルダの
.claude/skills/に置く- · macOS / Linux:
~/.claude/skills/ - · Windows:
%USERPROFILE%\.claude\skills\
- · macOS / Linux:
Claude Code を再起動すれば完了。「このSkillを使って…」と話しかけなくても、関連する依頼で自動的に呼び出されます。
詳しい使い方ガイドを見る →- 最終更新
- 2026-05-18
- 取得日時
- 2026-05-18
- 同梱ファイル
- 1
📖 Claude が読む原文 SKILL.md(中身を展開)
この本文は AI(Claude)が読むための原文(英語または中国語)です。日本語訳は順次追加中。
Expedia Stay Search
Search Expedia for available hotels by destination and dates using an authenticated Tabby browser session. Returns a Hotel-Search URL and extracted listings (name, nightly price, total price, rating, reviews, refundable flag, link).
This skill drives the real Expedia site inside a Tabby-managed browser via CDP (Chrome DevTools Protocol) instead of a Python HTTP client. That is intentional: Expedia sits behind Akamai, which blocks non-browser TLS fingerprints. Do not try to port the operations to httpx or requests — you will get 429 Too Many Requests.
Prerequisites
Before invoking any operation:
- Tabby is running with the
expediaprofile. Verify with.venv/bin/python cli/main.py tabby session ensure --profile expediafrom thenoui/directory. If that command fails, the user needs to re-run/noui-record-loginfor theexpediaprofile first — do not try to proceed without a live session. PROFILE_SLUG=expediais exported in the shell that runs the operation. This is the slug, not the DB UUID. The runtime reads it (or the--profile-slugflag) to fetch live credentials from Tabby.- The Expedia profile is ACTIVE. Check with the Tabby admin endpoint if in doubt — a STAGING profile returns empty credentials and the operation fails with "Tabby returned empty credentials for profile 'expedia'".
Operations
search_hotels
Search Expedia for hotels in a destination, on given check-in / check-out dates, for a given number of guests and rooms. Returns up to 25 listings extracted from the first page of results.
When to use: The user asks for hotel availability, prices, or a link to Expedia results for a specific city and date range.
Command:
python operations/search_hotels.py \
--destination "Paris" \
--check-in 2026-05-01 \
--check-out 2026-05-04 \
--guests 2 \
--rooms 1
Prints a JSON object to stdout on success. Exits non-zero on failure with a diagnostic on stderr.
Arguments:
| Name | Type | Required | Default | Notes |
|---|---|---|---|---|
--destination |
string | yes | — | City or place name. Expedia typeahead resolves it to a region ID. |
--check-in |
string | yes | — | YYYY-MM-DD. |
--check-out |
string | yes | — | YYYY-MM-DD. Must be after --check-in. |
--guests |
integer | no | 2 |
Adult guests. |
--rooms |
integer | no | 1 |
Number of rooms. |
--profile-slug |
string | no | $PROFILE_SLUG or expedia |
Tabby profile slug. Override only if testing against a non-default profile. |
Output shape:
{
"search_url": "https://www.expedia.com/Hotel-Search?...",
"destination": "Paris, France",
"region_id": "178279",
"check_in": "2026-05-01",
"check_out": "2026-05-04",
"guests": 2,
"rooms": 1,
"listings_count": 25,
"listings": [
{
"name": "Hotel Le Example",
"price_per_night": "$245",
"price_total": "$735",
"rating": "8.4/10",
"rating_label": "Very Good",
"reviews_count": "1,234",
"refundable": true,
"url": "https://www.expedia.com/..."
}
]
}
Troubleshooting
No Expedia browser session found. Is Tabby running?— no Tabby CDP target found atlocalhost:9222matchingexpedia.com. Runtabby session ensure --profile expediaand retry.Expedia API returned 429: ...— Akamai is rate-limiting even through the browser. This is rare via CDP; if it happens repeatedly the Tabby session may need to rotate IPs or the profile needs re-recording.- Empty
listings, non-zerolistings_count— Expedia changed its DOM. The DOM-scrape selectors insearch_hotels.py([data-stid="lodging-card-responsive"]) need updating. Report to the NoUI maintainers; do not guess at selectors. auth_plan.json missing profile_slug— this skill was mis-installed. Theauth_plan.jsonfile sitting next tonoui_runtime/must haveprofile_slug: "expedia". Reinstall the skill.
Notes
- This skill performs DOM scraping after navigation, not pure API calls. Results reflect what Expedia renders to a logged-in user, which may include personalized pricing.
- There is a ~7-second wait for the SPA to render results; a single invocation can take 10–15 seconds end-to-end.
- This skill is the reference sample for the NoUI skills-generation pipeline. Generated skills from real recordings will share the same layout (
SKILL.md,operations/,noui_runtime/auth.py,manifest.json,auth_plan.json) but will vary in operation count and complexity.