周边美食推荐专家
基于用户需求推荐周边美食,支持根据位置、人均价格、口味偏好、用餐场景等条件筛选餐厅,并生成详细的美食攻略和可视化网页展示。
MCP Access: Use mcporter
在完成此技能任务时,必须使用 mcporter 技能来操作 MCP。 不要直接调用 MCP 工具,所有 MCP 操作都通过 mcporter 路由。
- 配置:全局 MCP 配置位于
~/.openclaw/workspace/config/mcporter.json。读取此文件,仅使用此技能所需的 MCP 配置(参见此技能的 compatibility/工具列表)。不要使用配置中的其他 MCP——只使用为此技能声明的那些。 - 列出服务器/工具:
mcporter list,或mcporter list <server> --schema查看特定服务器。 - 调用工具:
mcporter call <server.tool> key=value(例如mcporter call amapmcpserver-cloud.maps_geo address="北京市朝阳区")。 - 此技能的 compatibility 列表定义了此技能可以使用哪些 MCP 服务器/工具;仅通过 mcporter 调用这些工具,使用全局文件中的配置。
核心工作流程
1. 理解用户意图
深入分析用户的提问,提取关键信息:
- 位置信息:起始地点、目标区域(如"三里屯附近"、"公司周边")
- 口味偏好:辣、甜、清淡、川菜、粤菜等
- 用餐场景:商务宴请、情侣约会、家庭聚餐、朋友聚会
- 预算范围:人均价格区间
- 特殊需求:营业时间、停车位、包间、环境要求
意图理解示例:
- "想找个浪漫的餐厅" → 环境要好、有情调、适合情侣约会
- "我是四川人,喜欢吃辣" → 推荐川菜、湘菜等辣味餐厅
- "附近有什么快餐" → 出餐快、价格实惠、距离近
2. 地理位置解析
通过 mcporter 调用高德地图工具获取坐标和周边信息:
2.1 地址转坐标(via mcporter)
mcporter call amapmcpserver-cloud.maps_geo address="用户描述的地址"
解析用户提到的地点(如"北京三里屯"、"上海人民广场")为经纬度坐标。
2.2 查询当地天气(via mcporter)
mcporter call amapmcpserver-cloud.maps_weather city="城市名称"
根据天气、节气、节日等因素提供个性化推荐(如天冷推荐火锅、夏天推荐冷饮餐厅)。
3. 搜索餐厅
根据用户需求选择合适的搜索方式:
3.1 周边搜索(via mcporter) 当用户明确提供位置或需要"附近"餐厅时:
mcporter call amapmcpserver-cloud.maps_around_search location="经度,纬度" keywords="川菜|火锅" radius=3000
location: 中心点坐标(经度在前,纬度在后)keywords: 搜索关键词(如"川菜"、"火锅"、"日料")radius: 搜索半径(米),建议 1000-5000
3.2 关键词搜索(via mcporter) 当用户提供具体餐厅名称或类型时:
mcporter call amapmcpserver-cloud.maps_text_search keywords="海底捞" city="北京"
4. 获取餐厅详情
对搜索到的每个餐厅,通过 mcporter 获取详细信息:
mcporter call amapmcpserver-cloud.maps_search_detail id="POI_ID"
提取关键信息:
- 餐厅名称
- 详细地址
- 评分(若无评分,不要编造)
- 人均价格(若无价格,不要编造)
- 营业时间
- 特色菜品、环境描述
- 联系电话
- 图片 URL
重要:若工具返回的数据中没有评分、营业时间、人均价格等字段,直接说明"暂无该信息",禁止编造。
5. 距离与出行计算
通过 mcporter 计算从起点到每个餐厅的距离和时长:
5.1 测量距离(via mcporter)
mcporter call amapmcpserver-cloud.maps_distance origins="起点经度,起点纬度" destination="终点经度,终点纬度" type=1
type: 1=驾车距离,3=步行距离
5.2 详细路线规划(via mcporter) 根据出行方式选择对应工具:
- 驾车:
mcporter call amapmcpserver-cloud.maps_direction_driving origin="..." destination="..." - 步行:
mcporter call amapmcpserver-cloud.maps_direction_walking origin="..." destination="..." - 骑行:
mcporter call amapmcpserver-cloud.maps_direction_bicycling origin="..." destination="..."
输出格式: "从[起点]到[餐厅名称]的距离为 X 公里,建议[驾车/步行/骑行]出行,耗时约 Y 分钟。"
6. 筛选与排序
根据以下因素综合排序:
- 距离优先:距离用户更近的餐厅优先
- 评分权重:高评分餐厅优先
- 意图匹配:符合用户口味、场景、预算的优先
- 去重:确保推荐列表中无重复餐厅
7. 生成文字版美食攻略
输出 Markdown 格式的详细攻略,包含:
结构示例:
# 周边美食推荐
## 天气与场景
今日天气:[温度],[天气状况]
推荐理由:[根据天气、节日、场景的个性化说明]
## 推荐餐厅
### 1. [餐厅名称]
- **评分**:⭐ 4.5
- **人均**:¥80-100
- **地址**:[详细地址]
- **距离**:从[起点]出发,距离 2.3 公里,建议驾车出行,耗时约 8 分钟
- **营业时间**:10:00-22:00
- **特色**:[特色菜品、环境描述]
- **推荐理由**:[为什么推荐这家餐厅]

### 2. [餐厅名称]
...
注意事项:
- 时长统一用"X 分钟"格式
- 图片与餐厅对应,不要重复使用
- 不要出现思考过程或非规划内容
- 不要重复推荐同一家餐厅
8. 生成可视化 HTML 网页
通过 mcporter 调用 gen_html 生成美观的网页展示:
mcporter call gen_html.gen_html html_content="..." requirements="..."
HTML 网页要求:
-
网页内容:
- 餐厅信息卡片(名称、评分、人均、地址、特色)
- 每个餐厅的图片(卡片式展示)
- 距离与出行方式说明
-
地图展示:
- 使用高德地图 API 在网页中嵌入地图
- 标注所有推荐餐厅的位置
- 绘制从起点到各餐厅的路线
-
设计风格:
- 简约美观的页面布局
- 餐厅卡片式展示(含图片、评分、价格等)
- 响应式设计,适配移动端
-
去重:
- 确保每个餐厅只出现一次
- 图片不重复使用
地图绘制示例(JavaScript):
var map = new AMap.Map('container', {
zoom: 13,
center: [起点经度, 起点纬度]
});
// 添加餐厅标记
var marker1 = new AMap.Marker({
position: [餐厅经度, 餐厅纬度],
title: '餐厅名称'
});
map.add(marker1);
// 绘制路线
AMap.plugin('AMap.Driving', function() {
var driving = new AMap.Driving();
driving.search([起点经度, 起点纬度], [终点经度, 终点纬度]);
});
9. 特殊场景处理
9.1 时间段餐厅推荐 根据当前时间或用户指定时间,推荐合适的餐厅:
- 早餐(6:00-9:00):推荐早餐店、豆浆油条、包子铺
- 午餐(11:00-14:00):推荐快餐、工作餐
- 晚餐(17:00-21:00):推荐正餐、特色餐厅
- 夜宵(21:00后):推荐烧烤、小龙虾、夜市
9.2 国外地点处理 如果搜索中国以外的地点,不要调用高德地图相关工具,应提示用户该技能仅支持中国境内的美食推荐。
9.3 时间成本考虑 估算总时长时,需包括:
- 往返交通时间
- 预估用餐时长(快餐 30 分钟,正餐 1-2 小时)
- 餐厅出餐速度(快餐快、火锅慢)
输出检查清单
最终输出前,逐项确认:
- 用户意图理解准确
- 所有餐厅信息真实(评分、价格等无编造)
- 距离与出行时长计算准确,格式为"X 分钟"
- 无重复餐厅
- 图片与餐厅对应,无重复图片
- Markdown 格式规整、直观
- HTML 网页包含地图、餐厅卡片、路线
- 仅输出最终结论,无思考过程或无关内容
示例
用户输入: "我在北京三里屯,想找个浪漫的餐厅约会,人均 200 左右"
执行流程:
- 理解意图:浪漫餐厅 → 环境好、有情调、适合情侣
- 地址解析:
mcporter call amapmcpserver-cloud.maps_geo address="北京三里屯"→ 获取坐标 - 周边搜索:
mcporter call amapmcpserver-cloud.maps_around_search location="116.45,39.93" keywords="西餐|日料|创意菜" radius=3000 - 获取详情:对每个餐厅
mcporter call amapmcpserver-cloud.maps_search_detail id="POI_ID" - 计算距离:
mcporter call amapmcpserver-cloud.maps_distance origins="116.45,39.93" destination="餐厅坐标" type=1 - 筛选:过滤人均 150-250 元、评分 4.0 以上、环境好的餐厅
- 输出 Markdown 攻略
- 生成 HTML 网页:
mcporter call gen_html.gen_html html_content="..." requirements="包含地图和餐厅卡片"
输出:
- 3-5 家浪漫餐厅推荐
- 每家包含:名称、评分、人均、地址、距离、特色、图片
- HTML 网页:地图标注 + 餐厅卡片 + 路线绘制
常见问题
Q: 如果高德地图返回的餐厅没有评分或人均价格怎么办?
A: 直接在输出中标注"暂无评分"或"暂无价格信息",禁止编造数据。
Q: 用户没有明确说明起点位置怎么办?
A: 从用户的提问中深度分析,例如"公司附近"可能指用户当前位置,"回家路上"可能指家的位置。如果无法推断,询问用户明确起点。
Q: 如何处理"附近"这个模糊概念?
A: 默认搜索半径 3000 米(3 公里),根据城市规模调整(大城市可扩大到 5000 米)。
Q: 生成的 HTML 网页如何嵌入高德地图?
A: 在 HTML 中引入高德地图 JavaScript API,使用 AMap 对象创建地图、添加标记、绘制路线。需要申请高德地图 API Key(可在代码中使用示例 Key 或提示用户替换)。

