每天从 7 个开源菜谱仓库拉最新内容,各自解析、校验,再转成统一的静态 JSON API,发布到 GitHub Pages。
目前完整构建一次大约有 884 道有效菜谱和 18 篇烹饪技巧。外文菜谱保留原文,OpenWebUI 回答时再按需翻译。
| 来源 | 当前有效菜谱 | 原文语言 | 许可证 |
|---|---|---|---|
| HowToCook | 366 | 中文 | The Unlicense |
| Git Food | 44 | 英文 | MIT |
| Sichuan Cookbook | 312 | 中文 | BSD-3-Clause |
| Japanese Recipes | 33 | 英文 | The Unlicense |
| Chowdown | 34 | 英文 | The Unlicense |
| Bastian's Recipes | 8 | 德文 | MIT |
| OpenStove | 87 | 英文 | CC BY-NC-SA 4.0 |
Bastian 仓库里还有 2 个只有 TODO 的空文件,构建时会直接跳过。HowToCook 同步到 367 道,其中 1 道内容完全重复,有效数记为 366;完全一样的菜谱只留一份。
OpenStove 按 CC BY-NC-SA 4.0 仅限非商业用途。每条菜谱都保留作者署名、原始文件链接和许可证链接,并注明本项目只做了格式转换。细节见 ATTRIBUTIONS.md。
线上:https://kingpollux.github.io/howtocook-auto-api/api
/recipes.json:轻量目录,适合搜索/recipes/{id}.json:完整菜谱(食材、步骤、原文、来源署名)/tips.json、/tips/{id}.json:烹饪技巧/sources.json:各来源的数量、提交版本、同步状态和许可证/meta.json:本次构建总数和验证状态/duplicates.json:判定为完全重复的记录
GitHub Actions 每天北京时间约 08:20 跑一次,也支持手动触发和推送代码触发。
每个来源单独解析、单独验证:
- 数量异常、缺食材或缺步骤时,不发布该来源的新数据
- 某个来源暂时下不下来,就从当前线上 API 沿用它上一次成功的数据
- 其他正常来源照常更新
- 新来源首次接入就失败、又没有旧数据可回退时,整次部署会停掉
- 验证失败不会覆盖线上已有 API
工具文件:
openwebui/howtocook_auto_api_tool.py
在 OpenWebUI 0.10.x 里打开 Workspace → Tools,用这个文件的全部内容替换旧工具并保存。API 地址默认已经指向本项目的 GitHub Pages。
新版工具可以:
- 按菜名、食材、菜系、来源、语言搜索
- 查看全部来源和同步状态
- 拉完整菜谱时自动带上原始仓库、原始文件、署名和许可证
- 继续搜 HowToCook 的烹饪技巧
装好依赖后:
npm ci
npm test
upstream/ 里需要有工作流里列出的 7 个来源目录。生成的 public/api/ 不进仓库,由 GitHub Actions 发布。
人工协助微调,可能代码不漂亮,但胜在能用。