关于 pp-allrecipes
pp-allrecipes 是面向 Agent 和用户的命令行技能,用于读取结构化的 Allrecipes 数据。它通过本地 SQLite 缓存支持食材匹配、评分排序、膳食规划和导出。
主要功能
- 01搜索和获取食谱
- 02按平滑评分排序
- 03按现有食材匹配食谱
- 04按饮食类型筛选
- 05调整份量并查看营养
- 06生成食谱集和购物清单
适用场景
- 01查找限时内的高评分食谱
- 02根据现有食材挑选食谱
- 03合并多道食谱的食材清单
- 04将分类食谱导出为 Markdown
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ mvanhorn/ printing-press-library --skill pp-allrecipes安装后在 Claude Code 中输入/pp-allrecipes确认已加载。
详细介绍
Allrecipes — Printing Press CLI
前置条件:安装 CLI
此 skill 使用 allrecipes-pp-cli 二进制文件。**调用此 skill 中的任何命令之前,必须确认 CLI 已安装。**如果尚未安装,请先安装:
- 使用 Printing Press 安装程序安装。在 macOS/Linux 上,默认将二进制文件安装到
$HOME/.local/bin;在 Windows 上,则安装到%LOCALAPPDATA%\Programs\PrintingPress\bin:npx -y @mvanhorn/printing-press-library install allrecipes --cli-only - 验证:
allrecipes-pp-cli --version - 确保报告的安装目录位于将调用此 skill 的 Agent/运行时的
$PATH中。
如果 npx 安装失败(没有 Node、处于离线状态等),请改用 Go 直接安装(需要 Go 1.26.6 或更高版本):
go install github.com/mvanhorn/printing-press-library/library/food-and-dining/allrecipes/cmd/allrecipes-pp-cli@latest
如果安装后 --version 报告“command not found”,说明运行时无法在 $PATH 中找到二进制文件目录。验证成功之前,请勿执行此 skill 中的命令。
何时使用此 CLI
当 Agent 或用户需要将 Allrecipes 数据作为数据使用,而不是作为网页浏览时,请使用此 CLI:搜索经过验证的食谱、以结构化形式获取配料清单、汇总多道食谱的购物清单、按不同份数调整食谱,或根据食品储藏室中的食材筛选。SQLite 本地缓存可加快迭代式膳食规划工作流——每道获取过的食谱都会永久保存,并可通过 pantry、with-ingredient、top-rated 和 dietary 查询。若用户需要比较多个网站(请使用其他工具),或需要已保存食谱、膳食计划等身份验证功能(本 CLI 有意不支持),请勿使用此 CLI。
何时不使用此 CLI
对于需要创建、更新、删除、发布、评论、点赞、邀请、下单、发送消息、预订、购买或更改远程状态的请求,请勿启用此 CLI。此只读 CLI 提供用于检查、导出、同步和分析的命令。
独特功能
这些功能是此 API 的其他工具所不具备的。
可累积的本地状态
-
pantry— 根据你的食品储藏室中的食材为 Allrecipes 食谱评分,查看今晚哪些食谱无需购买食材就能实际烹制。当用户问“我现有的食材能做什么”时,只有这个命令能给出答案。
allrecipes-pp-cli pantry --pantry-file ~/pantry.txt --query brownies --agent -
with-ingredient— 查找所有使用指定食材的缓存食谱,这是针对本地语料库的 SQL 视图。当用户想从需要消耗的食材入手,而不是从菜名入手时,使用此命令。
allrecipes-pp-cli with-ingredient buttermilk --top 10 --agent -
dietary— 使用 JSON-LD 关键词和食材名称模式,按无麸质/纯素/低碳水筛选缓存食谱。当饮食限制不可妥协,且用户想要的结果超出网站饮食分类页面所展示的内容时,使用此命令。
allrecipes-pp-cli dietary --type gluten-free --top 20 --agent
排名优于网站
-
top-rated— 按贝叶斯平滑后的评分为食谱排名,让经证实受欢迎的食谱胜过只有 1 条评价、评分 5 星的噪声。当 Agent 想要的是经过验证的食谱,而不是新上传的 5 星异常值时,请优先使用此命令,而非原始搜索。
allrecipes-pp-cli top-rated brownies --smooth-c 200 --limit 10 --agent -
quick— 符合严格时间上限的高评分食谱——Allrecipes 的界面无法强制执行时间限制,但本地缓存可以。当用户的限制条件是时间而不是菜品时使用,例如“25 分钟内能做什么好吃的”。
allrecipes-pp-cli quick --max-minutes 30 --query chicken --agent
面向 Agent 的工具链
-
cookbook— 将高评分分类中的食谱汇编为一本 Markdown 食谱集,包含目录、配料和做法。当用户需要精选合集(礼品、膳食计划包)时,一个命令即可生成。
allrecipes-pp-cli cookbook --category italian --top 20 --output italian-cookbook.md -
grocery-list— 汇总多道食谱的配料,生成去重且方便 Agent 读取的购物清单。在膳食计划结束时使用此命令——调用一次即可替代反复滚动查看配料清单。
allrecipes-pp-cli grocery-list https://www.allrecipes.com/recipe/9599/quick-and-easy-brownies/ https://www.allrecipes.com/recipe/16354/easy-meatloaf/ --agent
可达性缓解
-
doctor— 健康检查会检查响应正文,识别 Cloudflare“Just a moment...”拦截页,然后建议使用浏览器 Chrome 传输方式。当 CLI 因机器人检测而无法运行时,Agent 会收到具体且可执行的错误,而不是泛泛的超时提示。
allrecipes-pp-cli doctor
HTTP 传输
此 CLI 使用兼容 Chrome 的 HTTP/3 传输方式访问面向浏览器的端点。常规 API 调用无需常驻浏览器进程。
命令参考
recipes — 带有 Schema.org Recipe JSON-LD 标记的 Allrecipes 公开食谱页面
allrecipes-pp-cli recipes get— 按 ID + slug 获取食谱;返回经过解析的 JSON-LD Recipe。需要通过 `auth login...allrecipes-pp-cli recipes search— 搜索与查询相匹配的 Allrecipes 食谱(无需 Cloudflare clearance)。
手写命令
allrecipes-pp-cli recipe <url-or-id>— 按 URL 或 ID 获取并呈现单个食谱allrecipes-pp-cli search <query>— 搜索 Allrecipes 食谱(实时 + 缓存)allrecipes-pp-cli top-rated <query>— 搜索并按贝叶斯平滑评分排序(先验值为 4.0,默认 C=200)allrecipes-pp-cli quick— 从缓存中选出符合严格时间限制且评分最高的食谱allrecipes-pp-cli pantry— 根据与食品储藏室文件的重合度为缓存食谱评分allrecipes-pp-cli with-ingredient <ingredient>— 反向索引:使用指定食材的缓存食谱allrecipes-pp-cli dietary— 按无麸质 / 纯素 / 低碳水筛选缓存食谱(严格屏蔽指定食材)allrecipes-pp-cli cookbook— 将评分最高的类别或菜系汇编成 Markdown 食谱集allrecipes-pp-cli grocery-list <urls...>— 汇总多份食谱中的食材,生成去重后的购物清单(如果提供 --pantry-file,则扣除其中的食材)allrecipes-pp-cli scale <url>— 按目标份数调整食谱用量allrecipes-pp-cli nutrition <url>— 显示食谱的营养信息(每份及总量)allrecipes-pp-cli ingredients <url>— 显示解析后的食谱食材allrecipes-pp-cli instructions <url>— 显示编号的烹饪步骤allrecipes-pp-cli reviews <url>— 显示食谱评价摘要allrecipes-pp-cli category <slug>— 浏览某个类别中的食谱(例如 dessert、weeknight)allrecipes-pp-cli cuisine <slug>— 按菜系浏览食谱allrecipes-pp-cli ingredient <name>— 浏览以某种主要食材为特色的食谱allrecipes-pp-cli occasion <slug>— 按场合浏览食谱(节日、工作日晚餐、聚会)allrecipes-pp-cli article <url>— 提取 Allrecipes 文章页面的正文allrecipes-pp-cli gallery <url>— 从 Allrecipes 汇总图集提取食谱链接allrecipes-pp-cli cook <slug>— 显示厨师档案及其食谱allrecipes-pp-cli export <url>— 将食谱导出为 Markdownallrecipes-pp-cli sync— 刷新已过期的缓存食谱allrecipes-pp-cli cache— 检查、列出或清除本地食谱缓存allrecipes-pp-cli doctor— 诊断连接、Cloudflare clearance 状态和缓存健康状况
新鲜度约定
此打印版 CLI 仅为已注册的、由存储支持的读取命令路径提供有界的新鲜度保障。在 --data-source auto 模式下,这些路径会检查 sync_state,并可能在读取本地数据前执行有界刷新。--data-source local 不会刷新。--data-source live 会读取 API,且不会修改本地存储。设置 ALLRECIPES_NO_AUTO_REFRESH=1 可跳过新鲜度钩子,而不更改数据源选择。
当 JSON 输出使用生成的来源信息封装时,新鲜度元数据会显示在 meta.freshness。请将其视为适用于所覆盖命令路径的当前缓存新鲜度,而非完整历史回填或 API 特定增强的保证。
查找合适的命令
当你知道想做什么,却不知道该用哪个命令时,可以直接询问 CLI:
allrecipes-pp-cli which "<capability in your own words>"
which 会根据自然语言描述的功能查询,从此 CLI 精选的功能索引中匹配最合适的命令。退出代码 0 表示至少找到一个匹配项;退出代码 2 表示没有足够可信的匹配项,此时可改用 --help,或缩小查询范围。
操作示例
排名前 5 的布朗尼,仅保留排名字段
allrecipes-pp-cli top-rated brownies --limit 5 --agent --select rank,title,url,rating,reviewCount,madeItCount
贝叶斯平滑会消除仅有 1 条评价却获 5 星的异常值;--select 会将载荷缩减为 Agent 实际会用到的字段。
规划三顿工作日晚餐和一份购物清单
allrecipes-pp-cli quick --max-minutes 30 --query chicken --limit 3 --agent | xargs allrecipes-pp-cli grocery-list --pantry-file ~/pantry.txt --agent
组合两个命令:快速筛选工作日晚餐,然后直接汇总食材储备情况并生成购物清单。
编制一本个人意大利食谱集
allrecipes-pp-cli cookbook --category italian --top 20 --output ~/italian-cookbook.md
按贝叶斯评分提取排名前 20 的食谱,并生成带目录的 Markdown 食谱集。
用储藏室里的食材烹饪
allrecipes-pp-cli pantry --pantry-file ~/pantry.txt --max-missing 2 --agent --select title,url,have,missing
本地索引会根据食材重合度为缓存的食谱排序;--max-missing 2 会保留至多还需两种食材的食谱。
严格无麸质筛选并精简字段
allrecipes-pp-cli dietary --type gluten-free --top 20 --agent --select title,url,rating,recipeIngredient
严格屏蔽指定食材,并使用 JSON-LD 标签筛选;--select 仅提取标题、网址、评分和食材,供 Agent 核验。
身份验证设置
浏览和搜索无需身份验证。食谱详情页需要 Cloudflare clearance Cookie——运行一次 allrecipes-pp-cli auth login --chrome,即可从浏览器获取。此操作用于通过机器人防护验证,并非登录 Allrecipes 账户:无需用户名、密码,也不会使用与用户绑定的令牌。此 CLI 不支持需要实际 Allrecipes 账户的已保存食谱、用餐计划或个人资料功能。
运行 allrecipes-pp-cli doctor 验证设置。
Agent 模式
在任意命令中添加 --agent。它等同于:--json --compact --no-input --no-color --yes。
-
可通过管道传递——JSON 输出到 stdout,错误输出到 stderr
-
可筛选——
--select可保留部分字段。带点路径可深入嵌套结构;数组会逐项遍历。在冗长 API 中,这对缩小上下文至关重要:allrecipes-pp-cli recipes get mock-value mock-value --agent --select id,name,status -
可预览——
--dry-run会显示请求,但不会发送 -
支持离线使用——有本地 SQLite 存储时,同步和搜索命令可使用该存储
-
非交互式——绝不显示提示,每项输入都通过标志传入
-
只读——请勿使用此 CLI 执行创建、更新、删除、发布、评论、点赞、邀请、下单、发送或其他修改数据的请求
响应封装
从本地存储或 API 读取数据的命令,会在输出中附带来源信息封装:
{
"meta": {"source": "live" | "local", "synced_at": "...", "reason": "..."},
"results": <data>
}
解析 .results 获取数据,并查看 .meta.source 以确定数据来自实时来源还是本地。当 stdout 连接到终端时,stderr 才会输出人类可读的 N results (live) 摘要;通过管道传递或由 Agent 使用时,stdout 只会输出纯 JSON。
Agent 反馈
当你或 Agent 发现此 CLI 有异常之处时,请记录下来:
allrecipes-pp-cli feedback "the --since flag is inclusive but docs say exclusive"
allrecipes-pp-cli feedback --stdin < notes.txt
allrecipes-pp-cli feedback list --json --limit 10
条目会保存在本地 ~/.allrecipes-pp-cli/feedback.jsonl。除非设置了 ALLRECIPES_FEEDBACK_ENDPOINT,并且传入了 --send 或设置了 ALLRECIPES_FEEDBACK_AUTO_SEND=true,否则绝不会发送 POST 请求。默认情况下,反馈仅保存在本地。
记录让你感到意外的地方,而不是提交错误报告。简短、具体、写成一行:这才是会不断积累价值的内容。
输出传递
每个命令都支持 --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”模式。
allrecipes-pp-cli profile save briefing --json
allrecipes-pp-cli --profile briefing recipes get mock-value mock-value
allrecipes-pp-cli profile list --json
allrecipes-pp-cli profile show briefing
allrecipes-pp-cli profile delete briefing --yes
显式标志的优先级始终高于配置值;配置值的优先级高于默认值。agent-context 会在 available_profiles 下列出所有可用配置,方便进行自省的 Agent 在运行时发现它们。
退出代码
| 代码 | 含义 |
|---|---|
| 0 | 成功 |
| 2 | 用法错误(参数错误) |
| 3 | 未找到资源 |
| 4 | 需要身份验证 |
| 5 | API 错误(上游问题) |
| 7 | 受到速率限制(等待后重试) |
| 10 | 配置错误 |
参数解析
解析 $ARGUMENTS:
- 为空、
help或--help→ 显示allrecipes-pp-cli --help的输出 - 以
install开头 → 以mcp结尾 → 安装 MCP;否则 → 参见上文的先决条件 - 其他任何内容 → 直接使用(作为带有
--agent的 CLI 命令执行)
安装 MCP 服务
- 安装 MCP 服务:
go install github.com/mvanhorn/printing-press-library/library/food-and-dining/allrecipes/cmd/allrecipes-pp-mcp@latest - 在 Claude Code 中注册:
claude mcp add allrecipes-pp-mcp -- allrecipes-pp-mcp - 验证:
claude mcp list
直接使用
- 检查是否已安装:
which allrecipes-pp-cli如果未找到,请提供安装选项(参见本技能开头的先决条件)。 - 将用户查询匹配到上文“独特功能”和“命令参考”中的最佳命令。
- 使用
--agent标志执行:allrecipes-pp-cli <command> [subcommand] [args] --agent - 如果不明确,请查看子命令帮助:
allrecipes-pp-cli <command> --help。