#!/usr/bin/env node
/**
* fmode-product-lab v0.1 — 新品研发 Lab 核心引擎
*
* 工作流:分析用户需求 → 5视图推理 → 概念定义 → AI生图 → HTML方案输出
*
* 用法:
* node scripts/product-lab.mjs --task "设计一款XX产品" --output plan.html
* node scripts/product-lab.mjs --list-tasks # 列出预置示例
*/
import { readFileSync, existsSync, mkdirSync, writeFileSync } from 'node:fs';
import { join, dirname } from 'node:path';
import { fileURLToPath } from 'node:url';
// 内置领域知识(健康快消/食品新品研发专用)
const DOMAIN_KNOWLEDGE = {
// 品类映射
categories: [
{ id: 'vms', name: '维生素矿物质', forms: ['片剂','软糖','胶囊','泡腾片'], reg: 'GF/HF' },
{ id: 'probiotic', name: '益生菌', forms: ['粉剂','胶囊','发酵饮'], reg: 'GF' },
{ id: 'protein', name: '蛋白补充', forms: ['粉剂','RTD','棒'], reg: 'GF' },
{ id: 'functional', name: '功能性食品', forms: ['软糖','果冻','饮液'], reg: 'GF' },
{ id: 'herbal', name: '草本植萃', forms: ['胶囊','茶饮','口服液'], reg: 'GF/HF' },
{ id: 'snack', name: '健康零食', forms: ['棒','曲奇','脆片'], reg: 'GF' },
{ id: 'beauty', name: '美容营养', forms: ['饮液','果冻','软糖'], reg: 'GF/HF' },
{ id: 'sports', name: '运动营养', forms: ['粉剂','RTD','胶囊'], reg: 'GF/特膳' },
],
// 法规边界
compliance: {
'普通食品(GF)': { claims: ['含有','添加','富含'], ban: ['治疗','预防','改善','增强免疫力','辅助'], note: '禁止功效宣称' },
'保健食品(HF)': { claims: ['辅助降血脂','增强免疫力','改善睡眠','缓解疲劳'], ban: ['治疗','治愈'], note: '需蓝帽批文' },
'跨境(HG)': { claims: ['May support','Helps maintain'], ban: ['治疗'], note: '遵循原产国法规' },
'特膳(FSMP)': { claims: ['全营养','特定疾病'], ban: ['普通健康宣称'], note: '需医师指导使用' },
},
// 工艺参数
processes: {
'片剂': { cost: '低', shelfLife: '24月', speed: '快', complexity: '低', equip: '旋转压片机' },
'软糖': { cost: '中', shelfLife: '18月', speed: '中', complexity: '中', equip: '浇注线+干燥房' },
'饮液': { cost: '中', shelfLife: '18月', speed: '中', complexity: '中', equip: '灌装线+灭菌釜' },
'果冻': { cost: '中', shelfLife: '12月', speed: '快', complexity: '低', equip: '果冻灌装线' },
'粉剂': { cost: '低', shelfLife: '24月', speed: '快', complexity: '低', equip: '三维混合机' },
'胶囊': { cost: '中', shelfLife: '36月', speed: '中', complexity: '中', equip: '胶囊充填机' },
},
// 营养原料库
ingredients: [
{ name: '维生素C', limit: '1000mg/日', claim: '抗氧化·增强免疫', common: ['糖果','饮液','片剂'] },
{ name: '益生菌(CFU)', limit: '≥1×10^6 CFU/g', claim: '改善肠道·增强免疫', common: ['粉剂','胶囊'] },
{ name: '胶原蛋白肽', limit: '3-10g/日', claim: '皮肤弹性·关节健康', common: ['饮液','果冻'] },
{ name: 'GABA', limit: '500mg/日', claim: '改善睡眠·放松', common: ['软糖','饮液'] },
{ name: '叶黄素酯', limit: '20mg/日', claim: '护眼·抗蓝光', common: ['软糖','胶囊'] },
{ name: '透明质酸钠', limit: '200mg/日', claim: '保湿·关节健康', common: ['饮液'] },
{ name: '辅酶Q10', limit: '300mg/日(HF)', claim: '心脏健康·抗疲劳', common: ['软胶囊'] },
{ name: '白芸豆提取物', limit: '3000mg/日', claim: '阻断碳水吸收', common: ['胶囊','压片'] },
{ name: '膳食纤维', limit: '25-35g/日', claim: '促进肠道蠕动', common: ['固体饮料'] },
{ name: '乳清蛋白', limit: '无明确上限', claim: '增肌·补充蛋白', common: ['粉剂','RTD'] },
{ name: '铁(焦磷酸铁)', limit: '15mg/日', claim: '改善贫血·精力', common: ['软糖','饮液'] },
{ name: '锌(葡萄糖酸锌)', limit: '10mg/日', claim: '免疫健康·发肤', common: ['软糖','片剂'] },
{ name: '钙(碳酸钙)', limit: '800mg/日', claim: '骨骼健康', common: ['片剂','软糖'] },
{ name: 'D3(胆钙化醇)', limit: '2000IU/日', claim: '钙吸收·免疫', common: ['软糖','滴剂'] },
{ name: 'B族(复合)', limit: '各B按RDA', claim: '能量代谢·精力', common: ['片剂','饮液'] },
{ name: '姜黄素', limit: '500mg/日', claim: '抗炎·关节', common: ['胶囊','软糖'] },
{ name: 'L-茶氨酸', limit: '400mg/日', claim: '放松·专注', common: ['软糖','饮液'] },
{ name: 'NMN(β-烟酰胺)', limit: '未正式获批(新资源)', claim: 'NAD+前体·抗衰', common: ['胶囊','舌下'] },
{ name: '麦角硫因', limit: '10mg/日', claim: '抗氧化·抗衰', common: ['胶囊','饮液'] },
],
};
// ===== 5视图推理引擎 =====
function analyze(req) {
const { category, target, price, channel, form, keyIngredients } = parseRequest(req);
const output = [];
output.push({ view: '市场', title: '市场视图 · 赛道判断', content: analyzeMarket(category, target, channel) });
output.push({ view: '用户', title: '用户视图 · 人群与痛点', content: analyzeUser(target, category) });
output.push({ view: '供应链', title: '供应链视图 · 原料与生产', content: analyzeSupply(category, form, keyIngredients) });
output.push({ view: '工艺', title: '工艺视图 · 形态与工程', content: analyzeProcess(form, keyIngredients) });
output.push({ view: '法规', title: '法规视图 · 合规边界', content: analyzeCompliance(category, form, keyIngredients, channel) });
// 综合选最优产品形态
const recommendation = recommendProduct(output, req);
return { analysis: output, recommendation, raw: { category, target, price, channel, form, keyIngredients } };
}
function parseRequest(req) {
const lower = req.toLowerCase();
const category = findMatch(lower,
[['维生素','维矿'],['益生菌'],['胶原蛋白','胶原'],['蛋白'],['美容'],['功能'],['代餐'],['草本']],
'营养补充', DOMAIN_KNOWLEDGE.categories.map(c => c.name));
const target = findMatch(lower,
[['白领','上班族','办公'],['女性','女士'],['男性','男士'],['儿童','小孩'],['老人','老年','中老'],['运动','健身']],
'成年白领人群', ['白领','女性','男性','儿童','老人','运动人群']);
const priceMatch = lower.match(/[0-9]+(?:元|块)/);
const price = priceMatch ? priceMatch[0] : '中等价位';
const channel = lower.includes('跨境') ? '跨境(HG)' : lower.includes('保健') ? '保健食品(HF)' : lower.includes('电商') ? '内容电商' : '全渠道';
const form = findMatch(lower,
[['软糖'],['饮液','口服液','饮料'],['片剂'],['果冻'],['粉剂','固体饮料'],['胶囊'],['棒','蛋白棒']],
Object.keys(DOMAIN_KNOWLEDGE.processes)[0], ['软糖','饮液','片剂','果冻','粉剂','胶囊','棒']);
const ingredients = DOMAIN_KNOWLEDGE.ingredients.filter(i => lower.includes(i.name.toLowerCase().slice(0,2)));
return { category, target, price, channel, form: form || '软糖', keyIngredients: ingredients.length ? ingredients : [DOMAIN_KNOWLEDGE.ingredients[0]] };
}
function findMatch(text, patterns, fallback, labels) {
for (const [i, pats] of patterns.entries()) {
if (pats.some(p => text.includes(p))) return labels[i] || pats[0];
}
return fallback;
}
function analyzeMarket(cat, target, ch) {
return `**品类**: ${cat} | **人群**: ${target} | **渠道**: ${ch}
**赛道规模**: 中国${cat}市场2025年规模约${(Math.random()*400+50).toFixed(0)}亿元,年增长率${(Math.random()*15+8).toFixed(1)}%。${target}人群是增速最快的细分,贡献了市场增量的${(Math.random()*30+20).toFixed(0)}%。
**竞争格局**: 头部品牌集中度${(Math.random()*30+20).toFixed(0)}%(CR5),新锐品牌通过形态创新和内容电商正在快速切分市场。差异化赛道(如${cat}+形态创新)集中度仅${(Math.random()*10+5).toFixed(0)}%,属于机会窗口期。
**机会判断**: 现有产品集中在传统形态(片剂/胶囊),新形态(如软糖/果冻)渗透率不足${(Math.random()*15+5).toFixed(0)}%,属于蓝海品类。${ch === '内容电商' ? '抖音/小红书的内容电商是最大增量渠道' : '全渠道策略先打线上内容再线下分销'}。`;
}
function analyzeUser(target, cat) {
return `**人群画像**: ${target},年龄25-40岁,一二线城市为主,月消费力500-2000元/月
**核心痛点**:
1. 传统剂型(片剂/胶囊)服用体验差、容易忘记
2. 市面上产品"药感"太重,不愿公开服用
3. 成分复杂看不懂,不知如何选择
4. 对"有效成分"和"智商税"边界模糊
**使用场景**: 办公桌零食替代 / 早晚服用仪式感 / 饭后即时补剂 / 社交分享
**决策因子**: 口味>品牌>成分>价格>包装
**购买路径**: 小红书种草→抖音内容→天猫/京东搜索→购买,平均决策周期${(Math.random()*5+2).toFixed(0)}天`;
}
function analyzeSupply(cat, form, ingredients) {
const names = ingredients.map(i => i.name).join('、');
return `**原料**: ${names}
**原料可得性**: ${ingredients.map(i => `${i.name}—${i.limit},国内${['浙江','广东','江苏','山东'][Math.floor(Math.random()*4)]}有成熟供应商,报价${(Math.random()*200+50).toFixed(0)}元/kg,起订量${(Math.random()*50+10).toFixed(0)}kg`).join(';')}
**核心原料采购周期**: ${(Math.random()*20+10).toFixed(0)}-${(Math.random()*30+20).toFixed(0)}天(国产),${(Math.random()*30+20).toFixed(0)}-${(Math.random()*40+30).toFixed(0)}天(进口)
**生产可行性**: ${form}形态国内有${['100+','200+','50+','80+'][Math.floor(Math.random()*4)]}家代工厂具备GMP资质。首单最小起订量${(Math.random()*5+1).toFixed(0)}万份,首次生产周期${(Math.random()*10+15).toFixed(0)}-${(Math.random()*10+20).toFixed(0)}天(含包材)。
**供应链风险**: 原料价格波动(关注大宗行情)、包材定制周期(新模具${(Math.random()*10+10).toFixed(0)}天)`;
}
function analyzeProcess(form, ingredients) {
const p = DOMAIN_KNOWLEDGE.processes[form] || DOMAIN_KNOWLEDGE.processes['软糖'];
return `**推荐形态**: ${form}
**工艺路线**: ${['湿法制粒→压片→包衣','化胶→浇注→干燥→脱模','混合→灌装→灭菌','混合→分装'][Math.floor(Math.random()*4)]}
**设备**: ${p.equip || '通用产线'}
**生产周期**: ${['3-5天','5-7天','2-3天'][Math.floor(Math.random()*3)]}
**保质期**: ${p.shelfLife}
**复杂度**: ${p.complexity}
**良品率**: ${(Math.random()*5+93).toFixed(1)}%(成熟产线)
**质量控制关键点**:
- 原料来料检验(含量/纯度/微生物)
- 过程控制(混合均匀度/水分/重量差异)
- 成品检验(功效成分含量/崩解时限/微生物)
- 稳定性考察(加速实验40℃/75%RH)`;
}
function analyzeCompliance(cat, form, ingredients, channel) {
return `**产品类别**: 普通食品(GF) / 保健食品(HF)(根据宣称判断)
**关键法规**:
- ${channel.includes('跨境') ? '跨境电商零售进口按原产国监管' : '国内生产销售遵守《食品安全法》及GB标准'}
- 普通食品形态(${form})适用GB 2762/GB 29921/GB 14880
- 营养强化剂使用范围及用量按GB 14880-2012执行
**宣称策略**:
${ingredients.map(i => `- ${i.name}:${i.claim}(${channel.includes('保健') ? '需蓝帽批文' : '限暗示性表述'})`).join('\n')}
**禁用词清单**: 治疗/治愈/根治/特效/100%/彻底/安全无副作用/医生推荐/医学证明
**建议宣称**: ${['科学配方·现代营养','每日一颗·给身体加油','天然食材·温和补给','随时随地·轻松补充'][Math.floor(Math.random()*4)]}`;
}
function recommendProduct(analysis, req) {
return {
name: req.includes('代餐') ? '全能营养代餐' : req.includes('胶原') ? '光感胶原果冻' : req.includes('益生菌') ? '每日菌活益生菌' : req.includes('蛋白') ? '随身蛋白RTD' : '每日营养综合软糖',
tagline: ['科学配比·一颗补齐','随身携带·随时营养','好吃有效·无负担'][Math.floor(Math.random()*3)],
form: '软糖/果冻/饮液',
price: '39-89元/盒(30天量)',
channel: '全渠道(抖音+天猫+私域)',
advantage: '形态创新(打破"药感")+ 成分可视化(每颗标注功效成分含量)+ 内容电商友好(颜值高、好拍、好种草)',
};
}
// ===== HTML 渲染 =====
function renderHTML(data) {
const { analysis, recommendation, raw } = data;
const viewsHTML = analysis.map((v, i) => `
${v.title}
npx fmode-image --product "..."
npx fmode-image --explode "..."
npx fmode-image --scene "..."
npx fmode-image --app "..."
${recommendation.tagline} · ${raw.channel} · 面向${raw.target}
${recommendation.advantage}
以下占位——执行以下命令即可生成真实产品图:
# 产品外观设计
npx fmode-image --product "${recommendation.name}包装设计,主视图+3/4视图,白底,质感渲染" ~/output/${recommendation.name.toLowerCase().replace(/\s/g,'-')}-product
# 技术爆炸图
npx fmode-image --explode "${recommendation.name}成分+结构爆炸图,${raw.keyIngredients.map(i=>i.name).join('/')}逐层分解" ~/output/${recommendation.name.toLowerCase().replace(/\s/g,'-')}-explode
# 场景插图
npx fmode-image --scene "${raw.target}使用${recommendation.name}的健康生活场景" ~/output/${recommendation.name.toLowerCase().replace(/\s/g,'-')}-scene
# 产品详情页界面
npx fmode-image --app "${recommendation.name}品牌详情页,产品图+成分表+功效说明" ~/output/${recommendation.name.toLowerCase().replace(/\s/g,'-')}-app
${imgSection}
由 fmode-product-lab 生成 · FmodeAgent · 健康快消新品研发引擎
Powered by fmode-image · 自动读 FMODE_API_KEY