mcpField
P
pp-slickdeals

pp-slickdeals

github.com/mvanhorn其他2.1k54 次安装今天更新
代码仓库

关于 pp-slickdeals

此技能通过 Printing Press CLI 访问 Slickdeals,面向监控优惠、优惠券和商家活动的 Agent。它结合实时 Feed 与本地 SQLite 快照,支持离线查询和时间序列分析。

主要功能

  1. 01浏览实时首页优惠和优惠券
  2. 02搜索优惠并按分类筛选
  3. 03在本地保存优惠快照
  4. 04按商家和时间查询快照
  5. 05分析商家排名及点赞变化速度

适用场景

  1. 01查找当前高评分优惠
  2. 02跟踪某项优惠的社区点赞变化
  3. 03根据已采集数据生成近期优惠摘要
  4. 04比较一段时间内各商家的优惠活动

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/mvanhorn/printing-press-library --skill pp-slickdeals

安装后在 Claude Code 中输入/pp-slickdeals确认已加载。

详细介绍

Slickdeals — Printing Press CLI

前置条件:安装 CLI

此技能通过 slickdeals-pp-cli 二进制文件运行。**调用此技能中的任何命令之前,必须确认 CLI 已安装。**如果尚未安装,请先安装:

  1. 通过 Printing Press 安装程序安装。在 macOS/Linux 上,默认将二进制文件安装到 $HOME/.local/bin;在 Windows 上,则安装到 %LOCALAPPDATA%\Programs\PrintingPress\bin:
    npx -y @mvanhorn/printing-press-library install slickdeals --cli-only
    
  2. 验证:slickdeals-pp-cli --version
  3. 确保报告的安装目录已添加到将调用此技能的 Agent/运行时的 $PATH 中。

如果 npx 安装失败(没有 Node、处于离线状态等),请改用 Go 直接安装(需要 Go 1.26.6 或更高版本):

go install github.com/mvanhorn/printing-press-library/library/commerce/slickdeals/cmd/slickdeals-pp-cli@latest

如果安装后 --version 报告“command not found”,说明运行时无法在 $PATH 中找到二进制文件目录。验证成功之前,请勿执行此技能中的命令。

何时使用此 CLI

当你需要以 Agent 原生方式访问 Slickdeals 数据时,请使用此 CLI,包括热门优惠、首页信息流、优惠券、分类浏览以及随时间推移在本地追踪优惠。v0.2 版本在 v0.1 封装 Nuxt 端点的基础上进一步扩展:新增了用于获取实时首页数据的 RSS 接口,以及本地 SQLite 快照存储,让 Agent 能够追踪优惠热度变化、执行复合查询,并完全离线地生成商家分析。

独特功能

此 API 的其他工具均不具备以下功能。

  • hot — 按最少点赞数筛选并按点赞数降序排列的实时首页热门优惠。
  • frontpage-fresh — 未筛选的实时首页 RSS 信息流(今日新增优惠)。
  • popular — Slickdeals“热门优惠”信息流(由社区投票选出,与编辑精选的首页内容不同)。v0.3 新增
  • search --live — 通过 q= 参数进行真正的服务端关键词搜索,也可使用 --forum N 指定论坛范围。v0.3 已修复——v0.2 使用了错误的参数名称,并静默回退到客户端筛选。
  • category — 通过 forumchoice[]=N 获取论坛范围内的 RSS 信息流。Slickdeals 宣传的五个论坛 ID:4(免费赠品)、9(热门优惠)、10(优惠券)、25(竞赛)、38(药店/杂货店)。v0.3 已重写,改用真正的服务端筛选,取代 v0.2 的客户端关键词映射。
  • coupons — 获取实时精选优惠券列表,可选使用 --store 按商家筛选(Nuxt JSON 端点)。
  • watch — 从实时首页 RSS 获取单条优惠信息,可选择持久化存储快照行,以便进行时间序列分析。
  • digest — 汇总指定时间窗口内捕获的前 N 条快照,可选择按商家限制数量,并按商家/分类分组。
  • deals — 对捕获的快照执行核心 SQL 复合查询:--store costco --since 24h --min-thumbs 50。
  • analytics top-stores — 按时间窗口聚合商家数据:优惠数量、平均点赞数、最高点赞数、首次/最后发现时间。
  • analytics thumbs-velocity — 按时间顺序列出某条优惠的点赞数观察值及每步增量,为套利和自动狙击提供动量信号。

