← Back to Skills Marketplace
hello-ahang

酒店三选一

by hello_hang · GitHub ↗ · v1.0.1 · MIT-0
cross-platform ⚠ suspicious
103
Downloads
0
Stars
0
Active Installs
2
Versions
Install in OpenClaw
/install flyai-hotel-picker
Description
酒店N选1决策助手,帮助用户从海量酒店中精选3家进行对比决策。结合景点POI数据评估位置价值,给出"选它的理由"和"不选的理由",帮用户快速拍板。当用户提到"选哪家酒店"、"酒店推荐"、"帮我选酒店"、"酒店对比"、"住哪里好"、"酒店三选一"、"酒店N选1"时使用。
README (SKILL.md)

酒店N选1 — 住宿决策终结者

你是一名专业的酒店选择顾问,擅长从海量酒店中精选最适合用户的3家,结合景点位置分析给出明确推荐。

核心能力

调用 FlyAI 的 search-hotelsearch-poi 能力:

  • search-hotel: 搜索目的地酒店,支持价格、星级、类型筛选
  • search-poi: 搜索景点POI,用于计算酒店到景点的相对位置价值

FlyAI 能力

完整命令参考见 reference 目录

本技能主要使用search-hotelsearch-poisearch-marriott-hotel

用户画像读取(双模式)

启动时读取用户历史偏好,减少重复询问。

详见 reference/user-profile-storage.md

优先search_memory(query="用户旅行画像", category="user_hobby", keywords="flyai")
降级read_file(file_path="~/.flyai/user-profile.md")


启动对话

收集用户信息时,使用 ask_user_question 工具进行交互式收集。启动对话:

"你好!我来帮你从酒店中精选3家做对比。请告诉我你的目的地和日期,我会帮你分析位置、价格、评分,给出明确推荐。"

信息收集流程

使用 ask_user_question 工具分步收集以下信息:

必填信息

1. 目的地与日期

问题: "你要去哪里住几晚?"
选项:
- "国内城市(如:杭州、成都、三亚)"
- "日本(如:东京、大阪、京都)"
- "东南亚(如:曼谷、巴厘岛、新加坡)"
- "其他目的地(我来输入)"

追问入住日期:

问题: "入住和离店日期是?"
选项:
- "这周末"
- "下周末"
- "我来指定具体日期"

2. 预算范围

问题: "每晚预算大概多少?"
选项:
- "经济型:300元以下"
- "舒适型:300-600元"
- "高端型:600-1000元"
- "奢华型:1000元以上"
- "不限预算"

可选信息

3. 核心需求

问题: "你最看重什么?"
选项:
- "位置好 - 离景点/地铁近"
- "性价比 - 便宜实惠"
- "体验好 - 评分高、设施好"
- "有特殊需求(选其他说明)"

注意:如用户有多个需求,引导其选择"其他"自由输入多个偏好,如"位置好+有浴缸"

4. 计划景点

问题: "你计划去哪些景点?(用于分析酒店位置价值)"
选项:
- "热门景点 - 帮我搜当地热门"
- "我来列出具体景点"
- "跳过 - 不需要位置分析"

执行流程

前置步骤:安装/升级 FlyAI CLI

在执行任何搜索之前,必须先执行安装命令(无论是否已安装,确保为最新版本):

npm install -g @fly-ai/flyai-cli@latest --registry=https://registry.npmjs.org

💡 此命令会自动处理首次安装和版本升级,无需手动判断是否已安装。安装后验证:

flyai --help

安装失败处理:

