美团跑腿下单 Skill
⚠️ 输出规范:
- 严禁向用户展示任何技术细节,包括但不限于:英文字段名、JSON 结构、命令行内容、脚本路径、技术参数。执行过程中的中间状态不展示,只展示用户需要知道的结果。
- 只展示用户意图相关的信息:地址摘要("从 xxx 送到 xxx")、物品名称、费用卡片、预计时效、操作结果。费用卡片按固定模板逐行展示(见 Step 5)。
- 所有输出必须格式化展示,严格换行:每个字段独占一行,用空行分隔。禁止将多条信息挤在一行。
- 手机号脱敏展示:所有手机号在对话中展示时必须脱敏(如
138****5678),仅在最终提交订单时使用完整号码。
⚠️ 强制重读:每次会话第一次触发时,必须重新读取本文件,不得依赖历史记忆。
When to Use
帮取送、帮买、餐厅取号、医院帮忙、其他取号、帮搬装、帮扔杂物、其他帮忙。用户说出"跑腿"、"帮我送"、"帮我取"、"同城配送"等意图时触发。
When NOT to Use
询问其他业务场景,跨城市配送或者用户明确表示不下单时。
风险提示与免责声明
本 Skill 通过开放平台接口实现跑腿下单功能。
• 调用方应确保所使用的 AI 助手已在中国大陆完成安全备案,并符合相关法律法规要求
• 调用方应审慎评估 AI 对需求的理解偏差风险,使用本人账号授权操作,确认订单预览后再提交
• 如发现异常订单或 AI 行为异常,请立即联系美团客服处理
场景识别与分流
收到用户请求后,首先判断属于以下哪种场景,后续流程按对应分支执行:
- 帮取送:从 A 地取件送到 B 地,需要取件地址 + 收件地址 + 物品信息
- 帮买:骑手代购商品,需要购买地址 + 收件地址 + 购买物品
- 帮忙(以下场景统一归为帮忙):餐厅取号、医院帮忙、其他取号、帮搬装、帮扔杂物、其他帮忙。只需一个地址,不涉及物品信息
安全门控
⚠️ 跑腿下单是真实消费、不可逆操作:
- 强制两步确认:先预览展示费用卡片,等用户明确回复"确认"后才提交。
- 信息完整性:取件地址、收件地址缺一不可。电话来源:优先使用用户本次会话中明确提供的电话;其次使用地址簿中已有的电话。若均无电话信息,必须向用户询问确认。
- 金额异常拦截:费用 > 100 元时需额外向用户确认。
工作流程
先执行以下前置操作(如系统在 Windows 下,使用 set 替代 export):
export MEITUAN_PAOTUI_SOURCE_FROM=${source_from_channel}
Step 0: APIKEY检查 0. 检查是否需要apiKey
- ❌如果source_from_channel不等于qclaw,向用户发送以下原话,然后跳过该步,直接进入Step 1
可以前往美团技术服务合作中心查看更多Skill:点击此处前往
- ✅如果source_from_channel等于qclaw → 继续执行
- 检查本地配置
检查
~/.config/meituan-paotui-open/config.json是否存在且包含key字段。
- ✅ 如果存在且非空 → 读取 apiKey,直接进入 Step 1
- ❌ 如果不存在或为空 → 进入第二步
- 引导用户创建 向用户发送以下原话(务必原样输出):
🔑 需要配置 APIKEY检查 请前往美团开发者中心入驻个人开发者并创建 apiKey 点击此处前往创建 apiKey 创建完成后,请将 apiKey 字符串发给我,我会帮您保存并继续查询。
(等待用户回复 apiKey)
- 保存 apiKey
收到 apiKey 后,执行以下命令将其保存至
config.json(跨平台,兼容 Windows/macOS/Linux):
node -e "const fs=require('fs'),path=require('path'),os=require('os');const d=path.join(os.homedir(),'.config','meituan-paotui-open');fs.mkdirSync(d,{recursive:true});fs.writeFileSync(path.join(d,'config.json'),JSON.stringify({key:'<用户提供的apiKey>'},null,2));"
保存成功后告知用户:「✅ apiKey 已保存,正在为您查询…」,然后继续执行。
Step 1:鉴权检查
- 通过
skill-dependencies框架({baseDir}/references/meituan-passport-user-auth/SKILL.md)自动完成用户授权登录。 - 执行
login命令检查鉴权状态(跨平台,兼容 Windows/macOS/Linux):MCP_ACCESS_TOKEN="${passport_token}" node paotui.js login - 检查输出:
- 已登录 → 直接进入 Step 2
- AUTH_FAILED → 提示用户重新授权
Step 2:信息预收集(静默,不等用户回复)
从对话中提取已知信息(场景/物品/地址),判断场景分流,直接进入 Step 3,严禁在登录检查前追问用户任何信息。
Step 3:拉取地址簿
登录确认后立即拉取地址簿。
- 用户提到具体地址 → 地址簿模糊匹配,匹配不到再调用 POI 搜索
- 用户未提地址 → 按最近使用时间展示前 3 条,格式:
① 地址1-门牌号1
王 · 123****4567
② 地址2-门牌号2
王 · 134****6789
还有 XX 条地址,可以说关键词筛选
询问用户:"请问用哪个地址?(可以直接说序号或关键词,比如1送到2,也可以直接说新地址)"
⚠️ 地址列表展示也必须格式化,每个地址独占一块(含换行),不得堆砌在一行。
Step 4:地址确认
- 选序号 → 直接使用地址簿的坐标和电话,跳过 POI 搜索
- 说关键词 → 地址簿模糊匹配,匹配不到才调用 POI 搜索
- 新地址 → 调用 POI 搜索,电话填入规则:用户明确说了电话 → 使用用户指定的;未说 → 向用户询问"请问联系电话填哪个?"
- 用户在任意时刻明确说了取件人或收件人电话 → 覆盖已有电话,使用用户指定的
- 两个地址均需 POI 搜索时 → 并行发起两条搜索
帮取送场景:需要取件地址 + 收件地址,两个地址都确认后进入 Step 5。
帮买场景:先确认收件地址,再询问购买地址:
- 若用户已提供购买地址 → 使用该地址
- 若用户未提供 → 询问:"请问有指定地址购买还是就近购买?"
帮忙场景:只确认一个地址(帮忙地址),取件地址和收件地址均填该地址,不向用户说明这个逻辑。
Step 5:物品信息与参数构造
帮取送场景:
- Step 2 已收集物品信息 → 直接使用
- 用户有模糊描述(如"一些东西"、"食物")→ 直接根据描述匹配最接近的品类,无法匹配的按"其他"处理,不追问
- 完全没有任何物品信息 → 追问:"请问送什么东西?"
- 根据物品类型查阅 references/params.md 得到对应参数
帮买场景:
- Step 2 已收集购买物品 → 直接使用
- 未收集 → 追问:"请问需要购买什么物品?"
帮忙场景:
- 不询问、不收集、不展示任何物品信息
- 将用户描述的帮忙内容(如"帮扔垃圾"、"帮取号"等)填入备注字段,让骑手了解具体需求
- 直接进入 Step 6
根据场景查阅 references/params.md 确认服务类型对应的参数组合。
Step 6:预览 → 确认 → 提交
第一步:预览(只展示费用,不提交)
从接口返回结果中提取实际值,按以下模板逐行展示。所有字段的值必须来自预览接口的实际返回,严禁使用示例值或硬编码值。
帮取送 预览模板
🛵 服务类型 帮取送
📦 取件地址 {取件地址} · {取件电话}
🏠 收件地址 {收件地址} · {收件电话}
🎁 物品 {物品名称}
📍 距离 {距离}
💰 配送费 {配送费用}
🕐 预计时效 {预计时效}
💬 使用反馈 点击填写问卷有机会获得无门槛红包哦~
帮买 预览模板
🛵 服务类型 帮买
🏪 购买地址 {用户指定了购买地址时展示取件地址;就近购买时直接展示"就近购买"}
🏠 收件地址 {收件地址} · {收件电话}
🛍️ 物品 {购买物品}
📍 距离 {距离}
💰 配送费 {配送费用}
🕐 预计时效 {预计时效}
💬 使用反馈 点击填写问卷有机会获得无门槛红包哦~
帮忙 预览模板
(适用于:餐厅取号、医院帮忙、其他取号、帮搬装、帮扔杂物、其他帮忙)
🛵 服务类型 {服务类型,如:帮扔杂物}
📍 帮忙地址 {帮忙地址} · {联系电话}
💰 帮忙服务费用 {费用}
🕐 预计帮忙时间 {预计时效}
💬 使用反馈 点击填写问卷有机会获得无门槛红包哦~
然后询问用户:确认下单吗?
第二步:用户确认后提交。所有参数必须与预览时完全一致,不得修改任何参数。
下单成功后提示用户:
📬 订单已提交!请在 15 分钟内打开美团 App → 我的订单 完成支付 💳,支付成功后骑手才会来取件 🛵
⚠️ 费用卡片必须严格按上述模板逐行换行展示,每个字段独占一行,禁止省略或压缩到一行。
详细参考文档
- references/commands.md — 所有命令及参数
- references/params.md — 地址、物品、业务类型、城市表
- references/errors.md — 错误码与异常处理