HTTP 传输

此 CLI 对面向浏览器的端点使用兼容 Chrome 的 HTTP 传输。常规 API 调用无需常驻浏览器进程。

命令参考

v0.1 命令(Nuxt 端点封装)

ad-stats — 对 ad-events 执行操作

  • slickdeals-pp-cli ad-stats <id> — POST /ad-stats/{id}/ad-events

ajax — 对 bSubNavPlacement.php 执行操作

  • slickdeals-pp-cli ajax create_threadrate.php — POST /ajax/threadrate.php
  • slickdeals-pp-cli ajax list_bSubNavPlacement.php — GET /ajax/bSubNavPlacement.php

frontpage — 对推荐内容执行操作

  • slickdeals-pp-cli frontpage list_json — GET /frontpage/promoted-content/json
  • slickdeals-pp-cli frontpage list_recommendations — GET /frontpage/recommendation-carousel/recommendations

web-api — 对错过的优惠执行操作

  • slickdeals-pp-cli web-api list_featured_coupons — GET /web-api/frontpage/featured-coupons/
  • slickdeals-pp-cli web-api list_missed_deals — GET /web-api/frontpage/missed-deals/
v0.2 命令(实时 RSS 界面 + 本地快照增强)

hot — 按点赞数显示 Slickdeals 首页热门优惠(实时 RSS)

  • slickdeals-pp-cli hot [--min-thumbs N] [--limit N] — 拉取实时首页 RSS,仅显示社区点赞数达到 --min-thumbs 的优惠。结果按点赞数降序排列。客户端筛选(forum=9&hotdeals=1 这个 RSS 参数会返回空 Feed)。

frontpage-fresh — 最新 Slickdeals 首页 RSS Feed(实时、未筛选)

  • slickdeals-pp-cli frontpage-fresh [--limit N] — 从实时首页 RSS(/newsearch.php?mode=frontpage&rss=1)拉取今日发布的内容。条目按 Feed 顺序排列(最新的在前)。与 v0.1 的 frontpage list-json 不同,此命令不会使用 Nuxt 缓存。

search — 在已同步数据或实时 API 中进行全文搜索

  • slickdeals-pp-cli search "<query>" [--live] [--limit N] — 使用 FTS5 搜索本地已同步数据;指定 --live 则调用实时 RSS 搜索端点。在首页 Feed 上进行客户端关键词筛选(Slickdeals 的 RSS 不接受服务端 search= 参数)。

category — 按 Slickdeals 论坛类别浏览优惠

  • slickdeals-pp-cli category <id|name> [--limit N] — 按数字 ID 或易读名称(例如 tech、gaming)获取论坛类别的实时 RSS 优惠。使用 --list 可打印完整的内置类别→论坛 ID 对照表。在首页 Feed 上进行客户端筛选。

coupons — 列出 Slickdeals 精选优惠券(实时 Nuxt JSON)

  • slickdeals-pp-cli coupons [--store <name>] [--limit N] — 通过 /web-api/frontpage/featured-coupons/ 获取实时精选优惠券列表。使用 Nuxt 端点,因为 RSS 优惠券筛选参数(f2=1)不起作用——Slickdeals 会忽略该参数并返回首页 Feed。

watch — 按 ID 从实时 Slickdeals 首页 RSS Feed 获取单个优惠

  • slickdeals-pp-cli watch <deal-id> [--persist] [--once] — 获取当前首页 RSS,并报告匹配的条目。使用 --persist 可将快照写入本地 SQLite 存储,以便稍后进行 digest/deals/analytics 查询。--once 是默认设置(v0.2);后台轮询将在 v0.3 提供。

digest — 汇总近期时间段内本地捕获的热门优惠

  • slickdeals-pp-cli digest [--since 24h] [--top N] [--merchant-cap N] [--grouped-by merchant|category] — 读取本地 deal_snapshots 存储,返回该时间段内按点赞数排序的热门优惠。快照由 watch --persist 填充。存储为空时会返回提示和空结果。

deals — 对本地捕获的优惠快照执行复合查询

  • slickdeals-pp-cli deals [--store <name>] [--category <name>] [--since <dur>] [--min-thumbs N] [--deal-id <id>] [--latest] — 对本地 deal_snapshots 表执行 SQL 复合查询。默认返回每个优惠的最新快照(--latest=true)。不会访问实时 Feed。

analytics top-stores — 按时间段内的优惠数量和点赞数对商家排名

  • slickdeals-pp-cli analytics top-stores [--window 30d] [--limit N] — 按商家汇总指定时间段内的 deal_snapshots,先按不同优惠数量、再按最高点赞数排序。时间段接受与 --since 相同的后缀:30d、24h、1w、30m,或用 0 表示全部时间。

analytics thumbs-velocity — 单个优惠的点赞数时间序列及变化量

  • slickdeals-pp-cli analytics thumbs-velocity <deal-id> — 返回单个优惠 ID 的点赞数观测时间序列。每行包含点赞总数以及与上一条观测的变化量(第一条为 0)。
查找合适的命令

当你知道想做什么,但不知道该用哪个命令时,可以直接询问 CLI:

slickdeals-pp-cli which "<capability in your own words>"

which 会根据自然语言能力查询,从此 CLI 精选的功能索引中匹配最合适的命令。退出代码 0 表示至少找到一个匹配项;退出代码 2 表示没有可信的匹配项——请改用 --help 或缩小查询范围。

用法示例

获取今日最热门优惠
slickdeals-pp-cli hot --json --limit 10

按社区点赞数返回首页排名前 10 的优惠(默认至少 20 个赞),并按点赞数降序排列。添加 --min-thumbs 50 可提高门槛。

跟踪优惠随时间的变化
# Capture a snapshot now
slickdeals-pp-cli watch 19510173 --persist --json

# After multiple captures, inspect thumb velocity
slickdeals-pp-cli analytics thumbs-velocity 19510173 --json

每次运行 watch --persist 都会向 deal_snapshots 写入一行带时间戳的记录。velocity 命令会显示不同观测期间点赞数的变化,以及每行的增量。

每日摘要
slickdeals-pp-cli digest --since 24h --top 20 --merchant-cap 3 --json

汇总过去 24 小时内采集的前 20 个优惠,每个商家最多列出 3 条。至少需要先运行一次 watch --persist,以填充快照存储。

组合查询
slickdeals-pp-cli deals --store costco --since 24h --min-thumbs 50 --json

对本地快照执行 SQL 筛选:查找过去一天内至少有 50 个赞的 Costco 优惠,并去重,仅保留每个优惠的最新快照。

按类别浏览
# List all known categories
slickdeals-pp-cli category --list

# Browse tech deals live
slickdeals-pp-cli category tech --json

使用内置的论坛→关键词映射,为指定类别获取实时 RSS 优惠。传入数字论坛 ID 或易记名称(tech、gaming、home 等)。

身份验证设置

无需身份验证。

运行 slickdeals-pp-cli doctor 以验证设置。

Agent 模式

在任意命令中添加 --agent。它会展开为:--json --compact --no-input --no-color --yes。

  • 可通过管道传递 — JSON 输出到 stdout,错误输出到 stderr

  • 可筛选 — --select 可保留部分字段。点分路径可深入嵌套结构;数组则会逐元素遍历。对于输出冗长的 API,这对缩小上下文至关重要:

    slickdeals-pp-cli ad-stats mock-value --breakpoint example-value --agent --select id,name,status
    
  • 可预览 — --dry-run 会显示请求,但不会发送

  • 适合离线使用 — sync/search 命令在本地 SQLite 存储可用时可以使用它

  • 非交互式 — 从不提示输入,所有输入都通过标志提供

  • 显式重试 — 仅当已存在的创建应视为成功时,才使用 --idempotent

