recipe-to-list
Turn recipes into a Todoist Shopping list. Extract ingredients from recipe photos (Gemini Flash vision) or recipe web pages (search + fetch), then compare against the existing Shopping project with conservative synonym/overlap rules, skip pantry staples (salt/pepper), and sum quantities when units match. Also saves each cooked recipe into the workspace cookbook (recipes/).
Best use case
recipe-to-list is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
Turn recipes into a Todoist Shopping list. Extract ingredients from recipe photos (Gemini Flash vision) or recipe web pages (search + fetch), then compare against the existing Shopping project with conservative synonym/overlap rules, skip pantry staples (salt/pepper), and sum quantities when units match. Also saves each cooked recipe into the workspace cookbook (recipes/).
Teams using recipe-to-list should expect a more consistent output, faster repeated execution, less prompt rewriting.
When to use this skill
- You want a reusable workflow that can be run more than once with consistent structure.
When not to use this skill
- You only need a quick one-off answer and do not need a reusable workflow.
- You cannot install or maintain the underlying files, dependencies, or repository context.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/recipe-to-list/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How recipe-to-list Compares
| Feature / Agent | recipe-to-list | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
Turn recipes into a Todoist Shopping list. Extract ingredients from recipe photos (Gemini Flash vision) or recipe web pages (search + fetch), then compare against the existing Shopping project with conservative synonym/overlap rules, skip pantry staples (salt/pepper), and sum quantities when units match. Also saves each cooked recipe into the workspace cookbook (recipes/).
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
SKILL.md Source
# Create Shopping List (Gemini Flash + Todoist)
Target flow:
1) Input is either a **photo** or a **recipe web search**
2) Extract ingredients (Gemini Flash for photos; web_fetch text → Gemini for websites)
3) Pull current Todoist **Shopping** list
4) Compare using overlap + synonym mapping (kept conservative; only merge high-confidence equivalents like coriander↔cilantro, panko↔breadcrumbs)
5) Update **Shopping** (default: add only missing items; skip salt/pepper)
Use the bundled script to handle the **photo → ingredients → Shopping update** part.
It also **automatically saves** a markdown entry into `recipes/` (your cookbook knowledge base) and appends to `recipes/index.md`.
For **recipe-name → web search**, do it confirm-first using `web_search` + `web_fetch`, then feed the ingredients into the same update logic (and save the recipe).
## Prereqs
- Env: `GEMINI_API_KEY` (or `GOOGLE_API_KEY`) for Gemini
- Env: `TODOIST_API_TOKEN` for Todoist
- Bin: `todoist` (todoist-ts-cli)
## Output formatting
- Items are reformatted to start with the **ingredient name**, followed by a parenthetical quantity.
- The Shopping list is kept **flat** (no Todoist sections/groups).
## Run
```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"
```
### Optional flags
- `--model gemini-2.0-flash` (default; falls back automatically) or any compatible Gemini vision model
- `--dry-run` to print extracted items without creating tasks
- `--prefix "[Recipe] "` to prefix each created task
- `--no-overlap-check` to skip checking your existing Shopping list
- `--include-pantry` to include salt/pepper
- `--no-save` to skip saving into `recipes/`
## What to send to the model
The script prompts Gemini to return **strict JSON**:
```json
{
"items": ["2 large globe eggplants", "kosher salt", "..."],
"notes": "optional"
}
```
If parsing fails, rerun with a clearer crop (ingredients list only) or provide a manual list.Related Skills
moltslist
Agent marketplace for trading services, tools, and tasks using virtual credits.
listonic
Access Listonic shopping lists: list lists/items, add/check/delete items, and manage lists.
recipes
CLI for AI agents to find recipes for their humans. Uses TheMealDB API. No auth required.
percept-listen
Ambient audio capture and transcription for OpenClaw agents via wearable devices.
spaces-listener
Record, transcribe, and summarize X/Twitter Spaces — live or replays. Auto-downloads audio via yt-dlp, transcribes with Whisper, and generates AI summaries.
tandoor-recipes
Manage recipes, meal plans, and shopping lists in Tandoor Recipe Manager.
xmtp-cli-list
List conversations, members, and messages from the XMTP CLI. Use when listing or finding conversations.
google-imagen-3-hyperrealistic-landscape
Generate hyperrealistic landscape photography using Google Imagen 3. Use when creating breathtaking natural scenes, landscapes, and nature photography with exceptional detail and realism.
listing-swarm
Submit your AI product to 70+ AI directories.
telegram-todolist
Telegram bot Todo List manager.
heartbeat-checklist
Run these checks periodically (2-4x daily).
ai-specialists
Interact with AI Specialists via the AI Specialists Hub MCP endpoint.