轉換食譜
概述
將現有食譜轉換為 Cooklang 格式,轉換來源包括:
- 網址 - 透過 CookCLI 從食譜網站匯入
- 純文字 - 手動解析貼上的食譜
- 其他格式 - JSON、YAML、Markdown 食譜
適合使用此技能的時機:
- 從網站儲存食譜
- 將手寫食譜數位化
- 從其他格式轉換食譜
流程
步驟 1:識別來源
詢問:「您想要轉換什麼?」
- 網址 - 要匯入的網站連結
- 貼上的文字 - 從其他地方複製的食譜
- 檔案 - 現有其他格式的檔案
步驟 2:匯入或解析
對於網址(使用 CookCLI):
cook import "https://example.com/recipe"
如果 CookCLI 匯入失敗(不支援的網站),則改用手動轉換。
對於貼上的文字或不支援的網站:
- 擷取標題
- 識別份量/產量
- 解析食材列表(尋找數量、單位)
- 將步驟分開
- 記下提及的烹調時間
- 識別所需設備
步驟 3:生成 Cooklang
建立格式正確的 .cook 檔案:
- 中繼資料 - 帶有擷取資訊的 YAML frontmatter
- 食材 - 使用
@標記,並加上適當的數量格式 - 炊具 - 使用
#標記設備 - 計時器 - 擷取時間並使用
~標記 - 步驟 - 每個步驟一個段落
步驟 4:補全缺失資訊
提示使用者提供缺少的資訊:
- 「食譜未指定份量。這是幾人份?」
- 「未提及烹調時間。大約需要多久?」
步驟 5:審查與儲存
顯示轉換後的食譜並詢問:
- 「這個轉換看起來正確嗎?」
- 「要儲存在哪裡?」
範例
使用者:「轉換 https://example.com/banana-bread」
執行:
cook import "https://example.com/banana-bread"
如果成功,輸出已儲存。如果不成功,進行手動轉換:
使用者:「轉換這個食譜: 香蕉麵包 製作 1 條 3 根熟香蕉、1/3 杯融化奶油、3/4 杯糖、1 顆蛋、1 茶匙香草精、1 茶匙小蘇打粉、少許鹽、1.5 杯麵粉 烤箱預熱至華氏 350 度。將香蕉搗成泥,加入奶油、糖、蛋、香草精拌勻。加入乾性材料。倒入烤模。烘烤 60 分鐘。」
生成結果:
---
title: 香蕉麵包
servings: 8
time: 1 小時 15 分鐘
prep time: 15 分鐘
cook time: 60 分鐘
source: (如有已知來源請加上)
tags: [烘焙, 早餐, 甜點]
calories: 280 kcal
carbohydrates: 52 g
protein: 4 g
fat: 7 g
fiber: 2 g
---
將 #烤箱{} 預熱至 350°F。
在一個 #大攪拌碗{} 中,將 @熟香蕉{3} 搗成泥,直到光滑。
加入 @融化奶油{1/3%杯}、@糖{3/4%杯}、@蛋{1} 和 @香草精{1%茶匙},拌勻。
加入 @小蘇打粉{1%茶匙}、@鹽{少許} 和 @中筋麵粉{1.5%杯}。攪拌至剛好混合。
將麵糊倒入一個抹油的 #烤模{} 中。
在 ~烤箱{60%分鐘} 中烘烤,或直到插入中心的牙籤取出時乾淨。
切片前先冷卻。
參考資料
CookCLI 匯入
# 基本匯入
cook import "https://example.com/recipe"
# 指定名稱儲存
cook import "https://example.com/recipe" -o "我的食譜.cook"
支援的網站: CookCLI 使用 recipe-scrapers 函式庫。大多數主要食譜網站都可以運作。如果匯入失敗,請使用手動轉換。
手動轉換模式
需識別的食材模式:
- "3 顆大蛋" →
@大蛋{3} - "1 杯麵粉" →
@麵粉{1%杯} - "鹽適量" →
@鹽 - "2-3 瓣大蒜" →
@大蒜{2-3%瓣} - "1/2 茶匙香草精" →
@香草精{1/2%茶匙}
時間模式:
- "烘烤 30 分鐘" →
~烤箱{30%分鐘} - "燉煮 1 小時" →
~{1%小時} - "靜置 10-15 分鐘" →
~{10-15%分鐘}
設備模式:
- "大碗" →
#大攪拌碗{} - "9x13 烤盤" →
#9x13 烤盤{} - "在平底鍋中" →
#平底鍋{}
中繼資料擷取
尋找這些常見欄位:
- 標題: 食譜名稱,通常是標題
- 份量: "4 人份"、"製作 12 個"、"產量 2 杯"
- 時間: "總時間:45 分鐘"、"準備:15 分鐘,烹調:30 分鐘"
- 來源: 原始網址或 "改編自..."
- 作者: 食譜創作者(如有標註)
營養成分(每份)— 如果有,務必擷取:
calories— 大卡carbohydrates— 克protein— 克fat— 克fiber— 克sugar— 克saturated_fat— 克sodium— 毫克
對於透過 JavaScript 呈現營養資訊的網站(例如 lidl-kochen.de),請務必擷取 /print/ 網址變體——它會回傳包含所有數值的靜態 PDF。
Cooklang 語法提醒
- YAML frontmatter 使用
---(不要使用>>) - 多字食材:
@黑胡椒粉{} - 帶單位的數量:
{500%g},而不是{500g} - 步驟之間用空白行分隔