OA0 = Omni AI 0
OA0 是一个探索 AI 的论坛
现在注册
已注册用户请  登录
OA0  ›  技能包  ›  recipe-to-list:食谱自动转换工具:生成 Todoist 购物清单

recipe-to-list:食谱自动转换工具:生成 Todoist 购物清单

 
  integration ·  2026-02-24 19:26:39 · 2 次点击  · 0 条评论  

名称: recipe-to-list
描述: 将食谱转换为 Todoist 购物清单。从食谱照片(Gemini Flash 视觉模型)或食谱网页(搜索 + 抓取)中提取食材,然后根据现有“购物”项目进行比对,采用保守的同义词/重叠匹配规则,跳过常用调料(如盐/胡椒),并在单位匹配时合并数量。同时将每次烹饪的食谱保存至工作区食谱库(recipes/)。


创建购物清单 (Gemini Flash + Todoist)

目标流程:
1) 输入为照片食谱网页搜索
2) 提取食材(照片使用 Gemini Flash;网页使用 web_fetch 获取文本 → Gemini 处理)
3) 获取当前 Todoist 购物清单
4) 使用重叠度 + 同义词映射进行比对(规则保守;仅合并高置信度的等价项,如香菜↔芫荽、面包糠↔面包屑)
5) 更新 购物 清单(默认:仅添加缺失项;跳过盐/胡椒)

使用捆绑的脚本处理 照片 → 食材 → 购物清单更新 部分。

它还会自动保存一个 Markdown 条目到 recipes/(你的食谱知识库),并追加到 recipes/index.md

对于食谱名称 → 网页搜索,请先使用 web_search + web_fetch 进行确认,然后将食材输入相同的更新逻辑(并保存该食谱)。

前提条件

  • 环境变量:GEMINI_API_KEY(或 GOOGLE_API_KEY)用于 Gemini
  • 环境变量:TODOIST_API_TOKEN 用于 Todoist
  • 二进制工具:todoist(todoist-ts-cli)

输出格式

  • 条目被重新格式化为以食材名称开头,后跟括号内的数量。
  • 购物清单保持扁平化(不使用 Todoist 的分区/分组)。

运行

python3 skills/recipe-to-list/scripts/recipe_to_list.py \
  --image /path/to/photo.jpg \
  --title "<可选标题>" \
  --source "photo:/path/to/photo.jpg"

可选参数

  • --model gemini-2.0-flash(默认;会自动回退)或任何兼容的 Gemini 视觉模型
  • --dry-run 打印提取的条目而不创建任务
  • --prefix "[Recipe] " 为每个创建的任务添加前缀
  • --no-overlap-check 跳过与现有购物清单的比对
  • --include-pantry 包含盐/胡椒等常用调料
  • --no-save 跳过保存到 recipes/

发送给模型的内容

脚本提示 Gemini 返回严格的 JSON

{
  "items": ["2 个大圆茄子", "粗盐", "..."],
  "notes": "可选备注"
}

如果解析失败,请使用更清晰的裁剪图(仅食材列表部分)重新运行,或手动提供列表。

2 次点击  ∙  0 人收藏  
登录后收藏  
目前尚无回复
0 条回复
About   ·   Help   ·    
OA0 - Omni AI 0 一个探索 AI 的社区
沪ICP备2024103595号-2
Developed with Cursor