ClawSkills logoClawSkills

Recipe to List

将食谱转换为 Todoist 购物清单。从食谱照片(Gemini Flash 视觉)或食谱网页(搜索 + 获取)中提取配料,然后进行比

介绍

# Create Shopping List (Gemini Flash + Todoist)

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

使用捆绑的脚本来处理 **照片 → 配料 → Shopping 更新** 部分。

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

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

## 前置条件

- 环境变量:`GEMINI_API_KEY`(或 `GOOGLE_API_KEY`)用于 Gemini - 环境变量:`TODOIST_API_TOKEN` 用于 Todoist - 命令行工具:`todoist` (todoist-ts-cli)

## 输出格式化

- 项目会被重新格式化为以 **配料名称** 开头,后跟括号中的数量。 - Shopping 清单保持 **扁平**(无 Todoist 部分/组)。

## 运行

```bash python3 skills/recipe-to-list/scripts/recipe_to_list.py \ --image /path/to/photo.jpg \ --title "<optional title>" \ --source "photo:/path/to/photo.jpg" ```

### 可选标志

- `--model gemini-2.0-flash`(默认;自动回退)或任何兼容的 Gemini 视觉模型 - `--dry-run` 打印提取的项目而不创建任务 - `--prefix "[Recipe] "` 为每个创建的任务添加前缀 - `--no-overlap-check` 跳过检查现有的 Shopping 清单 - `--include-pantry` 包含盐/胡椒 - `--no-save` 跳过保存到 `recipes/`

## 发送给模型什么

脚本提示 Gemini 返回 **严格的 JSON**:

```json { "items": ["2 large globe eggplants", "kosher salt", "..."], "notes": "optional" } ```

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

更多产品