Foodie Master: Directly Generate Structured Recipes from Cooking Video Links

前言

开发者常接到这类请求:「帮我把这个做菜视频整理成菜谱」。问题在于视频内容不在上下文里:字幕要下载、音频要转写、食材用量和步骤顺序要识别,最后还要落成一份能复用的文件。厨神把这些步骤打包成一个 WorkBuddy skill,输入链接,输出带时间戳、食材清单和可信度标注的 Markdown 菜谱。

下面介绍它的定位、依赖、用法和输出格式。

这是什么

厨神(Chef God)是一个面向 WorkBuddy 的菜谱生成 skill,坐标 @user_9ec9e4b3/chef-god,版本 1.0.0,来源 community,分类 life-service,标签 requires_api_key=false,即无需 API Key。

它把一条做菜视频链接处理成结构化菜谱,流程是:解析链接 → 下载视频 → 提取字幕或音频 → 判断内容是否属于烹饪教学 → 生成 Markdown 菜谱并保存。官方声明的原则是「基于视频,而非想象。可追溯,不造假」,意思是菜谱里的每个信息点要么能回溯到视频内容,要么明确标注为 AI 推断。

视频下载模块基于 kangaroking/kangaroking-skills/video-downloader(MIT)改造适配。

核心能力

按抓取资料,能力包括:

  • 三种输入:视频链接、指令加链接、纯文本描述。
  • 多平台:YouTube、B站、抖音、小红书。
  • 内置 fetcher 同时产出 metadata.json、post_caption.txt、transcript.txt、audio.mp3。
  • 严格分类:只处理烹饪教学/演示类内容,其余停止。
  • 多菜品视频拆分为多个独立 Markdown 文件。
  • 输出带时间戳的步骤和信息可信度表。

安装与环境依赖

安装走 WorkBuddy 的标准 skill 流程,坐标是 @user_9ec9e4b3/chef-god。运行期需要 Python 3.11+、yt-dlp 和 ffmpeg:

pip install -r requirements.txt

ffmpeg 按平台安装:

# Windows
winget install ffmpeg

# macOS
brew install ffmpeg

# Linux
apt install ffmpeg

YouTube 链接需要登录态。官方做法是导出 cookies 文件放到 skill 目录:

# 1. 安装浏览器扩展 Get cookies.txt LOCALLY
# 2. 打开 youtube.com 并登录
# 3. 点击扩展图标 → Export
# 4. 导出文件重命名为 youtube_cookies.txt,放到本 skill 目录

资料里特别提醒不要把真实的 youtube_cookies.txt 提交到 GitHub,仓库已在 .gitignore 中排除该文件。本地 yt-dlp 配置已永久指向这个 cookies 文件。

触发方式

三种输入都支持:

# 1. 直接甩链接
https://www.bilibili.com/video/BV1r34y1u7Uc

# 2. 明确指令 + 链接
帮我生成这个视频的菜谱:https://v.douyin.com/FpwGDC6dptU/

# 3. 纯文本输入
今天教大家做番茄炒蛋。食材:番茄2个,鸡蛋3个...

典型工作流

场景 A:用户提供视频链接

  1. 解析链接,识别平台(抖音/B站/YouTube/小红书)。
  2. 运行内置 fetcher,下载视频并提取音频:
cd ~/.workbuddy/skills/recipe-chef/scripts
python3 fetch_video.py "链接" --output-dir "./tmp/{video_id}" --extract-audio
  1. 读取产物:metadata.json(标题、作者、时长、平台、来源 URL)、post_caption.txt(平台文案/描述)、transcript.txt(字幕/口播文本)、audio.mp3(用于 Agent 进一步转写)。
  2. 内容分类判断:烹饪教学/演示则继续;探店、吃播、纯展示、非烹饪则告知用户并停止。
  3. 视频时长超过 30 分钟时,提醒用户处理时间可能较长。
  4. 读取 prompts/recipe_generation.md 作为生成提示。
  5. 基于 transcript + caption + metadata 生成结构化菜谱。
  6. 多菜品视频拆分为多个独立 Markdown 文件。
  7. 保存到项目工作区 recipes/YYYY-MM-DD_菜名_作者.md。
  8. 在对话中预览关键信息并告知文件保存路径。

