// 江中猴菇饮 v2 · Ch3 痛声地图(4 子章) // 3.1 化药级痛声 · "有效但不敢停" × PPI依赖焦虑 // 3.2 中成药痛声 · "苦涩难咽年轻人不买" × 代际断层 // 3.3 功能食品痛声 · "吃了个寂寞" × 无OTC信任 // 3.4 跨层汇总 · 5大共性未满足需求 × 声量-满足度四象限 const HGY = require('./houguyin-analyze.js'); const C = require('./houguyin-components.js'); const { BRAND, esc, renderVocCard, renderVocGrid, renderSectionHead, renderMatrix2x2 } = C; // ================================================================ // 3.1 · 化药级痛声 · "有效但不敢停" × PPI依赖焦虑 // ================================================================ function renderSub1(ctx) { const { chapter: c, subIdx, slideNum, slideTotal, data } = ctx; const items = data.items || []; const vocCards = HGY.getEvidence(items, { hypothesis: 'H4', top: 6, seed: 31 }); // 痛点定义:用 regex 从 VOC 数据中动态计算频次 const painDefs = [ { pain: '有效但不敢停', re: /不敢停|停不了|停不掉|离不开|依赖|一直吃/i, color: '#C62828' }, { pain: '副作用焦虑', re: /副作用|骨质疏松|肾|伤身|长期.*害怕|担心.*身体/i, color: '#E53935' }, { pain: '反弹恐惧', re: /反弹|停.*又|一停就|复发|反复/i, color: BRAND.CORAL }, { pain: '越吃越多', re: /越来越|加量|一粒.*两粒|恶性循环|越吃/i, color: BRAND.WARM_ORANGE }, { pain: '想减不敢减', re: /减量|想停|想减|慢慢.*减|试着.*停/i, color: BRAND.HOUGU_TAN }, ]; // 动态计算:从 H4 相关 VOC 中统计各痛点命中数 const h4Items = items.filter(it => { const hs = Array.isArray(it.hypothesis) ? it.hypothesis : (it.hypothesis ? [it.hypothesis] : []); return hs.includes('H4') || hs.includes('H3'); }); const painPoints = painDefs.map(p => { const count = h4Items.filter(it => p.re.test(it.content || '')).length; return { ...p, count }; }); const maxCount = Math.max(...painPoints.map(p => p.count), 1); // 归一化到 60-100 区间,保证视觉效果 painPoints.forEach(p => { p.intensity = Math.round(60 + (p.count / maxCount) * 40); }); painPoints.sort((a, b) => b.count - a.count); return `
${renderSectionHead({ eyebrow: `${c.num}.${subIdx} · 痛声地图`, title: '化药级痛声 · "有效但不敢停"', subtitle: 'PPI 用户(~8000万人)的核心矛盾:药有效→但形成依赖→想停→一停就反弹→继续吃→焦虑加深。', color: '#E53935', })}
PPI 用户 5 大痛点 × VOC 频次强度 (基于 ${h4Items.length} 条 H3/H4 相关 VOC 动态计算)
${painPoints.map(p => `
${esc(p.pain)} ${p.intensity}(${p.count} 条)
`).join('')}
猴菇饮切入点 · PPI 减量伴侣:用户不是想不吃药,是想"安全地减少药量"。猴菇饮如果能定位为"减量过渡期的温和养护",接住的是"想减不敢减"这个高频高痛点。
${vocCards.length > 0 ? `
VOC 原声 · PPI 依赖用户
${vocCards.slice(0, 6).map(v => renderVocCard(v, { compact: true })).join('')}
` : ''}
`; } // ================================================================ // 3.2 · 中成药痛声 · "苦涩难咽年轻人不买" × 代际断层 // ================================================================ function renderSub2(ctx) { const { chapter: c, subIdx, slideNum, slideTotal, data } = ctx; const items = data.items || []; const vocCards = HGY.getEvidence(items, { hypothesis: 'H3', tag: '口感', top: 4, seed: 37 }); // 动态计算:从 H3 相关 VOC 中统计各痛点命中数 const h3Items = items.filter(it => { const hs = Array.isArray(it.hypothesis) ? it.hypothesis : (it.hypothesis ? [it.hypothesis] : []); return hs.includes('H3'); }); const painDefs = [ { pain: '口感差', desc: '苦涩/颗粒大/冲泡麻烦/有中药味', ageGroup: '全年龄', re: /苦|难喝|味道|口感|中药味|冲泡|颗粒大|难吃|难闻|恶心/i, color: BRAND.CORAL }, { pain: '代际断层', desc: '年轻人认为中成药=老人吃的', ageGroup: '18-35', re: /老人|年轻|我妈|妈让|爸让|老年人|年纪大|过时/i, color: BRAND.WARM_ORANGE }, { pain: '疗程压力', desc: '需持续服用才有效,大多数人坚持不了', ageGroup: '全年龄', re: /三个月|坚持|疗程|忘了|中途|没耐心|太久|持续/i, color: BRAND.HOUGU_TAN }, { pain: '效果不确定', desc: '"温和"=不知道有没有效', ageGroup: '25-45', re: /没效|不知道.*效|有没有用|感觉不到|看不出|不明显/i, color: BRAND.PURPLE }, ]; const painPoints = painDefs.map(p => { const count = h3Items.filter(it => p.re.test(it.content || '')).length; return { ...p, count }; }); const maxCount2 = Math.max(...painPoints.map(p => p.count), 1); painPoints.forEach(p => { p.severity = p.count >= maxCount2 * 0.8 ? '极高' : p.count >= maxCount2 * 0.5 ? '高' : '中高'; }); painPoints.sort((a, b) => b.count - a.count); return `
${renderSectionHead({ eyebrow: `${c.num}.${subIdx} · 痛声地图`, title: '中成药痛声 · "苦涩难咽" × 代际断层', subtitle: '三九胃泰/摩罗丹/康复新液的用户(~6000万人):产品有效但体验太差,年轻用户正在流失。', color: BRAND.WARM_ORANGE, })}
中成药 4 大痛声 (基于 ${h3Items.length} 条 H3 VOC 动态统计)
${painPoints.map(p => `
${esc(p.pain)} ${p.severity} · ${p.count} 条
${esc(p.desc)}
易感人群:${esc(p.ageGroup)}
`).join('')}
猴菇饮切入点 · 代际替代:猴菇饮天然解决了中成药的四大痛点——好喝(vs 苦涩)、年轻化(vs 老人药)、无疗程压力(随时喝 vs 坚持三个月)、可感知(温热液体的即时舒服感 vs 不知道有没效)。
${vocCards.length > 0 ? `
VOC 原声 · 中成药口感/体验
${vocCards.slice(0, 4).map(v => renderVocCard(v, { compact: true })).join('')}
` : ''}
`; } // ================================================================ // 3.3 · 功能食品痛声 · "吃了个寂寞" × 无OTC信任 // ================================================================ function renderSub3(ctx) { const { chapter: c, subIdx, slideNum, slideTotal, data } = ctx; const items = data.items || []; const vocCards = HGY.getEvidence(items, { hypothesis: 'H1', top: 4, seed: 41, contentMatch: /米稀|猴姑|养胃|胃|早餐|暖胃/i }); return `
${renderSectionHead({ eyebrow: `${c.num}.${subIdx} · 痛声地图`, title: '功能食品痛声 · "吃了个寂寞"', subtitle: '养胃茶/猴头菇保健品/米稀用户(~9000万人):门槛低但信任低,"不知道有没有效"是最大痛点。', color: BRAND.HOUGU_TAN, })}
功能食品 3 大痛声 (痛声为 VOC 归纳合成)
痛声 ① · 效果存疑
"吃了个寂寞"——功能食品最大的信任问题。用户知道猴头菇养胃,但吃完没有任何可感知的变化。
"猴菇米稀我喝了半年,该胃疼还是胃疼,就是当早餐了"
痛声 ② · 场景单一
米稀 = 早餐。一旦换了场景(午后/应酬前/夜宵后),用户不知道能用什么。
"晚上加班胃不舒服,不可能冲个米稀吧,而且办公室也没条件"
痛声 ③ · 身份尴尬
不是药,说不出"疗效";不是保健品,没有蓝帽子;只是食品,凭什么贵?
"花40块买一盒猴头菇饼干养胃?超市里随便买点粗粮不是一样?"
猴菇饮的独特解法OTC 身份直接解决"身份尴尬"(有药品信任);液态即饮解决"场景单一"(不需要冲泡/热水/碗);但"效果存疑"需要通过定位话术而非产品改造来解决——下文 Ch5 定位推导将回答这个问题。
${vocCards.length > 0 ? `
VOC 原声 · 功能食品用户
${vocCards.slice(0, 4).map(v => renderVocCard(v, { compact: true })).join('')}
` : ''}
`; } // ================================================================ // 3.4 · 跨层汇总 · 5大共性未满足需求 × 声量-满足度四象限 // ================================================================ function renderSub4(ctx) { const { chapter: c, subIdx, slideNum, slideTotal, data } = ctx; const items = data.items || []; // 为四象限每个条目定义 regex,动态计算 VOC 命中数 const q1Defs = [ { label: 'PPI 减量焦虑(想停不敢停)', re: /停不了|不敢停|依赖|减量|想停|反弹/i }, { label: '中成药口感代际断层', re: /苦|难喝|口感|年轻.*不|老人|代际/i }, { label: '日常养护无便捷选择', re: /日常|方便|随时|便捷|办公室|不需要.*冲泡/i }, ]; const q2Defs = [ { label: '急性胃痛缓解(达喜/PPI)', re: /胃痛.*吃|达喜|止痛|急性|立马|马上/i }, { label: '早餐养胃(米稀已占位)', re: /早餐|米稀|早上|粥|冲泡.*早/i }, ]; const q3Defs = [ { label: '术后恢复(处方解决)', re: /手术|术后|住院|恢复期/i }, { label: '幽门螺杆菌治疗(三联/四联)', re: /幽门|螺杆|三联|四联|HP/i }, ]; const q4Defs = [ { label: '糖友养胃(无糖版需求)', re: /糖尿|血糖|无糖|糖友|代糖/i }, { label: '"送胃"礼品场景', re: /送|礼|礼盒|送人|过节|看望/i }, { label: '夜宵族/宵夜后养护', re: /夜宵|宵夜|晚上吃|夜里|加班.*吃/i }, ]; const countItems = (defs) => defs.map(d => ({ ...d, count: items.filter(it => d.re.test(it.content || '')).length, })); const q1Items = countItems(q1Defs), q2Items = countItems(q2Defs); const q3Items = countItems(q3Defs), q4Items = countItems(q4Defs); const fmtItems = (arr) => arr.map(a => `${a.label}(${a.count} 条)`); const quadrants = { q1: { title: '高声量 × 低满足 → 核心机会', color: BRAND.JIANG_GREEN, items: fmtItems(q1Items), note: '猴菇饮最应该切的 3 个需求' }, q2: { title: '高声量 × 高满足 → 红海', color: BRAND.TECH_BLUE, items: fmtItems(q2Items), note: '不要正面竞争' }, q3: { title: '低声量 × 高满足 → 不值得进', color: '#9E9E9E', items: fmtItems(q3Items), note: '处方壁垒' }, q4: { title: '低声量 × 低满足 → 长尾观察', color: BRAND.WARM_ORANGE, items: fmtItems(q4Items), note: '规模待验证的差异化机会' }, }; return `
${renderSectionHead({ eyebrow: `${c.num}.${subIdx} · 痛声地图`, title: '跨层汇总 · 5 大共性未满足需求 × 四象限', subtitle: '把 Ch3.1-3.3 的痛声汇总,按"声量(多少人在说)× 满足度(现有产品解决了多少)"放入四象限。', color: BRAND.PURPLE, })}
${renderMatrix2x2({ xLabel: '满足度', yLabel: '声量', xLow: '低满足', xHigh: '高满足', yLow: '低声量', yHigh: '高声量', quadrants, accent: BRAND.PURPLE, })}
5 大跨层共性未满足需求
${[ { num: '01', need: '安全减量', desc: '想减药但怕反弹' }, { num: '02', need: '好喝养护', desc: '不苦/不冲泡/随时可喝' }, { num: '03', need: '可感知效果', desc: '喝完要有"暖暖的"体感' }, { num: '04', need: '无疗程压力', desc: '想喝就喝/不需坚持三个月' }, { num: '05', need: 'OTC级信任', desc: '比食品可信/比药品温和' }, ].map(n => `
${n.num}
${esc(n.need)}
${esc(n.desc)}
`).join('')}
下一章将对每个需求逐一验证:猴菇饮的产品力能不能真正接住?哪些是能力范围内的,哪些是需要话术/定位来解决的?
`; } module.exports = { renderSub1, renderSub2, renderSub3, renderSub4 };