Slickdeals live RSS surface + local-snapshot transcendence from your terminal — agent-native, MCP-compatible, SQLite-backed.
v0.2 release. Wraps Slickdeals' live RSS feed and Nuxt JSON endpoints in a Go CLI with agent-native --json output, local SQLite snapshot store for deal-tracking across time, and a companion MCP server. v0.2 is the read surface + transcendence release. Authenticated write features (vote/comment/submit/DM) are deferred to v0.3.
Learn more at Slickdeals.
v0.2 highlights
hot — top frontpage deals filtered by min-thumbs, sorted by community score
frontpage-fresh — live unfiltered frontpage RSS (newest first)
search "<q>" --live — client-side keyword filter on the live frontpage feed
category <id|name> — browse deals by forum category (tech, gaming, home, etc.)
coupons — live featured coupons via Nuxt JSON (RSS coupon filter is broken)
watch <deal-id> --persist — fetch a single deal and snapshot it to SQLite
digest — summarize captured snapshots over a time window
deals — SQL compound query over local snapshots (store/category/since/thumbs)
analytics top-stores — merchant leaderboard over a configurable window
analytics thumbs-velocity <deal-id> — time-series of thumb counts with deltas
Authentication
v0.2 uses no authentication — all wrapped endpoints are public RSS feeds and Nuxt JSON endpoints. Authenticated write features (vote/comment/submit/DM) are deferred to v0.3 (a throwaway account was banned during v0.1 capture attempts; v0.3 will require camofox-browser stealth and a fresh account).
Quick Start
# Verify the binary and HTTP transport are healthy.
slickdeals-pp-cli doctor
# Top 10 hottest deals right now (live RSS, sorted by thumbs).
slickdeals-pp-cli hot --json --limit 10
# Live unfiltered frontpage feed.
slickdeals-pp-cli frontpage-fresh --json --limit 25
# Browse tech category deals.
slickdeals-pp-cli category tech --json
# Featured coupons.
slickdeals-pp-cli coupons --json
# Snapshot a deal to the local store (run periodically to build history).
slickdeals-pp-cli watch 19510173 --persist --json
# Daily digest of captured deals.
slickdeals-pp-cli digest --since 24h --top 20 --merchant-cap 3 --json
# Compound SQL query over local snapshots.
slickdeals-pp-cli deals --store costco --since 24h --min-thumbs 50 --json
# Merchant leaderboard.
slickdeals-pp-cli analytics top-stores --window 7d --json
Unique Features
These capabilities aren't available in any other tool for this API.
hot — Top live frontpage deals filtered by min-thumbs, sorted thumbs DESC.
frontpage-fresh — Live unfiltered frontpage RSS feed (today's drops).
search --live — Keyword filter on the live frontpage RSS as a fallback for Slickdeals' broken server-side search.
category — Curated forum-id -> keyword map (tech, gaming, home, grocery, apparel, sports) for client-side filtering of the live frontpage.
coupons — Live featured coupon list with optional --store merchant filter.
watch — Fetch a single deal from the live frontpage RSS, optionally persisting a snapshot row for time-series analytics.
digest — Summarize the top-N captured snapshots over a window, optionally capped per merchant and grouped by merchant/category.
deals — Flagship SQL compound query over captured snapshots: --store costco --since 24h --min-thumbs 50.
analytics top-stores — Merchant aggregation over a time window: deal_count, avg_thumbs, max_thumbs, first/last seen.
analytics thumbs-velocity — Chronological thumb-count observations for a deal with per-step delta — momentum signal for arbitrage and auto-snipe.
Usage
Run slickdeals-pp-cli --help for the full command reference and flag list.
Commands
v0.1 Commands (Nuxt endpoint wrappers)
ad-stats
Operations on ad-events
slickdeals-pp-cli ad-stats create_ad_events - POST /ad-stats/{id}/ad-events
ajax
Operations on 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
Operations on recommendations
slickdeals-pp-cli frontpage list_json - GET /frontpage/promoted-content/json
slickdeals-pp-cli frontpage list_recommendations - GET /frontpage/recommendation-carousel/recommendations
web-api
Operations on missed-deals
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 Commands (Live RSS + local snapshot transcendence)
hot
Top Slickdeals frontpage deals by thumb count (live RSS). Filters client-side by --min-thumbs (default 20), sorted descending.
slickdeals-pp-cli hot [--min-thumbs N] [--limit N] - Pulls live frontpage RSS and surfaces high-thumb deals
frontpage-fresh
Fresh Slickdeals frontpage RSS feed (live, unfiltered). Newest-first, direct from /newsearch.php?mode=frontpage&rss=1.
slickdeals-pp-cli frontpage-fresh [--limit N] - Live unfiltered frontpage RSS
search
Full-text search on locally synced data or live RSS. --live hits the RSS search endpoint (client-side keyword filter on frontpage feed; Slickdeals ignores server-side search= params).
slickdeals-pp-cli search "<query>" [--live] [--limit N] - FTS5 local search or live RSS keyword filter
category
Browse deals by Slickdeals forum category. Pass a numeric forum ID or friendly name. --list prints the built-in category→forum-ID map.
slickdeals-pp-cli category <id|name> [--limit N] [--list] - Category-filtered live RSS deals
coupons
Live featured coupons via the Nuxt JSON endpoint. RSS coupon filter (f2=1) does not work.
slickdeals-pp-cli coupons [--store <name>] [--limit N] - Featured coupons from /web-api/frontpage/featured-coupons/
watch
Fetch a single deal by ID from the live frontpage RSS. Use --persist to write the snapshot to the local SQLite store.
slickdeals-pp-cli watch <deal-id> [--persist] [--once] - Snapshot a deal from the live frontpage feed
digest
Summarize top deals from the local snapshot store over a time window.
slickdeals-pp-cli digest [--since 24h] [--top N] [--merchant-cap N] [--grouped-by merchant|category] - Window-based deal summary from local snapshots
deals
SQL compound query over the local deal_snapshots table.
slickdeals-pp-cli deals [--store <name>] [--category <name>] [--since <dur>] [--min-thumbs N] [--deal-id <id>] [--latest] - Compound query over local snapshots
analytics
Analyze local snapshot data with aggregation sub-commands.
slickdeals-pp-cli analytics top-stores [--window 30d] [--limit N] - Merchant leaderboard by deal count and max thumbs
slickdeals-pp-cli analytics thumbs-velocity <deal-id> - Chronological thumb-count series with per-observation deltas
Local SQLite snapshot store
v0.2 introduces a local deal_snapshots table (default: ~/.local/share/slickdeals-pp-cli/data.db). Each row records one observation of a deal at a point in time.
Schema columns: deal_id, title, link, merchant, category, thumbs, captured_at.
Populating snapshots:
# One-shot: fetch deal 19510173 from the live frontpage and save it
slickdeals-pp-cli watch 19510173 --persist --json
# Run periodically (e.g. via cron) to build a history for velocity tracking
# Example: every 30 minutes for a deal you're watching
# */30 * * * * slickdeals-pp-cli watch 19510173 --persist
Querying snapshots:
# Compound SQL filter
slickdeals-pp-cli deals --store amazon --since 24h --min-thumbs 30 --json
# Window-based digest with merchant deduplication
slickdeals-pp-cli digest --since 7d --top 20 --merchant-cap 3 --json
# Merchant leaderboard
slickdeals-pp-cli analytics top-stores --window 30d --json
# Thumb velocity for a single deal
slickdeals-pp-cli analytics thumbs-velocity 19510173 --json
The snapshot store is append-only per observation. deals deduplicates to the latest snapshot per deal_id by default (--latest=true); pass --latest=false to see every observation.
Architecture decisions
-
Client-side RSS filtering: Slickdeals' RSS endpoint (/newsearch.php) does not honor server-side search= or forumid= filters when mode=frontpage is set — it returns the full frontpage feed regardless. v0.2's search, category, and hot commands all filter client-side against the same live frontpage RSS feed.
-
Coupons use the Nuxt endpoint: The RSS coupon-filter pattern (newsearch.php?filter=f2=1&rss=1) does not work — Slickdeals ignores the filter and returns the frontpage feed. The coupons command uses /web-api/frontpage/featured-coupons/ instead, which returns the actual featured-coupon set.
-
Authenticated write features deferred to v0.3: Vote/comment/submit/DM actions require an authenticated session. A throwaway account was banned during v0.1 capture attempts. v0.3 will require camofox-browser stealth mode and a fresh account to avoid fingerprinting.
Output Formats
# Human-readable table (default in terminal, JSON when piped)
slickdeals-pp-cli ad-stats mock-value --breakpoint example-value
# JSON for scripting and agents
slickdeals-pp-cli ad-stats mock-value --breakpoint example-value --json
# Filter to specific fields
slickdeals-pp-cli ad-stats mock-value --breakpoint example-value --json --select id,name,status
# Dry run — show the request without sending
slickdeals-pp-cli ad-stats mock-value --breakpoint example-value --dry-run
# Agent mode — JSON + compact + no prompts in one flag
slickdeals-pp-cli ad-stats mock-value --breakpoint example-value --agent
Agent Usage
This CLI is designed for AI agent consumption:
- Non-interactive - never prompts, every input is a flag
- Pipeable -
--json output to stdout, errors to stderr
- Filterable -
--select id,name returns only fields you need
- Previewable -
--dry-run shows the request without sending
- Explicit retries - add
--idempotent to create retries when a no-op success is acceptable
- Confirmable -
--yes for explicit confirmation of destructive actions
- Piped input - write commands can accept structured input when their help lists
--stdin
- Offline-friendly - sync/search commands can use the local SQLite store when available
- Agent-safe by default - no colors or formatting unless
--human-friendly is set
Exit codes: 0 success, 2 usage error, 3 not found, 5 API error, 7 rate limited, 10 config error.
Health Check
slickdeals-pp-cli doctor
Verifies configuration and connectivity to the API.
Configuration
Config file: ~/.config/slickdeals-pp-cli/config.toml
Static request headers can be configured under headers; per-command header overrides take precedence.
Troubleshooting
Not found errors (exit code 3)
- Check the resource ID is correct
- Run the
list command to see available items
API-specific
- doctor reports HTTP transport failure — Slickdeals occasionally throttles per-IP. Wait a minute and retry; the discovered endpoints work via plain HTTPS (no clearance cookie needed per probe-reachability).
- Empty results from list commands — Run
slickdeals-pp-cli sync first to populate the local cache, then retry.
HTTP Transport
This CLI uses Chrome-compatible HTTP transport for browser-facing endpoints. It does not require a resident browser process for normal API calls.
Sources & Inspiration
This CLI was built by studying these projects and resources:
Generated by CLI Printing Press