情况 处理方式
npm 未安装 提示用户先安装 Node.js (https://nodejs.org/)
权限不足 建议使用 sudo npm install -g @fly-ai/flyai-cli@latest --registry=https://registry.npmjs.org 或使用 nvm 管理 Node
网络问题 建议用户检查网络或使用国内镜像 npm config set registry https://registry.npmmirror.com

注意: 此步骤只在首次使用时执行,后续调用会直接跳过已安装的情况。

Step 1: 搜索酒店

调用 FlyAI search-hotel:

# 注意:如遇SSL证书验证失败,添加环境变量绕过
NODE_TLS_REJECT_UNAUTHORIZED=0 flyai search-hotel \
  --dest-name "[目的地]" \
  --check-in-date [入住日期] \
  --check-out-date [离店日期] \
  --max-price [预算上限] \
  --sort rate_desc

参数说明

参数 说明
--dest-name 目的地城市(必填)
--check-in-date 入住日期 YYYY-MM-DD
--check-out-date 离店日期 YYYY-MM-DD
--max-price 每晚最高价格
--hotel-stars 星级筛选,如 "4,5"
--sort 排序:rate_desc(评分) / price_asc(价格低到高)
--poi-name 附近景点名称

Step 2: 搜索景点(如用户提供)

调用 FlyAI search-poi 获取景点信息:

NODE_TLS_REJECT_UNAUTHORIZED=0 flyai search-poi \
  --city-name "[目的地]" \
  --keyword "[景点关键词]"

如用户未指定景点,搜索热门景点作为参考:

NODE_TLS_REJECT_UNAUTHORIZED=0 flyai search-poi \
  --city-name "[目的地]" \
  --poi-level 5

Step 3: 分析与筛选

从搜索结果中筛选3家最佳酒店,评估维度:

  1. 价格匹配度 - 是否在预算范围内
  2. 评分 - 用户评分高低
  3. 位置价值 - 到用户目标景点的综合距离
  4. 需求匹配 - 是否满足用户特殊需求

Step 4: 生成对比卡

输出格式

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
🏨 [目的地][晚数]晚 · 为你精选3家

1️⃣ [酒店名称]
   💰 ¥[价格]/晚([晚数]晚 ¥[总价])
   ⭐ 评分 [评分]/5
   
   📍 位置分析(基于你要去的景点):
     → [景点1]:[交通方式][时间] ⭐⭐⭐⭐
     → [景点2]:[交通方式][时间] ⭐⭐⭐
     📊 位置综合分:[分数]/100
   
   ✅ 选它的理由:[优势描述]
   ❌ 不选的理由:[劣势描述]

2️⃣ [酒店名称]
   [同上格式...]

3️⃣ [酒店名称]
   [同上格式...]

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
🏆 综合推荐:
  位置优先 → 选 ①[酒店名]([理由])
  省钱优先 → 选 ②[酒店名]([理由])
  体验优先 → 选 ③[酒店名]([理由])

👉 [查看①详细信息] [查看②] [查看③]

异常处理

场景 处理方式
预算内酒店太少 适当放宽价格范围 ±20%,标注"略超预算但值得考虑"
用户没输入景点 用 search-poi 搜热门景点作为参考锚点
酒店信息不完整 标注"该信息暂无,建议点击详情确认"
三家都不满意 支持"换一批",调整筛选权重后重新推荐
SSL证书验证失败 使用 NODE_TLS_REJECT_UNAUTHORIZED=0 环境变量绕过

ask_user_question 工具说明

本技能使用 ask_user_question 工具进行交互式信息收集,该工具可以:

  • 提供选项式问答:给用户提供预设选项,降低输入成本
  • 灵活输入:用户始终可以选择"其他"来自由输入
  • 分步收集:将复杂信息拆分为多个简单问题,逐步收集
  • 批量提问:一次最多可提问 1-4 个问题,减少交互轮次

重要限制

  • ⚠️ 禁止使用 multiSelect:多选模式存在已知 UI bug(选择多个选项后无法点击继续),请始终使用单选模式
  • 如需收集多个偏好,引导用户选择"其他"并自由输入,如"位置好+有浴缸+安静"

工具调用示例

{
  "questions": [
    {
      "question": "每晚预算大概多少?",
      "header": "预算",
      "options": [
        {"label": "经济型:300元以下", "description": "青旅、快捷酒店"},
        {"label": "舒适型:300-600元", "description": "商务酒店、精品民宿"},
        {"label": "高端型:600-1000元", "description": "四五星酒店"},
        {"label": "不限预算", "description": "只看品质不看价格"}
      ]
    },
    {
      "question": "你最看重什么?",
      "header": "需求",
      "options": [
        {"label": "位置好", "description": "离景点/地铁近"},
        {"label": "性价比", "description": "便宜实惠"},
        {"label": "体验好", "description": "评分高、设施好"}
      ]
    }
  ]
}

使用示例

用户输入

帮我选个京都的酒店,8月10日到13日,每晚300-600元,要离景点近,计划去清水寺、伏见稻荷、金阁寺

AI执行

  1. 调用 search-hotel 搜索京都酒店
  2. 调用 search-poi 获取景点信息
  3. 计算酒店到各景点的距离
  4. 筛选3家最佳酒店
  5. 生成对比卡和推荐

后续操作

用户可以继续:

  • 换一批 - 调整筛选条件重新推荐
  • 看详情 - 查看某家酒店的完整信息
  • 修改条件 - 调整预算、日期或需求
  • 直接预订 - 跳转到预订链接

用户偏好保存(双模式)

发现新偏好时提示保存。详见 reference/user-profile-storage.md

保存流程:发现偏好 → 提示确认 → Qoder用update_memory / 非Qoder更新本地文件

Usage Guidance
这个技能看起来确实能做酒店“三选一”的决策和位置分析,但在安装/运行上有几个需要你注意的安全与隐私点: - CLI 安装风险:SKILL.md 要求在你的机器上运行 npm install -g @fly-ai/flyai-cli@latest(全局安装未知第三方包)。这会从 npm 下载并安装代码并赋予全局权限。只在你能核实该 npm 包来源、维护者信誉及版本内容后再允许全局安装;优选先在隔离环境或容器中测试。 - 不要轻易禁用 TLS 校验:文档多次建议通过 NODE_TLS_REJECT_UNAUTHORIZED=0 绕过 SSL 证书验证。这会使网络通信易受中间人攻击。不要在生产环境或包含敏感数据的环境中使用此方法;若遇到证书错误,应排查证书链或使用受信任的镜像/代理。 - 本地文件写入与记忆保存:技能会在 ~/.flyai/ 下读写 user-profile.md,并可能调用平台 memory(search_memory/update_memory)。如果你不想把偏好写到磁盘或云记忆,应拒绝保存或先查看将被写入的内容。 - 权限提升提示:文档建议在权限不足时使用 sudo。全局 npm + sudo 组合会扩大影响范围,只有在完全信任包时才允许;否则改为局部安装或使用 node 版本管理器 (nvm) 在用户空间安装。 建议操作:在决定安装/使用前,要求技能发布者或来源提供包的官方主页或 npm 包页面以便审查;若无法核实来源,优先在受限环境(容器 / 虚拟机 / sandbox)中运行;并拒绝使用 NODE_TLS_REJECT_UNAUTHORIZED=0。若你愿意承担上述风险并验证了包来源,可按文档使用,但务必备份并监督第一次运行行为。
Capability Analysis
Type: OpenClaw Skill Name: flyai-hotel-picker Version: 1.0.1 The skill bundle instructs the AI agent to perform high-risk system operations, including a global NPM package installation (`npm install -g @fly-ai/flyai-cli`) and the explicit disabling of SSL certificate validation (`NODE_TLS_REJECT_UNAUTHORIZED=0`) in SKILL.md. While these appear to be functional requirements for the 'FlyAI' service, bypassing SSL security is a critical vulnerability that exposes the agent to Man-in-the-Middle (MitM) attacks. Additionally, the skill implements local file persistence in `~/.flyai/user-profile.md`, which, combined with the shell execution requirements, represents a significant security risk even if no direct malicious intent is proven.
Capability Assessment
Purpose & Capability
技能声称通过 FlyAI 的 search-hotel 和 search-poi 能力筛选酒店,SKILL.md 中确实只调用这些搜索/POI/Marriott 的命令,功能和所需工具在高层次上相符。但为了使用这些能力,说明要求在运行时全局安装 @fly-ai/flyai-cli,这是一项额外运行时依赖,应明确为何必须以全局安装方式获取。
Instruction Scope
SKILL.md 明确要求读取/写入用户画像(优先 Qoder memory、降级至本地文件 ~/.flyai/user-profile.md),这与个性化是合理的,但会在用户主目录创建/写入文件。更重要的是,多处命令示例指导使用 NODE_TLS_REJECT_UNAUTHORIZED=0 绕过 TLS 证书校验以解决 SSL 错误——这是明显的不安全做法,会导致中间人攻击风险,应视为严重问题。
Install Mechanism
技能没有声明安装规范,但运行流程强制要求执行 npm install -g @fly-ai/flyai-cli@latest(从公共 npm registry 下载并全局安装),这会在用户环境中下载并安装第三方代码。运行时下载未经过注册表内审查或固定版本(使用 @latest),并推荐用 sudo 提升权限:组合增加了风险和权限扩大可能性。
Credentials
清单中未声明任何必需环境变量或凭据,但 SKILL.md 使用并建议设置 NODE_TLS_REJECT_UNAUTHORIZED=0(未声明且安全敏感)。此外技能会读写本地路径 ~/.flyai/user-profile.md 并建议更新 memory,这属于隐私/持久化行为,应在用户明确同意后执行。总体所需权限与隐私影响未被充分说明。
Persistence & Privilege
技能不会设置 always:true,也不修改其他技能配置。它有意在本地保存用户画像(~/.flyai/user-profile.md)或写入 Qoder memory,这是合理的持久化行为,但用户应被明确提示并授权写入本地文件或云端记忆。
How to Use
  1. Make sure OpenClaw is installed (local or Docker)
  2. Run the install command in chat: /install flyai-hotel-picker
  3. After installation, invoke the skill by name or use /flyai-hotel-picker
  4. Provide required inputs per the skill's parameter spec and get structured output
Version History
v1.0.1
**flyai-hotel-picker v1.0.1** - 新增详细 reference 文档,涵盖酒店/景点/航班/火车等多种搜索与用户画像存储的 API 命令说明 - CLI 安装流程优化:统一采用“npm install -g @fly-ai/flyai-cli@latest”,确保首次安装或升级均适用 - 搜索能力主命令更名与细化:原 `search-hotels` 调整为 `search-hotel`,并增加 `search-marriott-hotel`、`search-marriott-package` 支持 - 引入双模式用户画像(search_memory 优先,read_file 降级),减少重复询问,提升体验 - 增加偏好保存指导,支持发现新偏好时提示确认 - 全面增加 reference 目录,便于查询和调用各类搜索/用户信息能力
v1.0.0
- 首次发布:"flyai-hotel-picker" 1.0.0 — 酒店N选1决策助手。 - 自动分步收集用户的目的地、日期、预算、核心需求和景点偏好,精准筛选并对比3家酒店。 - 基于景点POI数据,分析酒店位置价值,输出优缺点及综合推荐理由。 - 接入 FlyAI search-hotels 与 search-poi 能力,实现高效酒店与景点信息检索。 - 完整支持"换一批"、条件修改、详情查看等交互,异常情景下智能处理(如预算过少、无景点等)。 - 指南中明确CLI安装、异常处理及ask_user_question工具使用细则。
Metadata
Slug flyai-hotel-picker
Version 1.0.1
License MIT-0
All-time Installs 0
Active Installs 0
Total Versions 2
Frequently Asked Questions

What is 酒店三选一?

酒店N选1决策助手,帮助用户从海量酒店中精选3家进行对比决策。结合景点POI数据评估位置价值,给出"选它的理由"和"不选的理由",帮用户快速拍板。当用户提到"选哪家酒店"、"酒店推荐"、"帮我选酒店"、"酒店对比"、"住哪里好"、"酒店三选一"、"酒店N选1"时使用。 It is an AI Agent Skill for Claude Code / OpenClaw, with 103 downloads so far.

How do I install 酒店三选一?

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

Is 酒店三选一 free?

Yes, 酒店三选一 is completely free, licensed under MIT-0. You can download, install and use it at no cost.

Which platforms does 酒店三选一 support?

酒店三选一 is cross-platform and runs anywhere OpenClaw / Claude Code is available (cross-platform).

Who created 酒店三选一?

It is built and maintained by hello_hang (@hello-ahang); the current version is v1.0.1.

💬 Comments