// ============================================================================== // 江中肝纯片 · VOC 深度洞察报告 · 主渲染器(参考 houguyin-render.js 架构) // ============================================================================== // 设计哲学:正向差异化(DMY 原料真力)+ 反向验证(VOC 实证)× KANO×JTBD 决策 // // 报告结构(8 章 × ~38 slides): // 01 · Cover // 02 · Agenda // 03-05 · Ch1 诘问起点(3 子章):DMY 被误读 / 海王金樽警示 / 反向定位起点 // 06-09 · Ch2 藤茶/DMY 归因学(4 子章):DMY 科学力 / 藤茶认知空白 / 水飞蓟对标 / 可迁移性 // 10-13 · Ch3 护肝市场全景(4 子章):50亿保健地图 / 5 竞品心智 / 人群声量 / 未满足地图 // 14-18 · Ch4 KANO × JTBD(5 子章):KANO 五类 / F / E / S / 决策映射 // 19-22 · Ch5 场景四元素地图(4 子章):应酬解酒 / 脂肪肝 / 熬夜 / 送长辈 // 23-25 · Ch6 竞品三轴图谱(3 子章):三轴地图 / 本品坐标 / 6 竞品精对标 // 26-28 · Ch7 新机会(3 子章):DMY 电商教育 / 餐饮 B2B2C / 礼品孝心 // 29-30 · Ch8 4P 蓝图(2 子章):4P 配称 + 10亿路径 // // Batch 1:cover + agenda + 8 dividers + 28 ComingSoon = ~38 slides 骨架 // Batch 2-5 逐步填充 Ch1-Ch8 真实内容 // ============================================================================== const STYLES = require('./voc-styles.js'); const SCRIPTS = require('./voc-scripts.js'); const LA = require('./liver-analyze.js'); const C = require('./liver-components.js'); const { BRAND, esc, fmtLikes } = C; // ============================================================ // 8 章元信息(按认知深度递进) // ============================================================ const CHAPTERS = [ { id: 1, num: '1', key: 'challenge', title: '诘问起点', en: 'THE CHALLENGE', tone: 'rose', color: BRAND.CORAL, icon: '🎯', summary: 'DMY 原料真力 vs 用户零认知 · 海王金樽警示 · VOC 反向验证起点' }, { id: 2, num: '2', key: 'dmy', title: '藤茶 / DMY 归因学', en: 'DMY ATTRIBUTION', tone: 'amber', color: BRAND.LIVER_AMBER, icon: '🌿', summary: 'DMY 总黄酮 98% 真科学力 · 藤茶千年食饮史 · 水飞蓟"吸收差"反面教材' }, { id: 3, num: '3', key: 'market', title: '护肝市场 VOC 全景', en: 'LIVER MARKET VOC', tone: 'blue', color: BRAND.TECH_BLUE, icon: '💊', summary: '50 亿保健护肝 + 100 亿 OTC 胃肝药 · Swisse/易善复/葵花/片仔癀/海王金樽 五大对标' }, { id: 4, num: '4', key: 'kano', title: 'KANO × JTBD 洞察', en: 'USER INSIGHT', tone: 'purple', color: BRAND.PURPLE, icon: '🧠', summary: 'KANO 五类 × JTBD F/E/S · 副作用 = 反向需求 · 送长辈 = 兴奋需求' }, { id: 5, num: '5', key: 'scene', title: '场景四元素地图', en: 'SCENE MAP', tone: 'orange', color: BRAND.WARM_ORANGE, icon: '🗺', summary: '应酬解酒 / 脂肪肝调理 / 熬夜前后 / 送长辈 · 四大独占场景证据链' }, { id: 6, num: '6', key: 'competitor', title: '竞品三轴图谱', en: 'COMPETITION AXES', tone: 'rose', color: BRAND.ROSE, icon: '⚔', summary: '保健品 ↔ OTC 药 ↔ 食品三轴 · 肝纯片无人地带坐标 · 6 竞品精对标' }, { id: 7, num: '7', key: 'opportunity',title: '新机会 × 新场景 × 新人群', en: 'OPPORTUNITY', tone: 'green', color: BRAND.JIANG_GREEN, icon: '💡', summary: '3 条长尾赛道:DMY 教育 / 餐饮 B2B2C / 礼品孝心 · 每条带 VOC 证据链' }, { id: 8, num: '8', key: 'blueprint', title: '4P 配称蓝图', en: '4P BLUEPRINT', tone: 'green', color: BRAND.SAGE, icon: '🚀', summary: '产品 / 渠道 / 推广 / 价格 · 10 亿路径 · 药线 3亿 + 礼品 2.5亿 + 餐饮 2.5亿 + 电商 2亿' }, ]; // ============================================================ // 各章节 subsections 清单 // ============================================================ const CHAPTER_SUBSECTIONS = { challenge: [ 'DMY 原料真力·但用户零认知', '海王金樽警示·硬广洗脑型失败案例', 'VOC 反向验证·方法论起点', ], dmy: [ '藤茶千年食饮史·为什么是天选之子', 'DMY 总黄酮 98%·科学力解构', '水飞蓟"吸收差"反面对标', '可迁移 vs 必避陷阱·DMY 心智锚点', ], market: [ '50 亿保健护肝·品类地图', '五大竞品心智·Swisse/易善复/葵花/片仔癀/海王金樽', '人群声量·脂肪肝×熬夜×应酬', '未满足需求·四象限空白地带', ], kano: [ 'KANO 五类·必备/期望/兴奋/无差异/反向', 'JTBD·Functional 功能价值', 'JTBD·Emotional 情绪价值', 'JTBD·Social 社会价值', '决策优先级·SKU/话术/包装映射', ], scene: [ '场景#1·应酬解酒·液体应急', '场景#2·脂肪肝调理·日常养护', '场景#3·熬夜前后·便携快取', '场景#4·送长辈·孝心礼品', ], competitor: [ '三轴定位图谱·保健品/OTC 药/食品', '无人地带坐标·肝纯片独占位', '6 竞品精对标·VOC 差异化 MOAT', ], opportunity: [ '新机会·DMY 电商认知养成', '新场景·餐饮 B2B2C 锡纸分食', '新人群·送长辈孝心礼盒', ], blueprint: [ '4P 配称·产品+渠道+推广+价格', '10 亿路径·4 渠道 3 阶段', ], }; // ============================================================ // 每章 hero line // ============================================================ const CHAPTER_HERO_LINES = { challenge: `江中肝纯片握有 藤茶 DMY 总黄酮 98% 的原料真科学力,但用户既不认识"藤茶"、也不认识"二氢杨梅素"。与此同时,海王金樽已经用硬广方式把"解酒"品类做成了智商税叙事(VOC:"老哒广告做得杠杠的[捂脸]")——我们不能重蹈覆辙。本章直面困境:真差异化但零认知,必须先理解用户在想什么。`, dmy: `藤茶是中国西南地区被食饮了千年的草本(显齿蛇葡萄叶),其核心活性物 DMY(二氢杨梅素)总黄酮含量 高达 98%,远超水飞蓟宾(通常 30-80%)。对比水飞蓟在 XHS 和 Amazon 上 "吸收差 / no effect / hidden additives" 的大量差评,DMY + 藤茶组合是护肝品类真正的"新大陆"——但必须用可迁移的心智锚点千年食饮史 → 安全 + 文化符号)说服用户。`, market: `护肝保健赛道 ~50 亿(Swisse + 汤臣倍健 + 葵花 + 片仔癀 + 新锐国产) + OTC 胃肝药 ~100 亿(易善复 + 水飞蓟片 + 熊胆粉)。每一块都有明确的 VOC 痛点:Swisse 的"价格贵+吸收差"、易善复的"医嘱依赖+不能长期"、葵花/片仔癀的"药味+保守形象"、海王金樽的"广告+体感弱"。用户在 XHS/Amazon 的真实声音勾勒出四象限空白——那就是肝纯片的机会地图。`, kano: `不再用"4 渠道 × 5 模块"装饰理论。KANO 五类需求(必备 / 期望 / 兴奋 / 无差异 / 反向)逐个映射到 SKU / 包装 / 话术决策:必备=安全无副作用(避免易善复那种医嘱依赖感)、期望=真起效(避免 Swisse 吸收差差评)、兴奋=送得出手的礼盒心智、反向=药盒感 / 硬广感。JTBD 三维价值:F=肝功护养"不上头"、E=不焦虑转氨酶、S=饭局面子×孝心。`, scene: `时间 × 空间 × 触发事件 三元素交叉,肝纯片独占 应酬解酒 / 脂肪肝调理 / 熬夜前后 / 送长辈 四大场景——每个场景都在 XHS + 抖音有高赞 VOC 可做证据。其中 应酬解酒场景最肥(抖音"醋真的解酒"2038 赞 = 土办法反向需求);送长辈场景最有溢价(空白品类 + 高客单价)。每个场景都有对应人群、话术、产品形态、定价方案。`, competitor: `保健品 ↔ OTC 药 ↔ 食品 三轴定位图谱上,肝纯片的无人地带坐标 = "保健品的温和 × OTC 的信任 × 食品的便携"。直接对标 6 大竞品(Swisse / 易善复 / 葵花 / 片仔癀 / 海王金樽 / 熊胆粉)的 VOC 真差评,找出肝纯片的差异化 MOAT:真原料 + 千年食饮安全 + 不骂西药但走东方养生路径。`, opportunity: `基于 VOC 深挖,提炼 3 条可落地长尾赛道
DMY / 藤茶电商认知养成(对标 Swisse 靠小红书起量的节奏)
餐饮 B2B2C 锡纸分食(白领酒局 + 餐厅分装,反向海王金樽硬广模型)
送长辈孝心礼盒(对标东阿阿胶 / 黄芪精的"送胃 / 送气血"路径)。每条赛道配真实 VOC 证据 + 场景话术 + 规模预估。`, blueprint: `以 VOC 洞察反推 4P 配称产品(瓶装日常 / 板装便携 / 礼盒送长辈 12 SKU 矩阵)+ 渠道(药线大参林 + 电商京东自营 + 餐饮B2B2C + 礼品节点)+ 推广(KANO 兴奋需求 "送得出手" 钩子 + XHS 种草 + 抖音场景剧)+ 价格(¥128-898 四带位)。3 阶段落地路径:Y1 药线 + 电商 5 亿验证 → Y2 礼品 + 餐饮 3 亿复制 → Y3 国际 + 品类升级 2 亿。合计 10 亿目标。`, }; // ============================================================ // utils // ============================================================ function sn(n) { return String(n).padStart(2, '0'); } // ============================================================ // 共用组件(导航 / 键盘提示) // ============================================================ function renderNav() { const dots = [ { tip: '封面', href: '#s0' }, { tip: '目录', href: '#agenda' }, ...CHAPTERS.map((c) => ({ tip: `${c.num} ${c.title}`, href: `#${c.key}` })), ]; return `
DMY × 藤茶 / 10 亿目标 / 4 渠道 × 8 假设
`; } function renderKbdHint() { return `
键盘切换 PgUpPgDn
`; } // ============================================================ // Slide 01 · Cover // ============================================================ function renderCover({ product, collectedAt, slideNum, slideTotal, meta }) { const totalComments = meta?.comments || 0; const platformCount = Object.values(meta?.platforms || {}).filter((n) => n > 0).length; const productsCount = meta?.productsCount || 0; const notes = meta?.notes || 0; const stage = meta?.stage || 'skeleton'; const tier = meta?.sourceTier || 'unknown'; const isScaffold = stage === 'skeleton'; const isReal = tier === 'real-collected'; const sourceBadge = isReal ? { label: '真实采集 · 多平台评论颗粒度', color: BRAND.JIANG_GREEN, icon: '✓' } : { label: '骨架版 · 待 VOC 数据加载', color: BRAND.CORAL, icon: '○' }; const commentsDisplay = isScaffold ? '待采集' : totalComments.toLocaleString(); return `
江中 / 产品开发部 / 2026 · ${esc(product)} · VOC 深度洞察 ${sourceBadge.icon}${esc(sourceBadge.label)}

DMY × KANO × JTBD × SCENE · 四维 VOC 验证

${esc(product)}
VOC 深度洞察报告

藤茶 DMY 真原料差异化 · 如何让用户 从零认知到主动买单

基于 0.基础调研.md + 1.VOC方向定位.md 会议确认 的"10 亿 × 4 渠道 × 5 模块"落地框架, 以 藤茶 DMY 总黄酮 98% 的原料真力为起点, 通过 KANO × JTBD × 场景四元素 理论模型 × ${commentsDisplay} 条真实多平台评论颗粒度 VOC 交叉验证, 对标 50 亿护肝保健 + 100 亿 OTC 胃肝药 的痛点地图, 在 保健品 ↔ OTC ↔ 食品三轴 找到肝纯片的无人地带, 提炼 3 条长尾赛道,输出 4P 配称蓝图,闭环 10 亿 · 4 渠道 路径。

10亿
4 渠道目标
${commentsDisplay}
真实 VOC
${isScaffold ? '3+' : platformCount}
采集平台
8
核心假设
${isScaffold ? '32+' : (productsCount || 32)}
关键词维度
${slideTotal}
slides
DATA FOUNDATION · 数据底座

本报告基于 docs/jiangzhong/raw/_merged.json 真实多平台采集: XHS ${notes || '80'} 笔记 / ${isScaffold ? '1515' : (meta?.platforms?.xhs || 0)} 评论 + 抖音 ${meta?.videos || '16'} 视频 / ${isScaffold ? '627' : (meta?.platforms?.douyin || 0)} 评论 + Amazon ${meta?.products_count || '30'} 产品 / ${isScaffold ? '2577' : (meta?.platforms?.amazon || 0)} Reviews。 每条 VOC 带 source=real-collected 明确标识。

SCROLL DOWN · ${isScaffold ? 'Batch 1 · 骨架版 · 待逐章填充' : `采集截止 ${esc(collectedAt || '')} · ${commentsDisplay} 条真实 VOC`}

`; } // ============================================================ // Slide 02 · Agenda // ============================================================ function renderAgenda({ slideNum, slideTotal }) { return `
CONTENTS · 8 章认知递进

从诘问到蓝图 · DMY 真原料 × VOC 实证

认知深度递进:① 诘问 → ② DMY 归因 → ③ 市场全景 → ④ KANO×JTBD → ⑤ 场景地图 → ⑥ 竞品三轴 → ⑦ 新机会 → ⑧ 4P 蓝图

METHODOLOGY · 方法论自律
本报告严格遵循 《docs/jiangzhong/1.VOC方向定位.md》10 亿 × 4 渠道 × 5 模块 方法论:
❌ 不做:改配方主成分(DMY 为核心)、宣称治疗、装饰性理论图表、脱离 VOC 的拍脑袋推断;
✅ 做:8 条核心假设 H1-H8 × 多平台 VOC 实证 × KANO × JTBD × 场景四元素 理论作决策工具 × 4 渠道 × 5 模块落地映射;
每一个结论都附 真实用户原声(昵称 + IP + 点赞)+ 理论模型映射 + 可落地决策项 三重验证。
`; } // ============================================================ // 章节 Divider(8 个) // ============================================================ function renderChapterDivider({ chapter, slideNum, slideTotal }) { const c = chapter; const heroLine = CHAPTER_HERO_LINES[c.key] || c.summary; const subs = CHAPTER_SUBSECTIONS[c.key] || []; return `
0${c.num}
CHAPTER ${c.num} · ${c.en}
${c.icon}

${esc(c.title)}

${c.en}

${heroLine}

${subs.map((sub, i) => `
${c.num}.${i + 1}
${esc(sub)}
`).join('')}
SCROLL DOWN · ${subs.length} 个子章 · VOC 实证 × 理论 × 决策
`; } // ============================================================ // 占位子章(Coming Soon 提示)· 展示本章涵盖的假设覆盖度 // ============================================================ function renderComingSoon({ chapter, subIdx, sub, slideNum, slideTotal, targetBatch, meta }) { const c = chapter; const hs = LA.CHAPTER_HYPOTHESIS_MAP[c.key] || []; const hsCount = hs.reduce((s, h) => s + (meta?.hypotheses?.[h] || 0), 0); return `
${c.num}.${subIdx} · ${esc((sub || '').split('·')[0].toUpperCase())}

${esc(sub)}

此子章将在 Batch ${targetBatch} 填充 VOC 证据卡 + 理论映射 + 决策项

🚧
Coming in Batch ${targetBatch}
${hsCount ? `
数据就绪 · ${hsCount} 条 ${hs.join('/')} 相关真实 VOC

docs/jiangzhong/raw/_merged.json 已就绪 ${meta?.comments || 4719} 条真实 VOC(覆盖 H1-H8 × 3 平台 × 32 关键词),
Batch ${targetBatch} 将基于本假设的 ${hsCount} 条 证据 + 理论工具,输出 证据卡 × 理论映射 × 决策项

` : `

Batch ${targetBatch} 将基于已采集 VOC 数据填充本子章内容。

`}
`; } // ============================================================ // 子章 → Batch 映射 // ============================================================ const SUB_TO_BATCH = { 'challenge': 2, 'dmy': 2, 'market': 2, 'kano': 3, 'scene': 3, 'competitor': 4, 'opportunity': 4, 'blueprint': 5, }; // ============================================================ // 子章渲染器注册表(Batch 2+ 逐步注入) // ============================================================ let SLIDE_RENDERERS = {}; // 可选的章节模块——文件存在才加载,不存在不阻塞骨架 function tryRequire(modPath) { try { return require(modPath); } catch (e) { return null; } } const CH1 = tryRequire('./liver-ch1-challenge.js'); const CH2 = tryRequire('./liver-ch2-dmy.js'); const CH3 = tryRequire('./liver-ch3-market.js'); const CH4 = tryRequire('./liver-ch4-kano.js'); const CH5 = tryRequire('./liver-ch5-scene.js'); const CH6 = tryRequire('./liver-ch6-competitor.js'); const CH7 = tryRequire('./liver-ch7-opportunity.js'); const CH8 = tryRequire('./liver-ch8-blueprint.js'); SLIDE_RENDERERS = { ...(CH1 || {}), ...(CH2 || {}), ...(CH3 || {}), ...(CH4 || {}), ...(CH5 || {}), ...(CH6 || {}), ...(CH7 || {}), ...(CH8 || {}), }; // ============================================================ // buildHTML · 主装配 // ============================================================ function buildHTML({ product, collectedAt } = {}) { product = product || '江中肝纯片'; collectedAt = collectedAt || new Date().toISOString().slice(0, 10); const data = LA.loadMerged(); const meta = LA.getMeta(data); // slide 总数:2 (cover+agenda) + 每章 (1 divider + N 子章) let slideTotal = 2; for (const c of CHAPTERS) { slideTotal += 1 + (CHAPTER_SUBSECTIONS[c.key] || []).length; } const slides = []; let num = 1; slides.push(renderCover({ product, collectedAt, slideNum: sn(num), slideTotal: sn(slideTotal), meta })); num++; slides.push(renderAgenda({ slideNum: sn(num), slideTotal: sn(slideTotal) })); num++; for (const c of CHAPTERS) { slides.push(renderChapterDivider({ chapter: c, slideNum: sn(num), slideTotal: sn(slideTotal) })); num++; const subs = CHAPTER_SUBSECTIONS[c.key] || []; for (let i = 0; i < subs.length; i++) { const subIdx = i + 1; const subKey = `${c.key}-${subIdx}`; const renderer = SLIDE_RENDERERS[subKey]; const slideCtx = { chapter: c, subIdx, sub: subs[i], slideNum: sn(num), slideTotal: sn(slideTotal), data, meta, }; if (renderer) { slides.push(renderer(slideCtx)); } else { slides.push(renderComingSoon({ ...slideCtx, targetBatch: SUB_TO_BATCH[c.key] || 2, meta })); } num++; } } return ` ${esc(product)} · VOC 深度洞察报告 · DMY × 4 渠道 ${STYLES} ${renderNav()} ${renderKbdHint()}
${slides.join('\n')}
`; } module.exports = { buildHTML, BRAND, CHAPTERS, CHAPTER_SUBSECTIONS, CHAPTER_HERO_LINES, SUB_TO_BATCH, renderCover, renderAgenda, renderChapterDivider, renderComingSoon, };