cognis-digital/pricepulse

GitHub: cognis-digital/pricepulse

一款轻量级的竞品定价与功能变更监控工具,通过快照对比自动检测价格涨跌和套餐功能增减,并在变化时触发提醒。

Stars: 0 | Forks: 0

# pricepulse — 带有差异提醒的竞品定价/功能变更监控工具 [![PyPI](https://img.shields.io/pypi/v/cognis-pricepulse.svg)](https://pypi.org/project/cognis-pricepulse/) [![CI](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/a8ab58cea0054606.svg)](https://github.com/cognis-digital/pricepulse/actions) [![License: COCL 1.0](https://img.shields.io/badge/License-COCL%201.0-2b6cb0.svg)](LICENSE) [![Suite](https://img.shields.io/badge/Cognis-Neural%20Suite-6b46c1.svg)](https://github.com/cognis-digital) **监控竞品的定价和功能页面变更,并在价格变动或套餐/功能出现或消失时获取差异提醒。** *商业智能 — 无需搭建重量级基础设施即可跟踪市场动态。* ## 分步使用指南 1. 从源码**安装** (Python 3.9+): pip install . 2. 使用 price/feature 提取器**添加**要跟踪的页面 (`NAME:KIND:PATTERN`): pricepulse add https://example.com/pricing --price "pro:regex:[0-9]+/mo" --label "Competitor Pro" 3. **快照**所有跟踪的页面 (抓取 + 提取 + 存储): pricepulse snapshot 4. 将页面与前一次快照进行**差异对比**,并读取变更集: pricepulse diff https://example.com/pricing --format json 5. **自动化** — 循环执行间隔任务,并将变更 POST 到 webhook (或在 CI 中执行单次 `--once` 传递): pricepulse watch --interval 300 --webhook https://hooks.example.com/pricepulse 此外还有:`pricepulse list` 和 `pricepulse mcp` (MCP stdio 服务器)。 ## 为什么需要 定价页面是公开的,通常悄无声息地变动,但影响却极其重大。`pricepulse` 会跟踪 您关心的 URL,使用无依赖的提取器提取价格和套餐/功能列表, 将它们快照存储到本地 SQLite 中,并确切地告诉您自上次以来发生了什么变化 — 价格的上涨/下跌及差异值、套餐的 增加/移除、功能的增加/移除。它是单一用途、可脚本化、 CI 友好、可自托管的,并且**仅使用标准库** (无需 pip 安装)。 在任何变更时触发 webhook,或者通过 MCP 将其暴露给 agent。 ## 领域 **主要领域:** Cyber & Security · **JTF MERIDIAN 部门:** NULLBYTE · SPECTER **主题:** `cognis` `security` `infosec` `cybersecurity` `blue-team` **Cognis Neural Suite** 的一部分 — 包含 300 多个开源工具,组织在 JTF MERIDIAN 指挥结构下的 12 个领域中。请参阅 [GitHub 上的 suite](https://github.com/cognis-digital) 和 [jtf-meridian](https://github.com/cognis-digital/jtf-meridian) 以了解这些部分是如何组合在一起的。 ## 安装 ``` pip install cognis-pricepulse # 或者,从这个 repo: pip install -e ".[dev]" ``` 无需任何依赖即可运行 — Python 3.10+ 就足够了。 ## 快速开始 ``` pricepulse --version # 1. 追踪一个页面 + extractors(价格 + 特性,regex 或 css-ish) pricepulse add https://acme.example/pricing \ --label "Acme pricing" \ --price "pro:css-ish:.plan-pro .price" \ --feature "plans:css-ish:.plan-name" # 2. 对其进行 snapshot(通过 urllib 获取,或使用 --html 指定本地文件) pricepulse snapshot https://acme.example/pricing # 3. 查看与上一个 snapshot 相比的变化 pricepulse diff https://acme.example/pricing pricepulse diff https://acme.example/pricing --format json --webhook "$SLACK_WEBHOOK_URL" # 4. 或者只是在一定的 interval 内 watch 并在发生变化时 alert pricepulse watch https://acme.example/pricing --interval 3600 --webhook "$SLACK_WEBHOOK_URL" # 将其暴露为一个 MCP server(Cognis.Studio / Claude Desktop / Cursor) pricepulse mcp ``` ## 子命令 | 命令 | 功能描述 | |------------|-------------------------------------------------------------------------| | `add` | 注册一个页面 + 命名的 price/feature 提取器。 | | `snapshot` | 抓取 (或读取 `--html`),提取每个字段,持久化到存储中。 | | `diff` | 比较最近的两次快照;分类变更;可选的 webhook。 | | `watch` | 每 `--interval` 秒循环执行 `snapshot`+`diff`,发生变更时触发 webhook。 | | `list` | 列出跟踪的页面及其提取器。 | | `mcp` | 作为 stdio JSON-RPC MCP 服务器运行 (`extract`, `diff_html` 工具)。 | ## 提取器 每个字段都有一个 **kind** (`price` 或 `feature`) 以及一个 **extractor**: * **regex** — 一个 Python regex;将获取第一个捕获组 (或整个匹配项)。 价格会被解析为浮点数,例如 `r"\$(\d+)"`。 * **css-ish** — 基于 stdlib HTML 解析器的轻量级选择器。支持 `tag`、`.class`、`#id`、`tag.class`,以及后代组合器 (`.plan-pro .price` = 一个位于 `.plan-pro` 内部的 `.price`)。 CLI 上的字段规范使用 `NAME:EXTRACTORKIND:PATTERN`,例如 `--price "pro:css-ish:.plan-pro .price"`。 Price 字段的差异表现为 `price_up` / `price_down` (带有 `delta` 和 `pct`)、 `price_set`、`price_cleared`。Feature 字段的差异表现为 `feature_added` / `feature_removed`。 ## 内置演示 这是一个完全离线的演示,基于两个内置的 HTML 快照展示检测到的价格 变更。请参阅 [`demos/01-basic/SCENARIO.md`](demos/01-basic/SCENARIO.md)。 ``` bash demos/01-basic/run.sh ``` 它检测到:Pro 价格 **$49 → $59 (+20.41%)**,新增了一个 $99 的 **Team** 套餐,并且 Pro 套餐中新增了 **Audit logs** 功能。 ## 存储 快照持久化到单个 SQLite 文件中 (默认为 `pricepulse.db`,可通过 `--store PATH` 覆盖)。其 schema 非常小巧:`pages`、`fields`、`snapshots`。 ## 优雅的离线处理 抓取失败永远不会导致运行崩溃:`snapshot` 会按页面报告错误并 以非零状态退出;`watch` 会记录错误并继续轮询其他页面。 ## 互操作性 `pricepulse` 可与 300 多个工具组成的 Cognis suite 组合使用 — JSON 输入/输出和共享的 OpenAI 兼容 `/v1` 主干。请参阅 **[INTEROP.md](INTEROP.md)** 了解 suite 地图、组合模式和参考技术栈。 ## 集成 通过 [`cognis-connect`](https://github.com/cognis-digital/cognis-connect) 将 `pricepulse` 的发现转发至 STIX/MISP/Sigma/Splunk/Elastic/Slack/webhook。请参阅 **[INTEGRATIONS.md](INTEGRATIONS.md)**。 ## 许可证 Cognis Open Collaboration License (COCL) v1.0 — 详见 [LICENSE](LICENSE)。
标签:Python, 价格监控, 商业智能, 差异比较, 数据提取, 无后门, 竞争对手监控, 逆向工具