← Back to skills
extension
Category: Data & AnalyticsNo API key required

计划采购物品全网比价与动态跟踪

用户发起录入计划采购物品(支持文字描述和图片上传),每日实时全网比价、跟踪最新动态(降价/促销/新品)。按用户设定频率(每日/每周)生成报告,发送至微信好友/微信文件传输助手/指定邮箱。用户可随时下架物品。支持 SKILLHUB 上传。

personAuthor: user_9355e276hubcommunity

计划采购物品全网比价与动态跟踪

功能概述

一个智能采购助手,帮助用户管理计划采购物品清单,自动进行全网比价和动态跟踪,按设定频率推送价格变化报告。

六大核心功能

| 功能 | 说明 | |------|------| | 物品录入 | 支持文字描述 + 图片上传两种方式 | | 全网比价 | 搜索主流电商平台(京东/淘宝/拼多多/天猫等),获取实时价格 | | 动态跟踪 | 跟踪降价、促销活动、新品发布、库存变化 | | 物品管理 | 查看清单、编辑详情、下架(归档)物品 | | 定时报告 | 按用户设定频率(每日/每周)生成价格变化报告 | | 多渠道推送 | 支持 Server酱→微信、PushPlus→微信、SMTP邮箱三种渠道 |

触发方式

用户说出以下任一关键词即触发本技能:

  • "计划采购"、"采购比价"、"购物跟踪"
  • "帮我比价"、"全网比价"、"价格跟踪"
  • "录入采购物品"、"我要买XX"、"帮我盯着XX价格"
  • "采购报告"、"比价报告"
  • "下架采购物品"、"取消跟踪XX"

运行环境

  • Python 3.9+
  • 依赖:requests, openpyxl

安装依赖

C:\Users\admin\.workbuddy\binaries\python\envs\default\Scripts\pip.exe install requests openpyxl

AI 执行流程

场景 A:用户首次使用 / 未配置

  1. 检测配置:读取 data/config.json,如不存在则进入配置引导
  2. 显示配置弹窗:用 show_widget 渲染交互式配置页面,引导用户设置:
    • 推送频率(每日 / 每周几)
    • 推送渠道(Server酱 SendKey / PushPlus Token / 邮箱 SMTP)
    • 推送时间偏好
  3. 用户填写后点击「保存配置 ↗」,AI 写 data/config.json
  4. 自动跳转到主面板

场景 B:用户录入采购物品

方式一:文字录入

  1. 用户说"我要买XXX,预算YYY元"
  2. AI 调用 scripts/item_manager.py add --name "XXX" --budget YYY 添加物品
  3. AI 立即执行一次全网比价搜索(见"全网比价搜索流程")
  4. AI 将搜索结果写入物品的价格记录
  5. 回复用户:物品已录入,当前最低价 ¥XXX(平台),并展示主面板

方式二:主面板弹窗录入(推荐)

  1. AI 用 show_widget 渲染主面板,包含「添加物品」区域
  2. 用户可输入物品名称、描述、预算、优先级,也可上传图片
  3. 如上传图片 → AI 先分析图片内容识别物品 → 自动填入物品名称和描述
  4. 点击「确认添加 ↗」→ AI 写入数据 → 执行比价 → 更新面板

场景 C:用户查看采购清单 / 主面板

  1. AI 用 show_widget 渲染主面板,展示:
    • 在追物品列表:名称、预算、当前最低价、价格趋势箭头、状态
    • 操作按钮:添加物品、生成报告、配置通知、下架物品
    • 最近动态:降价提醒、促销信息
  2. 所有按钮绑定 sendPrompt() 实现交互

场景 D:用户要求生成并发送报告

  1. AI 对每个在追物品执行全网比价搜索
  2. 调用 scripts/report_generator.py 生成 HTML + Excel 报告
  3. 调用 scripts/notifier.py 推送到用户配置的渠道
  4. 用 present_files 展示报告文件
  5. 回复:报告已生成并推送

场景 E:用户要求下架物品

  1. AI 列出当前在追物品,让用户选择
  2. 或用户直接说"下架XXX"
  3. AI 调用 scripts/item_manager.py archive --id <ID> 归档物品
  4. 回复:已下架

场景 F:定时自动执行(通过 WorkBuddy 自动化)

AI 引导用户创建自动化任务:

automation_update mode="create":
  name: "采购物品每日比价跟踪"
  scheduleType: "recurring"
  rrule: "FREQ=DAILY" 或 "FREQ=WEEKLY;BYDAY=MO"
  cwds: "当前工作目录"
  prompt: "执行「计划采购物品全网比价与动态跟踪」技能的每日比价任务:对所有在追物品执行全网比价、记录价格、检测降幅超过5%的发送提醒、生成日报并推送到配置的渠道。"

全网比价搜索流程(AI 执行)

