Skip to main content
Glama

FrugalFinder

作为服务的最佳价值淘货。 提交你想要的东西 + 原因 + 预算;一个 FrugalBot 代理会定期扫描并返回最佳 价值 机会——不是最便宜的,也不是最花哨的。

架构(MVP)

[Web UI / Telegram bot / MCP client agents] 
        ↓ POST
   Vercel serverless API  ──→  Vercel KV store (wishlists + scans)
        ↓                        ↑
   FrugalBot analyzer            │ scheduled re-scan
   (OpenRouter LLM)      ────────┘  (Vercel Cron, hourly tick)

Related MCP server: ecommerce-mcp-server

端点

路由

方法

用途

/

GET

Web UI:提交心愿单,查看分析

/api/wishlists

POST

创建心愿单 → 运行首次 FrugalBot 分析

/api/wishlists?id=

GET/PATCH

获取或更新一个心愿单

/api/scan?id=

GET/POST

轮询最新扫描 / 立即触发扫描

/api/scan-all

POST

Cron 目标 — 扫描所有到期的心愿单

/api/telegram

POST

Telegram webhook 摄取

/api/mcp

POST

供外部 AI 代理使用的 MCP Streamable HTTP 端点

/api/reservations

POST

创建露营地预订监视器(Recreation.gov)

/api/reservations?id=

GET/PATCH

列出/获取/更新预订监视器

/api/reservations/scan?id=

POST

立即触发预订扫描

/api/compare

POST/GET

3 模型 LLM 对比扫描 / 性能摘要

/admin.html

GET

管理仪表盘:LLM 质量与成本监控

露营地预订监视器

监视多个 Recreation.gov 露营地,在你的日期窗口内寻找空位。 site_preference: "lakefront" 会在湖滨场地因取消而释放时给予更高评分。 评分:可用性 + 偏好匹配 + 设施(遮荫、宠物、铺砌车道)− 价格。

curl -X POST https://YOUR-DOMAIN.vercel.app/api/reservations \
  -H 'Content-Type: application/json' \
  -d '{"campground_ids":["233117","232665"],"date_window":"2026-10-09 to 2026-10-12","site_preference":"lakefront","cadence":"daily"}'

已知限制:Recreation.gov 基于日期的可用性端点目前对匿名调用者返回 404(API 已更改)。扫描器使用其公开的站点元数据搜索(已验证可用:循环、属性、状态、价格)。当日期级可用性重新开放时,将其接入 getCampgroundSites() —— 下游所有内容已能处理。ReserveAmerica(北卡罗来纳州立公园)阻止匿名 API 调用;如果以后需要,可添加为带 cookies/会话的提供者。

多 LLM 对比(“质量与成本控制”)

POST /api/compare 在同一个 frugal-bot 提示上竞速三个模型层级:

层级

默认模型

用途

pareto

openrouter/auto

OpenRouter 自己的最佳模型路由

budget_web

openai/gpt-4.1-nano(+web 插件)

最便宜的具备网络能力

mid_web

perplexity/sonar

中档具备网络能力

然后一个裁判(anthropic/claude-opus-4.1)对三者进行盲评(顺序打乱),评分 1–10。 每次运行都会将 tokens/成本/评分/胜场记录到性能存储中;GET /api/compare 聚合它们,/admin.html 可视化。所有 slug 均可通过环境变量每周覆盖,无需代码更改: PARETO_MODEL、BUDGET_WEB_MODEL、MID_WEB_MODEL、JUDGE_MODEL。

已验证的实时运行:mid_web(Sonar)得分 9,pareto(路由到 DeepSeek v4 flash)得分 8,budget(GPT-4.1-nano)得分 4–7,总成本 ≈ $0.05/次对比。

环境变量(在 Vercel 仪表盘 → 设置 → 环境变量中设置)

  • OPENROUTER_API_KEY(必需)— LLM 提供者

  • FRUGAL_MODEL(可选,默认 stealth/ox-alpha)— 任意 OpenRouter 模型 slug

  • KV_REST_API_URL、KV_REST_API_TOKEN(生产持久化必需)— 来自在 Vercel → 存储中附加的 Vercel KV(Upstash)数据库

  • WISHLIST_TOKEN(可选)— /api/wishlists 的共享密钥

  • CRON_SECRET(可选但推荐)— 保护 /api/scan-all

  • TELEGRAM_BOT_TOKEN、TELEGRAM_WEBHOOK_SECRET(可选)— Telegram 摄取

  • MCP_TOKEN(可选)— /api/mcp 的共享密钥

  • PARETO_MODEL、BUDGET_WEB_MODEL、MID_WEB_MODEL、JUDGE_MODEL(可选)— LLM 对比层级覆盖