场景 B:用户直接提供文本

  1. 内容分类判断。
  2. 直接基于文本生成菜谱。
  3. 保存文件,无视频来源时标注「纯文本输入」。
  4. 预览并告知路径。

各平台下载策略

内置 scripts/fetch_video.py,旧入口 download_video.py 仍兼容。资料列出的策略:

  • 抖音:解析 H5 分享页 window._ROUTER_DATA 做无水印下载,兜底走 yt-dlp 或 CDN 直连。
  • B站:yt-dlp 优先;触发 412 时走公开 API 取 DASH 音频流再用 ffmpeg 转码;再兜底 yt-dlp + 浏览器 cookies。
  • YouTube:yt-dlp + cookies → yt-dlp + EJS 组件(--remote-components ejs:github)→ Invidious/Piped 镜像站 → WebSearch 找博主在其他平台的文字版食谱。
  • 小红书:yt-dlp 为主路由,兜底浏览器 cookies。

输出格式与信息可信度

菜谱保存到项目工作区 recipes/ 目录,文件名 YYYY-MM-DD_菜名_作者.md。结构包含基本信息表、食材清单(含替代建议)、调料表(含放入时机)、食材预处理与烹饪步骤(带时间戳)、关键技巧、成品参考、信息可信度说明。

信息可信度表是这套输出的核心。资料给出的标记规则:

标记 含义
✅ 视频明确说明的内容
🤖 AI 推断,视频只说「适量」「少许」「一块」等
❓ 视频完全未提及

资料还给出两条硬约束:核心步骤缺失超过 40% 时拒绝生成;多菜品必须拆分成独立文件。

下面是官方模板的关键片段,说明时间和可信度是怎么落进文件的:

## 🔪 食材预处理

1. **[01:23]** 五花肉冷水下锅,加姜片、料酒,焯水 5 分钟
   - ⚠️ 注意:冷水下锅才能充分去血水

## 🍳 烹饪步骤

### 步骤 1:炒糖色 [03:45](约 3 分钟)

- **操作**:锅中放少量油,加冰糖,小火慢炒至枣红色
- ⚠️ **关键注意**:火不能大,否则糖色发苦
## ⚠️ 信息可信度说明

| 标记 | 项目 | 来源 | 时间戳 |
|------|------|------|--------|
| ✅ | 菜名:红烧肉 | 视频标题 | — |
| 🤖 | 五花肉用量:约 500g | AI 推断(视频说「一块」) | [00:52] |
| ❓ | 是否加盖 | 视频未提及 | — |

资料附带的质量检查清单要求:所有操作步骤有对应时间戳;所有 AI 推断项在可信度说明中标出;文件命名符合 日期_菜名_作者.md;多菜品已拆分;非烹饪内容已被拒绝。

内容分类与安全

接受的内容是完整做菜教程、核心操作完整的烹饪演示、含 60% 以上完整操作步骤的烹饪内容。分类依据是视频标题、描述和转录文本前 60 秒内容。

拒绝的内容是探店、美食测评、吃播、无操作过程的纯成品展示、食材介绍或科普等非烹饪教学内容。

安全方面,资料写明仅处理用户拥有权限或可合法存档的视频内容,不绕过 DRM、付费墙或平台限制。

适用场景与限制

适合需要把烹饪视频沉淀成可检索、可复用菜谱的场景,尤其是素材量大、人工整理成本高的教学资料归档。纯文本输入也能走通,但那样就没有时间戳可回溯。

限制也明显:依赖 ffmpeg、yt-dlp 和网络可达性;YouTube 需要 cookies;平台策略会随接口变化失效,B站 412 和小红书兜底这类分支本身就是应对手段,不代表稳定可用;超过 30 分钟的视频处理时间会明显变长;分类判断依赖标题、描述和前 60 秒文本,前段没有操作内容的视频可能被误判。

关于

厨神由社区发布者 user_9ec9e4b3 维护,当前版本 1.0.0,无需 API Key。按抓取资料,SkillHub 页面显示评分 100000、下载 941、安装 0;任务线索里的评分 99513、下载 817 与页面数据不一致,这里以页面为准。

官方地址:https://api.skillhub.cn/user_9ec9e4b3/chef-god
SkillHub 页面:https://www.skillhub.cn/skills/user_9ec9e4b3/chef-god

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye