【SKILL创作】🍳 用 SOLO 做了个「今天吃什么」智能烹饪助手,解决选择困难症!

Skill 名称how-to-cook-skill
一句话说明:不知道吃什么?告诉我人数、口味偏好,自动推荐菜品搭配,附营养信息、辣度标注、购物清单,还能教烹饪技法。


:pushpin: 解决什么问题

相信每个人都经历过这个灵魂拷问:今天吃什么?

  • 下班路上刷手机,翻了半小时外卖不知道点什么
  • 周末想自己做,但脑袋空空想不出菜单
  • 想吃低脂餐但不知道哪些菜合适
  • 家里有鸡蛋豆腐,能做几道菜?
  • 想买菜但没灵感,买回来又做不成一顿饭
  • 炒菜时突然忘了"焯水是冷水还是热水下锅"

这个 Skill 就是为了解决这些问题而生的。它基于开源项目 HowToCook(收录了数百道家常菜谱),通过智能推荐引擎,让你:

:white_check_mark: 按人数自动搭配(2人2道菜,4人4道菜)
:white_check_mark: 标注卡路里、蛋白质、碳水、脂肪
:white_check_mark: 标注辣度(0-5级)
:white_check_mark: 根据家中食材反推能做什么菜
:white_check_mark: 一键生成分类购物清单
:white_check_mark: 内置烹饪技法教程(焯水、炒煎、油温判断等)
:white_check_mark: 支持低脂餐、不吃辣等筛选


:bullseye: 核心功能一览

1. 智能推荐菜单卡片

一句话告诉它你的需求,返回精心搭配的菜单:

今日推荐(2 人份)
========================================

1. 荷兰豆炒腊肠
   卡路里: 1365kcal | 蛋白质: 19.6g | 碳水: 14.5g | 脂肪: 136.5g
   难度: ★★ | 预计时间: 15-25 分钟
   类型: 荤菜 | 不辣 | 口味: 快手/低脂/清淡

2. 蒜香黄油虾
   卡路里: 0kcal | 蛋白质: 0g | 碳水: 0g | 脂肪: 0g
   难度: ★★ | 预计时间: 15-25 分钟
   类型: 水产 | 不辣 | 口味: 快手/清淡

2. 菜谱详情(含做法和分量估算)

原始菜谱很多没有精确分量?Skill 会根据用餐人数智能估算参考值:

【蒜蓉虾】
========================================
难度: ★★ | 辣度: 不辣 | 卡路里: 959kcal/份
预计时间: 15-25 分钟
类型: 水产

食材(2 人份):
  - 海虾: 约 200g (海虾约 8-12 只)
  - 蒜蓉酱: 约 30g (约 5-6 瓣蒜)
  - 食用油: 适量 (约 10-15ml)
  - 生抽: 约 15ml (约 1 汤匙)

  * 注:原始菜谱未标注精确用量,以上为参考估算值,可根据口味自行调整

步骤:
  1. 用刀从虾头中间切开,切到距离虾尾 1cm
  2. 将蒜蓉酱铺在虾身中间,放在盘子中
  3. 锅中倒入热水,将盘子放入锅中,大火蒸 3 分钟
  4. 烧热油,倒入虾盘中,倒入生抽

3. 分类购物清单

推荐菜品后,一键生成按类别整理的购物清单:

🛒 购物清单(蒜香黄油虾 + 荷兰豆炒腊肠)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

  海鲜水产
    海虾

  肉禽蛋
    鸡蛋、腊肠

  蔬菜菌菇
    荷兰豆、大蒜

  辅料调味
    黄油、蒜蓉酱

  调料
    食用油

4. 食材反推

告诉 Skill 家里有什么,它能推荐出能做的菜:

家里食材:鸡蛋、西红柿、豆腐

可以做的菜(共找到 8 道):
  - 西红柿炒鸡蛋
    匹配度: 80% | 匹配食材: 鸡蛋, 西红柿 | 450kcal
  - 豆腐蒸蛋
    匹配度: 60% | 匹配食材: 鸡蛋, 豆腐 | 320kcal

5. 营养信息查询

快速查询每道菜的卡路里和三大营养素:

