SuperAPI AI 工具集

recipe-diagrams

通用与其它

查看项目

更新于 10-16 11:29

技能介绍

用途

把一份菜谱转换为依赖图,再将这张图渲染成高分辨率的 Cooking for Engineers 风格 PNG 表格。阅读方式:从左到右,食材行是流(stream),列是阶段(stage),纵向合并的动作单元格表示汇合(join)。

主要能力

  • 读取并规范化完整菜谱,包括产量、食材标题、食材预处理、编号步骤、影响执行的备注(notes),以及用户提供的任何链接来源。
  • 保留用量、设备、温度、时间、感官完成线索、静置/冷却与上菜步骤。
  • 将食材的内联预处理(例如 onion, diced)视为一道操作,除非该食材是以此状态购买的。
  • 当来源在不同阶段使用同一食材时,将其拆分为带标签的若干份。
  • 构建依赖图(区分全局准备 setup 与食材流和操作),使其可平面化(planar):排列食材行,使每个操作消耗一个连续的行范围;后续汇合覆盖其所合并中间产物的完整范围。
  • 用指定 JSON schema 编码布局,再渲染为 4K 宽 PNG。

使用方式

JSON schema 示例:

{
  "title": "Recipe name",
  "yield": "about 10 servings",
  "setup": [
    "Butter and flour a loaf pan",
    "Preheat oven to 350 deg F (170 deg C)"
  ],
  "ingredients": [
    "2 large (250 g) ripe bananas",
    "6 Tbsp (90 mL) butter"
  ],
  "columns": [
    {
      "actions": [
        { "rows": [0, 0], "label": "mash" },
        { "rows": [1, 1], "label": "melt" }
      ]
    },
    {
      "actions": [
        { "rows": [0, 1], "label": "mix until smooth" }
      ]
    }
  ]
}

rows 是包含端点的、从零开始的食材行范围。某阶段单元格为空表示该流原样延续。跨越多行的单元格消耗这些食材或已由它们产出的中间产物。将烤盘准备、预热等整道菜的预备条件放入 setup;将烹饪、冷却、装饰与上菜放入动作列中其实际依赖位置。

渲染命令(渲染脚本路径相对本 SKILL.md 解析):

python3 scripts/render_recipe_diagram_png.py /tmp/recipe-diagram.json /tmp/recipe-diagram.png --width 3840

渲染器生成 4K 宽、高度自适应的 PNG,使用本地等宽字体、图形边框、换行标签和真正的纵向合并动作单元格。可通过将 RECIPE_DIAGRAM_FONT 设为 .ttf 或 .ttc 文件来覆盖检测到的字体。如果表格异常密集,增大 --width;不要仅为适配聊天视口而改动依赖图。

流程步骤

  1. 规范化来源:阅读完整菜谱。当每条与执行相关的来源陈述在图中都有唯一归属时,规范化完成。
  2. 构建依赖图:区分全局准备与食材流和操作。当每种食材都到达消耗它的每个操作、且所有操作都导向最终结果时,图完整。
  3. 使图可平面化:安排食材行顺序,使每个操作消耗一个连续行范围。布局完成的条件是同一列内没有动作范围不连续,也没有两个动作范围重叠。
  4. 编码布局:写一个临时 JSON 文件。标签用祈使句并保持紧凑,但保留执行细节,使用纯字符串。
  5. 渲染前审计:将 JSON 与来源比对,验证每种食材与份量、每个操作、所有顺序约束与执行细节都恰好出现一次。真实存在的替代方案保留在相应标签中。用 [?] 标注来源不确定处,并在图后解释,而不是自行编造解决方案。
  6. 渲染、检查并返回:运行上述命令。打开生成的 PNG 并检查后再返回:确认完整外边框可见、文本位于单元格内、没有标签重叠或裁切、汇合与行边界明确、缩小时仍可读。以图片附件或清晰文件链接返回 PNG,而不是粘贴 ASCII 表格。如果出现 [?],在图后附一段简短的 Uncertainties 列表。输出完成的条件是栅格化成功、图像至少 3840 像素宽、且目视检查确认文字与边框清晰。

适用场景

用户要求生成菜谱流程图时。

限制

  • 类别、收费、价格、平台、效果等未在上述资料中提供。
  • 除上述渲染脚本与字体环境变量外,其他运行环境要求暂未提供。