关于 bargainbadger-price-update
bargainbadger-price-update 是将一次商品搜索会话整理为产品 vault 笔记中带日期的价格区段的技能。它记录价格而不推荐购买对象,并要求依据 vault 中的规范处理数据。
主要功能
- 01读取 vault 规范与链接笔记
- 02核实搜索会话及商品范围
- 03筛选并统计抓取数据
- 04用代码计算衍生价格
- 05更新价格区段并提交笔记
适用场景
- 01为产品笔记添加当日价格区段
- 02记录多个商店的商品价格
- 03排除单杯咖啡胶囊并说明原因
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ gkwa/ volcanicviper --skill bargainbadger-price-update安装后在 Claude Code 中输入/bargainbadger-price-update确认已加载。
附带文件tile.json
详细介绍
功能说明
一次抓取会在一个会话中采集所有商店里同一个产品词的结果。
此技能会将该会话的结果整理为产品库笔记中的带日期价格部分。
更新后的笔记就是交付成果。
即使请求的措辞是在询问最优惠的价格,任务也是记录价格,而不是选出赢家。
产品是一个参数,因此无论会话搜索的是什么产品,步骤都相同。
首先阅读规范
所有事实信息——数据库位置、架构、字段定义、采样查询、提取规则、计算方式和边缘情况——都存放在知识库中。
开始操作前,先阅读索引笔记:
/Users/mtm/Documents/Obsidian Vault/bargainbadger.md
然后阅读其 Contents 部分链接的所有笔记;如果其中某篇笔记将某个定义指向另一篇笔记,也要继续阅读该二级链接。
解析 wikilink 时,将知识库路径与链接文本拼接,并添加 .md 后缀。
此处有意不重复列出 Contents 清单,因为笔记会不断新增、拆分和重命名。
请以索引当前列出的内容为准,而不是以编写此技能时列出的内容为准。
此文件描述的是工作流,而不是参考资料。
它不陈述任何关于数据、数据库或架构的事实,也不得加入此类事实。
如果知识库缺少关于数据、架构或表的事实,请将其添加到知识库,而不是添加到此文件。
写作的版式是例外,应在此处定义。
成品部分在页面上的编排方式与杂货无关,因此,下方“部分布局”中的规则属于此文件自身,并不代表知识库规范有所缺漏。
触发条件
仅在收到将价格写入产品笔记的请求时运行此流程。
会触发此流程的请求:
- “我刚刚搜索了青葱,你能根据今天的结果更新青葱 Markdown 文件,添加一个新的价格部分吗?”
- “在韭葱笔记中添加一个价格部分”
- “现在发酵黄油的最优惠价格是多少?”
不会触发此流程的请求:
- 对数据库进行采样以制定架构,这属于规范编写工作
- 添加变更日志条目
- 任何最终不会在产品笔记中写入表格的事项
工作流
- 按上述要求阅读规范。
- 找出会话,并确认实际搜索的内容,然后再相信任何附加在会话上的标签。
- 在知识库中找到产品笔记,绝不要因此而新建笔记。
- 提取会话中的行并筛选出对应产品,报告采集、保留和舍弃的行数。
- 分批从这些行中提取架构定义的字段,并写入知识库之外的临时文件。
- 在代码中计算所有派生价格,绝不要手动计算。
- 按照下方“部分布局”的要求,将表格整理成价格部分,并插入到最新的现有价格部分上方,同时保留较早的部分不变;如果笔记中没有价格部分,则新建一个。
- 提交笔记,并删除临时文件。
除第 7 步中的部分布局来自此文件外,其余每一步的规则都来自规范。
这也包括表格本身——包含哪些列、每列的内容以及行的排序方式,均由规范定义,而非此文件定义。
如果规范未作说明,则参照笔记中最近的价格部分,并将这一选择报告为规范中的缺漏,而不是默默采用。
继承现有格式只是临时做法,直到规范对其作出定义。
章节布局
表格背后的推理值得记录下来,但绝不能让读者在看到表格之前先读它。
因此,价格章节应先放表格,再接一个子章节:
- 表格紧接在带日期的标题下方,中间不插入任何内容。
### notes,收录本章节的所有文字说明。
表格本身不需要标题,因为带日期的标题已经是它的标题。
这正是这种布局的全部意义:从笔记的目录跳转到带日期的标题时,读者会直接看到数字,而这通常正是他们最想看的;若有时需要了解推理过程,再往下一个标题就是。
不要在表格上方放摘要,无论多短都不行:想看数字的读者已经能直接看到,而想了解来龙去脉的读者会打开 ### notes。
### notes 应收录所有内容,开头写明运行 ID 和商店数量、本章节的范围,以及捕获、保留和剔除的行数;接着列出主要发现;然后说明表格的构建方式:如何将爬取词缩小到该产品、表格收录了哪些变体以及哪些被放到另一则笔记中、列名采用了哪些标准化词汇、逐行处理情况,以及哪些商品信息未生成行及其原因。
不要再细分这个子章节,因为已经决定跳过推理过程的读者,不会因内容被归入不同类别而得到任何好处。
用引导句和项目符号列表来组织和分组内容,将未生成行的商品信息放在最后,并为每一项添加链接。
如果某个产品需要多个表格,因为它按两种无法相互比较的维度销售,那么这些表格就不能都直接放在带日期的标题下方;因此,每个表格都要用一个 ### 标题注明其依据,例如 ### priced by weight 和 ### priced by volume,最后再接 ### notes。
知识库中的旧章节使用了各种其他子章节名称,不要沿用这些名称。
非目标
- 决定架构问题;这类问题应记录在知识库笔记及其变更日志中。
- 更新笔记 front matter 中的商店布尔字段。
- 建议购买哪种产品,或从哪家商店购买。
- 运行爬取;用户会在调用此技能前完成爬取。
排除单杯装咖啡胶囊
单杯装咖啡胶囊——Keurig、K-Cup、Nespresso 以及其他任何单杯胶囊——绝不能出现在价格章节中。
在缩小范围时就将它们剔除,不要在任何地方记录其价格。每杯喝完后都要丢弃单次使用的塑料胶囊,而咖啡袋则不需要丢弃,因此无论价格如何,这种形式都不在范围内。
这是关于用户会购买什么的长期偏好,不是架构规则。
如果一次爬取同时返回咖啡袋和胶囊,只将咖啡袋列入表格。在本章节的 ### notes 中记录:根据长期偏好排除了胶囊,并注明数量;如果某家商店只销售胶囊,导致其商品完全未出现在表格中,也要注明该商店。
架构变更
权威约定位于知识库笔记“bargainbadger change log.md”的简介中,枢纽笔记“bargainbadger.md”中有链接指向它。进行任何架构变更前,请先阅读该约定。
每项架构变更都要添加带日期的记录,注明促成变更的产品,引用捕获到的商品信息文本并说明其中哪些内容迫使我们做出变更,同时提供 productUrl。
这些证据必须与架构变更在同一次编辑中写入,绝不能事后补写。
绝不要包含数据库行 ID 或捕获时间戳。数据库会定期清空,因此 ID、站点和 capturedAt 都没有价值;只有引用的商品信息文本和 productUrl 能保留下来。