对于每个在追物品,AI 按以下步骤执行:

  1. 构造搜索词:"{物品名称} 价格 京东 淘宝 拼多多"
  2. 调用 WebSearch 搜索当前价格
  3. 提取价格信息:从搜索结果中提取各平台价格、商品链接
  4. 对比历史价格:与 data/items.json 中的历史记录对比
  5. 检测显著变化:
    • 降价 ≥ 5%:标记为"降价提醒"
    • 降价 ≥ 10%:标记为"大幅降价"
    • 出现促销/优惠券:标记为"促销动态"
  6. 记录:调用 scripts/item_manager.py record-price 写入价格记录

数据存储

所有数据存储在技能目录下的 data/ 文件夹:

| 文件 | 用途 | |------|------| | data/items.json | 采购物品清单及价格历史 | | data/config.json | 用户配置(推送渠道、频率) |

items.json 数据结构

{
  "items": [
    {
      "id": "uuid",
      "name": "物品名称",
      "description": "描述",
      "category": "分类",
      "image_path": null,
      "image_description": null,
      "budget": 1000.00,
      "priority": "high",
      "status": "active",
      "created_at": "2026-07-28T14:00:00",
      "updated_at": "2026-07-28T14:00:00",
      "price_records": [
        {
          "date": "2026-07-28",
          "platform": "京东",
          "price": 899.00,
          "url": "https://...",
          "title": "商品标题",
          "note": ""
        }
      ],
      "price_alerts": [
        {
          "date": "2026-07-28",
          "type": "price_drop",
          "message": "京东降价5%,当前¥899"
        }
      ]
    }
  ]
}

config.json 数据结构

{
  "frequency": "daily",
  "weekly_day": 1,
  "channels": {
    "serverchan": {"enabled": false, "sendkey": ""},
    "pushplus": {"enabled": false, "token": ""},
    "email": {"enabled": false, "smtp_host": "", "smtp_port": 465, "sender": "", "password": "", "receivers": []}
  },
  "alert_threshold": 5,
  "created_at": "2026-07-28T14:00:00"
}

脚本说明

| 脚本 | 用途 | 调用方式 | |------|------|----------| | scripts/item_manager.py | 物品 CRUD + 价格记录 | python scripts/item_manager.py <action> [args] | | scripts/report_generator.py | 生成 HTML/Excel 报告 | python scripts/report_generator.py [--format html|xlsx] | | scripts/notifier.py | 多渠道推送 | python scripts/notifier.py --report <path> [--channel all] | | scripts/setup.py | 交互式配置向导 | python scripts/setup.py |

弹窗交互规范

所有弹窗使用 show_widget 渲染,遵循以下规则:

  1. 按钮必须加 ↗ 箭头(触发 sendPrompt 的按钮)
  2. 图片上传用 <input type="file" accept="image/*"> + FileReader
  3. 弹窗间通过 sendPrompt 传递数据
  4. 遵循 WorkBuddy Visualizer 设计规范(加载 read_me 模块)

注意事项

  1. 价格数据仅供参考:来自搜索引擎结果,可能存在延迟或偏差
  2. 推送渠道需用户自行注册:Server酱(https://sct.ftqq.com)、PushPlus(https://www.pushplus.plus)
  3. 自动化执行依赖 WorkBuddy 自动化功能:需用户确认创建
  4. 图片识别:AI 通过视觉分析图片内容来识别物品,复杂场景建议补充文字描述
  5. 隐私保护:所有数据存储在本地 data/ 目录,不上传云端

支付宝付费改造契约(PAYSKILL)

本技能为付费技能(PAYSKILL)。调用遵循支付宝 AI 生意画像契约,由平台调度层执行 probe → pay → complete → ack 流程:

  1. probe(探测):平台调用前先探测是否已持有本技能的支付宝有效订阅 / 付费凭证。已付费则直接放行。
  2. 402 Payment-Needed:未付费时,脚本向标准输出返回 HTTP 状态 402 与 Payment-Needed 标记,提示用户通过支付宝完成付费(pay),平台据此唤起付费页。
  3. complete(扣费确认):用户在支付宝完成扣费后,平台下发 Payment-Proof(付费凭证)。
  4. ack(验签放行):平台携带 Payment-Proof 重试本次调用;scripts/payment_gate.py 验签该凭证,确认有效后放行主流程。

订阅持久化与幂等:

  • 付费状态缓存在本地 .pay_cache/state.json,避免每次调用重复付费(订阅持久化)。
  • 同一 Payment-Proof 在 24h 幂等窗口内仅生效一次,避免重复扣费。

现金流改造后的调用套路:

用户调用 → 平台 probe  →
   未付费:下发 402 Payment-Needed → 支付宝 pay → complete → 下发 Payment-Proof
已付费/携带 Proof:脚本 ack 验签 → 放行主流程

本契约由 SkillHUB 平台调度层解析,脚本本地仅处理 402 / 验签 / 持久化 三环节;付费本体交给支付宝。