【宫保鸡丁】
  卡路里: 380kcal | 蛋白质: 28g | 碳水: 15g | 脂肪: 22g
  辣度: ★★★/5 | 类型: 荤菜

6. 烹饪技法教程

内置 HowToCook 的 tips/ 教程文档,烹饪新手不用到处搜:

【油温判断技巧】
分类: 高级技巧
关键词: 油温, 炸, 煎, 炒

三四成热:油面平静,适合滑炒
五六成热:油面有波纹,适合煎炸
七八成热:油面翻腾,适合爆炒、复炸

7. 一日三餐推荐

☀️ 早餐
  - 苏格兰蛋 | 卡路里: 887kcal | 预计时间: 25-40 分钟

🌤️ 午餐(工作日快手菜)
  1. 蒜蓉虾 | 卡路里: 959kcal | 水产 | 难度: ★★
  2. 荷兰豆炒腊肠 | 卡路里: 1365kcal | 荤菜 | 难度: ★★

🌙 晚餐(清淡搭配)
  1. 鳊鱼炖豆腐 | 卡路里: 458kcal | 水产 | 难度: ★★★
  2. 牛排 | 卡路里: 717kcal | 荤菜 | 难度: ★★★★

🛒 购物清单(按类别分行展示)

:laptop: 使用方式

CLI 命令行模式

# 推荐菜式(2 人份)
python chef_skill.py recommend --people 2

# 低脂餐 + 不吃辣
python chef_skill.py recommend --diet low_fat --no-spicy

# 根据家中食材推荐
python chef_skill.py recommend --ingredients 鸡蛋 豆腐 --people 2

# 搜索菜谱
python chef_skill.py search 宫保

# 菜谱详情(含做法)
python chef_skill.py detail 宫保鸡丁 --servings 4

# 食材反推
python chef_skill.py ingredients 鸡蛋 西红柿 豆腐

# 烹饪教程
python chef_skill.py tutorial 焯水
python chef_skill.py tutorial 油温

# 生成购物清单
python chef_skill.py recommend --people 3 --shopping-list

AI 对话模式

安装为 SOLO Skill 后,直接用自然语言对话:

你说 AI 自动触发
“今天吃什么” 智能推荐菜单
“想吃点简单的” 推荐快手菜
“宫保鸡丁怎么做” 展示菜谱详情
“家里有鸡蛋能做什么” 食材反推
“怎么焯水” 展示烹饪教程
“推荐几个菜我要去买菜” 推荐 + 购物清单

:hammer_and_wrench: 制作过程

想法来源

最开始只是单纯想解决"今天吃什么"的问题。看到 HowToCook 这个开源项目,里面收录了几百道家常菜谱,格式规范、内容清晰。但它只是一个文档仓库,不能"智能推荐"——于是决定把它变成一个会思考的烹饪助手。

开发思路

作为开发者,拿到 HowToCook 的菜谱 Markdown 文件后,第一件事是数据建模——把非结构化的菜谱文本解析成结构化的 JSON 索引。难点在于原始菜谱没有统一的分量标注和难度标签,所以设计了营养估算模型和辣度推断规则,让每道菜自动带上卡路里、蛋白质、碳水、脂肪和 0-5 级辣度。

推荐引擎是核心。设计时考虑了几个维度:按人数决定搭配数量(2人2道、4人4道)、按场景过滤(工作日推荐快手菜)、按季节调整权重(夏天偏凉拌、冬天偏炖汤)、按饮食模式筛选(低脂/不吃辣)。搭配时还要做菜品去重,避免一顿饭出现两道主食材重复的菜。

食材反推模块通过别名归一化处理"番茄=西红柿"这类问题,计算用户家中食材与菜谱所需食材的覆盖率,按匹配度排序返回。购物清单则把所有食材按"海鲜水产、肉禽蛋、蔬菜菌菇"等类别自动分组,方便超市采购。

最后,用 argparse 封装了 CLI 入口,写了 19 个单元测试覆盖核心逻辑,并把整个项目打包成符合 SOLO Skill 规范的独立技能包。


:open_file_folder: 项目结构

