Skill flagged — suspicious patterns detected

ClawHub Security flagged this skill as suspicious. Review the scan results before using.

旅游攻略多平台抓取助手

v1.5.0

从小红书、马蜂窝、携程和微信公众号等多平台抓取评分最高的旅游攻略,按优先级和时间权重整合输出详尽综合攻略文档。

0· 63·0 current·0 all-time

Install

OpenClaw Prompt Flow

Install with OpenClaw

Best for remote or guided setup. Copy the exact prompt, then paste it into OpenClaw for whhh1994/tourism-guide-harvester.

Previewing Install & Setup.
Prompt PreviewInstall & Setup
Install the skill "旅游攻略多平台抓取助手" (whhh1994/tourism-guide-harvester) from ClawHub.
Skill page: https://clawhub.ai/whhh1994/tourism-guide-harvester
Keep the work scoped to this skill only.
After install, inspect the skill metadata and help me finish setup.
Use only the metadata you can verify from ClawHub; do not invent missing requirements.
Ask before making any broader environment changes.

Command Line

CLI Commands

Use the direct CLI path if you want to install manually and keep every step visible.

OpenClaw CLI

Bare skill slug

openclaw skills install tourism-guide-harvester

ClawHub CLI

Package manager switcher

npx clawhub@latest install tourism-guide-harvester
Security Scan
VirusTotalVirusTotal
Pending
View report →
OpenClawOpenClaw
Suspicious
medium confidence
!
Purpose & Capability
技能声明的目标(抓取并整合多平台攻略)与大部分指令一致:使用浏览器的 CDP 接口、按平台提取特定指标、写入任务/状态/数据文件等都是抓取工作会用到的。但清单中宣称“无必需二进制/环境变量”,实际上脚本和 SKILL.md 依赖 curl、python3、google-chrome/chrome、以及平台特有的 agent-browser/agent-subagent 工具;这些运行时依赖未在元数据中声明,造成不一致。另有对 ~/.openclaw/workspace/skills/xiaohongshu-crawler/scripts/extract-article.js 的引用——该文件并未随技能包提供,依赖外部内容。
!
Instruction Scope
SKILL.md 明确指示创建并写入用户主目录下的长期任务/状态/数据文件、按固定 sessionKey 启动持久化 subagent,并多次要求通过命令 eval "$(cat <path>/extract-article.js)" 将本地 JS 注入浏览器执行。读取/执行主目录下任意脚本和长期持久化 session 文件可以被用来保留敏感数据或执行任意代码;该行为虽可用于恢复抓取任务,但扩大了攻击面(例如:若 extract-article.js 被替换或来源不可信,可能导致数据泄露或滥用)。此外,文档期望使用 Chrome 的远程调试端口(18800),公开该端口在本地网络中可能带来风险。
Install Mechanism
该技能为 instruction-only 并无安装规范,未在系统上下载或写入额外二进制,属于低安装层面风险。但运行时会在用户机器上创建 ~/.openclaw/workspace/tasks 下的多份文件(持久化),这是预期行为但仍应被用户知晓与审查。
Credentials
技能未声明需要任何凭据或环境变量,这看起来有利于安全审查;但运行说明与脚本会访问/写入用户主目录路径、使用浏览器会话并提示用户扫码登录第三方平台(这会涉及用户凭据在浏览器层面的交互)。此外,使用 eval 读取并执行位于 ~/.openclaw/workspace/skills/... 的脚本意味着本地文件内容变成执行输入,应确认这些文件的来源与完整性。
Persistence & Privilege
技能不具有 always:true,也不修改其他技能配置,但明确设计了长久化 sessionKey 与三文件持久化方案,意在跨重启恢复任务。这种持久化会在用户主目录留下可复用的任务/状态/数据文件,可能长期保留抓取结果或会话信息,用户应了解并同意这种持久化。
What to consider before installing
简明建议: - 在将技能投入真实环境前,先审查并确认引用的外部脚本(例如 ~/.openclaw/workspace/skills/xiaohongshu-crawler/scripts/extract-article.js)真实、安全,可提供其源码以供审核;当前技能包并未包含该文件但多处依赖它。 - 注意运行时依赖:脚本会使用 google-chrome/chrome、python3、curl 和一个名为 agent-browser 的工具,但这些未在元数据中声明。请确认本机是否安装这些工具,并确认 agent-browser 的实现来自可信来源。 - 谨慎对待 Chrome --remote-debugging-port=18800:该端口一旦暴露在网络上,可能被本地网络中的其他节点利用。建议仅在受控环境或本机回环地址上启动,并确认防火墙/网络设置。 - eval 本地 JS 的行为增大风险:任何被写入到被 eval 的本地文件都将被执行。确保您信任这些文件的来源,或在沙箱/隔离环境中试运行技能。 - 审查将被创建的持久文件(~/.openclaw/workspace/tasks/*)并决定是否接受长期存储抓取结果;如不希望长期持久化,可在使用后手动删除这些目录。 - 若需更高保证,请要求技能作者补充:明确的依赖清单、完整的 extract-article.js 源码、解释何处会与外部服务器通信(列出域名/端点),以及是否有任何网络回传或上报机制。 基于以上不一致点(未声明的依赖、外部脚本引用、eval 执行与持久化文件),我建议将该技能视为可用但需审慎:在受控/隔离环境中测试并审阅缺失脚本与依赖后再将其用于含敏感数据的系统。

Like a lobster shell, security has layers — review code before you run it.

latestvk97fnm31f4yt9f0a7mf5d9yhpd85fdhm
63downloads
0stars
1versions
Updated 4d ago
v1.5.0
MIT-0

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 + 三文件持久化。

机制用法
持久化 Sessionmode: "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 消耗)

文件谁写谁读作用
_任务.mdMain AgentSubagent任务要求/验收标准
_状态.mdSubagentMain Agent进度/断点/问题
_数据.mdSubagentMain 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步法)

  1. task 参数,必要时核对 _任务.md
  2. 按平台步骤抓取;遇验证码/重定向立即记录并暂停
  3. 每完成 1 篇就 append 到 _数据.md
  4. 每次进度变化就更新 _状态.md
  5. 完成写 ✅ 完成;中断写 ⚠️ 部分完成 / ❌ 失败

原则: 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

整合策略

  1. 同一景点/美食/住宿出现多次时: 保留提及次数最多的,引用所有来源链接
  2. 内容冲突时: 优先高权重平台 + 新发布时间
  3. 数据不足时: 不凑数,宁缺毋滥

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

输出前逐项检查:

  • 景点/美食/住宿/打卡点每项有【共X篇提及】+ 来源链接(同平台最多3条代表性链接)
  • 超1年攻略标注「⚠️ 内容较旧」
  • 参考攻略原文放在报告末尾,按平台分组
  • 当前季节(春季)适合内容标注【🌸春季推荐】

第6步:输出完成报告

【综合攻略生成完成】
📊 数据来源:小红书X篇 / 公众号X篇 / 马蜂窝X篇
📋 景点:共X个 | 美食:共X个 | 住宿:共X个 | 打卡点:共X个
📁 完整攻略:~/llm-wiki/raw/articles/[目的地]综合攻略.md

Phase 5: 临时文件清理提醒(需用户批准)

触发(出现任一情况时,也必须先经用户批准): 任务完成 / 失败 / 超7天未动 / 用户主动要求清理。

流程:

  1. 先列出 tasks/ 下候选文件
  2. 向用户展示“本次任务 / 历史文件 / 保留文件”
  3. 未获明确批准前,不执行任何清理
  4. 获批后使用 trash,不要用 rm

规则:

  • 只清理中间文件,不删最终攻略
  • 默认保留 72h 内文件
  • “可以清理 / 全删了 / 只清这次”算批准;“先看看”不算

常见问题与解决方案

问题1: 浏览器操作冲突

现象: 多个subagent同时操作浏览器,导致状态混乱 原因: CDP端口只能同时被一个agent使用 解决方案:

  • Subagent按顺序执行(小红书 → 马蜂窝 → 携程)
  • 微信公众号不使用浏览器,可并行执行
  • Main Agent监控进度,协调启动顺序

问题2: 小红书文章内容无法获取

现象: 使用 snapshot 无法提取到文章正文 原因: 小红书正文不在 accessibility tree 中,只在静态 HTML 中 解决方案:

  • 不要使用 snapshot,必须用 eval + JavaScript 提取
  • 正确选择器:正文 #detail-desc,标题 .note-content
  • 使用 xiaohongshu-crawler 提供的提取脚本:
    agent-browser --cdp 18800 eval "$(cat ~/.openclaw/workspace/skills/xiaohongshu-crawler/scripts/extract-article.js)" --json
    

问题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: 微信公众号详细内容无法获取

现象: 只能获取文章列表,无法进入详情页 原因: 搜狗反爬虫机制触发验证码 解决方案:

  • 获取文章列表输出到文件(至少有价值)
  • 建议用户提供具体文章URL(https://mp.weixin.qq.com/s/xxxxx)
  • 使用 wechat-article-spider 技能抓取具体URL

问题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"
  }
}

Comments

Loading comments...