liver-ch3-market.js 28 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439
  1. // ==============================================================================
  2. // 江中肝纯片 · Ch3 护肝市场 VOC 全景(4 子章)
  3. // ==============================================================================
  4. // 3.1 50 亿保健护肝·品类地图
  5. // 3.2 五大竞品心智·Swisse / 易善复 / 葵花 / 片仔癀 / 海王金樽
  6. // 3.3 人群声量·脂肪肝 × 熬夜 × 应酬
  7. // 3.4 未满足需求·四象限空白地带
  8. // ==============================================================================
  9. const LA = require('./liver-analyze.js');
  10. const C = require('./liver-components.js');
  11. const { BRAND, esc, fmtLikes } = C;
  12. // ==========================================================
  13. // 3.1 · 50 亿保健护肝·品类地图
  14. // ==========================================================
  15. function renderSub3_1(ctx) {
  16. const { chapter: c, subIdx, sub, slideNum, slideTotal, data } = ctx;
  17. const items = data.items || [];
  18. const segments = [
  19. { label: 'OTC 胃肝处方药(易善复/双环醇/水飞蓟宾胶囊)', value: 100, valueLabel: '100 亿 · 40%', color: BRAND.TECH_BLUE },
  20. { label: '进口 / 跨境保健品(Swisse / Kirkland / LM)', value: 35, valueLabel: '35 亿 · 14%', color: BRAND.PURPLE },
  21. { label: '国产大牌保健品(汤臣倍健 / 葵花)', value: 40, valueLabel: '40 亿 · 16%', color: BRAND.LIVER_AMBER },
  22. { label: '中药护肝(片仔癀 / 熊胆粉 / 五味子)', value: 30, valueLabel: '30 亿 · 12%', color: BRAND.SAGE },
  23. { label: '解酒专项(海王金樽 / RU21 / 宿醒)', value: 25, valueLabel: '25 亿 · 10%', color: BRAND.WINE_RED },
  24. { label: '食补 / 茶饮(五指毛桃 / 莓茶 / 青梗梅)', value: 20, valueLabel: '20 亿 · 8%', color: BRAND.TENGCHA_GREEN },
  25. ];
  26. return `<section class="report-section" id="${c.key}-${subIdx}" data-tone="${c.tone}" data-slide-num="${slideNum}/${slideTotal}">
  27. <div class="section-inner">
  28. ${C.renderSectionHead({
  29. eyebrow: `${c.num}.${subIdx} · 品类地图`,
  30. title: '<span style="color:' + BRAND.TECH_BLUE + ';">250 亿</span> 护肝相关赛道·VOC 情绪分布全景',
  31. subtitle: '不看传统品类报告的"行业结构",而是从 <strong>4719 条真实 VOC</strong> 里看<strong>用户的情感分布</strong>——哪块最响、哪块最冷,机会就在那里。',
  32. color: BRAND.TECH_BLUE,
  33. })}
  34. ${C.renderStatStrip([
  35. { num: '250亿', label: '护肝相关总盘', color: BRAND.TECH_BLUE },
  36. { num: '40%', label: 'OTC 处方药占比', color: BRAND.TECH_BLUE },
  37. { num: '4719', label: 'VOC 样本', color: BRAND.LIVER_AMBER },
  38. { num: '18', label: '核心竞品数', color: BRAND.ROSE },
  39. { num: '3', label: '无人地带象限', color: BRAND.JIANG_GREEN },
  40. ], { accent: BRAND.TECH_BLUE })}
  41. <div class="grid" style="grid-template-columns:1.4fr 1fr; gap:24px; margin-top:24px;">
  42. <div>
  43. ${C.renderBarChart(segments, { accent: BRAND.TECH_BLUE, title: '护肝相关赛道 · 250 亿品类切片(近似估算)', height: 300 })}
  44. <div style="margin-top:18px; padding:16px 20px; background:${BRAND.LIVER_AMBER}08; border-left:3px solid ${BRAND.LIVER_AMBER}; border-radius:4px;">
  45. <div class="text-mono text-xs" style="color:${BRAND.LIVER_AMBER}; letter-spacing:0.15em; margin-bottom:8px; font-weight:700;">CROSS-CATEGORY INSIGHT · 跨品类洞察</div>
  46. <div style="color:var(--text-1); font-size:0.9rem; line-height:1.72;">
  47. 肝纯片不是在单一赛道内竞争——它是在<strong>OTC 处方药(下沉)× 进口保健(上探)× 食补文化(横切)</strong> 三块市场之间<strong style="color:${BRAND.JIANG_GREEN};">重新定义一个新品类</strong>。
  48. VOC 证据显示用户最痛点集中在"OTC 药副作用 / 进口贵且吸收差 / 食补不方便"三个缺口——<strong>正是肝纯片的机会</strong>。
  49. </div>
  50. </div>
  51. </div>
  52. <div>
  53. ${C.renderTheoryBox({
  54. theory: 'VOC 情感浓度 · 各品类的用户痛感',
  55. accent: BRAND.TECH_BLUE,
  56. mapping: `
  57. <div style="display:flex; flex-direction:column; gap:10px; font-size:0.88rem;">
  58. <div style="padding:10px 12px; background:${BRAND.TECH_BLUE}0C; border-left:3px solid ${BRAND.TECH_BLUE}; border-radius:4px;">
  59. <div style="color:${BRAND.TECH_BLUE}; font-weight:700;">OTC 处方药 · 40%</div>
  60. <div style="color:var(--text-2); font-size:0.84rem;">痛点:医嘱依赖 / 不能长期 / 有副作用</div>
  61. </div>
  62. <div style="padding:10px 12px; background:${BRAND.PURPLE}0C; border-left:3px solid ${BRAND.PURPLE}; border-radius:4px;">
  63. <div style="color:${BRAND.PURPLE}; font-weight:700;">进口保健 · 14%</div>
  64. <div style="color:var(--text-2); font-size:0.84rem;">痛点:价格贵 / 吸收差 / 剂量夸张</div>
  65. </div>
  66. <div style="padding:10px 12px; background:${BRAND.LIVER_AMBER}0C; border-left:3px solid ${BRAND.LIVER_AMBER}; border-radius:4px;">
  67. <div style="color:${BRAND.LIVER_AMBER}; font-weight:700;">国产大牌 · 16%</div>
  68. <div style="color:var(--text-2); font-size:0.84rem;">痛点:同质化 / 送礼缺乏 / 缺差异化</div>
  69. </div>
  70. <div style="padding:10px 12px; background:${BRAND.SAGE}0C; border-left:3px solid ${BRAND.SAGE}; border-radius:4px;">
  71. <div style="color:${BRAND.SAGE}; font-weight:700;">中药护肝 · 12%</div>
  72. <div style="color:var(--text-2); font-size:0.84rem;">痛点:"那个味太上头了"(♥55)/ 保守形象</div>
  73. </div>
  74. <div style="padding:10px 12px; background:${BRAND.WINE_RED}0C; border-left:3px solid ${BRAND.WINE_RED}; border-radius:4px;">
  75. <div style="color:${BRAND.WINE_RED}; font-weight:700;">解酒专项 · 10%</div>
  76. <div style="color:var(--text-2); font-size:0.84rem;">痛点:海王金樽硬广透支 / 用户自发找土办法</div>
  77. </div>
  78. <div style="padding:10px 12px; background:${BRAND.TENGCHA_GREEN}0C; border-left:3px solid ${BRAND.TENGCHA_GREEN}; border-radius:4px;">
  79. <div style="color:${BRAND.TENGCHA_GREEN}; font-weight:700;">食补 / 茶饮 · 8%</div>
  80. <div style="color:var(--text-2); font-size:0.84rem;">机会:藤茶 / 莓茶 已有地理心智,<strong>可被升级为品牌</strong></div>
  81. </div>
  82. </div>
  83. `,
  84. })}
  85. </div>
  86. </div>
  87. ${C.renderDecisionList([
  88. `<strong>品类定位:跨 3 块市场的"新品类"</strong>——不做 OTC 也不是纯保健,是"日常护肝养饮"`,
  89. `<strong>首战:食补茶饮升级赛道</strong>(机会最小但切口最窄 · 可做大)`,
  90. `<strong>次战:进口保健替代</strong>(价格降 20-30% + 吸收更好)`,
  91. `<strong>第三战:OTC 边缘市场</strong>(应酬 / 熬夜场景的"日常养护")`,
  92. ], { title: '落地决策 · 250 亿市场切入路径', accent: BRAND.TECH_BLUE, columns: 2 })}
  93. </div>
  94. </section>`;
  95. }
  96. // ==========================================================
  97. // 3.2 · 五大竞品心智·Swisse / 易善复 / 葵花 / 片仔癀 / 海王金樽
  98. // ==========================================================
  99. function renderSub3_2(ctx) {
  100. const { chapter: c, subIdx, sub, slideNum, slideTotal, data } = ctx;
  101. const items = data.items || [];
  102. // 每个竞品的代表性 VOC — 使用 getEvidence 加内容过滤,优先"熟悉品牌 + 真实评价"
  103. const sw = LA.getEvidence(items, {
  104. keyword: 'swisse护肝片',
  105. contentMatch: /swisse|护肝|熬夜|喝酒|转氨酶|肝|神奇|贵|效果/i,
  106. minChars: 18, top: 2, seed: 5,
  107. });
  108. const ys = LA.getEvidence(items, {
  109. keyword: '易善复',
  110. contentMatch: /易善复|脂肪肝|转氨酶|医生|吃|体检|磷脂|公司|指标/,
  111. minChars: 12, top: 2, seed: 9,
  112. });
  113. const kh = LA.getEvidence(items, {
  114. keyword: '葵花护肝片',
  115. contentMatch: /葵花|护肝|吃|天天|拉肚|药|肝|赛治|副作用/,
  116. minChars: 10, top: 2, seed: 13,
  117. });
  118. const pzh = LA.getEvidence(items, {
  119. keyword: '片仔癀护肝',
  120. contentMatch: /片仔癀|吞服|味|肝|脂肪|吃|重度|轻度|泡水|化水|苦/,
  121. minChars: 15, top: 2, seed: 17,
  122. });
  123. const hw = LA.getEvidence(items, {
  124. keyword: '海王金樽',
  125. contentMatch: /海王|金樽|广告|老哒|解酒|喝酒|杯|电解质|秘密武器|药|神/i,
  126. minChars: 15, top: 2, seed: 21,
  127. });
  128. const tc = LA.getEvidence(items, {
  129. keyword: '汤臣倍健护肝',
  130. contentMatch: /汤臣|倍健|护肝|吃|气色|大半年|保健/,
  131. minChars: 15, top: 2, seed: 25,
  132. });
  133. const competitors = [
  134. { name: 'Swisse 护肝片', color: BRAND.PURPLE, tag: '进口高端',
  135. pros: '品牌调性 × 小红书心智 × 进口背书',
  136. cons: '"不会真有人相信有可以随意熬夜喝酒的药" ♥43 · 价格贵 · "吃了转氨酶从正常到异常" ♥37',
  137. voc: sw },
  138. { name: '易善复', color: BRAND.TECH_BLUE, tag: 'OTC 处方药',
  139. pros: '医生开方 · 转氨酶降速快("3 天 100 到 35" ♥40)',
  140. cons: '必须医嘱 · "入职体检查没道理" ♥27 · 不日常 · 停药反弹担忧',
  141. voc: ys },
  142. { name: '葵花护肝片', color: BRAND.SAGE, tag: '国产中成药',
  143. pros: '便宜 · 药店普及 · 中成药备案',
  144. cons: '"这药能天天吃吗" ♥19 · "长期吃拉肚子" ♥15 · 副作用担忧 · 保守形象',
  145. voc: kh },
  146. { name: '片仔癀 护肝', color: BRAND.DEEP_AMBER, tag: '高端中药',
  147. pros: '国礼级底蕴 · "重度吃到轻度" ♥23 确有疗效',
  148. cons: '"那个味太上头了 泡水喝的都是勇士" ♥55 · 价格贵 · 口感壁垒',
  149. voc: pzh },
  150. { name: '海王金樽', color: BRAND.WINE_RED, tag: '解酒专项',
  151. pros: '先发品类代表 · 知名度高',
  152. cons: '"老哒广告杠杠的" ♥40 · 用户倒退回电解质水土办法 ♥366',
  153. voc: hw },
  154. { name: '汤臣倍健 护肝', color: BRAND.LIVER_AMBER, tag: '大牌保健品',
  155. pros: '渠道覆盖广 · 长期服用 × "气色由内而外好" ♥13',
  156. cons: '话题密度低(XHS 高赞≤♥13)· 同质化严重 · 缺乏差异化成分故事',
  157. voc: tc },
  158. ];
  159. return `<section class="report-section" id="${c.key}-${subIdx}" data-tone="${c.tone}" data-slide-num="${slideNum}/${slideTotal}">
  160. <div class="section-inner">
  161. ${C.renderSectionHead({
  162. eyebrow: `${c.num}.${subIdx} · 六大竞品心智`,
  163. title: '<span style="color:' + BRAND.ROSE + ';">6 大竞品</span> 逐一拆解:VOC 差评 = 肝纯片的切入点',
  164. subtitle: '每个竞品都有自己的<strong style="color:' + BRAND.ROSE + ';">"致命缺陷"</strong>——把它们打包成机会地图,肝纯片的定位就浮现了。',
  165. color: BRAND.ROSE,
  166. })}
  167. <div class="grid" style="grid-template-columns:1fr; gap:18px; margin-top:20px;">
  168. ${competitors.map((comp) => `
  169. <div style="padding:20px 24px; background:var(--bg-1); border:1px solid var(--border); border-left:4px solid ${comp.color}; border-radius:var(--radius-md);">
  170. <div style="display:grid; grid-template-columns:220px 1fr 1.1fr; gap:20px; align-items:start;">
  171. <div>
  172. <div style="display:inline-block; padding:3px 10px; background:${comp.color}15; color:${comp.color}; border-radius:12px; font-size:0.7rem; font-weight:700; font-family:var(--font-mono); letter-spacing:0.1em; margin-bottom:6px;">${comp.tag}</div>
  173. <div style="color:var(--text-1); font-weight:800; font-size:1.2rem; margin-bottom:10px;">${comp.name}</div>
  174. <div style="display:flex; flex-direction:column; gap:8px; font-size:0.82rem;">
  175. <div style="color:${BRAND.JIANG_GREEN};"><strong>✓ Pros:</strong> <span style="color:var(--text-2);">${comp.pros}</span></div>
  176. <div style="color:${BRAND.CORAL};"><strong>✗ Cons:</strong> <span style="color:var(--text-2);">${comp.cons}</span></div>
  177. </div>
  178. </div>
  179. <div>
  180. <div class="text-mono text-xs" style="color:${comp.color}; letter-spacing:0.15em; margin-bottom:8px; font-weight:700;">VOC 真实声音</div>
  181. <div style="display:flex; flex-direction:column; gap:8px;">
  182. ${(comp.voc || []).slice(0, 2).map((it) => C.renderVocCard(it, { accent: comp.color, compact: true, maxChars: 160 })).join('')}
  183. </div>
  184. </div>
  185. <div>
  186. <div class="text-mono text-xs" style="color:${BRAND.JIANG_GREEN}; letter-spacing:0.15em; margin-bottom:8px; font-weight:700;">肝纯片差异化切入</div>
  187. <div style="padding:14px 16px; background:${BRAND.JIANG_GREEN}08; border:1px solid ${BRAND.JIANG_GREEN}33; border-radius:6px; color:var(--text-1); font-size:0.86rem; line-height:1.7;">
  188. ${getSwitch(comp.name)}
  189. </div>
  190. </div>
  191. </div>
  192. </div>`).join('')}
  193. </div>
  194. <div class="fade-up" style="margin-top:32px;">
  195. ${C.renderInsightHero({
  196. eyebrow: 'COMPETITIVE MAP · 竞品地图总结',
  197. color: BRAND.ROSE,
  198. title: `6 大竞品<strong>各有长处但都有"VOC 破口"</strong>。肝纯片不必与每一家正面对冲——只需在<strong style="color:${BRAND.JIANG_GREEN};">进口心智(非 Swisse 的高贵感)× 中药底蕴(非片仔癀的口感抗拒)× 大众可日常(非易善复的医嘱感)</strong>的三角中间坐稳。`,
  199. subtitle: `下一节 3.3 用 VOC 证据验证肝纯片的<strong>场景人群密度</strong>——三大人群声量是肝纯片差异化的火力点。`,
  200. })}
  201. </div>
  202. ${C.renderDecisionList([
  203. `<strong>vs Swisse</strong>:性价比 + 吸收好(国人代谢适配)+ 东方草本文化`,
  204. `<strong>vs 易善复</strong>:无医嘱自由购买 + 长期日常服用 + OTC 合规`,
  205. `<strong>vs 葵花 / 汤臣</strong>:成分真差异化(DMY)+ 有故事(张家界)+ 有场景`,
  206. `<strong>vs 片仔癀 / 熊胆粉</strong>:口感好 + 不传统药形 + 日常化`,
  207. `<strong>vs 海王金樽</strong>:不硬广 + 真体感(清解酒后头疼)+ 场景多元`,
  208. `<strong>总策略</strong>:同时吃"进口 + 处方 + 大牌"三块市场各 15%`,
  209. ], { title: '落地决策 · 差异化打法 6 条', accent: BRAND.ROSE, columns: 2 })}
  210. </div>
  211. </section>`;
  212. }
  213. function getSwitch(name) {
  214. const map = {
  215. 'Swisse 护肝片': '用<strong>东方草本 + 千年食饮</strong>替代"进口神话"<br/>用<strong>国人代谢更适</strong>打败"吸收差"<br/>用<strong>¥298 vs Swisse ¥400+</strong> 的价格带位',
  216. '易善复': '用 <strong>OTC 保健 + 日常养护</strong>绕开"医嘱处方"<br/>用<strong>"不用等体检异常再吃"</strong>抢占预防市场<br/>用<strong>DMY 抗氧化</strong>填补"只管磷脂胆碱"的机理空白',
  217. '葵花护肝片': '用<strong>更温和的食品级 DMY</strong>消除"天天吃安全吗"的担忧<br/>用<strong>现代包装 × 品牌升级</strong>摆脱"老一辈药盒"<br/>用<strong>应酬解酒场景</strong>对抗"肝损伤复方药"的保守形象',
  218. '片仔癀 护肝': '用<strong>胶囊 / 片剂好吞服</strong>解决"泡水喝的都是勇士"的口感痛点<br/>用<strong>¥298 vs 片仔癀 ¥500+</strong>的亲民高端定位<br/>用<strong>可日常服用</strong>对抗"偶尔才吃一次"的使用壁垒',
  219. '海王金樽': '用<strong>真场景真证据</strong>替代"硬广洗脑"<br/>用<strong>藤茶 DMY 清解酒后头疼</strong>的具象体感打败"吃了没感觉"<br/>用<strong>XHS 种草 + 抖音场景剧</strong>替代"电视 TVC + KOL口号"',
  220. '汤臣倍健 护肝': '用<strong>DMY 真差异化</strong>摆脱"保健品同质化"<br/>用<strong>千年食饮 + 张家界</strong>建立讲故事的本钱<br/>用<strong>应酬 / 送长辈场景</strong>抢占"长期服用"外的新需求',
  221. };
  222. return map[name] || '差异化路径待定';
  223. }
  224. // ==========================================================
  225. // 3.3 · 人群声量·脂肪肝 × 熬夜 × 应酬
  226. // ==========================================================
  227. function renderSub3_3(ctx) {
  228. const { chapter: c, subIdx, sub, slideNum, slideTotal, data } = ctx;
  229. const items = data.items || [];
  230. // 脂肪肝抖音/XHS 高赞,过滤掉"密集恐惧症"等纯画面反应的评论
  231. const fatLiver = LA.getEvidence(items, {
  232. keyword: '脂肪肝',
  233. contentMatch: /脂肪肝|肝|转氨酶|体检|熬夜|胆固醇|肥胖|酒|喝|吃|没几天|指标|血脂|瘦|三高/,
  234. minChars: 15, top: 4, seed: 5,
  235. });
  236. // 熬夜伤肝 / 熬夜护肝(用 getEvidence 合并 + content filter)
  237. const nightShift = LA.getEvidence(items, {
  238. contentMatch: /熬夜|肝|转氨酶|体检|护肝|吓|脆弱|18岁|夜班|早点睡|护肝片/,
  239. minChars: 15, top: 4, seed: 11,
  240. }).filter((it) => ['熬夜伤肝', '熬夜护肝'].includes(it.keyword)).slice(0, 4);
  241. // 应酬解酒 / 解酒神器 / 酒局必备
  242. const drinkScene = LA.getEvidence(items, {
  243. contentMatch: /喝|酒|应酬|解酒|醉|头|醒|难受|缓解|喝多|醋|酸奶|维b|药/,
  244. minChars: 20, top: 6, seed: 17,
  245. }).filter((it) => /应酬|解酒|酒局/.test(it.keyword || '')).slice(0, 4);
  246. return `<section class="report-section" id="${c.key}-${subIdx}" data-tone="${c.tone}" data-slide-num="${slideNum}/${slideTotal}">
  247. <div class="section-inner">
  248. ${C.renderSectionHead({
  249. eyebrow: `${c.num}.${subIdx} · 人群声量`,
  250. title: '<span style="color:' + BRAND.CORAL + ';">脂肪肝 × 熬夜 × 应酬</span>·三大人群声量金矿',
  251. subtitle: '三大人群声量在抖音 / 小红书的真实 VOC 体量<strong>远大于 5 大竞品的讨论量</strong>——这是肝纯片的真正蓝海。',
  252. color: BRAND.WARM_ORANGE,
  253. })}
  254. ${C.renderStatStrip([
  255. { num: '497', label: 'H4 场景 VOC', color: BRAND.WARM_ORANGE },
  256. { num: '21328', label: '单条最高点赞', color: BRAND.CORAL, delta: '抖音熬夜伤肝' },
  257. { num: '5729', label: 'XHS 最高点赞', color: BRAND.WINE_RED, delta: '应酬解酒' },
  258. { num: '750', label: '脂肪肝最高点赞', color: BRAND.LIVER_AMBER, delta: '抖音' },
  259. { num: '3', label: '核心人群象限', color: BRAND.JIANG_GREEN },
  260. ], { accent: BRAND.WARM_ORANGE })}
  261. <div class="grid" style="grid-template-columns:1fr 1fr 1fr; gap:20px; margin-top:28px;">
  262. <!-- 脂肪肝 -->
  263. <div style="padding:20px; background:${BRAND.LIVER_AMBER}08; border:1px solid ${BRAND.LIVER_AMBER}33; border-radius:var(--radius-md); display:flex; flex-direction:column; gap:14px;">
  264. <div>
  265. <div class="text-mono text-xs" style="color:${BRAND.LIVER_AMBER}; letter-spacing:0.18em; font-weight:700; margin-bottom:6px;">HUMAN GROUP A</div>
  266. <div style="color:var(--text-1); font-size:1.3rem; font-weight:800;">脂肪肝人群</div>
  267. <div style="color:${BRAND.LIVER_AMBER}; font-size:0.84rem; margin-top:4px;">25-45 岁 · 都市白领 · 体检驱动</div>
  268. </div>
  269. ${fatLiver.slice(0, 3).map((it) => C.renderVocCard(it, { accent: BRAND.LIVER_AMBER, compact: true, maxChars: 120 })).join('')}
  270. <div style="margin-top:auto; padding:12px 14px; background:${BRAND.LIVER_AMBER}12; border-left:3px solid ${BRAND.LIVER_AMBER}; border-radius:4px; font-size:0.82rem; color:var(--text-1); line-height:1.6;">
  271. <strong>肝纯片切入:</strong>"体检查出来了怎么办 → 每天两粒日常养护 DMY" · <em>对标易善复但无医嘱门槛</em>
  272. </div>
  273. </div>
  274. <!-- 熬夜 -->
  275. <div style="padding:20px; background:${BRAND.CORAL}08; border:1px solid ${BRAND.CORAL}33; border-radius:var(--radius-md); display:flex; flex-direction:column; gap:14px;">
  276. <div>
  277. <div class="text-mono text-xs" style="color:${BRAND.CORAL}; letter-spacing:0.18em; font-weight:700; margin-bottom:6px;">HUMAN GROUP B</div>
  278. <div style="color:var(--text-1); font-size:1.3rem; font-weight:800;">熬夜伤肝人群</div>
  279. <div style="color:${BRAND.CORAL}; font-size:0.84rem; margin-top:4px;">18-30 岁 · 学生 + 职场新人 · Z 世代</div>
  280. </div>
  281. ${nightShift.slice(0, 3).map((it) => C.renderVocCard(it, { accent: BRAND.CORAL, compact: true, maxChars: 140 })).join('')}
  282. <div style="margin-top:auto; padding:12px 14px; background:${BRAND.CORAL}12; border-left:3px solid ${BRAND.CORAL}; border-radius:4px; font-size:0.82rem; color:var(--text-1); line-height:1.6;">
  283. <strong>肝纯片切入:</strong>"吓得我赶紧吃两粒护肝片"(抖音♥4823)= 最直白的心智入口 · <em>建"熬夜自救"品类</em>
  284. </div>
  285. </div>
  286. <!-- 应酬 -->
  287. <div style="padding:20px; background:${BRAND.WINE_RED}08; border:1px solid ${BRAND.WINE_RED}33; border-radius:var(--radius-md); display:flex; flex-direction:column; gap:14px;">
  288. <div>
  289. <div class="text-mono text-xs" style="color:${BRAND.WINE_RED}; letter-spacing:0.18em; font-weight:700; margin-bottom:6px;">HUMAN GROUP C</div>
  290. <div style="color:var(--text-1); font-size:1.3rem; font-weight:800;">应酬解酒人群</div>
  291. <div style="color:${BRAND.WINE_RED}; font-size:0.84rem; margin-top:4px;">30-50 岁 · 男性居多 · 商务 + 销售</div>
  292. </div>
  293. ${drinkScene.slice(0, 3).map((it) => C.renderVocCard(it, { accent: BRAND.WINE_RED, compact: true, maxChars: 140 })).join('')}
  294. <div style="margin-top:auto; padding:12px 14px; background:${BRAND.WINE_RED}12; border-left:3px solid ${BRAND.WINE_RED}; border-radius:4px; font-size:0.82rem; color:var(--text-1); line-height:1.6;">
  295. <strong>肝纯片切入:</strong>"醋 + 电解质水 + 馄饨"用户土办法说明"药都不信" · <em>用真 DMY 抢"真解酒"心智</em>
  296. </div>
  297. </div>
  298. </div>
  299. <div class="fade-up" style="margin-top:28px;">
  300. ${C.renderFindingCard({
  301. icon: '🔥',
  302. title: '王牌证据 · 抖音熬夜伤肝 ♥21,328(单条)',
  303. accent: BRAND.CORAL,
  304. body: `"听我的,真别熬夜,我才18岁,不抽烟不喝酒,就是因为经常熬夜且睡得少,体检就查出来谷丙转氨酶偏高了"——<strong>末名</strong><br/><br/>
  305. 这条单条 <strong style="color:${BRAND.CORAL};">21,328 赞</strong>的抖音评论,证明"熬夜 → 转氨酶"已经是年轻人真实焦虑。
  306. 肝纯片切入这块市场的<strong>心智密度远超传统中老年护肝赛道</strong>——这是 <strong style="color:${BRAND.JIANG_GREEN};">年轻化的关键机会</strong>。`,
  307. })}
  308. </div>
  309. ${C.renderDecisionList([
  310. `<strong>脂肪肝人群</strong>:主打"体检驱动 + 日常养护" · SKU 建议 30/60 粒瓶装 · 定价 ¥128-198`,
  311. `<strong>熬夜伤肝 Z 世代</strong>:主打"熬夜自救 + 学生/职场" · 盒装便携 12 粒 · 定价 ¥39-68`,
  312. `<strong>应酬解酒人群</strong>:主打"真 DMY + 饭局自备" · 铁盒商务 24 粒 · 定价 ¥198-298`,
  313. `<strong>三人群内容差异化</strong>:XHS 脂肪肝科普 / 抖音熬夜剧情 / 抖音 + 视频号饭局场景 KOL`,
  314. ], { title: '落地决策 · 三人群精准打法', accent: BRAND.WARM_ORANGE, columns: 2 })}
  315. </div>
  316. </section>`;
  317. }
  318. // ==========================================================
  319. // 3.4 · 未满足需求·四象限空白地带
  320. // ==========================================================
  321. function renderSub3_4(ctx) {
  322. const { chapter: c, subIdx, sub, slideNum, slideTotal } = ctx;
  323. return `<section class="report-section" id="${c.key}-${subIdx}" data-tone="${c.tone}" data-slide-num="${slideNum}/${slideTotal}">
  324. <div class="section-inner">
  325. ${C.renderSectionHead({
  326. eyebrow: `${c.num}.${subIdx} · 未满足地图`,
  327. title: '<span style="color:' + BRAND.JIANG_GREEN + ';">四象限空白地带</span>·肝纯片的无人地带坐标',
  328. subtitle: '把 <strong>信任(药 vs 食)</strong> × <strong>使用频次(日常 vs 应急)</strong> 作两轴,现有竞品聚集在对角线两端——<strong>对角线中段是肝纯片的独占空间</strong>。',
  329. color: BRAND.JIANG_GREEN,
  330. })}
  331. ${C.renderMatrix2x2({
  332. xLabel: '使用频次',
  333. yLabel: '信任类型',
  334. xLow: '应急(单次)',
  335. xHigh: '日常(长期)',
  336. yLow: '食品(轻)',
  337. yHigh: '药品(重)',
  338. accent: BRAND.JIANG_GREEN,
  339. quadrants: {
  340. q1: {
  341. title: '右上 · 药品 × 日常',
  342. color: BRAND.TECH_BLUE,
  343. items: [
  344. '<strong>易善复</strong>(处方磷脂胆碱)',
  345. '<strong>水飞蓟宾胶囊</strong>(OTC)',
  346. '<strong>双环醇</strong>(处方)',
  347. ],
  348. note: '痛点:必须医嘱 + 副作用担忧',
  349. },
  350. q2: {
  351. title: '左上 · 药品 × 应急',
  352. color: BRAND.WINE_RED,
  353. items: [
  354. '<strong>护肝片</strong>(中成药)',
  355. '<strong>熊胆粉</strong>(珍贵中药)',
  356. '<strong>海王金樽</strong>(解酒 OTC)',
  357. ],
  358. note: '痛点:硬广透支 + 偶尔才吃',
  359. },
  360. q3: {
  361. title: '左下 · 食品 × 应急',
  362. color: BRAND.WARM_ORANGE,
  363. items: [
  364. '<strong>解酒饮料</strong>(RU-21 等)',
  365. '<strong>莓茶</strong>(张家界地方)',
  366. '<strong>养生汤方</strong>(XHS 食补)',
  367. ],
  368. note: '痛点:不便携 + 无品牌信任',
  369. },
  370. q4: {
  371. title: '右下 · 食品 × 日常 <strong style="color:' + BRAND.JIANG_GREEN + ';">(无人地带!)</strong>',
  372. color: BRAND.JIANG_GREEN,
  373. items: [
  374. '<strong style="color:' + BRAND.JIANG_GREEN + ';">✨ 肝纯片</strong>(DMY 保健 + 日常)',
  375. '<strong>Swisse</strong>(部分高端用户)',
  376. '<strong>汤臣倍健</strong>(同质化严重)',
  377. ],
  378. note: '机会:真差异化 + 日常养护 + 东方草本',
  379. },
  380. },
  381. })}
  382. <div class="fade-up" style="margin-top:28px;">
  383. ${C.renderInsightHero({
  384. eyebrow: 'THE WHITE SPACE · 无人地带',
  385. color: BRAND.JIANG_GREEN,
  386. title: `<strong style="color:${BRAND.JIANG_GREEN};">"食品级信任 × 日常长期服用"</strong> 这个象限,现有玩家只有 <strong>Swisse(贵)</strong> 和 <strong>汤臣倍健(同质化)</strong>——<strong>都没有真差异化</strong>。`,
  387. subtitle: `肝纯片用 <strong style="color:${BRAND.TENGCHA_GREEN};">藤茶 DMY 真原料</strong> + <strong style="color:${BRAND.LIVER_AMBER};">江中 OTC 品牌背书</strong> + <strong style="color:${BRAND.DEEP_AMBER};">千年食饮文化</strong> 三锚,可以<strong style="color:${BRAND.JIANG_GREEN};">独占这个象限</strong>,瓦解 Swisse 的高端壁垒并超越汤臣倍健的同质化。`,
  388. })}
  389. </div>
  390. ${C.renderDecisionList([
  391. `<strong>锁定象限坐标</strong>:食品级信任 × 日常长期 · 产品所有配称都围绕这一象限`,
  392. `<strong>瓦解 Swisse</strong>:东方草本 > 西方进口 + 性价比更高`,
  393. `<strong>超越汤臣</strong>:真 DMY 差异化 > 同质化维生素复合包`,
  394. `<strong>避开对角线两端</strong>:不做"OTC 处方感"(右上)也不做"解酒应急感"(左上)`,
  395. `<strong>章节假设判定</strong>:H1 ✓ / H2 ✓ / H3 ✓ / H4 ✓ / H5 ✓ / H8 ✓(国际市场已验证)`,
  396. ], { title: '落地决策 · 象限坐标与验证', accent: BRAND.JIANG_GREEN, columns: 2 })}
  397. </div>
  398. </section>`;
  399. }
  400. module.exports = {
  401. 'market-1': renderSub3_1,
  402. 'market-2': renderSub3_2,
  403. 'market-3': renderSub3_3,
  404. 'market-4': renderSub3_4,
  405. };