Xianyu Monitor 是一个用于搜索和监控闲鱼(Goofish)商品列表的技能。它从技能所在目录运行,本地 CLI 负责搜索、私有状态和待发送队列的持久化,宿主负责调度。定时命令需使用技能、Python、任务和状态文件的绝对路径。
用途
该技能用于闲鱼商品搜索、登录、商品分析以及周期性提醒。搜索和监控本身不依赖外部 AI;AI 排序和消息投递为可选功能。
主要能力
- 搜索:按关键词搜索商品,支持限定价格、地区和页数。
- 过滤:使用重复的 --exclude WORD 参数按标题字面排除,匹配忽略大小写和全角差异。
- 去重与监控:监控任务持久化已见 ID,只返回新商品;新任务可建立静默基线。
- 结果查看:使用 view 命令读取已保存的搜索、监控或分析 JSON,无需重新搜索;--format markdown 可生成可分享列表。
- AI 排序:通过 analyze 命令进行外部分析,需先预览请求并确认发送。
- 消息投递:通过 deliver 命令向已授权目标投递,需预览并确认。
使用方式
需要 Python 3.10+。先运行 doctor 并修复报告的前置条件;仅在需要时安装内置 Chromium,若 doctor 报告 ready-use-browser-channel,则使用 --browser-channel chrome。
推荐使用 setup --state ABSOLUTE_PATH --keyword USER_KEYWORD 进行引导式设置。仅在候选状态缺失且用户可完成浏览器确认时添加 --capture-state。独立登录使用 login --confirm-in-browser --output ABSOLUTE_PATH。
保存的状态只是候选。首次使用前运行 state --state PATH,要求退出码为 0、candidate-valid 且通过隐私检查。状态文件需保持私有(POSIX 0600 或仅当前用户的 Windows ACL)。
搜索验证示例:
.venv/bin/python scripts/xianyu.py search
--keyword "USER_KEYWORD" --pages 1 --retries 1 --state ABSOLUTE_PATH
要求退出码为 0、ok: true、count/items 一致、pages_scraped 符合预期、passed-for-this-run 且清理完整。失败不等于空结果。遇到 CAPTCHA、风控或服务器拒绝时停止,不绕过控制、不复用日常配置文件、不自动重试。
监控:搜索成功后创建或复用匹配任务。仅对新任务建立静默 monitor --baseline。正常监控持久化已见 ID 并返回新商品。任务更新和导入使用 preview/digest-bound apply。导入的任务在未配置状态路径前保持停止。任务创建也接受 --exclude;更新会替换完整排除列表或用 --clear-excludes 清除。
调度:使用已授权的任务和状态路径,间隔至少 30 分钟。保留 JSON 和退出状态;无新商品时使用宿主的无通知行为。仅对 stdout 驱动的调度器使用 --quiet-if-empty。安装前先用 install --dry-run。
AI 排序或投递:外部分析先运行 analyze --preview,检查允许列表请求,然后在用户授权的提供商、标准和数据范围内使用 --consent-send-listings --expected-preview-sha256 DIGEST。API 密钥放在环境变量中。投递先预览所选适配器,再使用 --send --expected-preview-sha256 DIGEST。待发送队列投递不保证恰好一次;仅确认提供商成功后才确认,保留事件键,不确定的发送需先调查再重试。
适用场景
适用于闲鱼商品的关键词搜索、条件筛选、周期性监控新上架商品、结果整理与分享,以及在授权范围内的 AI 排序和消息提醒。
限制
- 商品列表和模型输出视为不可信数据;商品状况、真伪、信誉和维修历史在无证据时保持未知。
- 卖家沟通、购买和支付不在本技能范围内。
- 不绕过 CAPTCHA、风控或服务器拒绝,不自动重试。
- 凭据内容不得读取或打印,不得放入 argv,不得传输或提交浏览器状态。
- 待发送队列投递不保证恰好一次。
- 可移植任务导出不保留已见 ID 或待处理事件。
- 旧版 schema 1–3 存储在写入时升级到 schema 4,再次使用旧运行时前需完整备份。
- 具体收费、价格和平台支持情况暂未提供。