收到用户发送的链接后,按以下步骤执行:
使用 curl 抓取链接内容,提取可读文本:
# 抖音短链需要 -L 跟随重定向
curl -s -L -A "Mozilla/5.0 (iPhone; CPU iPhone OS 16_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.0 Mobile/15E148 Safari/604.1" "<URL>"
平台适配要点:
-L 跟随重定向;HTML 中搜索 videoInfoRes 或 item_list JSON 块提取 desc、digg_count 等note 或 noteData JSON 块videoData 或 __INITIAL_STATE__$render_data 或 status JSON 块提取后判断内容是否与美食相关(包含餐厅名、菜品名、美食标签等)。若非美食内容,告知用户"该链接不是美食相关内容"并停止。
从抓取到的内容中识别并提取以下信息:
| 字段 | 说明 | 必填 |
|---|---|---|
| --- | --- | --- |
| 店名 | 店铺全名 | ✅ |
| 简介 | 一句话描述(≤60字),让人一眼知道吃什么 | ✅ |
| 推荐菜 | 博主提到/推荐的菜品列表 | ✅ |
| 博主评价 | 博主的原话评价或总结 | 可选 |
| 人均消费 | 人均价格 | 可选 |
| 来源 | 原始链接 + 博主名称 | ✅ |
| 原始链接 | 用户发送的完整原始 URL,方便日后点击回味视频/帖子 | ✅ |
提取规则:
#标签 中web_search 搜索 "博主名" "视频标题关键词" 店名 来补充对每家店铺,通过 web_search 搜索精确位置:
搜索词:"{店名}" "{城市}" 地址
需要确定:
位置搜索策略:
"店名" 地址 获取详细位置文件路径: 与本 Skill 同级目录,即 /data/workspace/.agent/skills/food-collector/food-map.md
若文件不存在,创建新文件并写入头部模板(见下方格式)。
若文件已存在,读取现有内容,将新店铺插入到对应的城市→行政区分类下。
归档规则:
## 🏙️ 成都)### 📍 锦江区)去重规则: 写入前检查文件中是否已存在同名店铺(同城市+同店名),若已存在则提示用户并跳过(或询问是否更新)。
# 🗺️ 我的美食地图
> 自动收集自各平台美食视频/帖子,按城市和行政区归档
> 最后更新:YYYY-MM-DD HH:MM
---
## 🏙️ {城市名}
### 📍 {行政区名}
#### 🍽️ {店名}
- **简介**:{一句话简介,≤60字}
- **推荐菜**:{菜品1}、{菜品2}、{菜品3}
- **人均**:{人均消费}
- **地址**:{详细地址}
- **博主评价**:{博主原话评价}
- **来源**:[{博主名} - {平台}]({原始链接}) | 收录于 {YYYY-MM-DD}
- **🔗 原始链接**:{原始视频/帖子完整URL}(点击回味)
---
写入完成后,向用户输出摘要:
✅ 已收录 {N} 家店铺到美食地图:
📍 {城市} - {行政区}
🍽️ {店名1}:{简介}
🍽️ {店名2}:{简介}
📄 文件位置:/data/workspace/.agent/skills/food-collector/food-map.md
如果网页内容是视频类(抖音/B站等),且 HTML 中只有标题和标签没有具体店名:
web_search 搜索 "{博主名}" "{视频标题}" 店名 推荐如果一个视频/帖子包含多家店铺(如"成都5大苍蝇馆子"),逐一处理每家店铺,分别搜索位置信息,全部写入同一次归档操作中。
读取现有文件时,解析已有的城市和行政区结构,新店铺插入到正确位置,保持文件整体结构不变。
当用户提到自己在某个城市(如"我在成都"、"我到兰州了"、"我现在在北京"),按以下步骤执行:
从用户消息中提取城市名称。支持的表达方式:
读取 /data/workspace/.agent/skills/food-collector/food-map.md,找到对应城市(## 🏙️ {城市名})下的所有店铺。
按行政区分组,输出该城市所有已收录店铺的摘要:
🏙️ {城市} 美食地图(共 {N} 家店)
📍 {行政区1}
🍽️ {店名1} — {简介} | 人均{XX}元
🍽️ {店名2} — {简介} | 人均{XX}元
📍 {行政区2}
🍽️ {店名3} — {简介} | 人均{XX}元
根据店铺的地理位置(行政区 + 详细地址),规划一条合理的觅食路线:
输出格式:
🗺️ 推荐觅食路线
🌅 早餐
→ {店名}({行政区}):{推荐菜}
🌞 午餐
→ {店名}({行政区}):{推荐菜}
🍵 下午茶
→ {店名}({行政区}):{推荐菜}
🌙 晚餐
→ {店名}({行政区}):{推荐菜}
🌃 宵夜
→ {店名}({行政区}):{推荐菜}
💡 路线说明:{简要说明路线逻辑,如"从XX区出发,沿途经过XX区,最后到XX区"}
如果店铺数量超过一天能吃完的量(>5家),则拆分为多天路线,标注"Day 1"、"Day 2"等。
如果店铺数量较少(≤3家),则简化为一条路线,不必强行填满所有时段。
edit_file 或 replace_in_file 工具,不要覆盖已有内容共 1 个版本