🎨NutriPalette营养调色盘 v{{version}}
💾 保存配方 📂 加载配方 ⚙️ 设置
📊 每日代谢 & 热量概览
每日总消耗 TDEE
{{fmt0(tdee)}} 千卡
BMR {{fmt0(bmr)}} 千卡
减脂建议摄入
{{fmt0(intake.min)}}–{{fmt0(intake.max)}} 千卡
最低不低于 {{intake.floor}} 千卡
今日已摄入
{{fmt0(realKcal)}} 千卡
{{log.length}} 条记录
当前热量缺口
{{fmt0(gapInfo.gap)}} 千卡
{{gapInfo.label}}

本餐食材({{mealLabel(selectedMeal)}})➕ 添加

这一餐还没加食材~ 去「➕ 添加食材」或「🍓 食材库」挑选。
{{foodEmoji(e)}}
{{foodName(e)}}
⚡ {{fmt0(entryKcal(e))}} kcal · 🥚 {{fmt1(entryNutrient(e,'protein'))}}g · 🧈 {{fmt1(entryNutrient(e,'fat'))}}g · 🍞 {{fmt1(entryNutrient(e,'carb'))}}g
{{foodExtra(e)}}
g
📋 🗑

本餐汇总({{mealLabel(selectedMeal)}})

{{b.label}} {{fmt1(b.value)}} {{b.unit}}{{b.statusText}} {{b.rangeText}}

全天宏量达标

{{b.label}} {{fmt1(b.value)}} {{b.unit}}{{b.statusText}} {{b.rangeText}}
蛋白质按 {{proteinModeLabel}} · 脂肪占热量 20%–30% · 碳水 2.0–4.0 g/kg · 膳食纤维 25–30g · 钠 <2000mg · 钙 {{profile.gender==='female'?'800–1000':'800'}}mg。

食材库

每样食材按每 100g 营养基准保存;点「➕ 加入」放入对应餐次,克重可随时改。
没有匹配的食材~ 去「➕ 添加食材」新建。
{{f.emoji || '🍽️'}}
{{f.name}}
{{foodStats(f)}}
➕ 加入 ✏️ 🗑

食材录入

📷
点击 / 拖拽上传营养成分表截图
大模型图片理解,自动识别每 100g 营养数值
预览
✨ 开始识别 清空图片
⚠️ 尚未配置 API Key,仅支持手动录入。配置完成后即可解析图片 / 文本。
⚙️ 去设置里配置 API
粘贴营养成分文本(#NUTRI_100G_BASE 格式,每 100g 基准)
✨ 解析文本
⚠️ 尚未配置 API Key,仅支持手动录入。配置完成后才允许解析 #NUTRI_100G_BASE 格式文本。
⚙️ 去设置里配置 API
食材名称 *
图标 Emoji
加入餐次
食用克重 (g)
以下为每 100g 营养基准(能量必填,其余可留空):
{{n.label}} ({{n.unit}}/100g) *
功能性物质(β‑葡聚糖 / Omega‑3 等,仅展示不参与计算)
{{editingFoodId?'💾 更新食材':'➕ 加入食材'}} 取消编辑

身体参数

当前配置
{{profileSummary}}
⚙️ 编辑身体参数 & API 配置
切换性别 / 修改参数后,BMR、TDEE、每日目标、餐次区间、看板会立即整体重算。全程使用目标体重(非当前体重)。

每日代谢概览

基础代谢 BMR
{{fmt0(bmr)}} 千卡Mifflin‑St Jeor 公式
每日总消耗 TDEE
{{fmt0(tdee)}} 千卡BMR × 活动系数
减脂建议摄入
{{fmt0(intake.min)}}–{{fmt0(intake.max)}} 千卡最低不低于 {{intake.floor}} 千卡
当前热量缺口
{{fmt0(gapInfo.gap)}} 千卡{{gapInfo.label}}

每日宏量目标

{{t.label}}{{t.note}}
{{t.range}}

餐次分配

{{m.icon}} {{m.label}}
{{Math.round(m.min*100)}}%–{{Math.round(m.max*100)}}%

📖 营养计算说明

什么是 BMR(基础代谢)

BMR 指人躺着不动、清醒、环境温度适宜的状态下,一天维持心跳、呼吸、细胞基础运转所需消耗的最低热量。系统按性别使用不同公式:

女性:BMR = 10×体重 + 6.25×身高 − 5×年龄 − 161
男性:BMR = 10×体重 + 6.25×身高 − 5×年龄 + 5
(体重 kg,身高 cm,年龄周岁,全程使用目标体重)

什么是 TDEE(每日总能量消耗)

TDEE = BMR × 活动系数,代表一整天真实的全部热量消耗。

  • 摄入 = TDEE → 体重维持不变
  • 摄入 < TDEE → 产生缺口,体重下降
久坐 1.2 · 轻度活动 1.375 · 中等活动 1.55 · 高强度 1.725

减脂热量缺口逻辑

采用 ‑300 ~ ‑500 千卡温和缺口;安全最低摄入:女性 1200、男性 1500 千卡。

  • ‑300 ~ ‑500:✅ 完美减脂区间
  • 0 ~ ‑300:⚠️ 缺口过小
  • < ‑500:❌ 过度节食
  • > 0:⚠️ 热量盈余

宏量营养素简单理解

  • 蛋白质:保肌肉、增饱腹(减脂保肌 1.2–1.6,力量健身 1.6–2.2 g/kg)。
  • 脂肪:激素必需(20%–30%,女性 ≥0.8、男性 ≥0.7 g/kg)。
  • 碳水:供能主力,不建议断碳(2.0–4.0 g/kg)。
  • 膳食纤维:25–30g/天。 <2000mg。 女 800–1000 / 男 800mg。

餐次分配说明

  • 早餐 25%–30%
  • 午餐 30%–35%
  • 晚餐 25%–30%
  • 加餐 5%–15%

NutriPalette 营养调色盘 · v{{version}} · 内测版(数据仅存本机)

性别 👩 女性 👨 男性
目标体重 (kg)
身高 (cm)
年龄 (周岁)
蛋白质目标
日常活动等级 久坐 1.2(办公室、几乎不运动) 轻度 1.375(每周 1‑3 次轻运动) 中等 1.55(每周 3‑5 次健身) 高强度 1.725(每周 6‑7 次训练)
当前餐次
🔌 OpenAI 兼容 API 配置
接口地址
API Key
模型 ID
System Prompt(可编辑) 恢复默认提示词
🔌 测试连通 💾 保存 🗑 清空
🔒 安全提示:所有配置(含 Key)仅保存在本机浏览器 localStorage,不会上传到任何第三方服务器;请求由浏览器直接(fetch)发往你填写的接口地址。若遇跨域(CORS)拦截,可将「接口地址」填为你部署的 Cloudflare Worker 代理(见项目 README),例如 https://你的worker.workers.dev/v1/chat/completions
{{addTargetFood.emoji||'🍽️'}} {{addTargetFood.name}}
{{m.icon}} {{m.label}}
将保存当前全部 {{log.length}} 条饮食记录(含餐次与克重)。
还没有保存的配方~
📦
{{r.name}}
{{r.log.length}} 条记录 · 约 {{fmt0(recipeKcal(r))}} kcal
加载 🗑