分享路径

添加到心愿单(书签小工具)

创建一个名为 添加到心愿单 的浏览器书签,URL 如下:

javascript:(function(){var u=location.href;var t=document.title;prompt('Send to FrugalFinder? Add budget/use hints:',t+'\n'+u)&&fetch('https://frugalfinder.vercel.app/api/wishlists',{method:'POST',headers:{'Content-Type':'application/json'},body:JSON.stringify({item:t,source_url:u,budget:'see notes',use_case:'shared from '+u,cadence:'daily'})}).then(r=>r.json()).then(d=>alert('Added! id='+d.id))})()

在任何产品页面上点击它,即可将该列表项作为心愿单条目提交。

电子邮件(MVP 说明)

尚未接入 — MVP 使用 Web UI + Telegram + 书签小工具。电子邮件摄取是自然的 v2 补充,可通过入站电子邮件 webhook(例如 Resend/Postmark → /api/wishlists)实现。

定价层级(推荐)

层级

频率

价格理由

免费

每日

~30 次 LLM 调用/月/项目,免费 stealth 模型边际成本为 $0 ≈ 基础设施可忽略

高级

每小时

$0.01/次扫描 × ~720 次扫描/月 = $7.20/月/项目 — 定价为 $5/月固定,利润来自将多个心愿单批量合并到一次每小时 cron 触发中

专业(未来)

每小时 + 优先队列 + 电子邮件摘要

$12/月

单位经济性之所以可行,是因为分析器将所有到期的心愿单批量合并到一次 cron 遍历中(/api/scan-all),摊销了冷启动开销。

认证路线图(MVP 之后)

  1. MVP 现在:无认证,单用户,由可选共享密钥保护。

  2. v1.1:魔法链接电子邮件登录(Auth.js 或 Clerk 免费层)→ 按用户 ID 键控的每用户心愿单。

  3. v2:Stripe 结账用于高级/专业层级;用量计量 = 每个计费周期的扫描次数。

本地开发

npm install
vercel dev   # needs `vercel link` once
npm test    # node:test unit tests

MCP 用法(用于外部代理,如 ChatGPT/Claude/Codex)

将支持 MCP 的客户端连接到:

https://YOUR-DOMAIN.vercel.app/api/mcp

如果设置了,请包含请求头:x-mcp-token: <MCP_TOKEN>。

暴露的工具:

  • submit_wishlist(item, use_case, budget, flexibility?, cadence?, source_url?) → 保存 + 立即分析

  • get_wishlist(id) → 完整记录,包括最新分析和扫描历史

  • list_wishlists() → 所有活动心愿单的摘要

  • trigger_scan(id) → 强制进行带外 frugal-bot 扫描

  • submit_reservation_watch(campground_ids, date_window?, site_preference?, min_features?, max_price?, cadence?, notes?) → 露营地监视器 + 首次扫描(支持湖滨偏好)

  • list_reservations() → 所有预订监视器及上次结果

  • trigger_reservation_scan(id) → 立即重新扫描预订

  • run_model_comparison(item, use_case, budget, flexibility?) → 3 层级 LLM 竞速 + 裁判裁决

  • get_model_performance() → 每个层级的聚合质量/成本统计

调用代理应将其视为 提交 + 轮询:提交一次,然后按适合它们的任何频率调用 get_wishlist(或等待它们自己的调度器)。MCP 规范没有用于任意更新的推送通道,因此定期轮询是标准模式。

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI assistants to save product URLs to a user's Wishfinity wishlist. When recommending products, the AI can generate a clickable link that saves items for later purchase or gifting.
    63 npm
    1
    MIT
  • F
    license
    A
    quality
    D
    maintenance
    Enables AI assistants to manage shopping lists and items (create, edit, delete, mark as purchased) via integration with a backend API.
    8
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    Implements the iwant.fyi demand-side protocol, enabling AI agents to express structured purchase intent, receive matched supply from multiple sources, and report outcomes.
    Apache 2.0