| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352 |
- // ==============================================================================
- // 乳酸菌 v2 · Ch4 品类定位 · 里斯×特劳特(Step 5)
- // ==============================================================================
- // 4.1 里斯品类战略 · 我们在哪个品类?
- // 4.2 特劳特定位 · 一句话定位方案
- // 4.3 三条细分机会 VOC 验证 · 肠道调理/免疫力/营养吸收
- // 4.4 风险评估 · 功效扩展 vs 原有心智冲突
- // ==============================================================================
- const LA = require('./lactic-analyze.js');
- const C = require('./lactic-components.js');
- const stripTags = s => String(s || '').replace(/#[^\s#]+/g, '').trim();
- const { BRAND, esc, renderSectionHead, renderVocCard, renderVocGrid,
- renderStatStrip, renderMatrix2x2, renderCompareTable, renderInsightHero,
- renderFindingCard, renderDecisionList, renderBarChart } = C;
- // ============================================================
- // 4.1 里斯品类战略
- // ============================================================
- function renderSub1({ chapter: c, subIdx, sub, slideNum, slideTotal, data, meta }) {
- const items = data?.items || [];
- // 用户品类认知 VOC:家长如何看"药品 vs 保健品 vs 食品"
- const catCognRe = /药品|保健品|食品|智商税|处方|OTC|蓝帽|医生开|自己买|不放心|信任|到底.*选|药.*还是.*食|是药三分毒/i;
- const catCognItems = items.filter(it => catCognRe.test(it.content || ''));
- const substCatCogn = catCognItems.filter(it => stripTags(it.content).length >= 30);
- const catCognEvidence = LA.getEvidence(substCatCogn, { top: 3, seed: 411, minChars: 20, contentMatch: /益生菌|乳酸菌|肠|便秘|消化|菌|拉肚|药品|保健品|食品/i });
- return `<section class="report-section" id="${c.key}-${subIdx}" data-tone="${c.tone}" data-slide-num="${slideNum}/${slideTotal}">
- <div class="section-inner">
- ${renderSectionHead({
- eyebrow: `${c.num}.${subIdx} · RIES CATEGORY STRATEGY`,
- title: sub,
- subtitle: '王总要求:"用里斯的品类战略来组织——我在哪个品类?"',
- color: c.color,
- })}
- ${renderInsightHero({
- eyebrow: '里斯品类战略 · 核心问题',
- title: '乳酸菌素片到底在哪个品类?',
- subtitle: '这个问题的答案决定了竞争对手是谁、目标人群是谁、渠道在哪里。品类选错,所有努力都在错误的战场上。',
- color: c.color,
- })}
- <!-- 品类进化树 -->
- <div style="padding:24px; background:var(--bg-1); border:1px solid var(--border); border-radius:var(--radius-md); margin-top:24px;">
- <div class="text-mono text-xs" style="color:${c.color}; letter-spacing:0.15em; margin-bottom:18px; font-weight:700;">品类进化树 · 从肠道大品类到细分定位</div>
- <div style="display:grid; grid-template-columns:1fr; gap:0;">
- <!-- Level 0 -->
- <div style="text-align:center; padding:14px; background:${BRAND.TECH_BLUE}12; border:2px solid ${BRAND.TECH_BLUE}55; border-radius:8px; font-weight:700; color:${BRAND.TECH_BLUE}; font-size:1.1rem;">
- 肠道健康大品类(~130 亿)
- </div>
- <div style="text-align:center; color:var(--text-3); font-size:1.2rem; padding:4px 0;">↓</div>
- <!-- Level 1: 3 branches -->
- <div style="display:grid; grid-template-columns:repeat(3, 1fr); gap:12px;">
- <div style="padding:12px; background:${BRAND.CORAL}08; border:1px solid ${BRAND.CORAL}33; border-radius:6px; text-align:center;">
- <div style="font-weight:700; color:${BRAND.CORAL}; font-size:0.88rem;">药品微生态制剂</div>
- <div style="color:var(--text-3); font-size:0.72rem;">妈咪爱/亿活/宝乐安</div>
- </div>
- <div style="padding:12px; background:${c.color}12; border:2px solid ${c.color}55; border-radius:6px; text-align:center;">
- <div style="font-weight:700; color:${c.color}; font-size:0.88rem;">⭐ OTC 肠道调理</div>
- <div style="color:${c.color}; font-size:0.72rem; font-weight:600;">乳酸菌素片 = 这里</div>
- </div>
- <div style="padding:12px; background:${BRAND.WARM_ORANGE}08; border:1px solid ${BRAND.WARM_ORANGE}33; border-radius:6px; text-align:center;">
- <div style="font-weight:700; color:${BRAND.WARM_ORANGE}; font-size:0.88rem;">食品级益生菌</div>
- <div style="color:var(--text-3); font-size:0.72rem;">合生元/万益蓝/inne</div>
- </div>
- </div>
- <div style="text-align:center; color:var(--text-3); font-size:1.2rem; padding:4px 0;">↓ 品类分化方向</div>
- <!-- Level 2: 细分 -->
- <div style="display:grid; grid-template-columns:repeat(3, 1fr); gap:12px;">
- ${[
- { title: '儿童肠道调理', desc: '便秘/腹泻/消化不良的日常调理', color: BRAND.JIANG_GREEN, star: true },
- { title: '儿童肠道免疫', desc: '入园/换季反复生病的预防', color: BRAND.SKY_BLUE, star: false },
- { title: '儿童营养吸收', desc: '"调肠道促吸收"替代瓶瓶罐罐', color: BRAND.LACTIC_MINT, star: false },
- ].map(item => `
- <div style="padding:14px; background:${item.color}08; border:1px solid ${item.color}33; border-radius:6px; text-align:center;">
- <div style="font-weight:700; color:${item.color}; font-size:0.84rem;">${item.star ? '★ ' : ''}${esc(item.title)}</div>
- <div style="color:var(--text-2); font-size:0.74rem; margin-top:4px;">${esc(item.desc)}</div>
- </div>`).join('')}
- </div>
- </div>
- </div>
- ${catCognEvidence.length > 0 ? `
- <div style="margin-top:20px; padding:16px; background:${c.color}06; border:1px solid ${c.color}30; border-radius:var(--radius-md);">
- <div class="text-mono text-xs" style="color:${c.color}; letter-spacing:0.12em; margin-bottom:10px; font-weight:700;">VOC 验证 · 家长的品类认知表达(${catCognItems.length} 条相关)</div>
- <div style="display:grid; grid-template-columns:repeat(${Math.min(catCognEvidence.length, 3)}, 1fr); gap:10px;">
- ${catCognEvidence.map(ev => `
- <div style="padding:10px 12px; background:var(--bg-1); border-left:3px solid ${c.color}; border-radius:4px;">
- <div style="font-size:0.74rem; color:var(--text-1); line-height:1.45;">"${esc((ev.content || '').slice(0, 90))}"</div>
- <div style="color:var(--text-3); font-size:0.6rem; margin-top:4px;">—${esc(ev.nickname || ev.platform)} · ❤️${ev.likes || 0}</div>
- </div>`).join('')}
- </div>
- </div>` : ''}
- ${renderFindingCard({
- icon: '🎯',
- title: '里斯品类战略结论',
- body: `乳酸菌素片应定位在 <strong style="color:${c.color};">"OTC 儿童肠道日常调理"</strong> 这个品类——<br/>
- · 不是"大益生菌"品类(太大,与食品级混战)<br/>
- · 不是"乳酸菌素片"品类(太窄,用户不认识)<br/>
- · 而是 <strong>"嚼着吃的儿童肠道调理药"</strong>——这个品类目前空白,我们可以成为品类代名词。`,
- accent: c.color,
- })}
- </div>
- </section>`;
- }
- // ============================================================
- // 4.2 特劳特定位 · 一句话
- // ============================================================
- function renderSub2({ chapter: c, subIdx, sub, slideNum, slideTotal, data, meta }) {
- const positionOptions = [
- {
- slogan: '嚼着吃的儿童肠道调理药',
- strategy: '品类占位',
- troutMethod: '开创新品类',
- pros: '品类空白、直击"喂药难"痛点、OTC 身份背书',
- cons: '"药"字可能让部分家长犹豫',
- score: 92,
- },
- {
- slogan: '像奶片一样的肠道养护',
- strategy: '差异化定位',
- troutMethod: '重新定位竞品',
- pros: '降低"药"的距离感、孩子接受度高',
- cons: '模糊了 OTC 优势',
- score: 78,
- },
- {
- slogan: '调肠道,促吸收,一嚼搞定',
- strategy: '功效延伸',
- troutMethod: '聚焦法则',
- pros: '覆盖"调理+吸收"双需求、杨老师营养吸收洞察',
- cons: '功效扩展有风险(见 4.4)',
- score: 75,
- },
- ];
- return `<section class="report-section" id="${c.key}-${subIdx}" data-tone="${c.tone}" data-slide-num="${slideNum}/${slideTotal}">
- <div class="section-inner">
- ${renderSectionHead({
- eyebrow: `${c.num}.${subIdx} · TROUT POSITIONING`,
- title: sub,
- subtitle: '王总要求:"容易传播的、能写在盒子上的一句话"',
- color: c.color,
- })}
- <div style="display:grid; grid-template-columns:repeat(1, 1fr); gap:18px; margin-top:24px;">
- ${positionOptions.map((opt, i) => `
- <div style="padding:24px; background:${i === 0 ? c.color + '10' : 'var(--bg-1)'}; border:${i === 0 ? '2px' : '1px'} solid ${i === 0 ? c.color + '55' : 'var(--border)'}; border-radius:var(--radius-md); position:relative;">
- ${i === 0 ? `<div style="position:absolute; top:12px; right:16px; padding:4px 12px; background:${c.color}; color:#fff; border-radius:12px; font-size:0.7rem; font-weight:700;">★ 推荐方案</div>` : ''}
- <div style="display:grid; grid-template-columns:1fr 1fr; gap:20px;">
- <div>
- <div class="text-mono text-xs" style="color:${c.color}; letter-spacing:0.12em; font-weight:700; margin-bottom:8px;">方案 ${i + 1} · ${esc(opt.strategy)}</div>
- <div style="font-family:var(--font-head); font-size:1.6rem; font-weight:800; color:var(--text-1); line-height:1.3; margin-bottom:12px;">"${esc(opt.slogan)}"</div>
- <div style="color:var(--text-2); font-size:0.82rem; line-height:1.6;">
- <strong>特劳特方法</strong>:${esc(opt.troutMethod)}<br/>
- <strong style="color:${BRAND.JIANG_GREEN};">优势</strong>:${esc(opt.pros)}<br/>
- <strong style="color:${BRAND.CORAL};">风险</strong>:${esc(opt.cons)}
- </div>
- </div>
- <div style="display:flex; align-items:center; justify-content:center;">
- <div style="width:120px; height:120px; border-radius:50%; background:${i === 0 ? c.color : 'var(--text-3)'}15; border:3px solid ${i === 0 ? c.color : 'var(--text-3)'}44; display:flex; align-items:center; justify-content:center; flex-direction:column;">
- <div style="font-family:var(--font-head); font-size:2.2rem; font-weight:900; color:${i === 0 ? c.color : 'var(--text-3)'};">${opt.score}</div>
- <div style="font-size:0.66rem; color:var(--text-3); font-family:var(--font-mono);">综合评分</div>
- </div>
- </div>
- </div>
- </div>`).join('')}
- </div>
- ${renderInsightHero({
- eyebrow: 'TROUT VERDICT',
- title: '推荐定位:"嚼着吃的儿童肠道调理药"',
- subtitle: `
- <strong>特劳特逻辑</strong>:开创"嚼着吃的儿童肠道调理"新品类,成为品类第一品牌。<br/>
- <strong>心智阶梯</strong>:家长想到"孩子肠道不好" → 第一反应"嚼着吃的那个" → 江中乳酸菌素片<br/>
- <strong>写在盒子上</strong>:<span style="padding:4px 12px; background:${c.color}15; border:1px solid ${c.color}44; border-radius:4px; font-weight:700; color:${c.color};">嚼着吃的儿童肠道调理药</span>
- `,
- color: c.color,
- })}
- </div>
- </section>`;
- }
- // ============================================================
- // 4.3 三条细分机会 VOC 验证
- // ============================================================
- function renderSub3({ chapter: c, subIdx, sub, slideNum, slideTotal, data, meta }) {
- const items = data?.items || [];
- const opportunities = [
- {
- name: '肠道调理(便秘/腹泻/消化不良)',
- hypothesis: 'H3',
- keywords: /便秘|腹泻|拉肚子|消化|积食|闹肚子|大便/i,
- color: BRAND.JIANG_GREEN,
- verdict: '★★★ 需求最强·证据最多·直接可打',
- },
- {
- name: '提高肠道免疫力(入园/换季)',
- hypothesis: 'H7',
- keywords: /免疫|入园|换季|生病|反复|体质|抵抗力/i,
- color: BRAND.SKY_BLUE,
- verdict: '★★☆ 需求真实·但"免疫力"宣称需谨慎',
- },
- {
- name: '促进营养吸收(调肠道促吸收)',
- hypothesis: 'H5',
- keywords: /吸收|营养|不长|偏瘦|挑食|DHA|补钙|瓶瓶罐罐/i,
- color: BRAND.LACTIC_MINT,
- verdict: '★★☆ 杨老师洞察·需求延伸空间大·但非核心心智',
- },
- ];
- const oppStats = opportunities.map(opp => {
- const matched = items.filter(it => opp.keywords.test(it.content || ''));
- const substOpp = matched.filter(it => stripTags(it.content).length >= 25);
- const evidence = LA.getEvidence(substOpp, { top: 2, seed: 41 + opportunities.indexOf(opp), minChars: 20, contentMatch: /益生菌|乳酸菌|肠|便秘|消化|菌|拉肚|宝宝|孩子|喂药/i });
- return { ...opp, count: matched.length, evidence };
- });
- return `<section class="report-section" id="${c.key}-${subIdx}" data-tone="${c.tone}" data-slide-num="${slideNum}/${slideTotal}">
- <div class="section-inner">
- ${renderSectionHead({
- eyebrow: `${c.num}.${subIdx} · OPPORTUNITY VOC VALIDATION`,
- title: sub,
- subtitle: '三条细分机会逐一用 VOC 数据验证需求真实性和强度。',
- color: c.color,
- })}
- ${oppStats.map(opp => `
- <div style="margin-bottom:28px; padding:22px; background:${opp.color}06; border:1px solid ${opp.color}33; border-left:4px solid ${opp.color}; border-radius:var(--radius-md);">
- <div style="display:flex; justify-content:space-between; align-items:center; margin-bottom:14px;">
- <div>
- <div class="text-mono text-xs" style="color:${opp.color}; font-weight:700; letter-spacing:0.12em;">${esc(opp.name)}</div>
- <div style="color:var(--text-3); font-size:0.72rem; margin-top:2px;">${opp.count} 条相关 VOC · ${esc(opp.hypothesis)} 假设</div>
- </div>
- <div style="padding:6px 14px; background:${opp.color}15; color:${opp.color}; border-radius:16px; font-size:0.78rem; font-weight:700;">${esc(opp.verdict)}</div>
- </div>
- ${opp.evidence.length > 0 ? renderVocGrid(opp.evidence, { columns: 2, accent: opp.color, compact: true }) : `<div style="color:var(--text-3); font-size:0.82rem; text-align:center; padding:12px;">VOC 证据待补充</div>`}
- </div>`).join('')}
- ${renderDecisionList([
- '<strong>主打方向</strong>:肠道调理(便秘/腹泻/消化不良)—— VOC 证据最强',
- '<strong>延伸方向</strong>:营养吸收("调肠道促吸收")—— 差异化空间最大',
- '<strong>谨慎方向</strong>:免疫力 —— 需求真实但宣称风险高(OTC 不可宣称免疫)',
- '三条机会不是互斥的:核心=调理,延伸=吸收,不碰=免疫宣称',
- ], { accent: c.color, title: 'VALIDATION VERDICT' })}
- </div>
- </section>`;
- }
- // ============================================================
- // 4.4 风险评估 · 功效扩展 vs 原有心智
- // ============================================================
- function renderSub4({ chapter: c, subIdx, sub, slideNum, slideTotal, data, meta }) {
- return `<section class="report-section" id="${c.key}-${subIdx}" data-tone="${c.tone}" data-slide-num="${slideNum}/${slideTotal}">
- <div class="section-inner">
- ${renderSectionHead({
- eyebrow: `${c.num}.${subIdx} · RISK ASSESSMENT`,
- title: sub,
- subtitle: '杨老师(34:20)提出关键风险:"如果投放营养吸收,原有用药解决胃肠问题的人会不会减少购买?"',
- color: c.color,
- })}
- ${renderMatrix2x2({
- xLabel: '新定位吸引力',
- yLabel: '原有心智冲突',
- xLow: '吸引力弱',
- xHigh: '吸引力强',
- yLow: '冲突低',
- yHigh: '冲突高',
- quadrants: {
- q1: {
- title: '⚠️ 高收益·高风险',
- color: BRAND.WARM_ORANGE,
- items: [
- '<strong>"儿童营养吸收专家"</strong>',
- '新市场大但偏离药品心智',
- '可能被理解为"补营养的"',
- ],
- note: '→ 杨老师担心的风险所在',
- },
- q2: {
- title: '❌ 高风险·低收益',
- color: BRAND.CORAL,
- items: [
- '"提高免疫力"宣称',
- 'OTC 药品不可宣称',
- '监管风险 + 心智混乱',
- ],
- note: '→ 绝对避免',
- },
- q3: {
- title: '安全但无突破',
- color: '#888',
- items: [
- '"乳酸菌素片"原名延续',
- '维持 6000 万规模',
- '无法打开新市场',
- ],
- note: '→ 不做选择也是一种选择',
- },
- q4: {
- title: '★ 最优区间',
- color: BRAND.JIANG_GREEN,
- items: [
- '<strong>"嚼着吃的儿童肠道调理"</strong>',
- '延续药品心智 + 剂型创新',
- '自然延伸到"调肠道促吸收"',
- ],
- note: '→ 推荐路径',
- },
- },
- accent: c.color,
- })}
- <div style="margin-top:24px; padding:22px; background:${BRAND.JIANG_GREEN}08; border:1px solid ${BRAND.JIANG_GREEN}33; border-radius:var(--radius-md);">
- <div class="text-mono text-xs" style="color:${BRAND.JIANG_GREEN}; letter-spacing:0.15em; margin-bottom:10px; font-weight:700;">王总的三种结果预判(35:53)</div>
- <div style="display:grid; grid-template-columns:repeat(3, 1fr); gap:14px;">
- <div style="padding:14px; background:var(--bg-1); border-radius:6px;">
- <div style="color:var(--text-3); font-size:0.72rem; margin-bottom:6px;">结果 A</div>
- <div style="color:var(--text-1); font-size:0.84rem; line-height:1.5;">继续按原来打,维持 6000 万</div>
- </div>
- <div style="padding:14px; background:var(--bg-1); border-radius:6px; border:1px solid ${BRAND.JIANG_GREEN}44;">
- <div style="color:${BRAND.JIANG_GREEN}; font-size:0.72rem; margin-bottom:6px; font-weight:700;">★ 结果 B</div>
- <div style="color:var(--text-1); font-size:0.84rem; line-height:1.5;">现有儿童中发现未关注到的机会可放大 → <strong>推荐路径</strong></div>
- </div>
- <div style="padding:14px; background:var(--bg-1); border-radius:6px;">
- <div style="color:var(--text-3); font-size:0.72rem; margin-bottom:6px;">结果 C</div>
- <div style="color:var(--text-1); font-size:0.84rem; line-height:1.5;">通过竞争对比发现心智空位 → 需要新品/新品牌</div>
- </div>
- </div>
- </div>
- ${renderDecisionList([
- '<strong>推荐路径</strong>:结果 B — 在"儿童肠道调理"品类内放大未被关注的机会(喂药难/日常养护)',
- '<strong>风险对冲</strong>:核心定位不变(肠道调理),营养吸收作为自然延伸而非主打',
- '<strong>避免</strong>:不做免疫力宣称(监管风险)、不做独立营养品牌(心智冲突)',
- '<strong>分品策略备选</strong>:若要打营养赛道,用新品(软糖/保健品)而非现有 OTC 品',
- ], { accent: c.color, title: 'RISK VERDICT · 风险结论' })}
- </div>
- </section>`;
- }
- module.exports = { renderSub1, renderSub2, renderSub3, renderSub4 };
|