Install
openclaw skills install @edam17/tennis-vacation-raterEvaluate tennis vacation destinations with structured scoring across transportation, accommodation, weather, and court facilities. Use when users ask about tennis travel destinations, court recommendations, tennis vacation planning, comparing tennis resorts, or assessing tennis tourism spots.
openclaw skills install @edam17/tennis-vacation-raterEvaluate tennis vacation destinations with structured scoring and recommendations.
This skill uses web search to collect flight price information. No external tools or installations are required.
| Dimension | Weight | Key Metrics |
|---|---|---|
| Transportation | 25% | Flight price, frequency, ground transport |
| Accommodation | 25% | Hotel price, rating, proximity to courts |
| Weather | 20% | Temperature, precipitation, best season |
| Facilities | 30% | Court quality, fees, coaching availability |
Custom Weights: If user has preferences, adjust weights as follows:
Transportation (交通可达性)
Accommodation (住宿条件)
Weather (天气适宜度)
Facilities (球场质量)
| Type | Characteristics | Best For |
|---|---|---|
| Training | Pro facilities, intensive atmosphere | Serious players |
| Resort | Leisure vibe, integrated vacation | Families/friends |
| Scenic | Unique views, Instagram-worthy | Short trips |
| Urban | City center, trendy | Business travelers |
Extract from user input:
信息收集原则:
When user provides a link (e.g., Xiaohongshu, Instagram):
Extract destination from user message text first
Optionally attempt to access the link (non-blocking, 10s timeout)
Confirm with user if information is unclear
Never block on link failure
If departure city unknown: Ask user or default to Shanghai (note in report).
Ask: "What's most important to you? (Choose up to 2)"
If skipped, use default 25% weights.
| Dimension | Data Source | Fallback |
|---|---|---|
| Flights | flyai CLI (if installed) for real-time prices | WebSearch for reference prices |
| Hotels | Booking, TripAdvisor | WebSearch |
| Weather | Historical climate data | - |
| Courts | Built-in database, web search | - |
注意:如果 flyai CLI 未安装,将使用 WebSearch 获取参考价格,并在报告中标注数据来源。
Priority: Use flyai CLI for real-time prices if available
Step 1: Check if flyai is installed
which flyai
Step 2: If installed, query real-time flight prices
flyai search-flight \
--origin "出发城市" \
--destination "目的地" \
--dep-date-start YYYY-MM-DD \
--dep-date-end YYYY-MM-DD \
--back-date-start YYYY-MM-DD \
--back-date-end YYYY-MM-DD \
--sort-type 3
Step 3: Parse results
Fallback: If flyai is not installed
Use WebSearch to get reference prices:
[出发城市]到[目的地]机票价格npm install -g @fly-ai/flyai-cli"Data Source Labels:
| Label | Condition | Scoring Impact |
|---|---|---|
| flyai实时 | flyai CLI executed successfully | Full score |
| 网络参考 | WebSearch used (flyai not installed) | -1 point (max 8/10) |
| 待补充 | All methods failed | Max 5/10 |
** Rules:**
Each dimension scored 0-10:
Final Score = (dimension_score weight)
Use report-template.md for full template.
For single destination: Use single-destination template For multiple destinations: Use comparison template
# Tennis Travel Rating Report
## [Destination]
> **一句话总结**:[简洁概括目的地核心优势和注意事项]
### Overall Score: [X.X]/10
**Rating**: [Highly Recommended/Recommended/etc.]
**Type**: [Training/Resort/Scenic/Urban]
### Dimension Scores
| Dimension | Score | Weight | Key Metric | 数据来源 |
|-----------|-------|--------|------------|----------|
| Transportation | X.X/10 | XX% | 往返机票 X,XXX起 | flyai实时/网络参考/待补充 |
| Accommodation | X.X/10 | XX% | XXX/晚 | Booking/Agoda/携程 |
| Weather | X.X/10 | XX% | 最佳季节: X-X月 | 历史气候数据 |
| Facilities | X.X/10 | XX% | 场地费 XXX/小时 | 酒店官网/实地调查 |
**数据来源标注说明:**
- **flyai实时**:使用Bash工具执行flyai命令获取的实时价格
- **网络参考价**:通过WebSearch获取的参考价格(非实时)
- **待补充**:无法获取数据,需要用户自行查询
### 1 交通可达性 (X.X/10)
**航班信息**
- 往返机票 X,XXX起
- 航空公司、转机情况等
**地面交通**
- 机场酒店/球场:约X小时车程
- [ 查看谷歌地图路线](https://www.google.com/maps/dir/机场名称/酒店或球场名称)
### 2 住宿条件 (X.X/10)
**酒店概况**
- **酒店名称**: [酒店名]
- **位置**: [具体位置描述]
- [ 在谷歌地图上查看](https://www.google.com/maps/search/酒店名+城市)
- 价格、评分等信息
### 3 天气适宜度 (X.X/10)
**最佳季节**: X-X月
- 温度、降水等分析
### 4 球场质量 (X.X/10)
**球场设施**
- **球场名称**: [球场名]
- **位置**: [具体位置描述]
- [ 在谷歌地图上查看](https://www.google.com/maps/search/球场名+城市)
- 场地类型、费用、预订方式等
### Highlights
- [Top strength]
- [Key consideration]
- [Best for: target audience]
### Budget Estimate (X天X晚)
| Item | Cost (参考价) |
|------|---------------|
| 往返机票 | X,XXX |
| 住宿 (X晚) | X,XXX |
| 球场费用 | XXX |
| 餐饮及其他 | X,XXX |
| **总计** | **X,XXX** |
*Generated: [Date] | Sources: [List]*
ALWAYS include this section at the end of every report:
---
### 价格查询建议
由于您的出行时间较灵活 / 距离计划出行还有[X天],建议先查询当前机票价格:
**我可以为您提供**:
- 一次性查询 [出发地] [目的地] 的当前航班价格
- 根据查询结果给出购票建议
- 推荐最佳购票时机
**需要我帮您查询当前价格吗?** 请告诉我您的预算上限(如:往返机票 X,XXX以内)。
触发条件(满足任一即需添加):
如果用户同意监控:
如果用户拒绝:正常结束,无需进一步操作
注意:本 skill 不创建自动后台监控任务。如需持续监控,请手动定期查询。
Quick reference for popular destinations:
Asia: Sanya Haitang Bay, Shanghai Qizhong, Tokyo Ariake, Bali Europe: Roland Garros, Wimbledon, Monte Carlo, Barcelona Americas: Indian Wells, Miami, Cancun Oceania: Melbourne Park, Gold Coast
For full database, see destinations.md.
Before generating report, verify:
必须确认:
MUST include price monitoring section in EVERY report when:
ALWAYS add at the END of the report, after the budget estimate section:
---
### 价格查询建议
由于您的出行时间较灵活 / 距离计划出行还有[X天],建议先查询当前机票价格:
**我可以为您提供**:
- 一次性查询 [出发地] [目的地] 的当前航班价格
- 根据查询结果给出购票建议
- 推荐最佳购票时机
**需要我帮您查询当前价格吗?** 请告诉我您的预算上限(如:往返机票 X,XXX以内)。
Ask for details:
Perform immediate price check (no automatic monitoring):
Confirm to user:
**价格查询完成**
- 路线:[出发地] [目的地]
- 当前价格:[价格]
- 您的预算:[预算]
- 建议:[立即预订/继续观望]
**注意**:此为一次性查询。如需持续关注,请定期手动查询或使用专业价格监控工具。
Continue normally, no further action needed.
Example 1 - Basic query (flyai installed): Input: "Evaluate Sanya for tennis trip from Shanghai in April" Workflow:
flyai search-flight --origin "上海" --destination "三亚" --dep-date-start 2025-04-01 --dep-date-end 2025-04-07 --back-date-start 2025-04-05 --back-date-end 2025-04-12 --sort-type 3
Example 1b - flyai not installed: Input: "Evaluate Sanya for tennis trip from Shanghai in April" Workflow: 1-2. Same as above 3. Check if flyai is installed No 4. Use WebSearch fallback:
Example 2 - Comparison: Input: "Compare Sanya vs Bali for tennis vacation" Output: Side-by-side comparison with recommendation
Example 3 - Custom weights (single priority): Input: "I care most about flight convenience" Workflow:
Example 4 - User provides Xiaohongshu link: Input: "我想去这里打球:96 【富士山人生球场!...】https://www.xiaohongshu.com/..." Workflow: