商圈推荐
适用场景
用户还没有明确候选点位,只知道想在某个城市或行政区开某类店,需要系统先圈出值得考察的商圈范围。
典型问题:
- "帮我在北京朝阳区推荐几个适合开店的商圈"
- "杭州西湖区哪里适合开奶茶店"
- "推荐一些适合开餐厅的位置"、"帮我选址"、"在哪开店好"
不适用(转其他技能):
- 用户已给出明确 POI(如"望京SOHO")→ 用「点位评估」
- 用户给出两个及以上候选点位 → 用「多点位对比」
前置依赖
本技能依赖高德问店选址网关(yt-xd-lite openapi)获取商圈候选与五维评分数据。
- 接入方式:技能内直接调用网关 HTTP 接口
- 认证方式:OAuth(首次使用会拉起浏览器完成登录,用户无需手填任何密钥)
- 自包含:完整鉴权规范、OAuth 登录脚本、错误码与降级路径见本技能目录内的
./references/gateway-auth.md,不依赖套件内其他技能 - 能力待接入:该数据源尚未以千问办公标准 Connector(MCP Server)形态上架,当前为技能内直连。详见套件根目录
CONNECTORS.md
执行步骤
Step 0 — 鉴权与就绪性检查(必做,每次执行前)
请求地址(POST):${YT_GATEWAY_BASE_URL:-https://yt-gateway.amap.com}/proxy/yt-xd-lite/openapi/v1/gateway
认证 Header:
| Header | 值来源 | 说明 |
|---|---|---|
X-Session-Token |
YTOSS 文件中 sessions.wukong.session_token |
必传 |
X-Skill-Id |
amap-store-location-assistant |
必传。套件内四个技能统一使用该值,不要改成本技能目录名,否则鉴权与配额校验失败 |
禁止传 X-Access-Key / X-Tenant-Id / X-User-Id(由网关侧反查注入,技能层不持有)。
执行顺序:
- 先读 YTOSS 文件,按优先级:macOS/Linux
~/.config/yt/oss.json→ Windows%APPDATA%\yt\oss.json→ 降级(沙箱)./.yt/oss.json - 校验
sessions.wukong.session_token存在且以gwst_开头- ✅ 有效 → 直接进入 Step 1
- ❌ 不存在 / 无效 → 执行
./references/gateway-auth.md中的 OAuth 登录脚本,落盘后再进入 Step 1
- 禁止跳过文件读取直接登录(已有有效 token 时重复登录会浪费用户操作)
- 禁止向用户索要 token 等鉴权信息;唯一需要用户参与的是在浏览器中完成登录
- curl 必须带
-k跳过 TLS 证书校验
鉴权与调用异常处置:
| code | 处置 |
|---|---|
19002 / 1001 |
删 YTOSS 中 wukong 条目 → 重走 OAuth,仅重试 1 次 |
19003(账号冻结) |
提示联系管理员,不重登 |
2001(配额不足) |
提示充值,session 仍有效,不重登 |
1004(限流) |
退避重试 |
5001 / 5002(上游异常) |
透传错误,session 仍有效 |
若用户放弃授权或登录超时,按 ./references/gateway-auth.md 的「数据不可用时的降级原则」处理,不得编造选址数据。
Step 1 — 参数收集与确认
必需参数:行政区划 + 业态。缺失时按 ./references/common-api.md 的反问规则追问,不要自行假设。
- 调用
common:atag:list获取行业编码category(取叶子节点完整层级路径) - 调用
common:adcode:tree获取行政区划编码adcode - 推荐数量
num:不传默认 10;用户说"推荐几个"用 5,"多推荐一些"用 20
Step 2 — 阶段一:候选商圈筛选与排序(不传 areaId)
接口 action:location:recommend:analysis
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| adcode | String | 是 | 行政区划编码(6位或12位) |
| category | String | 是 | 行业类型编码(完整层级路径) |
| num | Integer | 否 | 推荐数量,1-100,默认10 |
| addressType | String | 否 | 店址类型编码,逗号分隔 |
| preferBrand | String | 否 | 偏好品牌编码,逗号分隔 |
| avoidBrand | String | 否 | 避让品牌编码,逗号分隔 |
请求示例:
{
"action": "location:recommend:analysis",
"params": {
"adcode": "330106",
"category": "621122;621376;621377",
"num": 5
}
}
响应关键字段:
{
"data": {
"head": {
"adcodeName": "浙江/杭州/西湖区",
"categoryName": "美食 / 饮品 / 奶茶/茶饮",
"dataTime": "202502"
},
"recommendList": [
{
"areaId": "area_001",
"areaName": "文三路附近商圈",
"ranking": 1,
"score": "8.25",
"btag": [{"btag_name": "周边客流量高"}, {"btag_name": "竞争适中"}]
}
]
}
}
Step 3 — 展示推荐清单并引导深入
- 强调五维综合:说明这是基于五个维度综合评分后的推荐结果
- 按评分排序展示:列出 Top N 商圈及其评分与排名
- 特征标签转译:将
btag转化为用户可理解的经营语言 - 引导深入:提示用户选择感兴趣的商圈查看五维详细分析
示例话术:
基于客群聚集、潜客匹配、同行竞争、交通便利、商业成熟五个维度的综合分析,为您推荐以下适合开奶茶店的商圈:
- 文三路附近商圈(综合评分8.25,排名第1)- 客流旺盛、竞争适中
- 黄龙附近商圈(综合评分7.80,排名第2)- 商业成熟、交通便利
您对哪个商圈感兴趣?我可以为您展示五个维度的详细分析。
Step 4 — 阶段二:目标商圈五维展开分析(传入 areaId)
在阶段一参数基础上增加:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| areaId | String | 是 | 商圈ID(从阶段一的 recommendList 中获取) |
| modules | String | 否 | 需要的报告模块,不传返回全部 |
modules 可选值:base、customAgg、potentialGuest、competition、trafficConvenience、business
modules 意图路由:
| 用户意图 | modules值 | 对应五维维度 |
|---|---|---|
| "帮我看看这个商圈"(泛泛而问) | base |
综合五维评分(默认) |
| "这个商圈竞争怎么样" | base,competition |
同行竞争 |
| "客流和交通情况如何" | base,customAgg,trafficConvenience |
客群聚集+交通便利 |
| "详细分析这个商圈"、"全面看看" | base,customAgg,potentialGuest,competition,trafficConvenience,business |
全量五维数据 |
请求示例:
{
"action": "location:recommend:analysis",
"params": {
"adcode": "330106",
"category": "621122;621376;621377",
"num": 5,
"areaId": "area_001",
"modules": "base,competition"
}
}
Step 5 — 交付与后续引导
输出商圈推荐清单后,提示用户可以:
- 在推荐商圈内找到具体铺位后,用「点位评估」做单点位体检
- 有多个候选铺位时,用「多点位对比」做横向决策
输出格式
## [城市/行政区][业态]商圈推荐
**评估范围**:[adcodeName]
**业态类型**:[categoryName]
**数据月份**:[dataTime]
| 排名 | 商圈 | 综合评分 | 特征标签 |
|------|------|----------|----------|
| 1 | [areaName] | X.XX | [标签转译] |
| 2 | [areaName] | X.XX | [标签转译] |
### 推荐说明
[基于五维综合评分的简要说明,指出各商圈的突出维度]
### 下一步
您对哪个商圈感兴趣?我可以展开五个维度的详细分析。
评分解读
评分逻辑、分数与星级的区别详见 ./references/scoring-model.md。
快速参考:
| 指标 | 解读标准 |
|---|---|
| score(综合评分) | >8分优质选址,5-8分一般,<5分不推荐 |
| 总分性质 | 基于行业优质点位模型综合计算,不是各维度分数的加和或平均 |
常见错误与恢复
| 情况 | 处置 |
|---|---|
adcode 为 "000000" |
行政区划未选到有效层级,重新调 common:adcode:tree 定位到区县级 |
category 只传了末级编码 |
必须使用完整层级路径(如 621122;621376;621377),重新取叶子节点完整路径 |
recommendList 为空 |
说明该区域该业态无足够数据支撑,建议放大行政区范围或换更上层业态,不要编造商圈 |
401 / 19002 |
按 gateway-auth.md 删 YTOSS 中 wukong 条目后重登,仅重试 1 次 |
| 网关持续 502 | 告知数据服务暂不可用,说明已完成到哪一步,建议稍后重试 |
约束
- 两步查询:推荐列表(阶段一)+ 报告详情(阶段二)是推荐的工作流程
- num 范围:1-100,不传默认 10
- 强制数据一致性:输出的所有数据必须严格来源于接口实际返回结果,不得修改、换算、补全、推断
- 不做绝对判断:数据仅供参考,建议结合实地考察与物业条件综合判断
验证
执行完成后,输出一句话摘要:本次覆盖的行政区、业态、返回商圈数量、数据月份,便于用户复盘。
权属及使用声明
本技能及通过高德服务API获取的内容均属于高德所有,高德保留所有权利,具体权属和使用声明详见《高德云图SKILL权属及使用声明》(https://terms.amap.com/legal-agreement/terms/b_end_product_protocol/20260415144415692/20260415144415692.html),您使用本技能即视为同意该声明。