lactic-ch7-opportunity.js 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314
  1. // ==============================================================================
  2. // 江中乳酸菌素片儿童版 · Ch7 新机会 × 新人群(3 子章)
  3. // ==============================================================================
  4. // 7.1 新机会·分龄产品线(0-3 / 3-6 / 6-12)
  5. // 7.2 新赛道·告别瓶瓶罐罐内源吸收
  6. // 7.3 新包装·卡通 IP × 咀嚼片革命
  7. // ==============================================================================
  8. const LA = require('./lactic-analyze.js');
  9. const C = require('./lactic-components.js');
  10. const { BRAND, esc, fmtLikes } = C;
  11. // ==========================================================
  12. // 7.1 · 新机会·分龄产品线
  13. // ==========================================================
  14. function renderSub7_1(ctx) {
  15. const { chapter: c, subIdx, sub, slideNum, slideTotal, data } = ctx;
  16. const items = data.items || [];
  17. const babyVoc = LA.getEvidence(items, {
  18. contentMatch: /月龄|月子|新生|肠绞痛|胀气|0-1岁|1岁半|婴/,
  19. minChars: 20, top: 2, seed: 5,
  20. });
  21. const preschoolVoc = LA.getEvidence(items, {
  22. contentMatch: /入园|幼儿园|3岁|4岁|5岁|小班|托班|挑食/,
  23. minChars: 20, top: 2, seed: 11,
  24. });
  25. const schoolVoc = LA.getEvidence(items, {
  26. contentMatch: /上学|学校|6岁|7岁|8岁|9岁|小学|学业|注意力/,
  27. minChars: 20, top: 2, seed: 17,
  28. });
  29. const ages = [
  30. {
  31. tag: '婴幼儿 0-3 岁', color: BRAND.BABY_PEACH,
  32. weight: '50%+ 核心消费群体',
  33. pains: '肠绞痛 / 便秘腹泻反复 / 抗生素后肠道 / 怕活菌失活',
  34. product: '<strong>颗粒剂(分剂量小包装)</strong>',
  35. price: '¥88 / 30 袋',
  36. pack: '纯色背景 + 月龄刻度标注',
  37. channel: '母婴店 / 药店 / 天猫母婴',
  38. voc: babyVoc[0],
  39. },
  40. {
  41. tag: '学龄前 3-6 岁', color: BRAND.PRESCHOOL_LIME,
  42. weight: '30% 消费力最强',
  43. pains: '入园后饮食不规律 / 积食挑食 / 频繁生病 / 喂药难',
  44. product: '<strong>水果味咀嚼片</strong>(草莓 / 酸奶 / 橙子)',
  45. price: '¥58 / 60 片',
  46. pack: '卡通 IP + 分龄提示 + 独立包装',
  47. channel: '药店 + 京东母婴 + 抖音剧情号',
  48. voc: preschoolVoc[0],
  49. },
  50. {
  51. tag: '学龄期 6-12 岁', color: BRAND.SCHOOL_LAVENDER,
  52. weight: '20% 增量蓝海',
  53. pains: '学业压力导致肠道紊乱 / 便秘腹胀 / 营养吸收差 / 服用便捷',
  54. product: '<strong>加量片剂</strong>(可含着 / 可嚼)',
  55. price: '¥78 / 90 片',
  56. pack: '半成熟风 + 功能说明清晰',
  57. channel: '线上直销 + 学校附近药店 + 家长微信群',
  58. voc: schoolVoc[0],
  59. },
  60. ];
  61. return `<section class="report-section" id="${c.key}-${subIdx}" data-tone="${c.tone}" data-slide-num="${slideNum}/${slideTotal}">
  62. <div class="section-inner">
  63. ${C.renderSectionHead({
  64. eyebrow: `${c.num}.${subIdx} · 分龄产品线`,
  65. title: '<span style="color:' + BRAND.JIANG_GREEN + ';">分龄产品线</span>·0-3 / 3-6 / 6-12 三 SKU 矩阵',
  66. subtitle: '不再"全年龄段通用"的模糊定位——<strong>3 个年龄段 × 3 个产品形态 × 3 套话术 × 3 种价格带</strong>。这是竞品(妈咪爱 / 合生元)没做到的精准分龄。',
  67. color: BRAND.JIANG_GREEN,
  68. })}
  69. <div class="grid" style="grid-template-columns:repeat(3, 1fr); gap:18px; margin-top:24px;">
  70. ${ages.map((a) => `
  71. <div style="padding:22px 24px; background:var(--bg-1); border:1px solid var(--border); border-top:4px solid ${a.color}; border-radius:var(--radius-md);">
  72. <div style="margin-bottom:14px;">
  73. <div class="text-mono text-xs" style="color:${a.color}; letter-spacing:0.15em; font-weight:700;">AGE GROUP</div>
  74. <div style="color:var(--text-1); font-weight:800; font-size:1.18rem; margin-top:4px;">${esc(a.tag)}</div>
  75. <div style="color:${a.color}; font-size:0.82rem; font-family:var(--font-mono); margin-top:2px;">${esc(a.weight)}</div>
  76. </div>
  77. <div style="padding:12px 14px; background:${BRAND.CORAL}0A; border-left:3px solid ${BRAND.CORAL}; border-radius:4px; margin-bottom:10px;">
  78. <div class="text-mono text-xs" style="color:${BRAND.CORAL}; font-weight:700; margin-bottom:4px;">核心痛点</div>
  79. <div style="color:var(--text-1); font-size:0.82rem; line-height:1.55;">${esc(a.pains)}</div>
  80. </div>
  81. <div style="display:flex; flex-direction:column; gap:8px; margin-bottom:14px;">
  82. <div style="padding:9px 12px; background:${a.color}0C; border-radius:4px; display:flex; justify-content:space-between;">
  83. <span class="text-mono text-xs" style="color:${a.color}; font-weight:700;">产品形态</span>
  84. <span style="color:var(--text-1); font-size:0.82rem;">${a.product}</span>
  85. </div>
  86. <div style="padding:9px 12px; background:${a.color}0C; border-radius:4px; display:flex; justify-content:space-between;">
  87. <span class="text-mono text-xs" style="color:${a.color}; font-weight:700;">价格</span>
  88. <span style="color:var(--text-1); font-size:0.82rem; font-family:var(--font-mono); font-weight:700;">${esc(a.price)}</span>
  89. </div>
  90. <div style="padding:9px 12px; background:${a.color}0C; border-radius:4px; display:flex; justify-content:space-between;">
  91. <span class="text-mono text-xs" style="color:${a.color}; font-weight:700;">包装</span>
  92. <span style="color:var(--text-1); font-size:0.82rem;">${esc(a.pack)}</span>
  93. </div>
  94. <div style="padding:9px 12px; background:${a.color}0C; border-radius:4px; display:flex; justify-content:space-between;">
  95. <span class="text-mono text-xs" style="color:${a.color}; font-weight:700;">渠道</span>
  96. <span style="color:var(--text-1); font-size:0.82rem;">${esc(a.channel)}</span>
  97. </div>
  98. </div>
  99. ${a.voc ? C.renderVocCard(a.voc, { accent: a.color, compact: true, maxChars: 130 }) : '<div style="padding:10px; color:var(--text-3); font-size:0.8rem; background:var(--bg-2); border-radius:4px; text-align:center;">— 代表性 VOC 暂缺 —</div>'}
  100. </div>`).join('')}
  101. </div>
  102. <div class="fade-up" style="margin-top:28px;">
  103. ${C.renderInsightHero({
  104. eyebrow: 'ADVANTAGE · 分龄壁垒',
  105. color: BRAND.JIANG_GREEN,
  106. title: `妈咪爱 / 合生元都是<strong>"一个产品打天下"</strong>—— 忽略了 0-3 / 3-6 / 6-12 三段需求和心理的巨大差异。乳酸菌素片儿童版通过<strong style="color:${BRAND.LACTIC_MINT};">分龄产品线</strong>,可以在每个年龄段都做"精准适配",<strong>客单价和复购率都 +30%</strong>。`,
  107. subtitle: `分龄 = <strong>可同时做 3 个 SKU 爆款</strong>,而不是一个通用品在所有年龄段都打折扣。`,
  108. })}
  109. </div>
  110. ${C.renderDecisionList([
  111. `<strong>Year 1:学龄前 3-6 岁先上</strong>(3 亿盘 · 消费力最强 · 竞争空白)`,
  112. `<strong>Year 2:婴幼儿 0-3 岁扩展</strong>(拓展颗粒剂 × 切合生元/拜奥盘)`,
  113. `<strong>Year 3:学龄期 6-12 岁蓝海</strong>(加量片剂 × 市场几乎空白)`,
  114. `<strong>三 SKU 统一卡通 IP 家族</strong>(不同角色表情 × 分龄但系列化)`,
  115. ], { title: '落地决策 · 分龄产品路径', accent: BRAND.JIANG_GREEN, columns: 2 })}
  116. </div>
  117. </section>`;
  118. }
  119. // ==========================================================
  120. // 7.2 · 新赛道·告别瓶瓶罐罐
  121. // ==========================================================
  122. function renderSub7_2(ctx) {
  123. const { chapter: c, subIdx, sub, slideNum, slideTotal, data } = ctx;
  124. const items = data.items || [];
  125. const nutritionVoc = LA.getEvidence(items, {
  126. contentMatch: /营养软糖|DHA|叶黄素|补钙|钙片|维生素|营养包|瓶瓶罐罐|吸收|补了/,
  127. minChars: 25, top: 5, seed: 7,
  128. });
  129. return `<section class="report-section" id="${c.key}-${subIdx}" data-tone="${c.tone}" data-slide-num="${slideNum}/${slideTotal}">
  130. <div class="section-inner">
  131. ${C.renderSectionHead({
  132. eyebrow: `${c.num}.${subIdx} · 新赛道切入`,
  133. title: '<span style="color:' + BRAND.BERRY_PINK + ';">告别瓶瓶罐罐</span>·切入 100 亿儿童营养软糖市场',
  134. subtitle: '家长"追着喂十几种营养软糖"的焦虑 = 乳酸菌素片<strong>内源调理肠道吸收</strong>的<strong>历史级机会</strong>。不拼外源补充,拼吸收源头。',
  135. color: BRAND.BERRY_PINK,
  136. })}
  137. ${C.renderStatStrip([
  138. { num: '100亿+', label: '儿童营养软糖赛道', color: BRAND.BERRY_PINK },
  139. { num: '76%', label: '年增速', color: BRAND.SUNNY_YELLOW, delta: '营养软糖' },
  140. { num: '200%', label: '营养包线上复合增长率', color: BRAND.CORAL },
  141. { num: '65.4%', label: '父母愿意为健康支付溢价', color: BRAND.JIANG_GREEN },
  142. { num: '10%', label: '市场切分目标', color: BRAND.LACTIC_MINT, delta: '= 10 亿' },
  143. ], { accent: BRAND.BERRY_PINK })}
  144. <div class="grid" style="grid-template-columns:1.2fr 1fr; gap:24px; margin-top:24px;">
  145. <div>
  146. <div class="text-mono text-xs" style="color:${BRAND.BERRY_PINK}; letter-spacing:0.18em; margin-bottom:14px; font-weight:700;">VOC · 家长的"营养焦虑"真实原声</div>
  147. <div style="display:flex; flex-direction:column; gap:12px;">
  148. ${nutritionVoc.slice(0, 4).map((it) => C.renderVocCard(it, { accent: BRAND.BERRY_PINK, compact: true, maxChars: 180 })).join('')}
  149. </div>
  150. <div style="margin-top:18px; padding:18px 22px; background:${BRAND.BERRY_PINK}08; border-left:3px solid ${BRAND.BERRY_PINK}; border-radius:var(--radius-md);">
  151. <div class="text-mono text-xs" style="color:${BRAND.BERRY_PINK}; letter-spacing:0.15em; margin-bottom:10px; font-weight:700;">价值主张 · "1 片替代十几种营养糖"</div>
  152. <div style="color:var(--text-1); font-size:0.92rem; line-height:1.8;">
  153. <strong>家长核心焦虑</strong>:孩子要补钙、DHA、叶黄素、维生素等十几种营养 → 每天追着喂十几种瓶瓶罐罐 → 孩子抗拒 + 家长心累<br/><br/>
  154. <strong style="color:${BRAND.LACTIC_MINT};">乳酸菌素片价值主张</strong>:<strong>修复肠道黏膜 · 调节菌群 · 提升肠道自身吸收能力</strong> → 让孩子从日常饮食中就吸收足够营养 → <strong>"1 片调肠道,告别十几种营养糖"</strong>
  155. </div>
  156. </div>
  157. </div>
  158. <div>
  159. ${C.renderTheoryBox({
  160. theory: '对比策略 · 内源调理 vs 外源补充',
  161. accent: BRAND.LACTIC_MINT,
  162. mapping: `
  163. <table style="width:100%; border-collapse:collapse; font-size:0.85rem;">
  164. <thead>
  165. <tr style="border-bottom:2px solid ${BRAND.LACTIC_MINT}33;">
  166. <th style="text-align:left; padding:8px 6px; color:var(--text-3); font-weight:700; font-size:0.78rem;">维度</th>
  167. <th style="text-align:center; padding:8px 6px; color:${BRAND.BERRY_PINK}; font-weight:700; font-size:0.78rem;">营养软糖</th>
  168. <th style="text-align:center; padding:8px 6px; color:${BRAND.LACTIC_MINT}; font-weight:700; font-size:0.78rem;">乳酸菌素片</th>
  169. </tr>
  170. </thead>
  171. <tbody>
  172. <tr style="border-bottom:1px solid var(--border);"><td style="padding:7px 6px; color:var(--text-2);">核心逻辑</td><td style="text-align:center; padding:7px 6px;">外源补充</td><td style="text-align:center; padding:7px 6px; color:${BRAND.LACTIC_MINT}; font-weight:600;">内源调理</td></tr>
  173. <tr style="border-bottom:1px solid var(--border);"><td style="padding:7px 6px; color:var(--text-2);">吸收依赖</td><td style="text-align:center; padding:7px 6px; color:${BRAND.CORAL};">肠道好不好</td><td style="text-align:center; padding:7px 6px; color:${BRAND.LACTIC_MINT}; font-weight:600;">自己修复肠道</td></tr>
  174. <tr style="border-bottom:1px solid var(--border);"><td style="padding:7px 6px; color:var(--text-2);">糖分</td><td style="text-align:center; padding:7px 6px; color:${BRAND.CORAL};">含糖</td><td style="text-align:center; padding:7px 6px; color:${BRAND.LACTIC_MINT}; font-weight:600;">无糖可选</td></tr>
  175. <tr style="border-bottom:1px solid var(--border);"><td style="padding:7px 6px; color:var(--text-2);">背书</td><td style="text-align:center; padding:7px 6px; color:${BRAND.CORAL};">普通食品</td><td style="text-align:center; padding:7px 6px; color:${BRAND.LACTIC_MINT}; font-weight:600;">OTC 药品</td></tr>
  176. <tr style="border-bottom:1px solid var(--border);"><td style="padding:7px 6px; color:var(--text-2);">月消费</td><td style="text-align:center; padding:7px 6px;">¥200+</td><td style="text-align:center; padding:7px 6px; color:${BRAND.LACTIC_MINT}; font-weight:600;">¥58-128</td></tr>
  177. <tr><td style="padding:7px 6px; color:var(--text-2);">场景</td><td style="text-align:center; padding:7px 6px; color:${BRAND.CORAL};">不解决问题</td><td style="text-align:center; padding:7px 6px; color:${BRAND.LACTIC_MINT}; font-weight:600;">全场景</td></tr>
  178. </tbody>
  179. </table>
  180. `,
  181. })}
  182. <div style="margin-top:18px;">
  183. ${C.renderFindingCard({
  184. icon: '🎯',
  185. title: '关键话术:4 个场景替换',
  186. accent: BRAND.LACTIC_MINT,
  187. body: `不是"我们比软糖好",而是"<strong>让软糖不再必要</strong>":<br/>
  188. ① 不吃钙软糖 → <strong>肠道能吸收饮食中的钙</strong><br/>
  189. ② 不吃 DHA 软糖 → <strong>内源合成足够 DHA 前体</strong><br/>
  190. ③ 不吃维生素软糖 → <strong>肠道菌群合成维生素</strong><br/>
  191. ④ 不吃叶黄素 → <strong>健康肠道提升营养利用率</strong>`,
  192. })}
  193. </div>
  194. </div>
  195. </div>
  196. ${C.renderDecisionList([
  197. `<strong>营销核心话术</strong>:<em>"调肠道,促吸收,告别瓶瓶罐罐"</em>`,
  198. `<strong>科普内容主题</strong>:与儿科医生 + 营养师合作"肠道才是营养吸收的关键"`,
  199. `<strong>跨界联合</strong>:与儿童奶粉 / 辅食 / 牛奶品牌合作"好营养,先要好吸收"`,
  200. `<strong>目标:切 10%</strong> → 100 亿 × 10% = 10 亿基本盘`,
  201. ], { title: '落地决策 · 营养软糖赛道切入', accent: BRAND.BERRY_PINK, columns: 2 })}
  202. </div>
  203. </section>`;
  204. }
  205. // ==========================================================
  206. // 7.3 · 新包装·卡通 IP × 咀嚼片革命
  207. // ==========================================================
  208. function renderSub7_3(ctx) {
  209. const { chapter: c, subIdx, sub, slideNum, slideTotal, data } = ctx;
  210. const items = data.items || [];
  211. const packVoc = LA.getEvidence(items, {
  212. contentMatch: /包装|卡通|IP|颜值|独立|一次一|分龄|好看/,
  213. minChars: 20, top: 4, seed: 7,
  214. });
  215. return `<section class="report-section" id="${c.key}-${subIdx}" data-tone="${c.tone}" data-slide-num="${slideNum}/${slideTotal}">
  216. <div class="section-inner">
  217. ${C.renderSectionHead({
  218. eyebrow: `${c.num}.${subIdx} · 包装革命`,
  219. title: '<span style="color:' + BRAND.SUNNY_YELLOW + ';">卡通 IP × 咀嚼片</span>·包装革命解决依从性',
  220. subtitle: '90/95 后妈妈是<strong>颜值决策 + 孩子好感双引擎</strong>。包装不是花瓶,是<strong>解决喂药依从性</strong>的核心落地 — 孩子爱吃 = 家长复购 = 粘性壁垒。',
  221. color: BRAND.SUNNY_YELLOW,
  222. })}
  223. <div class="grid" style="grid-template-columns:1fr 1fr 1fr; gap:18px; margin-top:24px;">
  224. <div style="padding:20px 22px; background:${BRAND.SUNNY_YELLOW}08; border:1px solid ${BRAND.SUNNY_YELLOW}33; border-radius:var(--radius-md); border-top:4px solid ${BRAND.SUNNY_YELLOW};">
  225. <div class="text-mono text-xs" style="color:${BRAND.SUNNY_YELLOW}; letter-spacing:0.15em; font-weight:700; margin-bottom:8px;">🎨 视觉系统</div>
  226. <div style="color:var(--text-1); font-weight:800; font-size:1.08rem; margin-bottom:10px;">全维度儿童化</div>
  227. <div style="color:var(--text-2); font-size:0.84rem; line-height:1.7;">
  228. · 去掉药盒感<br/>
  229. · 荷叶绿 + 奶油米色基调<br/>
  230. · 卡通 IP 吉祥物<br/>
  231. · 年龄配色分层<br/>
  232. · OTC 蓝帽显眼 + 国药准字可查<br/>
  233. · 儿童友好但不幼稚
  234. </div>
  235. </div>
  236. <div style="padding:20px 22px; background:${BRAND.BERRY_PINK}08; border:1px solid ${BRAND.BERRY_PINK}33; border-radius:var(--radius-md); border-top:4px solid ${BRAND.BERRY_PINK};">
  237. <div class="text-mono text-xs" style="color:${BRAND.BERRY_PINK}; letter-spacing:0.15em; font-weight:700; margin-bottom:8px;">📦 独立包装</div>
  238. <div style="color:var(--text-1); font-weight:800; font-size:1.08rem; margin-bottom:10px;">一次一板</div>
  239. <div style="color:var(--text-2); font-size:0.84rem; line-height:1.7;">
  240. · 每板 2 片(早晚各 1)<br/>
  241. · 幼儿园 / 旅行方便带<br/>
  242. · 卫生 + 剂量精准<br/>
  243. · 印生产日期 + 分龄<br/>
  244. · 铝膜防潮保质期长<br/>
  245. · 比瓶装溢价 30% 也愿买
  246. </div>
  247. </div>
  248. <div style="padding:20px 22px; background:${BRAND.LACTIC_MINT}08; border:1px solid ${BRAND.LACTIC_MINT}33; border-radius:var(--radius-md); border-top:4px solid ${BRAND.LACTIC_MINT};">
  249. <div class="text-mono text-xs" style="color:${BRAND.LACTIC_MINT}; letter-spacing:0.15em; font-weight:700; margin-bottom:8px;">🍬 咀嚼片剂型</div>
  250. <div style="color:var(--text-1); font-weight:800; font-size:1.08rem; margin-bottom:10px;">水果味 3 款</div>
  251. <div style="color:var(--text-2); font-size:0.84rem; line-height:1.7;">
  252. · 草莓味(学龄前首选)<br/>
  253. · 酸奶味(3-6 岁最爱)<br/>
  254. · 橙子味(学龄期不腻)<br/>
  255. · 无糖配方(木糖醇)<br/>
  256. · 不含防腐剂 / 香精 / 色素<br/>
  257. · "像奶片甜甜的很好吃" ♥748
  258. </div>
  259. </div>
  260. </div>
  261. <div class="fade-up" style="margin-top:28px;">
  262. ${C.renderInsightHero({
  263. eyebrow: 'IP COLLABORATION · IP 联名路径',
  264. color: BRAND.BERRY_PINK,
  265. title: `分龄 IP 联名是<strong>可持续的包装心智</strong>——不同年龄段的 IP 调性不同:<br/>
  266. <strong style="color:${BRAND.BABY_PEACH};">婴幼儿</strong>(0-3 岁)→ 小熊软糖家族 / 宝宝巴士<br/>
  267. <strong style="color:${BRAND.PRESCHOOL_LIME};">学龄前</strong>(3-6 岁)→ 小猪佩奇 / 超级飞侠 / 咕力咕力<br/>
  268. <strong style="color:${BRAND.SCHOOL_LAVENDER};">学龄期</strong>(6-12 岁)→ 喜羊羊 / 奥特曼 / 叶罗丽`,
  269. subtitle: `IP 联名每年更换 = <strong>可持续的社交货币</strong> + 孩子之间的"这次你有吗"收藏心理。`,
  270. })}
  271. </div>
  272. ${C.renderDecisionList([
  273. `<strong>P0 视觉规范</strong>:去药盒化 + 全维度儿童化 + OTC 蓝帽必留`,
  274. `<strong>P0 剂型升级</strong>:水果味 3 款咀嚼片 · 无糖配方 · 无添加`,
  275. `<strong>P1 独立板装</strong>:每板 2 片 · 幼儿园/出行便携 · 日期可见`,
  276. `<strong>P2 IP 联名</strong>:Y1 小猪佩奇 / Y2 奥特曼 / Y3 喜羊羊(与成长轨迹匹配)`,
  277. ], { title: '落地决策 · 包装革命 4 条铁律', accent: BRAND.SUNNY_YELLOW, columns: 2 })}
  278. </div>
  279. </section>`;
  280. }
  281. module.exports = {
  282. 'opportunity-1': renderSub7_1,
  283. 'opportunity-2': renderSub7_2,
  284. 'opportunity-3': renderSub7_3,
  285. };