前言¶
开发者常接到这类请求:「帮我把这个做菜视频整理成菜谱」。问题在于视频内容不在上下文里:字幕要下载、音频要转写、食材用量和步骤顺序要识别,最后还要落成一份能复用的文件。厨神把这些步骤打包成一个 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:用户提供视频链接¶
- 解析链接,识别平台(抖音/B站/YouTube/小红书)。
- 运行内置 fetcher,下载视频并提取音频:
cd ~/.workbuddy/skills/recipe-chef/scripts
python3 fetch_video.py "链接" --output-dir "./tmp/{video_id}" --extract-audio
- 读取产物:
metadata.json(标题、作者、时长、平台、来源 URL)、post_caption.txt(平台文案/描述)、transcript.txt(字幕/口播文本)、audio.mp3(用于 Agent 进一步转写)。 - 内容分类判断:烹饪教学/演示则继续;探店、吃播、纯展示、非烹饪则告知用户并停止。
- 视频时长超过 30 分钟时,提醒用户处理时间可能较长。
- 读取
prompts/recipe_generation.md作为生成提示。 - 基于 transcript + caption + metadata 生成结构化菜谱。
- 多菜品视频拆分为多个独立 Markdown 文件。
- 保存到项目工作区
recipes/YYYY-MM-DD_菜名_作者.md。 - 在对话中预览关键信息并告知文件保存路径。
场景 B:用户直接提供文本¶
- 内容分类判断。
- 直接基于文本生成菜谱。
- 保存文件,无视频来源时标注「纯文本输入」。
- 预览并告知路径。
各平台下载策略¶
内置 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