Install
openclaw skills install @dongdongyue/amap-date-spot约会/见面地点推荐助手。输入一个见面地点或两人位置自动算中点,用高德 POI 搜索周边咖啡馆、小酒馆、公园、书店等适合聊天的场所,智能筛选排除嘈杂场所,输出 3 个不同风格推荐并附理由、约会动线编排、出片建议、停车信息、备选方案。适用于约会、相亲、朋友见面、商务闲聊、纪念日/生日/表白。当用户询问"去哪约会""相亲见面""找个地方聊天""约会推荐"等场景时触发。
openclaw skills install @dongdongyue/amap-date-spot1个地点 → 以此为圆心搜索("新街口附近有什么好的见面地方")
1个具体场所 → 锚点模式("去德基广场""我想去南京大排档,帮我规划")
place/text 或 geocode/geo 精确解析场所名 + 城市,取第一个结果为目标锚点2个地点 → 分别地理编码,取中点搜索("我在大行宫,她在河西万达,找个中间的地方")
(lng1+lng2)/2, (lat1+lat2)/2未指定 → 主动追问(见「对话流引导」),不问超过 3 个问题。
从用户输入中自动提取以下信息,未提取到的在对话流引导中追问:
| 信息 | 提取关键词 | 用途 |
|---|---|---|
| 预算 | "人均 X 以内""预算 X""便宜的""不差钱" | 筛选阶段过滤超标场所 |
| 出行方式 | "开车""自驾""打车""地铁" | 决定是否搜停车场、通勤方式 |
| 约会时段+模式 | "午饭""中午""吃个饭""下午""喝咖啡""晚上""晚饭""喝一杯""宵夜" | 决定动线结构和搜索权重(见「时段模式」) |
| 节奏 | "简单见一下""聊几句""随便""正式""隆重点""一整天" | 调整动线长度和场所档次 |
| 特殊场景 | "纪念日""生日""表白""求婚""周年" | 触发特殊场景模式 |
| 人数 | "两个人""情侣""朋友""一群人" | 影响座位类型推荐 |
在时段模式决定的场所基础上,用氛围标签微调推荐偏好。不影响动线结构,只影响同类场所中的选择倾向:
| 关键词 | 氛围 | 同类别中偏向 |
|---|---|---|
| 浪漫、第一次见面、约会、表白 | 🌹 浪漫 | 靠窗/灯光暖/安静/有绿植 |
| 随意、朋友、老地方、喝一杯 | 🍻 轻松 | 热闹但不吵/性价比高/不排队 |
| 文艺、看书、安静 | 📖 文艺 | 独立店 > 连锁/有书籍或艺术品/角落座位 |
| 商务、谈事、正式、客户 | 💼 商务 | 包间或隔间/服务好/档次中上 |
| 未指定 | — | 不加偏见 |
检测到以下关键词时,切换为特殊模式:
| 场景 | 触发词 | 特殊处理 |
|---|---|---|
| 🎂 生日 | "生日""过生日" | 优先有蛋糕/甜品的场所,推荐理由标注"可以提前打招呼准备小惊喜" |
| 💝 纪念日 | "纪念日""周年" | 优先环境好、适合久坐的场所,推荐理由强调仪式感 |
| 💍 表白/求婚 | "表白""求婚" | 优先私密性好、靠窗/露台/包间,推荐理由标注"人少安静适合说重要的话" |
| 🌸 初次见面 | "第一次见""相亲""网友见面" | 优先光线好、不嘈杂、座位间距大的场所,推荐理由标注"不尴尬" |
特殊场景在输出开头用一行标注(如"🎂 生日模式已激活")。
根据用户给出的时段和节奏,推断约会结构。不同时段对应完全不同的场所组合和动线逻辑:
| 模式 | 触发词 | 结构 | 搜索偏向 | 动线时长 | 含餐 |
|---|---|---|---|---|---|
| 🥐 午饭局 | "午饭""中午吃个饭""brunch""早午餐" | 午饭 → 散步/咖啡 → (可选续场) | 口碑餐厅 + 咖啡馆 + 公园 | 2-3h | ✅ 午餐 |
| ☕ 下午茶 | "下午见""喝杯咖啡""碰一下""简单见一下""就喝个咖啡" | 咖啡/茶 → (散步) → 自然散 | 咖啡馆 + 公园 + 书店 | 1-1.5h | ❌ |
| 🍰 下午茶+晚饭 | "下午出来""下午见,顺便吃饭""下午逛逛然后吃饭" | 咖啡 → 散步/逛 → 晚饭 | 咖啡馆 + 公园 + 口碑餐厅 | 3-4h | ✅ 晚餐 |
| 🍽️ 纯晚饭 | "吃个饭""晚饭""晚上见""下班后""接她下班" | 晚饭 → (可选续场) | 口碑餐厅 + 清吧 + 公园 | 2-3h | ✅ 晚餐 |
| 🌙 晚饭+续摊 | "晚上出来""约会""晚饭后喝一杯""吃个饭喝一杯" | 晚饭 → 酒吧/演出 → 深夜 | 口碑餐厅 + 清吧/livehouse | 3-5h | ✅ 晚餐 |
| 🎬 电影+吃饭 | "看电影""电影+吃饭""看个电影然后吃饭""万达/影城" | 电影 → 吃饭(电影时间不可控,永远先看电影再吃饭,这样吃饭时有话题) | 电影院 + 口碑餐厅 + 甜品/咖啡馆 | 3-4h | ✅ 晚饭 |
| 🥂 纯喝一杯 | "喝一杯""去酒吧""坐坐""小酌"(不含"吃饭""晚饭"等餐词) | 酒吧/清吧 → (可选第二家) | 清吧/lounge/wine bar + 轻食 | 1.5-2.5h | ❌ 不主动搜餐厅 |
| 🎯 活动优先 | "密室""剧本杀""看展""博物馆""逛展""演出""livehouse""演唱会" | 活动 → 吃饭/喝一杯(活动是主角,吃是配角) | 用户指定的活动类型 + 附近口碑餐厅 | 3-5h | ✅ 活动后 |
| 🌙 宵夜 | "宵夜""夜宵""半夜""深夜""饿了""撸串""烧烤" | 深夜餐厅/大排档 → 散步 → 散 | 深夜营业餐厅 + 24h便利店/小吃(不搜公园不搜咖啡馆) | 1-2h | ✅ 深夜餐 |
| 🛍️ 逛街+吃饭 | "逛街""逛商场""逛 mall""购物" | 商场 → 商场内餐厅 → 商场内甜品/咖啡 | 商场(types=060100) + 商场周边餐厅 | 2-4h | ✅ |
| 🌤️ 全天 | "一整天""周末全天""出去玩""约会一整天" | 午饭 → 下午活动 → 晚饭 → (可选酒吧) | 全类别,按节奏排 | 5-8h | ✅ 午+晚 |
| ❓ 未指定 | 没提时间 | 默认下午茶模式 | 6 基础类混搭 | 2-3h | ❌ |
时段模式决定搜索策略:
types=050000 或关键词),餐厅推荐占 3 个位置中至少 1 个keywords=电影院)+ 口碑餐厅keywords=密室逃脱/剧本杀/演出 等)+ 活动场所附近餐厅types=060100),推荐商场本身作为第 1 个推荐时段模式决定动线起点:
节奏影响匹配:
API Key:读取环境变量 AMAP_API_KEY。
对以下 6 个类别逐一调用 /v3/place/around(每类单独请求,不可逗号合并 types):
| 类别 | 搜索方式 | 参数 |
|---|---|---|
| 咖啡馆 | types | types=050500 |
| 茶馆 | types | types=050600 |
| 酒吧/清吧 | keywords | keywords=清吧 |
| 公园 | types | types=110100 |
| 书店/文创 | keywords | keywords=书店;若 0 条则 fallback keywords=文创空间 |
| 甜品/轻食 | types + keywords | types=050200&keywords=甜品 |
通用参数:radius=1500&offset=10&output=json
当用户指定菜系、想看展、想玩密室等,追加以下搜索。若会导致总类别 > 8 个,用「美食优先」规则取舍(菜系 > 景点 > 娱乐)。
| 触发条件 | 类别 | 搜索方式 | 参数 |
|---|---|---|---|
| 菜系/品类词 | 餐厅按菜系 | keywords | keywords={菜系} 如 keywords=日料、keywords=火锅、keywords=西餐 |
| 只说"好吃的""聚餐" | 口碑餐厅 | types | types=050000(餐饮大类),取评分 ≥ 4.0 的 Top 10 |
| 菜系不明确 | 热门餐厅 | types | types=050000,分类后各取 Top 3 |
| 景点/景区/逛逛 | 风景名胜 | types | types=110000 |
| 博物馆/美术馆/看展 | 科教文化 | types | types=140000 |
| 看电影 | 电影院 | keywords | keywords=电影院 |
| 密室/剧本杀 | 娱乐场馆 | keywords | keywords=密室逃脱 再 keywords=剧本杀,合并 |
| 演出/livehouse | 演出场馆 | keywords | keywords=livehouse 再 keywords=演出,合并 |
菜系关键词映射:用户说"日料""日式"→日料;"西餐""牛排""意面"→西餐;"火锅""涮肉"→火锅;"川菜""湘菜""辣的"→川菜;"粤菜""港式""点心"→粤菜;"烧烤""烤肉"→烤肉;"东南亚""泰式""越南"→东南亚菜。
若 6 基础类别合计不足 8 条结果,将 radius 扩至 2500 重试一次。按需类别不与基础类别的 8 条门槛合并计算。
从结果中剔除以下 POI(按 name/type 字段匹配):
| 排除类型 | 匹配关键词 |
|---|---|
| 嘈杂餐饮 | 火锅、烧烤、串串、麻辣烫、大排档 |
| 娱乐场所 | KTV(不含密室/剧本杀)、酒吧(仅排除 name 含"夜店/club/酒吧街"的) |
| 快餐 | 麦当劳、肯德基、汉堡王、蜜雪冰城 |
| 非目的地 | 公共厕所、停车场、加油站 |
⚠️ 排除豁免:用户主动指定的菜系/品类(如说"想吃火锅")不排除该品类。排除只作用于用户未指定的噪音结果。
对于"酒吧"类结果,保留 name 含"清吧/lounge/wine/精酿/小酒馆"的,排除含"club/夜店/livehouse"的。
收到忌口/偏好时追加排除:
| 忌口 | 排除 |
|---|---|
| 不吃辣 | 川菜、湘菜、麻辣烫、火锅(麻辣类) |
| 素食 | 烧烤、烤肉、牛排、海鲜、日料刺身 |
| 清真/不吃猪肉 | 川菜、湘菜、烧烤(猪肉类)、火锅(含猪骨汤)、拉面(非清真) |
| 不喝酒 | 酒吧、清吧、酒馆 |
| 海鲜过敏 | 日料刺身、海鲜餐厅、虾蟹类 |
优先级(从高到低):
预算过滤:用户给了预算时,排除人均超过预算 120% 的场所(留 20% 弹性空间)。预算接近下限时在理由中标注"人均略超预算但值得"。
出片过滤:见下方「出片评估」章节。
去重:同一地点名(name 字段模糊匹配)只保留一条。
最终:从候选池中选 3 个风格不同的最佳结果。
选定 3 个推荐后,对每个推荐点分别计算双方到达时间:
调用 /v3/direction/transit/integrated(公交)和 /v3/direction/walking(步行,≤1.5km 时):
取公交方案中 duration 字段(秒),转换为分钟。若仅 1 个地点输入(非双方),则只计算从该点到推荐点的时间。
驾驶模式:用户提及"开车""自驾"时,额外调用 /v3/direction/driving 计算驾车时间,并搜索推荐点 500m 内停车场(types=150200,取最近 2 个)。输出中加入停车信息。
平衡性评估:双方通勤时间差 < 15 分钟为"公平",差距过大时在推荐理由中注明("你坐地铁 20 分钟,她步行 8 分钟")。
搜索前调用 /v3/weather/weatherInfo(city=adcode)获取当天天气:
| 天气状况 | 策略调整 |
|---|---|
| 晴/多云 | 正常搜索,公园/户外优先 |
| 小雨/阵雨 | 优先室内场所(咖啡馆、茶馆、书店),公园降权 |
| 大雨/暴雨/高温(≥35°C) | 仅推荐室内场所,推荐理由标注"有室内空间,不怕下雨/暴晒" |
| 低温(≤5°C) | 优先有暖气/热饮的室内场所 |
天气信息在小贴士中自然带出("今天有阵雨,推荐的都是室内好去处")。
下雨预案:若天气预报有雨(小雨/阵雨/大雨),为每个户外推荐(公园/广场)准备一个室内备选,标注"如下雨可改去{室内备选}"。确保约会不会因为天气突变而中断。
搜索前获取当前系统时间,对比每个 POI 的 opentime2 字段:
| 状态 | 标注 | 筛选影响 |
|---|---|---|
| 正在营业 | 🟢 营业中 | 正常推荐 |
| 1小时内开门 | 🟡 即将开门 | 可推荐,注明"再等 X 分钟就开门" |
| 已关门 | 🔴 已关门 | 降权,仅在其他选项不足时推荐 |
| 24小时营业 | 🟢 全天营业 | 正常推荐 |
结合营业时间、天气、约会场景,给出最佳到店时段建议:
| 场景 | 推荐时段 | 理由 |
|---|---|---|
| 咖啡馆(下午) | 14:00-16:00 | 人少光线好,靠窗位充足 |
| 公园(晴天) | 16:00-18:00 | 光线柔和,适合散步拍照 |
| 小酒馆/清吧 | 19:00-20:00 | 刚开门人少,能选到好位置 |
| 书店 | 10:00-11:30 或 14:00-16:00 | 避开午休和放学人流 |
| 周末任意 | 提前 30 分钟 | 比平时早到避开排队 |
对于热门场所(评论数 > 200),额外标注 ⚠️ 排队风险 + 建议提前多久到。
对每个推荐评估出片指数。出片 = 环境适合拍照发朋友圈/小红书。
| 信号 | 分值 | 来源 |
|---|---|---|
| 评分 ≥ 4.5 | +20 | POI 数据 |
| 评论数 > 100 | +15 | 高热度通常意味着视觉传播 |
| 类别=咖啡馆/甜品/书店/公园 | +15 | 天然出片品类 |
| 名称含"拍照""打卡""网红""景""窗""露台""花园" | +20 | 名称关键词 |
| 评分 ≥ 4.0 且评论数 50-100 | +10 | 口碑不错 |
| 人均 > 80 元(咖啡馆/甜品) | +10 | 环境投入通常更好 |
出片指数:≥60 → 📸 出片圣地 / 40-59 → 📱 有好看角落 / <40 → 不标注
对出片指数 ≥ 40 的推荐,在推荐理由后追加一句出片建议:
📸 出片建议:[具体角落/时间/角度],如"靠窗第三个位置拍侧脸最好看""傍晚外面的座位光线最好"
出片建议基于店铺类型做常识推断(不编造不存在的角落),不确定时只写"环境好,自然出片"。
选定 3 个推荐后,从其中取 1-2 个最适合当前模式的场所编排动线。不是 3 个全用——多余的推荐作为备选/续场建议,不强行塞进动线。
用以下参数生成动线,不逐模式写死模板。通用格式(1 站模式):
🗺️ 推荐约会动线({模式emoji} {模式名} · 1 站)
🕐 {起始时间} 到达 {区域名}
{第1站emoji} {时间范围} {场所名} — {活动}({停留时长})
💡 就这一站。聊得好可以顺路去{附近场所}(步行 X 分钟),聊得一般自然散
⏱️ 总时长约 {min} 小时(弹性,喝完即走)
通用格式(2 站模式):
🗺️ 推荐约会动线({模式emoji} {模式名})
🕐 {起始时间} 到达 {区域名}
{第1站emoji} {时间范围} {场所名} — {活动}({停留时长})
🚶 {步行分钟} {过渡说明}
{第2站emoji} {时间范围} {场所名} — {活动}({停留时长})
💡 {如是可选站则标注"可选站,视气氛决定"}
⏱️ 总时长约 {min}-{max} 小时
各时段参数表(agent 按此填充):
| 模式 | 起始 | 必选站 | 可选站 | 特殊备注 |
|---|---|---|---|---|
| 🥐 午饭局 | 12:00 | 餐厅 | →咖啡 | 吃完饭喝咖啡是自然的,但不是必须 |
| ☕ 下午茶 | 14:30 | 咖啡 | →散步 | 就 1 站。喝咖啡聊天就是全部。散步只是"聊得好可以走走",不是第 2 站 |
| 🍰 下午茶+晚饭 | 14:00 | 咖啡→晚餐 | →散步 | 中间可以逛但不要硬塞。咖啡+晚饭两站足够 |
| 🍽️ 纯晚饭 | 19:00 | 晚餐 | →酒吧 | 就 1 站。吃完聊得好再考虑续摊,不强推 |
| 🌙 晚饭+续摊 | 19:00 | 晚餐→酒吧 | — | 2 站。节奏:吃→喝→深夜 |
| 🎬 电影+吃饭 | 18:30 | 电影→晚餐 | — | 2 站。先看后吃 |
| 🥂 纯喝一杯 | 21:00 | 酒吧 | →第二家 | 就 1 站。不吃饭,喝一杯就走 |
| 🎯 活动优先 | 按活动 | 活动→吃饭 | — | 2 站。活动是主角 |
| 🌙 宵夜 | 22:30 | 宵夜 | →散步 | 就 1 站。深夜吃个简餐 |
| 🛍️ 逛街+吃饭 | 14:00 | 商场→餐厅 | →咖啡 | 2 站+可选。商场内一站式 |
| 🌤️ 全天 | 12:00 | 午→活动→晚餐 | →酒吧 | 3 站+可选。最长 |
生成要点:
💡 可选站,视气氛决定每个推荐附带一个 备选方案——万一只选了这家但到了发现满座/关门/临时不接待。
对每个推荐,搜索同类别 + 500m 内 + 营业中的 POI,取评分最高的 1 个作为备选。
在主推荐下方追加一行:
🔄 备选:{备选店名}(步行 {分钟},{评分}⭐)— 万一满座直接走过去
若 500m 内无同类别备选,标注"🔄 备选:无同类别近距备选,建议提前电话确认"。
纯文本输出(不生成文件)。完整模板和写作要点见 references/text-card-template.md。
格式如下:
{特殊场景标注,如"🎂 生日模式已激活"}
🌤️ 天气:[晴/雨/…] [温度] · [天气一句话建议]
📍 推荐区域:[地名]
1. [emoji] [店名] — [风格标签]
📌 [地址] · 步行约 [X] 分钟
[🟢 营业中 / 🟡 X点开门 / 🔴 已关门]
💰 人均约 [X] 元 [⚠️ 排队风险:建议提前 X 分钟到]
🚶 你 [X] 分钟 | 她 [X] 分钟(仅双人模式)
🅿️ 附近停车:[停车场名] 步行[X]分钟 · [另一个](仅驾车模式)
✨ [推荐理由]
📸 [出片建议](出片指数 ≥ 40 时)
📞 [电话](如热门,加"建议提前打电话确认有位")
🔗 [导航到高德地图](uri.amap.com链接)
🔄 备选:[备选店名](步行 X 分钟,X⭐)
➡️ 聊得好?步行 [X] 分钟到 [续场店名],适合续摊
2. ...
3. ...
🏆 如果只选一个:选 [店名]——[一句话核心理由]
🗺️ 推荐约会动线
(1-2 站,按时段模式取。格式见「约会动线编排」章节)
💡 小贴士
· [场景 + 天气提示]
· 🎁 [礼物建议 — 来自「小礼物策略」,按场景输出]
· 🗣️ [开场话术 — 来自「话题策略」,按性别调整]
· ⚠️ [避雷 2 条 — 来自「话题避雷表」]
· 🧊 [冷场救援 — 固定出现]
· 🚦 [节奏信号 — 1 行]
· 👋 [散场公式 — 按性别调整]
· 👔 [着装 — 按性别+场所+天气]
· 📱 [散场消息 — 按性别+场景]
· 🅿️ [停车建议(如驾车)]
· 💰 预计总花费:[总计 + 礼物费用](如用户给了预算,标注是否在预算内)
详细模板和写作要点见 references/text-card-template.md。行为指南各模块说明见「约会行为指南」章节。
纯文本输出后,自动生成 date_plan.csv,便于分享或打印:
站序,场所名,类别,地址,人均,评分,停留时长,备注
1,星巴克臻选(新百1F),咖啡馆,中山南路1号,¥30,4.6,1.5h,第一站
2,新华书店(旗舰店),书店,中山东路56号,免费,4.6,1h,可选站
3,六初茶社,茶馆,正洪街18号F22,¥85,4.1,1h,备选
只输出动线中实际使用的站,不包含仅作为备选的第 3 个推荐。
支持两种 HTML,用途不同、内容不同:
| HTML | 给谁 | 触发词 | 包含内容 | 模板 |
|---|---|---|---|---|
| 🗺️ 决策地图 | 给自己 | "生成地图""画出来""做个地图" | 3 推荐+评分+备选+动线+完整行为指南(冷场/信号/散场/消息) | references/html-template-map.md |
| 💌 邀请卡片 | 给对方 | "生成邀请卡""发给她""做个邀请" | 地图+动线时间轴+地点卡片+着装+导航 CTA——不暴露作战计划 | references/invitation-card.html |
⚠️ 邀请卡片绝对不能包含:冷场救援、节奏信号、散场公式、散场消息、礼物策略、避雷清单。这些是给自己看的作战手册,发给对方会很尴尬。
全屏高德地图 + 底部抽屉面板,移动端优先。
safe-area-inset-top/bottom)references/html-template-map.md全屏地图 + 底部可拖拽抽屉面板。像请帖,不像工具页。
| 场景 | 主题色 | 标题 |
|---|---|---|
| 初次见面/相亲 | 🟢 薄荷绿 #4ECDC4 | "☕ 见面邀请" |
| 朋友/日常约会 | 🟣 薰衣草紫 #A78BFA | "🍻 碰面邀请" |
| 情侣/纪念日 | 💕 暖粉 #FF6B8A | "💕 约会邀请" |
| 商务 | 🔵 深蓝 #64748B | "📋 会面安排" |
完整模板见 references/invitation-card.html。
从环境变量读取 key,替换模板中的占位符:
{AMAP_JSAPI_KEY} → 环境变量 AMAP_JSAPI_KEY{AMAP_SECURITY_JS_CODE} → 环境变量 AMAP_SECURITY_JS_CODE无 JS API Key 时自动降级为 CSS 文字卡片(references/text-card-date-spot.md)。
当用户选定某个推荐后说"发给对方""帮我写个消息""怎么约她"时,生成一段可直接复制发送的文字:
我在[区域名]找到了一个不错的地方——[店名],[一句话亮点]。
你从[对方位置]过来只要[X]分钟,[营业时间状态]。
地址是[地址],到了我发你定位 👉 [高德导航链接]
语气自然口语,不像营销文案。
根据约会场景和推荐场所,在「💡 小贴士」中植入行为建议。不需要全部输出,按场景裁剪,选最相关的 5-7 条。
直接问"你是男生还是女生?"。不从"他/她"推断——人称代词只表示对方性别,无法确定用户性别。
| 用户回答 | 行为建议视角 |
|---|---|
| "男生" | 给男生建议(着装/买单/散场/消息偏男性视角) |
| "女生" | 给女生建议(着装/买单/散场/消息偏女性视角) |
| 未回答 | 中性输出,双方视角各给一半 |
| 场景 | 建议 | 金额范围 | 时机 |
|---|---|---|---|
| 第一次见面 / 相亲 | ❌ 不带 — 第一次见面送礼物压力太大,自然去就行 | ¥0 | — |
| 第二次见面 | 🟡 可带可不带 — 如果带,一小束花(3-5 朵)或一盒巧克力,别太隆重 | ¥30-80 | 见面时就递过去,"路上看到觉得不错" |
| 生日 | ✅ 必带 — 不用贵但要用心:一本书(对方提过的)、手写卡片+小蛋糕、唱片(如果对方喜欢音乐) | ¥50-200 | 第一站拿出来 |
| 纪念日 | ✅ 必带 — 有纪念意义 > 贵重:打印一张合照+手写信 > 任何奢侈品 | ¥100-500 | 第一站 |
| 表白 | 🟡 轻量 — 一束花就够了,别在礼物上压筹码。表白靠话不靠东西 | ¥30-100 | 表白时 |
| 商务 | ❌ 不带私人物品 — 可以带公司伴手礼/特产,不涉及个人感情 | ¥0-100 | 散场时 |
输出格式(1 行):
🎁 礼物:{建议}。{一句话理由}。
例:
🎁 礼物:不用带。第一次见面空手最自然,带礼物反而给对方压力。🎁 礼物:一本对方提过的书 + 手写卡片。用心 > 贵重。第一站咖啡馆拿出来。🎁 礼物:一束花 + 打印一张合照。纪念日仪式感靠心意不靠价格。🎁 礼物:手写卡片 + 一块手表/一瓶酒。男生收到手写信的冲击力远超你想象。| 阶段 | 场所 | 策略 | 示例 |
|---|---|---|---|
| ☕ 第一站 | 咖啡馆/茶馆 | 环境破冰 — 从空间切入,不直奔个人问题 | "这家店装修挺有意思""你平时去咖啡馆吗" |
| 🚶 过渡 | 公园/散步/书店 | 自然延伸 — 上一话题余温 + 周围触发 | "刚聊到电影——最近有想看的吗""这公园你以前来过吗" |
| 🍽️ 第三站 | 餐厅/酒馆 | 稍微深入 — 可聊工作/兴趣/旅行,仍保持轻松 | "你工作里最有趣的是什么""如果明天中彩票你去哪" |
输出时:从三阶段中挑 1 个匹配第一站的,写成 1 句话放在小贴士里。
🗣️ 开场话术:从咖啡馆的装修切入("这家的拿铁拉花有点意思"),比直接问"你做什么的"自然。
按场景输出 2 条「千万别」:
| 场景 | 千万别 |
|---|---|
| 第一次见面 / 相亲 | ❌ 提收入/前任/结婚 ❌ 连续追问像面试 ❌ 全程聊工作 |
| 朋友见面 | ❌ 全程抱怨工作/感情 ❌ 一直刷手机回消息 |
| 纪念日 / 情侣 | ❌ 翻旧账 ❌ 拿别人比较 ❌ 不专注(一心二用) |
| 商务 | ❌ 聊政治/宗教 ❌ 过度吐槽同事/老板 ❌ 强行推销 |
⚠️ 避雷:别问"你前任什么样"或"你工资多少"——第一次见面不是背调。
当对话中断时的 3 个救命话题,按优先级:
🧊 冷场救援:
1. "最近有吃到什么好吃的店吗"(人人都能聊,还能引出下一站)
2. "如果明天中彩票,你第一个想去的地方是哪"(开放式,没压力)
3. 观察周围环境即兴("你看门口那只猫好淡定的样子")
冷场救援固定出现在小贴士中,不裁剪。
教用户识别对方的隐形信号:
| 信号 | 含义 | 行动 |
|---|---|---|
| 主动找新话题、身体前倾、笑得多、看手机少 | 🟢 绿灯 | 按动线走,执行续场 |
| 频繁看手机、回答简短(嗯/对/还好)、上厕所很久 | 🟡 黄灯 | 跳过续场,当前站结束就散 |
| "明天要早起"、先买单、开始穿外套 | 🔴 散场信号 | 自然结束,不强留,不追问下次见面 |
输出时:缩成 1 行嵌入小贴士。
🚦 节奏信号:对方频繁看手机就是黄灯了,别强走续场;主动找新话题是绿灯。
无论约会好坏,散场时按这个模板操作:
👋 散场三步:
1. 总结亮点("今天这家的咖啡确实不错")
2. 表达感谢("谢谢你过来")
3. 留模糊后续——说"下次有空再约"比"下周六有空吗"安全 100 倍
到家后 30 分钟内发,模板根据场景微调:
| 场景 | 消息模板 |
|---|---|
| 聊得好 | "今天很开心,那家{亮点}真不错。到家了吗?" |
| 一般 | "今天谢谢你过来,路上注意安全~" |
| 还想再见 | "今天聊得很开心,下次有空再约——{具体建议,如"那家日料"}" |
📱 散场消息:到家发"今天很开心,谢谢你过来",不要发小作文,不要追"下次什么时候见"。
1 句话,根据场所 + 天气 + 性别生成。检测不到性别时给通用建议。
| 场所类型 | 男生 | 女生 |
|---|---|---|
| 咖啡馆/茶馆 | smart casual:干净白 T + 衬衫外套 | 不用太隆重——连衣裙或针织+牛仔裤,自然就好 |
| Fine dining | 有领子的衣服 + 长裤,别穿拖鞋 | 一条质感好的连衣裙或衬衫+半裙,配饰点睛 |
| 公园散步 | 舒适但不邋遢——运动鞋 OK,别穿睡衣款 | 平底鞋或小白鞋,浅色系拍照好看 |
| 酒吧/清吧 | 深色系比亮色安全,稍微用心 | 深色或丝绒质感——口红比衣服重要 |
| 雨天 | 带把像样的伞,别举着便利店透明伞 | 一样——折叠伞塞包里,别湿着头发到 |
| 冬天 | 大衣+围巾,层次感比单件厚棉袄好看 | 大衣或羽绒服,脱掉外套后内搭要能打 |
👔 着装:smart casual——干净衬衫 + 不破洞的裤子。今天 22°C,薄外套刚好。
部分建议因性别而不同,生成时按检测结果选择:
| 模块 | 男→女 | 女→男 | 中性 |
|---|---|---|---|
| 开场话术 | 从环境切入,别直奔"你做什么的" | 从环境切入 + 可主动分享自己(降低对方压力) | 从环境切入 |
| 买单 | 默认你买单,但如果对方坚持 split 就接受——别争三轮 | 可以主动提 split,但如果他坚持请就别争——让男生请是给他面子 | 谁约的谁买单 |
| 散场 | 别追问下次见面——"下次有空再约"就够 | 如果觉得不错可以说"今天很开心",给他再约的台阶 | "今天很开心,谢谢你过来" |
| 散场消息 | 到家 30 分钟内主动发,简短不油腻 | 等他先发——如果他没发,睡前发一句"今天谢谢啦"就行 | 到家互相报平安 |
收到约会请求后,一次性问清以下信息。对方可以一次回答多个,也可以逐个回答。问到信息足够就开始搜索,不等所有问题都答完——能推断的就不问。
第一轮(必问):
📍 在哪见面?——具体地点 or "我在XX,她在YY"
🕐 什么时候?吃什么?——比如:
"吃午饭" / "下午喝咖啡" / "吃晚饭" / "晚饭+喝一杯"
"看电影然后吃饭" / "去密室/看展" / "逛街+吃饭"
"还没想好"
收到第一轮回答后,按需追问:
| 追问条件 | 追问内容 |
|---|---|
| 高德返回 ≥2 个同名地点 | "建邺万达还是江宁万达?"(列出选项让用户选) |
| 含餐模式但没说菜系 | "想吃什么菜系?日料 / 火锅 / 西餐 / 粤菜 / 川菜 / 烧烤 / 都可以" |
| 含餐模式但没说忌口 | "有什么忌口吗?不吃辣 / 素食 / 清真 / 不喝酒 / 海鲜过敏 / 无" |
| 没说明出行方式 | "开车去还是地铁?" |
| 没说预算 | 不问。——默认不限预算 |
| 没说节奏 | 不问。——默认"正常" |
| 人称代词中无"她""他" | "你是男生还是女生?"(用于着装/礼物/买单等建议的视角) |
不需要问的:
| 信息 | 原因 |
|---|---|
| 特殊场景(纪念日/生日等) | 用户自己会说;不主动问"今天是什么日子吗" |
| 对方位置(单人模式) | 不需要。单人模式只搜用户给的地点周边 |
用户给的地点名可能对应多个位置(如南京有建邺万达、江宁万达、万达茂、溧水万达)。GeoCode 后若返回多个同名结果且距离 > 2km,列出前 3 个让用户选,不要自作主张取第一个。
当用户表示"不喜欢""换一个""太贵了""太远了"时:
用户直接说"找个日料""有没有能看书的地方"时,关键词直接用于搜索,仍输出 3 个推荐。时段和动线按最接近的模式匹配。
用户选中某个推荐后问更多信息("这家有什么特色""附近好停车吗"),用 /v3/place/detail 查询 POI 详情(id=POI_ID)。
| API | 用途 |
|---|---|
geocode/geo | 地名 → 坐标 |
geocode/regeo | 坐标 → 地名(中点逆地理编码) |
place/around | 周边 POI 搜索(6 基础类 + 按需类:餐厅/景点/博物馆/影院/密室/演出 + 停车场) |
place/detail | POI 详情查询 |
direction/transit/integrated | 公交路线 |
direction/walking | 步行路线 |
direction/driving | 驾车路线 |
weather/weatherInfo | 天气查询 |