how-to-cook-skill/
├── SKILL.md              # SOLO Skill 描述文件
├── chef_skill.py         # CLI 入口脚本
├── requirements.txt      # Python 依赖
├── README.md             # 使用说明
├── scripts/              # 核心模块
│   ├── index_builder.py      # 索引构建(菜谱 + 教程抓取)
│   ├── recommender.py        # 推荐引擎
│   ├── nutrition_calculator.py  # 营养计算
│   ├── ingredient_matcher.py    # 食材匹配与反推
│   └── recipe_sync.py          # 同步服务
├── data/                 # 数据文件
│   ├── recipes_index.json    # 86 道菜谱索引
│   ├── tutorials_index.json  # 14 篇教程索引
│   ├── nutrition_db.json     # 80+ 食材营养数据库
│   ├── ingredient_aliases.json  # 食材别名映射
│   └── user_preferences.json  # 用户偏好
├── tests/                # 单元测试(19 个)
└── examples/             # 功能示例输出(10 个)

:rocket: 未来可以做的

这个 Skill 现在是个"实用型 MVP",还有很多可以优化的方向。

功能优化

  • 口味偏好学习:记住用户爱吃什么、不爱吃什么,推荐越来越准
  • 季节性推荐:根据当前月份推荐当季食材做的菜
  • 菜品去重:一顿饭不会推荐两道都用大量鸡蛋的菜
  • 热量累计:一天吃了多少卡路里,帮你控制摄入
  • 更多菜谱来源:接入下厨房、美食杰等更多数据源

场景畅想

  • 智能家居联动:推荐完菜谱后自动打开厨房灯光、启动抽油烟机、通过智能音箱播报烹饪步骤。做饭时"动口不动手",喊一声"下一步"就告诉你该做什么
  • 冰箱食材管理:接入智能冰箱或摄像头,实时识别冰箱里有什么食材,过期前自动提醒你"这块豆腐明天要坏了,今晚做个麻婆豆腐吧"
  • 健康数据打通:同步 Apple Health / 小米手环的运动消耗数据,今天跑了 5 公里,自动推荐高蛋白低脂的恢复餐
  • 多人家庭模式:区分家庭成员口味偏好,老公爱吃辣、老婆不吃香菜、孩子要清淡,一键生成全家都能接受的组合菜单
  • 社交分享:一键生成精美的今日菜单卡片分享到朋友圈,附带营养标签和烹饪难度,让做饭也变成一种社交货币

:package: 安装使用

方式一:独立使用(CLI)

# 克隆或下载技能
cd how-to-cook-skill

# 安装依赖
pip install -r requirements.txt

# 构建索引(首次使用)
python chef_skill.py build

# 开始使用!
python chef_skill.py recommend --people 2

方式二:作为 AI Agent 技能安装

本技能遵循 superpowers 规范,可安装到 SOLO AI Agent 中使用。

安装步骤:

# 将技能克隆到 AI Agent 的 skills 目录
git clone <repo-url> <skills-root>/how-to-cook-skill

# 进入技能目录安装依赖
cd <skills-root>/how-to-cook-skill
pip install -r requirements.txt

# 构建菜谱和教程索引(首次使用必须执行)
python chef_skill.py build

安装完成后:

  1. AI Agent 启动时会自动扫描 skills/ 目录,读取 SKILL.md 识别该技能
  2. 当用户输入烹饪相关意图(如"今天吃什么"、“怎么焯水”)时,AI 会自动触发该技能
  3. AI 会主动询问用餐人数、口味偏好、家中食材等信息,返回结构化推荐结果

注意事项:

  • SKILL.md 是 AI Agent 的技能描述文件,定义了触发条件和交互流程,不可删除
  • 索引文件(data/recipes_index.jsondata/tutorials_index.json)必须在首次使用前构建完成,否则 AI 无法执行推荐
  • 如后续菜谱有更新,可运行 python chef_skill.py sync 同步最新数据

感谢阅读!如果你也觉得"今天吃什么"是个世界难题,欢迎试用这个 Skill。

PS: 这篇文档也是 SOLO 帮我总结并完成的 :robot::man_cook::memo: 所以准确来说,这道"菜"是 AI 掌勺、我负责点单 :pot_of_food::sparkles::smiling_face_with_sunglasses: