关于 pp-slickdeals
此技能通过 Printing Press CLI 访问 Slickdeals,面向监控优惠、优惠券和商家活动的 Agent。它结合实时 Feed 与本地 SQLite 快照,支持离线查询和时间序列分析。
主要功能
- 01浏览实时首页优惠和优惠券
- 02搜索优惠并按分类筛选
- 03在本地保存优惠快照
- 04按商家和时间查询快照
- 05分析商家排名及点赞变化速度
适用场景
- 01查找当前高评分优惠
- 02跟踪某项优惠的社区点赞变化
- 03根据已采集数据生成近期优惠摘要
- 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 已安装。**如果尚未安装,请先安装:
- 通过 Printing Press 安装程序安装。在 macOS/Linux 上,默认将二进制文件安装到
$HOME/.local/bin;在 Windows 上,则安装到%LOCALAPPDATA%\Programs\PrintingPress\bin:npx -y @mvanhorn/printing-press-library install slickdeals --cli-only - 验证:
slickdeals-pp-cli --version - 确保报告的安装目录已添加到将调用此技能的 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.phpslickdeals-pp-cli ajax list_bSubNavPlacement.php— GET /ajax/bSubNavPlacement.php
frontpage — 对推荐内容执行操作
slickdeals-pp-cli frontpage list_json— GET /frontpage/promoted-content/jsonslickdeals-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 | 未找到资源 |
| 5 | API 错误(上游问题) |
| 7 | 请求过于频繁(等待后重试) |
| 10 | 配置错误 |
参数解析
解析 $ARGUMENTS:
- 为空、
help或--help→ 显示slickdeals-pp-cli --help输出 - 以
install开头 → 以mcp结尾 → 安装 MCP;否则 → 参见上文的前置条件 - 其他任何内容 → 直接使用(作为 CLI 命令执行,并带上
--agent)
安装 MCP 服务
从此 CLI 发布的公共库条目或预构建版本安装 MCP 二进制文件,然后进行注册:
claude mcp add slickdeals-pp-mcp -- slickdeals-pp-mcp
验证:claude mcp list
直接使用
- 检查是否已安装:
which slickdeals-pp-cli如果未找到,则提供安装选项(参见此技能顶部的前置条件)。 - 根据用户查询,从上文的独特功能和命令参考中选择最合适的命令。
- 使用
--agent标志执行:slickdeals-pp-cli <command> [subcommand] [args] --agent - 如果存在歧义,则进一步查看子命令帮助:
slickdeals-pp-cli <command> --help。