Tourism Guide Harvester Skill
版本
- v1.5.0 (2026-04-24): Phase 4 六步法详细版 + Phase 5 临时文件清理提醒(需用户批准)
- v1.3.0 (2026-04-24): 新增输出优化规则 - 信息源优先级排序、时间季节权重、攻略提及次数标注、参考攻略原文分平台展示
- v1.1.0 (2026-04-23): 小红书优化 - 多排序搜索、JavaScript正文提取、正确分享链接格式
- v1.0.0 (2026-04-23): 初始版本
技能描述
从多个旅游平台(小红书、马蜂窝、携程、微信公众号等)获取评分排名最高的旅游攻略,整合输出综合攻略文档。
v1.3.0 输出优化规则:
- 信息源优先级:小红书 > 微信公众号 > 马蜂窝 > 其他(基础权重 ×1.0 / 0.9 / 0.8 / 0.6)
- 时间权重:近一年更新 ×1.0,超一年降权;季节匹配内容 ×1.2(当前春季)
- 所有景点/美食/住宿/打卡点标注【共X篇攻略提及】并列出所有来源链接
- 参考攻略原文统一放在报告最后,按平台分组展示
触发词
- 旅游攻略获取
- 攻略抓取
- 多平台攻略整合
- 台州攻略
- 亲子游攻略
核心原则
1. Subagent分工原则
- 信息收集工作: 全部由 subagent 执行
- Main Agent职责: 进度汇报、最终总结、整合输出
- 浏览器操作: Subagent 不能同时操作浏览器,必须按顺序执行
1.5 Subagent记忆固化原则(防止任务丢失)
核心:同时使用固定 session + 完整 task + 三文件持久化。
| 机制 | 用法 |
|---|
| 持久化 Session | mode: "session" + 固定 sessionKey |
| 完整 task 参数 | 所有关键要求写进 sessions_spawn(task=...) |
| 任务真迹 | ~/.openclaw/workspace/tasks/[平台]_[日期]_任务.md |
SessionKey: tourism-[平台简称]-[日期]
最小 spawn 模板:
sessions_spawn({
label: "[平台]攻略获取",
mode: "session",
sessionKey: "tourism-[platform]-[yyyymmdd]",
task: `
目标:抓取至少5篇[目的地]攻略。
只读:_任务.md
只写:_状态.md + _数据.md
浏览器:CDP 18800
异常:立即写入状态文件并提示人工介入
`
})
原则: task 参数是运行真迹,文件是恢复真迹,session 只是执行容器。
2. 数据来源原则(重要!)
- 严格遵循用户指定的平台: 不能擅自切换信息来源
- 数据纯正性验证: 每个平台有特有的指标,用于验证数据来源
- 切换来源需用户同意: 如果指定平台不可用,必须先征求用户确认
| 平台 | 特有指标 | 数据验证方法 |
|---|
| 小红书 | 点赞数、收藏数、标签 | 不要用"浏览量"(那是马蜂窝指标) |
| 马蜂窝 | 浏览量、游记格式 | 浏览量是核心指标 |
| 携程 | 携程评分(⭐x.x/5)、点评数 | 评分格式是携程特有 |
| 微信公众号 | 来源公众号名称 | URL包含 mp.weixin.qq.com |
3. 输出文件原则(三文件分离,降低 token 消耗)
| 文件 | 谁写 | 谁读 | 作用 |
|---|
_任务.md | Main Agent | Subagent | 任务要求/验收标准 |
_状态.md | Subagent | Main Agent | 进度/断点/问题 |
_数据.md | Subagent | Main Agent | 纯攻略数据 |
命名: ~/.openclaw/workspace/tasks/[平台]_[日期]_{任务|状态|数据}.md
规则:
- Subagent 不回写
_任务.md
- Main Agent 汇总仅读
_数据.md
_状态.md 只用于确认进度
- token 只随攻略数据增长,不再随任务说明/进度日志重复膨胀
4. 三文件分离原则
旧方案把任务、进度、数据混在一处;新方案把三者拆开。
只记四条:
_任务.md:Main Agent 写一次,Subagent 只读
_状态.md:Subagent 增量写,Main Agent 快速读
_数据.md:Subagent 增量写,Main Agent 汇总只读它
- Subagent 重启后优先看
task 参数,其次看文件,不依赖会话记忆
🚀 速查表(快速参考)
信息源优先度(重要!新规则)
| 优先级 | 平台 | 说明 |
|---|
| 🥇 1 | 小红书 | 首选来源,热门内容多 |
| 🥈 2 | 微信公众号 | 深度攻略,质量稳定 |
| 🥉 3 | 马蜂窝 | 游记为主,行程详细 |
| 🏅 4 | 其他(携程等) | 补充参考 |
时间权重规则(适用于所有平台):
- 近一年内的攻略权重更高
- 更新时间接近当前季节(当前:春季)的攻略优先度提升
- 季节特征判断:
- 春季(3-5月):赏花、踏青、湿地、露营
- 夏季(6-8月):海滨、漂流、避暑、主题乐园
- 秋季(9-11月):红叶、采摘、温泉、晒秋
- 冬季(12-2月):冰雪、温泉、年味、暖冬目的地
综合排序公式:
最终优先级 = 平台基础权重 × 时间衰减系数 × 内容相关性
时间衰减系数:90天内=1.0,180天内=0.85,365天内=0.7,超过1年=0.5
| 参数 | 效果 | 用途 |
|---|
sort=hot | 热度排序 | 热门爆款 |
sort=collect_count | 收藏排序 | 高质量精选 |
sort=time_descending | 时间降序 | 最新攻略 |
| 正文提取 | eval "$(cat ~/.openclaw/workspace/skills/xiaohongshu-crawler/scripts/extract-article.js)" --json | 获取正文 + 分享链接 |
| 分享链接 | discovery/item/{noteId}?xsec_token={token} | 有效链接,不跳转首页 |
各平台特有指标
| 平台 | 指标 | 验证方法 |
|---|
| 小红书 | 点赞数、收藏数、标签 | 不用浏览量 |
| 马蜂窝 | 浏览量 | 必须提取 |
| 携程 | ⭐x.x/5 评分格式 | 必须提取 |
| 微信公众号 | 来源公众号名称 | URL含 mp.weixin.qq.com |
常见问题速查
| 问题 | 解决方案 |
|---|
| 浏览器操作冲突 | 串行执行,一个subagent用浏览器完了再下一个 |
| 小红书正文获取失败 | 不要用 snapshot,必须用 eval + JavaScript |
| 分享链接跳转首页 | 用 discovery/item 格式带 xsec_token |
| 二维码风控拦截 | 输出提示,等待用户扫码后继续 |
| Chrome未启动/CDP连不上 | google-chrome --remote-debugging-port=18800 & 启动 |
执行流程
Phase 1: 准备三文件(Main Agent)
# 为每个平台创建 3 个文件
# 任务文件(Main Agent 写一次)
write ~/.openclaw/workspace/tasks/小红书_2026-04-24_任务.md
# 状态文件(Subagent 写进度,Main Agent 读状态)
write ~/.openclaw/workspace/tasks/小红书_2026-04-24_状态.md
# 数据文件(Subagent 写攻略,Main Agent 读汇总)
write ~/.openclaw/workspace/tasks/小红书_2026-04-24_数据.md
# 其他平台同理
write ~/.openclaw/workspace/tasks/马蜂窝_2026-04-24_任务.md
write ~/.openclaw/workspace/tasks/马蜂窝_2026-04-24_状态.md
write ~/.openclaw/workspace/tasks/马蜂窝_2026-04-24_数据.md
任务文件模板(Main Agent 写入,一次性):
# [平台]攻略获取任务([日期])
## 任务要求
- 目标平台:[平台名]
- 获取数量:至少5篇评分排名最高的攻略
- 排序方式:[平台特有排序]
- 数据纯正确认:[平台特有指标]
- 输出文件:~/.openclaw/workspace/tasks/[平台]_[日期]_数据.md
## 浏览器状态
- CDP端口:18800(如需使用)
- 执行顺序:第N个(避免冲突)
## 操作提示
- 搜索URL:xxx
- 排序按钮:xxx
- 特有问题处理:xxx
## 验收标准
- 至少5篇完整攻略
- 每篇必须包含:标题、作者、平台指标、正文摘要
- 所有景点/美食/住宿必须附【来源链接】
- 原文链接必须是有效分享链接
## 数据文件格式(Subagent 每篇攻略写入数据文件)
### [序号]. [文章标题]
- 作者:xxx | 发布日期:xxxx-xx-xx | 平台:[平台名]
- [平台特有指标]:xxx
- 正文摘要:xxx(100字以内)
- 【景点】[景点名]:[一句话描述](门票:xxx)
来源:[原文链接](url)
- 【美食】[美食名]:[一句话描述]
来源:[原文链接](url)
- 【住宿】[住宿名/类型]:[一句话描述]
来源:[原文链接](url)
- 【打卡点】[打卡点]:[一句话描述]
来源:[原文链接](url)(可选)
- 原文链接:[点击查看](有效分享链接)
---
状态文件初始内容(Main Agent 写入,Subagent 增量更新):
# [平台]攻略获取状态([日期])
## 执行进度
- [时间] 等待启动
## 断点记录
- 上次完成:0篇
- 下一步:连接浏览器,开始搜索
## 任务状态
- 状态:⏳ 等待启动
- 完成进度:0/5篇
- 数据文件:~/.openclaw/workspace/tasks/[平台]_[日期]_数据.md
## 待解决问题
- 无
数据文件初始内容(Subagent 增量写入):
# [平台]攻略数据([日期])
(每篇攻略完成后 append到此文件,Main Agent Phase4 仅读此文件)
Phase 2: 启动Subagent(串行 + 方案二+四强化记忆)
执行顺序(避免浏览器冲突):
1. 小红书 → 使用浏览器 CDP 18800
2. 马蜂窝 → 等小红书完成后使用同一浏览器
3. 携程 → 等马蜂窝完成后使用同一浏览器
4. 微信公众号 → 不需要浏览器,可并行执行
每次 spawn 必须同时满足:
- ✅
mode: "session" — 持久化 session,任务累积不丢失
- ✅
sessionKey: "tourism-[平台]-[日期]" — 固定 key,可跨 compact 恢复
- ✅ 完整
task 参数 — 塞满所有任务细节,每次回复都能看到
- ✅ 在
task 中告知三文件路径 — subagent 读取任务文件、写状态文件和数据文件```
Phase 2: 各平台操作步骤
小红书操作流程
# 1. 连接浏览器(已登录)
agent-browser --cdp 18800
# 2. 多维度搜索(3种排序覆盖热门/精选/最新)
# 热度排序 → 热门爆款
agent-browser --cdp 18800 open "https://www.xiaohongshu.com/search_result?keyword=[关键词]&type=note&sort=hot"
agent-browser --cdp 18800 snapshot -i --json
# 收藏排序 → 高质量精选
agent-browser --cdp 18800 open "https://www.xiaohongshu.com/search_result?keyword=[关键词]&type=note&sort=collect_count"
agent-browser --cdp 18800 snapshot -i --json
# 时间排序 → 最新攻略
agent-browser --cdp 18800 open "https://www.xiaohongshu.com/search_result?keyword=[关键词]&type=note&sort=time_descending"
agent-browser --cdp 18800 snapshot -i --json
# 3. 从 snapshot 提取文章链接
# 每篇文章进入详情页
# 4. 获取完整内容 + 分享链接(必须用 eval + JavaScript)
agent-browser --cdp 18800 eval "$(cat ~/.openclaw/workspace/skills/xiaohongshu-crawler/scripts/extract-article.js)" --json
# 提取结果:标题、作者、正文、点赞数、标签、图片、shareUrl(有效分享链接)
小红书排序参数:
| 参数 | 效果 | 用途 |
|---|
sort=hot | 热度排序 | 热门爆款 |
sort=collect_count | 收藏排序 | 高质量精选 |
sort=time_descending | 时间降序 | 最新攻略 |
小红书特有要点:
- 正文提取: 不要用
snapshot,必须用 eval + JavaScript
- 分享链接: 必须用
discovery/item/{noteId}?xsec_token={token} 格式
- 二维码拦截: 输出提示"⚠️ 小红书检测到自动化操作,请手动扫码登录",等待用户确认
- press Enter无效: 改用
goto 直接导航搜索URL
- 文章内容需要登录: 通过连接用户已登录浏览器解决
马蜂窝操作流程
# 1. 连接浏览器(小红书完成后)
agent-browser --cdp 18800
# 2. 导航到搜索页面
goto "https://www.mafengwo.cn/search?q=[关键词]&type=2"
# 3. 获取攻略列表
snapshot -i --json
# 提取:标题、浏览量(马蜂窝特有)、点赞数、发布日期
# 4. 逐篇点击获取详细内容
click [文章ref]
# 提取:行程安排、景点推荐、美食推荐
# 5. 输出到文件
马蜂窝特有问题处理:
- 目的地页面404: 改用搜索功能访问
- WAF反爬拦截: 使用已登录的浏览器状态
- 浏览量指标: 必须提取浏览量数据(马蜂窝特有)
携程操作流程
# 1. 连接浏览器(马蜂窝完成后)
agent-browser --cdp 18800
# 2. 导航到景点页面
goto "https://you.ctrip.com/sight/[城市代码].html"
# 3. 获取景点评分排行
snapshot -i --json
# 提取:景点名称、携程评分(⭐x.x/5)、点评数、门票价格
# 4. 导航到游记页面
goto "https://you.ctrip.com/travels/[城市代码].html"
# 5. 获取游记列表并提取详细内容
携程特有问题处理:
- JS动态加载: 必须使用浏览器,web_fetch无法获取评分数据
- IP重定向: 可能被重定向到其他城市,需检查页面内容
- 评分格式: 必须提取 ⭐x.x/5 格式的评分(携程特有)
微信公众号操作流程
# 1. 使用搜狗微信搜索
web_fetch "https://wx.sogou.com/" 或搜索关键词
# 2. 获取文章列表
# 提取:标题、来源公众号名称、摘要
# 3. 尝试访问文章详情(可能失败)
# 微信公众号文章URL格式:https://mp.weixin.qq.com/s/[文章ID]
# 4. 输出到文件
微信公众号特有问题处理:
- 搜狗重定向到小红书: 立即停止,报告问题,征求用户确认
- 反爬虫验证码: 无法绕过,建议用户提供具体文章URL
- 数据来源验证: 确认URL包含 mp.weixin.qq.com
Phase 3: Subagent执行(5步法)
- 读
task 参数,必要时核对 _任务.md
- 按平台步骤抓取;遇验证码/重定向立即记录并暂停
- 每完成 1 篇就 append 到
_数据.md
- 每次进度变化就更新
_状态.md
- 完成写
✅ 完成;中断写 ⚠️ 部分完成 / ❌ 失败
原则: task 参数优先;任务文件只读;状态/数据文件读写
Subagent 写数据文件格式(每篇攻略 append):
### [序号]. [文章标题]
- 作者:xxx | 发布日期:xxxx-xx-xx | 平台:[平台名]
- [平台特有指标]:xxx
- 正文摘要:xxx(100字以内)
- 【景点】
- [景点名]:[一句话描述](门票:xxx)
来源:[原文链接](url)
- 【美食】
- [美食名]:[一句话描述]
来源:[原文链接](url)
- 【住宿】
- [住宿名/类型]:[一句话描述]
来源:[原文链接](url)
- 【打卡点】(可选)
- [打卡点]:[一句话描述]
来源:[原文链接](url)
- 原文链接:[点击查看](有效分享链接)
---
Subagent 写状态文件格式(每次进度变化,替换或 append):
## 执行进度
- 19:30 任务启动
- 19:32 连接浏览器成功
- 19:35 导航到搜索页面成功
- 19:38 获取文章列表(12篇)
- 19:45 第1篇完成 → 已写入数据文件
- 20:10 第5篇完成
## 断点记录
- 上次完成:第5篇(最后1篇)
- 下一步:更新状态文件 → 任务完成
- 最后活跃:20:15
## 任务状态
- 状态:✅ 完成
- 完成进度:5/5篇
- 数据文件:~/.openclaw/workspace/tasks/[平台]_[日期]_数据.md
## 待解决问题
- 无
信息源优先级与排序规则(新优化)
优先级量化表
| 优先级 | 平台 | 基础权重 | 说明 |
|---|
| 🥇 第1优先 | 小红书 | ×1.0 | 热门爆款多,内容鲜活 |
| 🥈 第2优先 | 微信公众号 | ×0.9 | 深度长文,质量稳定 |
| 🥉 第3优先 | 马蜂窝 | ×0.8 | 游记详细,行程可落地 |
| 🏅 第4优先 | 其他(携程等) | ×0.6 | 补充参考 |
时间与季节权重
综合排序公式:
最终优先级分 = 平台基础权重 × 时间衰减系数 × 季节匹配系数
| 时间范围 | 衰减系数 | 说明 |
|---|
| 90天内 | 1.0 | 最新鲜,权重最高 |
| 91-180天 | 0.85 | 近期内容 |
| 181-365天 | 0.70 | 一年内的内容仍优先 |
| 超过1年 | 0.50 | 降权参考,历史数据 |
| 当前季节 | 适合主题 | 权重提升 |
|---|
| 春季(3-5月) | 赏花、踏青、湿地、露营、户外 | ×1.2 |
| 夏季(6-8月) | 海滨、漂流、避暑、乐园、水上 | ×1.2 |
| 秋季(9-11月) | 红叶、采摘、温泉、晒秋 | ×1.2 |
| 冬季(12-2月) | 冰雪、温泉、年味、暖冬 | ×1.2 |
整合策略
- 同一景点/美食/住宿出现多次时: 保留提及次数最多的,引用所有来源链接
- 内容冲突时: 优先高权重平台 + 新发布时间
- 数据不足时: 不凑数,宁缺毋滥
Phase 4: Main Agent整合
Subagent → Main Agent 数据传递机制
核心:三文件各司其职,Main Agent 只读数据文件汇总,token 消耗降到最低。
Subagent 执行 ──→ 写数据文件(攻略正文)
写状态文件(进度状态) ──→ Main Agent 读状态文件(快速确认)
Main Agent 读数据文件(仅此文件汇总)
↓
~/.openclaw/workspace/tasks/小红书_2026-04-24_数据.md ──→ ~/llm-wiki/raw/articles/台州综合攻略.md
文件职责:
- 任务文件:Main Agent 写,Subagent 启动时读一次,之后不碰
- 状态文件:Subagent 写,Main Agent 快速读(确认进度)
- 数据文件:Subagent 写,Main Agent 仅读此文件汇总(纯攻略内容)
token 优化对比:
旧方案 token 消耗(Main Agent Phase4 读文件):
任务要求(500字)+ 进度日志(800字)× 5篇 = 4500+ token
新方案 token 消耗(Main Agent Phase4 读文件):
数据文件:纯攻略内容 5篇 ≈ 1500 token
状态文件:极小 ≈ 100 token
合计 ≈ 1600 token(减少 ~65%)
Phase 4 整合执行步骤(v1.5.0 详细版)
Phase 4 共 6 步,每步可核查,失败可断点续传:
第1步:快速扫状态文件(极小文件,token≈0)
read ~/.openclaw/workspace/tasks/小红书_2026-04-24_状态.md
read ~/.openclaw/workspace/tasks/微信公众号_2026-04-24_状态.md
read ~/.openclaw/workspace/tasks/马蜂窝_2026-04-24_状态.md
判断:全✅→继续 | 有⚠️/❌→汇总已有+标注 | 有⏳→汇总已完成部分
第2步:仅读数据文件(纯攻略内容,无冗余token)
# 按优先级顺序读:优先读小红书(权重最高)
read ~/.openclaw/workspace/tasks/小红书_2026-04-24_数据.md
read ~/.openclaw/workspace/tasks/微信公众号_2026-04-24_数据.md
read ~/.openclaw/workspace/tasks/马蜂窝_2026-04-24_数据.md
原则:只读数据文件,不读任务文件,不重复读状态文件。
第3步:跨篇统计景点/美食/住宿/打卡点
景点统计:
① 从所有数据文件提取所有【景点】项
② 同名景点归一(忽略空格/标点差异)
③ 每归并一次 → 提及次数+1
④ 每项附加所有来源链接(跨平台)
⑤ 按提及次数降序,生成景点汇总表
美食/住宿/打卡点统计:同上(步骤①改为提取对应项)
第4步:计算优先级分并排序
最终优先级分 = 平台权重 × 时间衰减系数 × 季节匹配系数
| 项目 | 计算方式 |
|------|----------|
| 平台权重 | 小红书×1.0 / 公众号×0.9 / 马蜂窝×0.8 / 其他×0.6 |
| 时间衰减 | 90天内×1.0 / 91-180天×0.85 / 181-365天×0.70 / 超1年×0.50 |
| 季节匹配 | 当季主题×1.2 / 其他×1.0 |
| 提及次数 | 直接计入推荐指数:5次=⭐⭐⭐⭐⭐ |
排序:先按最终优先级分降序,同分按提及次数降序
第5步:生成最终攻略文件
write ~/llm-wiki/raw/articles/[目的地]综合攻略.md
输出前逐项检查:
第6步:输出完成报告
【综合攻略生成完成】
📊 数据来源:小红书X篇 / 公众号X篇 / 马蜂窝X篇
📋 景点:共X个 | 美食:共X个 | 住宿:共X个 | 打卡点:共X个
📁 完整攻略:~/llm-wiki/raw/articles/[目的地]综合攻略.md
Phase 5: 临时文件清理提醒(需用户批准)
触发(出现任一情况时,也必须先经用户批准): 任务完成 / 失败 / 超7天未动 / 用户主动要求清理。
流程:
- 先列出
tasks/ 下候选文件
- 向用户展示“本次任务 / 历史文件 / 保留文件”
- 未获明确批准前,不执行任何清理
- 获批后使用
trash,不要用 rm
规则:
- 只清理中间文件,不删最终攻略
- 默认保留 72h 内文件
- “可以清理 / 全删了 / 只清这次”算批准;“先看看”不算
常见问题与解决方案
问题1: 浏览器操作冲突
现象: 多个subagent同时操作浏览器,导致状态混乱
原因: CDP端口只能同时被一个agent使用
解决方案:
- Subagent按顺序执行(小红书 → 马蜂窝 → 携程)
- 微信公众号不使用浏览器,可并行执行
- Main Agent监控进度,协调启动顺序
问题2: 小红书文章内容无法获取
现象: 使用 snapshot 无法提取到文章正文
原因: 小红书正文不在 accessibility tree 中,只在静态 HTML 中
解决方案:
问题3: 小红书分享链接无效
现象: 保存的链接点进去跳转到首页
原因: explore/{noteId} 格式需要 xsec_token 参数,否则会被拦截
解决方案:
- 使用
discovery/item/{noteId}?source=webshare&xsec_token={token} 格式
- 从当前页面 URL 提取
xsec_token 参数
- xiaohongshu-crawler 提取脚本自动处理
问题4: 小红书二维码拦截
现象: 小红书弹出二维码,拦截自动化操作
原因: 小红书反爬虫机制检测非人类操作
解决方案:
- 输出提示:"⚠️ 小红书检测到自动化操作,请手动扫码登录"
- 暂停操作,等待用户确认登录成功
- 用户确认后继续操作
问题5: 数据来源不正确
现象: Subagent返回的数据混入了其他平台
原因: 搜索引擎重定向或agent误判
解决方案:
- 每个平台有特有指标(见上方表格),用于验证
- 发现数据来源问题时立即停止
- 报告问题并征求用户确认是否接受替代数据
问题6: 携程评分数据缺失
现象: web_fetch只能获取静态框架,无法获取评分
原因: 携程使用JavaScript动态加载内容
解决方案:
- 必须使用浏览器(agent-browser)访问携程
- 等其他浏览器任务完成后启动携程subagent
问题7: 微信公众号详细内容无法获取
现象: 只能获取文章列表,无法进入详情页
原因: 搜狗反爬虫机制触发验证码
解决方案:
问题8: Gateway重启导致Subagent失败
现象: Subagent报告 "gateway closed" 错误
原因: Gateway服务重启,CDP连接断开
解决方案:
- Main Agent检测到失败后重新启动Subagent
- 通知用户重新启动Chrome浏览器(--remote-debugging-port=18800)
问题9: Chrome未启动/CDP连接失败
现象: 报告 "Chrome未启动" 或 "CDP端口18800不可用"
原因: 浏览器没有启用远程调试
解决方案:
# Linux
google-chrome --remote-debugging-port=18800 &
# macOS
/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --remote-debugging-port=18800 &
# Windows
chrome.exe --remote-debugging-port=18800
Skill会检测到CDP不可用时,提示用户执行以上命令启动浏览器。
问题10: Subagent进度卡住
现象: Subagent长时间无响应或重复失败
原因: 浏览器页面跳转异常、网络问题等
解决方案:
- Main Agent定期检查subagent状态(subagents list)
- 发现卡住时kill并重新启动
- 或手动操作浏览器帮助恢复状态
优化建议
1. 排序优化
- 小红书:尝试按"最多点赞"/"最多收藏"排序(如果有)
- 马蜂窝:按浏览量排序
- 携程:按评分/点评数排序
- 微信公众号:按阅读量排序(如果可用)
2. 增量式文件更新
步骤:
1. 先获取文章列表,输出到文件
2. 逐篇点击进入详情页
3. 补充详细内容到文件
4. 最后一篇完成后,文件包含完整信息
3. 进度汇报模板
## 📊 进度汇报
| 平台 | 状态 | 结果 | 问题 |
|------|------|------|------|
| 小红书 | 🔄/✅/⚠️ | xx篇 | — |
| 马蜂窝 | 🔄/✅/⚠️ | xx篇 | — |
| 携程 | 🔄/✅/⚠️ | xx篇 | — |
| 微信公众号 | 🔄/✅/⚠️ | xx篇 | — |
下一步:xxx
输出格式模板
单平台输出文件模板
# [平台名][目的地]旅游攻略([日期])
## 数据来源
- 平台:[平台名] ([域名])
- 排序方式:[排序方法]
- 获取时间:[日期]
- ✅ 数据来源确认
## 攻略列表
### 1. [文章标题]
- 作者:xxx
- 发布日期:xxx
- [平台特有指标1]:xxx
- [平台特有指标2]:xxx
#### 行程安排
- Day1: xxx
- Day2: xxx
#### 景点推荐
- 景点1:xxx(门票:xxx)
#### 美食推荐
- 美食1:xxx
#### 交通方式
xxx
#### 住宿建议
xxx
最终综合攻略模板
# [目的地][天数]日亲子游综合攻略([年份]终极版)
> **适合人群:** [目标人群]
> **推荐旅行季节:** [季节]
> **数据来源:** 小红书、微信公众号、马蜂窝(多平台综合,加权排序)
> **更新时间:** [日期]
> **信息源优先级:** 小红书 > 微信公众号 > 马蜂窝 > 其他
## 📊 数据来源说明
| 平台 | 基础权重 | 获取篇数 | 代表链接 |
|------|----------|----------|----------|
| 小红书 | ×1.0 | xx篇 | [查看热门攻略](#小红书热门攻略) |
| 微信公众号 | ×0.9 | xx篇 | [查看热门攻略](#公众号热门攻略) |
| 马蜂窝 | ×0.8 | xx篇 | [查看热门攻略](#马蜂窝热门攻略) |
| 其他 | ×0.6 | xx篇 | — |
## 📋 综合推荐榜(加权排序)
### 🏞️ 景点推荐【共X个,被Y篇攻略提及】
| 景点 | 推荐理由 | 提及次数 | 推荐指数 | 适合季节 | 来源攻略 |
|------|----------|----------|----------|----------|----------|
| 景点1 | 一句话亮点 | 【共3篇】⭐⭐⭐⭐ | 全年皆宜 | [链接1](url) [链接2](url) [链接3](url) |
| 景点2 | 一句话亮点 | 【共1篇】⭐⭐ | 春季最佳 | [链接](url) |
### 🍜 美食推荐【共X个,被Y篇攻略提及】
| 美食 | 推荐理由 | 提及次数 | 推荐指数 | 推荐店铺 | 来源攻略 |
|------|----------|----------|----------|----------|----------|
| 美食1 | 一句话亮点 | 【共5篇】⭐⭐⭐⭐⭐ | 必吃推荐 | xxx老店 | [链接1](url) [链接2](url) |
| 美食2 | 一句话亮点 | 【共2篇】⭐⭐⭐ | 特色小吃 | xxx店 | [链接](url) |
### 🏨 住宿推荐【共X个,被Y篇攻略提及】
| 住宿 | 位置/类型 | 提及次数 | 推荐指数 | 价位 | 来源攻略 |
|------|----------|----------|----------|------|----------|
| 住宿1 | 市中心/亲子友好 | 【共4篇】⭐⭐⭐⭐ | ¥300-500/晚 | [链接1](url) [链接2](url) |
### 📸 打卡点推荐【共X个,被Y篇攻略提及】
| 打卡点 | 拍照亮点 | 提及次数 | 推荐指数 | 出片时间 | 来源攻略 |
|------|----------|----------|----------|----------|----------|
| 打卡点1 | 日落/建筑 | 【共2篇】⭐⭐⭐ | 傍晚最佳 | [链接](url) |
## 🗓️ 行程总览(加权排序整合)
[按天列出行程,行程中的景点/美食/住宿均标注来源链接]
## 🎯 分板块详解
### 🏞️ 景点详解
[按推荐指数排序,每景点标注:【共X篇攻略提及】+ 所有来源链接]
### 🍜 美食地图
[按提及次数排序,每美食标注:【共X篇攻略提及】+ 所有来源链接]
### 🏨 住宿指南
[按推荐指数排序,每住宿标注:【共X篇攻略提及】+ 所有来源链接]
### 📸 打卡点攻略
[按推荐指数排序,每打卡点标注:【共X篇攻略提及】+ 所有来源链接]
## ⚠️ 注意事项
[避坑指南,标注数据来源]
---
## 📎 参考攻略原文(按平台分组,附链接)
### 🔴 小红书热门攻略【共X篇】
| # | 标题 | 作者 | 发布日期 | 点赞 | 收藏 | 链接 |
|---|------|------|----------|------|------|------|
| 1 | 攻略标题 | @作者名 | 2025-03-15 | 3.2k | 8.5k | [查看原文](url) |
| 2 | 攻略标题 | @作者名 | 2025-01-20 | 1.8k | 4.2k | [查看原文](url) |
### 🟠 微信公众号热门攻略【共X篇】
| # | 标题 | 公众号名称 | 发布日期 | 链接 |
|---|------|------------|----------|------|
| 1 | 攻略标题 | 公众号名称 | 2025-02-10 | [查看原文](url) |
| 2 | 攻略标题 | 公众号名称 | 2024-11-05 | [查看原文](url) |
### 🟡 马蜂窝热门攻略【共X篇】
| # | 标题 | 作者 | 发布日期 | 浏览量 | 链接 |
|---|------|------|----------|--------|------|
| 1 | 攻略标题 | @作者名 | 2024-09-20 | 12.5k | [查看原文](url) |
| 2 | 攻略标题 | @作者名 | 2024-08-15 | 8.3k | [查看原文](url) |
### 🟢 其他平台热门攻略【共X篇】
| 平台 | 标题 | 发布日期 | 链接 |
|------|------|----------|------|
| 携程 | 攻略标题 | 2025-01-10 | [查看原文](url) |
输出格式说明:
- 所有景点、美食、住宿、打卡点必须标注【共X篇攻略提及】
- 每项的来源攻略链接全部列出(同一平台最多3篇代表性链接)
- 参考攻略原文板块放在报告最后,按平台分组展示
- 链接使用 markdown 格式:
[查看原文](url)
- 时间权重:当前季节(春季)适合的内容标注【🌸春季推荐】等季节标签
使用示例
用户请求
调用subagent从小红书、马蜂窝、携程和微信公众号中获取至少5篇评分排名最高的台州旅游攻略,
总结后输出一份详细的综合攻略到raw/article/文件夹下。
Main Agent执行流程
Step 1: 准备三文件(Main Agent)
# 创建任务目录
mkdir -p ~/.openclaw/workspace/tasks
# 为每个平台创建 3 个文件
write ~/.openclaw/workspace/tasks/小红书_2026-04-24_任务.md
write ~/.openclaw/workspace/tasks/小红书_2026-04-24_状态.md
write ~/.openclaw/workspace/tasks/小红书_2026-04-24_数据.md
任务文件内容(Main Agent 写入,一次性):
# 小红书攻略获取任务(2026-04-24)
## 任务要求
- 目标平台:小红书 (xiaohongshu.com)
- 获取数量:至少5篇点赞排名最高的攻略
- 排序方式:综合排序(小红书默认热度)
- 数据纯正确认:点赞数、收藏数(小红书特有)
## 浏览器状态
- CDP端口:18800
- 执行顺序:第1个
## 操作提示
- 搜索URL:https://www.xiaohongshu.com/search_result?keyword=台州旅游攻略&type=note
- 排序按钮:综合排序(默认)
- 特有问题:二维码拦截 → 通知用户扫码登录
## 验收标准
- 至少5篇完整攻略
- 每篇必须包含:标题、作者、点赞数、收藏数、正文摘要
- 所有景点/美食/住宿必须附【来源链接】
- 原文链接必须是有效分享链接
## 三文件分离说明
- 任务文件:仅写此文件(一次),Subagent 启动时读一次后不再碰
- 状态文件:Subagent 写进度(每次进度变化)
- 数据文件:Subagent 写攻略正文(每篇攻略增量 append)
状态文件初始内容(Main Agent 写入):
# 小红书攻略获取状态(2026-04-24)
## 执行进度
- 等待启动
## 断点记录
- 上次完成:0篇
- 下一步:连接浏览器,开始搜索
## 任务状态
- 状态:⏳ 等待启动
- 完成进度:0/5篇
- 数据文件:~/.openclaw/workspace/tasks/小红书_2026-04-24_数据.md
## 待解决问题
- 无
Step 2: 启动Subagent
完整规范见上方 Spawn 调用规范;这里只保留最小示例。
sessions_spawn({
label: "小红书攻略获取",
mode: "session",
sessionKey: "tourism-xiaohongshu-20260424",
task: `
## 任务(必须完整执行,不得遗漏任何步骤)
### 目标
1. 从小红书获取至少5篇「台州旅游攻略」点赞排名最高的攻略
2. 提取每篇的标题、作者、点赞数、收藏数、正文摘要
3. 所有景点/美食/住宿标注【共X篇提及】+ 原文链接
4. 输出到 ~/.openclaw/workspace/tasks/小红书_2026-04-24_数据.md(攻略正文,仅写此文件)
### 执行顺序
1. 连接浏览器(Subagent 启动时任务文件已在 task 参数中,无需重读)
2. 执行3种排序搜索
3. 提取文章列表(去重,约10篇)
4. 逐篇提取正文(至少完成5篇高质量攻略)
5. **每篇完成后 append 攻略到数据文件**(详见下方格式)
6. **每篇完成后更新状态文件**(进度 + 断点)
7. 全部完成后更新状态文件任务状态为「✅ 完成」
8. 如遇二维码拦截,输出「⚠️ 小红书检测到自动化操作,请手动扫码登录」,等待用户确认
9. 如遇任何问题,**更新状态文件**并输出「⚠️ 需要人工介入」
### Subagent 写文件规范(必须严格遵守!)
**数据文件(每篇攻略 append):**
### 1. [文章标题]
- 作者:xxx | 发布日期:xxx
- 点赞数:xxx | 收藏数:xxx
- 正文摘要:xxx
- 【景点】[景点名]:[一句话描述]
来源:[原文链接](url)
- 【美食】[美食名]:[一句话描述]
来源:[原文链接](url)
- 【住宿】[住宿名/类型]:[一句话描述]
来源:[原文链接](url)
- 【打卡点】[打卡点]:[一句话描述]
来源:[原文链接](url)(可选)
- 原文链接:[查看原文](有效分享链接)
---
**状态文件(每次进度变化,更新进度/断点/状态):**
```markdown
## 执行进度
- [时间] 第1篇完成 → 已写入数据文件
## 断点记录
- 上次完成:第1篇
- 下一步:继续提取第2篇
## 任务状态
- 状态:⏳ 进行中
- 完成进度:1/5篇
任务文件路径(Main Agent 写一次,Subagent 启动后不重读)
~/.openclaw/workspace/tasks/小红书_2026-04-24_任务.md
数据文件路径(Subagent 增量写,Main Agent Phase4 仅读此文件汇总)
~/.openclaw/workspace/tasks/小红书_2026-04-24_数据.md
状态文件路径(Subagent 增量写,Main Agent 读状态确认进度)
~/.openclaw/workspace/tasks/小红书_2026-04-24_状态.md
`
})
#### Step 3: Subagent执行(写数据文件和状态文件)
**Subagent 行为:**
- 任务文件:启动后从 task 参数读取一次,之后不重读
- 数据文件:每篇攻略完成后 append 攻略正文
- 状态文件:每篇完成后更新进度(进度时间线 + 断点 + 任务状态)
**状态文件更新示例(每篇完成后):**
```markdown
## 执行进度
- 19:30 任务启动
- 19:32 连接浏览器CDP 18800成功
- 19:35 导航到搜索页面成功
- 19:38 获取文章列表(12篇)
- 19:45 第1篇完成 → 已写入数据文件
- 19:50 ⚠️ 遇到二维码拦截
- 19:50 输出提示:【需要用户帮助】请手动扫码登录小红书
- 20:05 用户确认登录成功
- 20:10 第5篇完成
## 断点记录
- 上次完成:第5篇
- 下一步:更新状态 → 任务完成
- 最后活跃:20:15
## 任务状态
- 状态:✅ 完成
- 完成进度:5/5篇
- 数据文件:~/.openclaw/workspace/tasks/小红书_2026-04-24_数据.md
## 待解决问题
- 无
Step 4: Main Agent检查状态并整合(三文件分离后)
# 1. 快速读状态文件确认各平台进度(极小文件)
read ~/.openclaw/workspace/tasks/小红书_2026-04-24_状态.md
read ~/.openclaw/workspace/tasks/马蜂窝_2026-04-24_状态.md
# 读状态文件只为了确认:✅ 完成 / ⚠️ 部分完成 / ❌ 失败
# 2. 仅读数据文件汇总(纯攻略内容,不含任务/状态指令)
read ~/.openclaw/workspace/tasks/小红书_2026-04-24_数据.md
read ~/.openclaw/workspace/tasks/微信公众号_2026-04-24_数据.md
read ~/.openclaw/workspace/tasks/马蜂窝_2026-04-24_数据.md
# 数据文件只包含攻略正文,token 消耗最低
# 3. 跨篇统计(景点/美食/住宿/打卡点各统计一次)
# 工具:LLM 从数据文件中抽取、归类、去重、统计提及次数
# 4. 计算优先级分并排序
# 公式:平台权重 × 时间衰减 × 季节匹配
# 5. 输出最终攻略
write ~/llm-wiki/raw/articles/台州综合攻略.md
# 确认输出路径
"最终攻略将输出到:~/llm-wiki/raw/articles/台州综合攻略.md,是否确认?"
快捷脚本
# 一键创建三文件,自动检测浏览器,自动启动(如果找不到)
./scripts/start-tourism-guide.sh "目的地" [数量] [平台...]
# 示例
./scripts/start-tourism-guide.sh "台州亲子游" 5 xiaohongshu mafengwo ctrip
./scripts/start-tourism-guide.sh "黄山三日游" 5 xiaohongshu
技能元数据
{
"name": "tourism-guide-harvester",
"version": "1.5.0",
"author": "OpenClaw + darwin-skill",
"description": "多平台旅游攻略获取与整合技能 - v1.3输出优化版",
"requires": {
"tools": ["sessions_spawn", "exec", "read", "write", "web_fetch"],
"skills": ["xiaohongshu-crawler", "agent-browser-clawdbot", "multi-search-engine", "wechat-article-spider"]
},
"optimizations": [
"添加速查表",
"一键脚本 start-tourism-guide.sh",
"自动检测并启动Chrome浏览器 (CDP 18800)",
"小红书多维度排序 (hot/collect_count/time_descending)",
"JavaScript 提取正文,解决 snapshot 提取失败",
"v1.5.0 Phase4六步法详细版 + Phase5清理提醒机制(需用户批准)",
"v1.3 时间/季节权重公式",
"v1.3 攻略提及次数标注与来源链接",
"v1.3 参考攻略分平台展示在报告末尾"
],
"platforms": ["小红书", "马蜂窝", "携程", "微信公众号"],
"output_path": "~/llm-wiki/raw/articles/",
"scripts": {
"start": "scripts/start-tourism-guide.sh",
"extract-article": "scripts/extract-article.js"
}
}