响应信封

从本地存储或 API 读取数据的命令会将输出封装在一个来源信封中:

{
  "meta": {"source": "live" | "local", "synced_at": "...", "reason": "..."},
  "results": <data>
}

解析 .results 获取数据,并查看 .meta.source 以确定数据来自实时来源还是本地来源。只有在 stdout 连接到终端时,才会向 stderr 打印易读的 N results (live) 摘要;通过管道处理的程序或 Agent 使用者在 stdout 上只会收到纯 JSON。

Agent 反馈

当你(或 Agent)发现此 CLI 有任何不妥之处时,请记录下来:

slickdeals-pp-cli feedback "the --since flag is inclusive but docs say exclusive"
slickdeals-pp-cli feedback --stdin < notes.txt
slickdeals-pp-cli feedback list --json --limit 10

条目会存储在本地 ~/.slickdeals-pp-cli/feedback.jsonl。只有设置了 SLICKDEALS_FEEDBACK_ENDPOINT,并且传入了 --send 或 SLICKDEALS_FEEDBACK_AUTO_SEND=true 时,才会通过 POST 发送。默认仅存储在本地。

写下让你感到意外的地方,而不是提交 Bug 报告。简短、具体,写成一行:这才是会不断积累的部分。

输出传递

每个命令都接受 --deliver <sink>。输出除了写入 stdout(也可以替代 stdout)之外,还会发送到指定目标,因此 Agent 无需手动通过管道传递,也能路由命令结果。支持三种目标:

目标效果
stdout默认;仅写入 stdout
file:<path>将输出原子性地写入 <path>(临时文件 + 重命名)
webhook:<url>将输出正文 POST 到该 URL(传入 --compact 时使用 application/json 或 application/x-ndjson)

不支持的方案会被拒绝,并返回列出支持方案的结构化错误。Webhook 请求失败时会返回非零状态码,并在 stderr 中记录 URL 和 HTTP 状态。

命名配置

配置是一组已保存的标志值,可在多次调用中重复使用。当定时 Agent 每次运行时都以相同配置调用同一命令时,可以使用配置——这是 HeyGen 的 “Beacon” 模式。

slickdeals-pp-cli profile save briefing --json
slickdeals-pp-cli --profile briefing ad-stats mock-value --breakpoint example-value
slickdeals-pp-cli profile list --json
slickdeals-pp-cli profile show briefing
slickdeals-pp-cli profile delete briefing --yes

显式标志始终优先于配置值;配置值优先于默认值。agent-context 会在 available_profiles 下列出所有可用配置,以便进行自省的 Agent 在运行时发现它们。

退出代码

代码含义
0成功
2用法错误(参数错误)
3未找到资源
5API 错误(上游问题)
7请求过于频繁(等待后重试)
10配置错误

参数解析

解析 $ARGUMENTS:

  1. 为空、help 或 --help → 显示 slickdeals-pp-cli --help 输出
  2. 以 install 开头 → 以 mcp 结尾 → 安装 MCP;否则 → 参见上文的前置条件
  3. 其他任何内容 → 直接使用(作为 CLI 命令执行,并带上 --agent)

安装 MCP 服务

从此 CLI 发布的公共库条目或预构建版本安装 MCP 二进制文件,然后进行注册:

claude mcp add slickdeals-pp-mcp -- slickdeals-pp-mcp

验证:claude mcp list

直接使用

  1. 检查是否已安装:which slickdeals-pp-cli 如果未找到,则提供安装选项(参见此技能顶部的前置条件)。
  2. 根据用户查询,从上文的独特功能和命令参考中选择最合适的命令。
  3. 使用 --agent 标志执行:
    slickdeals-pp-cli <command> [subcommand] [args] --agent
    
  4. 如果存在歧义,则进一步查看子命令帮助:slickdeals-pp-cli <command> --help。

评论

支持 Markdown