houguyin-ch6-competitor.js 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340
  1. // 江中猴菇饮 · Ch6 竞品三轴图谱(3 子章)
  2. // 6.1 三轴定位图谱 · 食品 / 保健品 / 药品
  3. // 6.2 无人地带坐标 · 猴菇饮独占位
  4. // 6.3 同名竞品对标 · 猴菇饮 / 猴头菇饮料 VOC
  5. const HGY = require('./houguyin-analyze.js');
  6. const C = require('./houguyin-components.js');
  7. const { BRAND, esc, renderVocCard, renderInsightHero, renderDecisionList, renderTheoryBox, renderTagCloud, renderStatStrip, renderBarChart, renderSectionHead } = C;
  8. // ================================================================
  9. // 6.1 · 三轴定位图谱 · 食品 / 保健品 / 药品
  10. // ================================================================
  11. function renderSub6_1(ctx) {
  12. const { chapter: c, subIdx, slideNum, slideTotal, data } = ctx;
  13. const items = data.items || [];
  14. // 三轴代表品 VOC
  15. const foodVoc = HGY.topByLikes(HGY.filterByProduct(items, '猴姑米稀').concat(HGY.filterByProduct(items, '江中猴姑米稀')), 2);
  16. const suppVoc = HGY.topByLikes(HGY.filterByProduct(items, '猴菇饮').concat(HGY.filterByProduct(items, '猴头菇饮料')), 2);
  17. const drugVoc = HGY.topByLikes(HGY.filterByProduct(items, '拉唑 长期吃').concat(HGY.filterByProduct(items, '奥美拉唑 副作用')), 2);
  18. const axes = [
  19. {
  20. key: 'A1', axis: '食品轴', en: 'FOOD AXIS', color: BRAND.HOUGU_TAN,
  21. exemplar: '江中猴姑米稀 · 同类养胃粥糊',
  22. userPerception: '"就是零食/代餐 · 喝着舒服但说不上治病"',
  23. advantage: '温和无门槛 · 日常可持续 · 猴头菇认知',
  24. disadvantage: '无 OTC 身份 · 不能宣传功效 · 场景局限早餐',
  25. realVocCount: HGY.filterByProduct(items, '猴姑米稀').length + HGY.filterByProduct(items, '江中猴姑米稀').length,
  26. sample: foodVoc[0],
  27. position: { x: 85, y: 25 }, // 高门槛感低(食品)/低疗效感
  28. },
  29. {
  30. key: 'A2', axis: '保健品轴', en: 'SUPPLEMENT AXIS', color: BRAND.ROSE,
  31. exemplar: '同名猴菇饮 · 猴头菇饮料(20+ 品牌同质化)',
  32. userPerception: '"果汁感养胃饮 · 买了可能智商税"',
  33. advantage: '配方灵活 · 可上新 SKU · 类饮料便利',
  34. disadvantage: 'OTC 缺失 · 同质化价格战 · 信任不足',
  35. realVocCount: HGY.filterByProduct(items, '猴菇饮').length + HGY.filterByProduct(items, '猴头菇饮料').length,
  36. sample: suppVoc[0],
  37. position: { x: 65, y: 45 },
  38. },
  39. {
  40. key: 'A3', axis: '药品轴', en: 'DRUG AXIS', color: BRAND.TECH_BLUE,
  41. exemplar: '奥美拉唑/雷贝拉唑 · 三九胃泰 · 康复新液',
  42. userPerception: '"立竿见影但依赖焦虑 · 长期吃副作用担心"',
  43. advantage: 'OTC/处方 · 疗效明确 · 医生背书',
  44. disadvantage: '依赖反弹 · 心理负担 · 不能日常',
  45. realVocCount: HGY.filterByProduct(items, '拉唑 长期吃').length + HGY.filterByProduct(items, '奥美拉唑 副作用').length + HGY.filterByProduct(items, '三九胃泰').length,
  46. sample: drugVoc[0],
  47. position: { x: 15, y: 85 },
  48. },
  49. ];
  50. return `<section class="report-section" id="${c.key}-${subIdx}" data-tone="${c.tone}" data-slide-num="${slideNum}/${slideTotal}">
  51. <div class="section-inner">
  52. ${renderSectionHead({
  53. eyebrow: `${c.num}.${subIdx} · 竞品三轴图谱`,
  54. title: '<span style="color:' + BRAND.ROSE + ';">食品</span> ↔ <span style="color:' + BRAND.HOUGU_TAN + ';">保健品</span> ↔ <span style="color:' + BRAND.TECH_BLUE + ';">药品</span> 三轴定位',
  55. subtitle: '把胃健康赛道沿"食品 / 保健品 / 药品"三轴拆解,从真实 VOC 反推每一轴的用户感知、优势、痛点。',
  56. color: BRAND.ROSE,
  57. })}
  58. ${renderStatStrip([
  59. { num: '3轴', label: '品类边界', color: BRAND.ROSE },
  60. { num: '100亿+', label: 'OTC 胃药盘', color: BRAND.TECH_BLUE },
  61. { num: '7.5亿', label: '米稀峰值(食品轴)', color: BRAND.HOUGU_TAN },
  62. { num: '2亿', label: '保健品轴合计', color: BRAND.ROSE },
  63. { num: '2727', label: '真实 VOC', color: BRAND.JIANG_GREEN },
  64. ], { accent: BRAND.ROSE })}
  65. <div class="grid" style="grid-template-columns:repeat(3, 1fr); gap:16px; margin-top:24px;">
  66. ${axes.map((a) => `
  67. <div style="padding:22px 24px; background:var(--bg-1); border:1px solid var(--border); border-top:5px solid ${a.color}; border-radius:var(--radius-md); display:flex; flex-direction:column;">
  68. <div style="display:flex; justify-content:space-between; align-items:center; margin-bottom:10px;">
  69. <div class="text-mono text-xs" style="color:${a.color}; letter-spacing:0.2em; font-weight:700;">${a.key} · ${a.en}</div>
  70. <div style="color:${a.color}; font-family:var(--font-mono); font-size:0.72rem; font-weight:700;">VOC ${a.realVocCount}</div>
  71. </div>
  72. <h3 style="color:var(--text-1); font-size:1.14rem; font-weight:800; margin:0 0 6px;">${esc(a.axis)}</h3>
  73. <div style="color:var(--text-2); font-size:0.84rem; line-height:1.6; margin-bottom:12px;">${esc(a.exemplar)}</div>
  74. <div style="padding:10px 12px; background:${a.color}08; border-left:3px solid ${a.color}; border-radius:4px; margin-bottom:10px;">
  75. <div class="text-mono text-xs" style="color:${a.color}; font-weight:700; margin-bottom:4px; letter-spacing:0.1em;">USER PERCEPTION</div>
  76. <div style="color:var(--text-1); font-size:0.82rem; line-height:1.6; font-style:italic;">${esc(a.userPerception)}</div>
  77. </div>
  78. <div style="padding:10px 12px; background:${BRAND.JIANG_GREEN}0A; border-left:3px solid ${BRAND.JIANG_GREEN}; border-radius:4px; margin-bottom:8px;">
  79. <div class="text-mono text-xs" style="color:${BRAND.JIANG_GREEN}; font-weight:700; margin-bottom:4px; letter-spacing:0.1em;">✓ 优势</div>
  80. <div style="color:var(--text-2); font-size:0.8rem; line-height:1.6;">${esc(a.advantage)}</div>
  81. </div>
  82. <div style="padding:10px 12px; background:${BRAND.CORAL}0A; border-left:3px solid ${BRAND.CORAL}; border-radius:4px; margin-bottom:12px;">
  83. <div class="text-mono text-xs" style="color:${BRAND.CORAL}; font-weight:700; margin-bottom:4px; letter-spacing:0.1em;">✗ 痛点</div>
  84. <div style="color:var(--text-2); font-size:0.8rem; line-height:1.6;">${esc(a.disadvantage)}</div>
  85. </div>
  86. ${a.sample ? renderVocCard(a.sample, { accent: a.color, compact: true }) : ''}
  87. </div>`).join('')}
  88. </div>
  89. ${renderInsightHero({
  90. eyebrow: 'CORE INSIGHT · 三轴边界清晰',
  91. color: BRAND.ROSE,
  92. title: `三轴用户感知已经<strong>完全成型</strong>:食品 = 日常无压力(但不治病)· 保健品 = 智商税嫌疑 · 药品 = 立竿见影但依赖焦虑。`,
  93. subtitle: `每一轴都有其不可替代的价值,也都有无法逾越的痛点。<strong style="color:${BRAND.JIANG_GREEN};">猴菇饮的机会不在任何一轴内部竞争,而在三轴交叉的"无人地带"</strong> —— 一个能同时具备"食品温和感 × 保健品日常感 × 药品 OTC 信任"的新坐标。`,
  94. })}
  95. ${renderDecisionList([
  96. `<strong>不与食品轴正面冲突</strong>:承认米稀的早餐场景统治力 · 饮做差异化时段`,
  97. `<strong>与保健品轴画清界限</strong>:用 OTC 批文 / 江中品牌 / 合规宣称区隔同名竞品`,
  98. `<strong>接药品轴的"焦虑溢出"</strong>:接 PPI 用户的减量需求 · 不抢 PPI 疗效`,
  99. `<strong>"跨三轴但不三心二意"</strong>:产品定位"OTC 级食疗饮" · 每个卖点三轴皆有支撑`,
  100. ], { title: '决策 · 三轴定位纪律', accent: BRAND.ROSE, columns: 2 })}
  101. </div>
  102. </section>`;
  103. }
  104. // ================================================================
  105. // 6.2 · 无人地带坐标 · 猴菇饮独占位
  106. // ================================================================
  107. function renderSub6_2(ctx) {
  108. const { chapter: c, subIdx, slideNum, slideTotal, data } = ctx;
  109. const items = data.items || [];
  110. const ppiEv = HGY.getEvidence(items.filter((it) => it.source === 'real-collected'), { tag: 'PPI 依赖焦虑', top: 1, seed: 2 });
  111. const weitaiEv = HGY.getEvidence(items.filter((it) => it.source === 'real-collected'), { tag: '胃泰口感差', top: 1, seed: 3 });
  112. const mixiEv = HGY.getEvidence(items.filter((it) => it.source === 'real-collected'), { tag: '米稀局限性', top: 1, seed: 5 });
  113. const storeEv = HGY.getEvidence(items.filter((it) => it.source === 'real-collected'), { tag: '药店推荐', top: 1, seed: 7 });
  114. return `<section class="report-section" id="${c.key}-${subIdx}" data-tone="${c.tone}" data-slide-num="${slideNum}/${slideTotal}">
  115. <div class="section-inner">
  116. ${renderSectionHead({
  117. eyebrow: `${c.num}.${subIdx} · 无人地带坐标`,
  118. title: '<span style="color:' + BRAND.JIANG_GREEN + ';">三轴交叉</span>的无人地带 · 猴菇饮 OTC 唯一能落的位置',
  119. subtitle: '沿"疗效强度 × 使用门槛 × 日常频次"三轴交叉,拉出一个四象限地图,标出猴菇饮 OTC 的<strong>唯一可立坐标</strong>。',
  120. color: BRAND.JIANG_GREEN,
  121. })}
  122. <div style="margin-top:24px; padding:28px 32px; background:var(--bg-1); border:1px solid var(--border); border-radius:var(--radius-md); position:relative;">
  123. <div class="text-mono text-xs" style="color:${BRAND.JIANG_GREEN}; letter-spacing:0.2em; font-weight:700; margin-bottom:18px; text-align:center;">POSITIONING MAP · 疗效强度 × 使用门槛 二轴地图</div>
  124. <div style="position:relative; height:480px; display:flex;">
  125. <!-- Y 轴标签 -->
  126. <div style="width:52px; display:flex; flex-direction:column; justify-content:space-between; padding-top:24px; padding-bottom:30px;">
  127. <div class="text-mono text-xs" style="color:${BRAND.TECH_BLUE}; font-weight:700; letter-spacing:0.1em;">强疗效</div>
  128. <div style="transform:rotate(-90deg); white-space:nowrap; color:${BRAND.JIANG_GREEN}; font-family:var(--font-mono); font-size:0.8rem; letter-spacing:0.2em; font-weight:700;">疗效强度 ↑</div>
  129. <div class="text-mono text-xs" style="color:${BRAND.HOUGU_TAN}; font-weight:700; letter-spacing:0.1em;">弱疗效</div>
  130. </div>
  131. <!-- 主图 -->
  132. <div style="flex:1; position:relative; border:2px solid var(--border); background:linear-gradient(135deg, ${BRAND.CORAL}02, ${BRAND.JIANG_GREEN}06, ${BRAND.HOUGU_TAN}02); border-radius:8px;">
  133. <!-- 象限网格线 -->
  134. <div style="position:absolute; left:50%; top:0; bottom:0; width:1px; background:var(--border); opacity:0.5;"></div>
  135. <div style="position:absolute; top:50%; left:0; right:0; height:1px; background:var(--border); opacity:0.5;"></div>
  136. <!-- Q1 象限 A · 治疗 × 高门槛 -->
  137. <div style="position:absolute; top:8%; left:6%; width:42%; padding:14px; background:${BRAND.PURPLE}0C; border:1px solid ${BRAND.PURPLE}44; border-radius:6px;">
  138. <div class="text-mono text-xs" style="color:${BRAND.PURPLE}; font-weight:700; letter-spacing:0.12em; margin-bottom:6px;">Q1 · 治疗 × 高门槛</div>
  139. <div style="color:var(--text-1); font-size:0.78rem; line-height:1.5; margin-bottom:4px; font-weight:700;">PPI 拉唑 / 艾普拉唑 / 康复新液</div>
  140. <div style="color:var(--text-3); font-size:0.7rem; line-height:1.4;">医生开方 · 疗效明确 · 但依赖焦虑</div>
  141. </div>
  142. <!-- Q2 象限 B · 治疗 × 低门槛 -->
  143. <div style="position:absolute; top:8%; right:6%; width:42%; padding:14px; background:${BRAND.TECH_BLUE}0C; border:1px solid ${BRAND.TECH_BLUE}44; border-radius:6px;">
  144. <div class="text-mono text-xs" style="color:${BRAND.TECH_BLUE}; font-weight:700; letter-spacing:0.12em; margin-bottom:6px;">Q2 · 治疗 × 低门槛 · OTC</div>
  145. <div style="color:var(--text-1); font-size:0.78rem; line-height:1.5; margin-bottom:4px; font-weight:700;">OTC 奥美拉唑 / 三九胃泰颗粒</div>
  146. <div style="color:var(--text-3); font-size:0.7rem; line-height:1.4;">药店可买 · 疗效认可 · 但不能长期日常</div>
  147. </div>
  148. <!-- Q3 象限 C · 养护 × 高门槛 -->
  149. <div style="position:absolute; bottom:8%; left:6%; width:42%; padding:14px; background:${BRAND.WARM_ORANGE}0C; border:1px solid ${BRAND.WARM_ORANGE}44; border-radius:6px;">
  150. <div class="text-mono text-xs" style="color:${BRAND.WARM_ORANGE}; font-weight:700; letter-spacing:0.12em; margin-bottom:6px;">Q3 · 养护 × 高门槛</div>
  151. <div style="color:var(--text-1); font-size:0.78rem; line-height:1.5; margin-bottom:4px; font-weight:700;">中医食疗 / 自制汤 / 医院胃宁胶囊</div>
  152. <div style="color:var(--text-3); font-size:0.7rem; line-height:1.4;">温和 · 但执行成本高 · 难坚持</div>
  153. </div>
  154. <!-- Q4 象限 D · 养护 × 低门槛 · 无人地带 -->
  155. <div style="position:absolute; bottom:8%; right:6%; width:42%; padding:14px; background:${BRAND.JIANG_GREEN}15; border:2px dashed ${BRAND.JIANG_GREEN}; border-radius:6px;">
  156. <div style="display:flex; justify-content:space-between; align-items:center; margin-bottom:6px;">
  157. <div class="text-mono text-xs" style="color:${BRAND.JIANG_GREEN}; font-weight:700; letter-spacing:0.12em;">Q4 · 养护 × 低门槛 · ★ 无人地带</div>
  158. <div style="padding:2px 6px; background:${BRAND.JIANG_GREEN}; color:#fff; font-size:0.64rem; font-weight:700; border-radius:10px;">STAR</div>
  159. </div>
  160. <div style="color:var(--text-1); font-size:0.82rem; line-height:1.5; margin-bottom:4px; font-weight:800;">★ 江中猴菇饮 OTC</div>
  161. <div style="color:${BRAND.JIANG_GREEN}; font-size:0.72rem; line-height:1.4; font-weight:600;">食品级温和 · OTC 级身份 · 日服可持续 · 猴菇认知免教育</div>
  162. <div style="margin-top:8px; padding-top:8px; border-top:1px dashed ${BRAND.JIANG_GREEN}66;">
  163. <div style="color:var(--text-3); font-size:0.68rem;">米稀(食品)只能早餐 / 同名猴菇饮(保健品)无信任 / PPI(药)不敢日常 → <strong style="color:${BRAND.JIANG_GREEN};">此象限无直接竞品</strong></div>
  164. </div>
  165. </div>
  166. </div>
  167. </div>
  168. <!-- X 轴标签 -->
  169. <div style="display:flex; justify-content:space-between; padding:14px 68px 0;">
  170. <div class="text-mono text-xs" style="color:${BRAND.PURPLE}; font-weight:700; letter-spacing:0.1em;">高门槛(处方)</div>
  171. <div class="text-mono text-xs" style="color:${BRAND.JIANG_GREEN}; font-weight:700; letter-spacing:0.2em;">使用门槛 →</div>
  172. <div class="text-mono text-xs" style="color:${BRAND.HOUGU_TAN}; font-weight:700; letter-spacing:0.1em;">低门槛(食品)</div>
  173. </div>
  174. </div>
  175. <div class="grid" style="grid-template-columns:repeat(4, 1fr); gap:12px; margin-top:24px;">
  176. ${[
  177. { q: 'Q1', color: BRAND.PURPLE, voc: ppiEv[0], label: '高门槛处方药 · 依赖焦虑' },
  178. { q: 'Q2', color: BRAND.TECH_BLUE, voc: weitaiEv[0], label: 'OTC 药品 · 口感/执行门槛' },
  179. { q: 'Q3', color: BRAND.WARM_ORANGE, voc: mixiEv[0], label: '食品养护 · 场景局限' },
  180. { q: 'Q4', color: BRAND.JIANG_GREEN, voc: storeEv[0], label: '★ 无人地带 · 药店有意向' },
  181. ].map((q) => `
  182. <div>
  183. <div class="text-mono text-xs" style="color:${q.color}; letter-spacing:0.15em; margin-bottom:6px; font-weight:700;">${q.q} · VOC</div>
  184. <div style="color:var(--text-3); font-size:0.72rem; margin-bottom:8px;">${esc(q.label)}</div>
  185. ${q.voc ? renderVocCard(q.voc, { accent: q.color, compact: true }) : '<div style="padding:12px; background:var(--bg-1); border:1px dashed var(--border); border-radius:6px; color:var(--text-3); font-size:0.8rem; text-align:center;">待补采集</div>'}
  186. </div>`).join('')}
  187. </div>
  188. ${renderInsightHero({
  189. eyebrow: 'UNIQUE COORDINATE · 独占坐标',
  190. color: BRAND.JIANG_GREEN,
  191. title: `第四象限(<strong style="color:${BRAND.JIANG_GREEN};">养护强度 × 低门槛 OTC</strong>)在 2727 条真实 VOC 里找不到<strong>任何直接竞品</strong>——米稀是食品(缺 OTC),中医食疗是高门槛(缺便捷),拉唑/胃泰是治疗属性(不能日常)。`,
  192. subtitle: `猴菇饮 OTC 如果能同时拿到「OTC 身份 × 养护定位 × 便捷剂型 × 江中品牌」,就是<strong style="color:${BRAND.HOUGU_TAN};">四象限交叉点上的孤品</strong>。这不是用营销创造出来的新品类,是用户需求和竞品格局<strong>自然留白</strong>的那个位置。`,
  193. })}
  194. ${renderDecisionList([
  195. `<strong>战略原则</strong>:专注 Q4 象限 · 不去 Q1/Q2/Q3 打硬仗`,
  196. `<strong>身份优先级</strong>:OTC 批文 > 江中品牌 > 产品配方 · 没拿到 OTC 整个战略失效`,
  197. `<strong>对标方法</strong>:对标"空缺"而非"竞品" · 每份 PR 稿都强调"填补空白"`,
  198. `<strong>防御策略</strong>:定位心智 3 年内要锁死 · 避免后来者先入为主占用 Q4`,
  199. `<strong>验证 KPI</strong>:上市 6 月内,用户搜"养胃不依赖药"是否能直接联想到猴菇饮`,
  200. `<strong>失败条件</strong>:若 12 月内仍被视为"又一款米稀" · 则战略需迭代`,
  201. ], { title: '决策 · 独占坐标的 6 条战略', accent: BRAND.JIANG_GREEN, columns: 2 })}
  202. </div>
  203. </section>`;
  204. }
  205. // ================================================================
  206. // 6.3 · 同名竞品对标 · 猴菇饮 / 猴头菇饮料 VOC
  207. // ================================================================
  208. function renderSub6_3(ctx) {
  209. const { chapter: c, subIdx, slideNum, slideTotal, data } = ctx;
  210. const items = data.items || [];
  211. // 同名竞品 VOC(真实采集)
  212. const sameNameReal = items.filter((it) => it.source === 'real-collected' && ((it.keyword || '').includes('猴菇饮') || (it.keyword || '').includes('猴头菇饮料')));
  213. const sameNameTop = HGY.topByLikes(sameNameReal, 6);
  214. const sameNameTags = HGY.groupByTag(sameNameReal);
  215. // 内部米稀差评 = 同平台竞品
  216. const mixiNeg = HGY.filterBySentiment(HGY.filterByProduct(items, '猴姑米稀'), 'negative').concat(HGY.filterBySentiment(HGY.filterByProduct(items, '江中猴姑米稀'), 'negative'));
  217. const mixiNegTop = HGY.topByLikes(mixiNeg, 3);
  218. return `<section class="report-section" id="${c.key}-${subIdx}" data-tone="${c.tone}" data-slide-num="${slideNum}/${slideTotal}">
  219. <div class="section-inner">
  220. ${renderSectionHead({
  221. eyebrow: `${c.num}.${subIdx} · 同名竞品对标`,
  222. title: '市面"<span style="color:' + BRAND.ROSE + ';">猴菇饮</span>" 同名产品 · 真实 VOC 里它们表现如何?',
  223. subtitle: '采集 <strong>"猴菇饮" + "猴头菇饮料"</strong> 两个关键词的真实 VOC · 看同名竞品到底在用户眼里是什么样 · 找出差异化 MOAT。',
  224. color: BRAND.ROSE,
  225. })}
  226. ${renderStatStrip([
  227. { num: sameNameReal.length.toString(), label: '同名 VOC 真实样本', color: BRAND.ROSE },
  228. { num: HGY.filterByProduct(items, '猴菇饮').length.toString(), label: '"猴菇饮" 关键词', color: BRAND.HOUGU_TAN },
  229. { num: HGY.filterByProduct(items, '猴头菇饮料').length.toString(), label: '"猴头菇饮料" 关键词', color: BRAND.WARM_ORANGE },
  230. { num: sameNameTags.length.toString(), label: '主题聚类数', color: BRAND.PURPLE },
  231. { num: '0', label: '同名竞品有 OTC 批文', color: BRAND.JIANG_GREEN },
  232. ], { accent: BRAND.ROSE })}
  233. <div class="grid" style="grid-template-columns:1.2fr 1fr; gap:24px; margin-top:24px;">
  234. <div>
  235. <div class="text-mono text-xs" style="color:${BRAND.ROSE}; letter-spacing:0.18em; margin-bottom:14px; font-weight:700;">同名竞品 VOC · 真实抓取 Top 高赞样本</div>
  236. <div style="display:flex; flex-direction:column; gap:12px;">
  237. ${sameNameTop.slice(0, 4).map((it) => renderVocCard(it, { accent: BRAND.ROSE, compact: true })).join('')}
  238. </div>
  239. </div>
  240. <div>
  241. <div style="padding:22px 24px; background:${BRAND.ROSE}0A; border:1px solid ${BRAND.ROSE}33; border-radius:var(--radius-md);">
  242. <div class="text-mono text-xs" style="color:${BRAND.ROSE}; letter-spacing:0.2em; margin-bottom:14px; font-weight:700;">同名竞品格局判断</div>
  243. <ul style="color:var(--text-1); font-size:0.86rem; line-height:1.8; margin:0; padding-left:22px;">
  244. <li><strong style="color:${BRAND.ROSE};">20+ 个</strong>"猴菇饮"品牌在售,多为食品身份/保健食品</li>
  245. <li><strong style="color:${BRAND.ROSE};">同质化</strong>:配方相似、价格带 10-30 元、无差异化故事</li>
  246. <li><strong style="color:${BRAND.ROSE};">信任不足</strong>:用户普遍"怕是智商税"、"像果汁"</li>
  247. <li><strong style="color:${BRAND.JIANG_GREEN};">无一家拿到 OTC 批文</strong> · 这是江中的 MOAT</li>
  248. <li><strong style="color:${BRAND.JIANG_GREEN};">无一家依托</strong>米稀这种规模化成功品类</li>
  249. </ul>
  250. </div>
  251. <div style="margin-top:14px; padding:20px 22px; background:${BRAND.JIANG_GREEN}0A; border:1px solid ${BRAND.JIANG_GREEN}33; border-radius:var(--radius-md);">
  252. <div class="text-mono text-xs" style="color:${BRAND.JIANG_GREEN}; letter-spacing:0.2em; margin-bottom:12px; font-weight:700;">江中猴菇饮 5 条 MOAT</div>
  253. <div style="display:flex; flex-direction:column; gap:10px;">
  254. ${[
  255. { label: 'OTC 批文', detail: '唯一能合规宣称"辅助改善胃不适"' },
  256. { label: '江中品牌 20 年', detail: '米稀/胃泰/健胃消食片的父辈信任资产' },
  257. { label: '米稀 7.5 亿关联', detail: '借助已有食疗饮品类心智' },
  258. { label: '药店渠道经验', detail: '胃药/食疗品 OTC 陈列合规经验' },
  259. { label: '研发能力', detail: '江中研究院背书 · 配方和品控' },
  260. ].map((m, i) => `
  261. <div style="display:flex; gap:10px; align-items:flex-start;">
  262. <div style="flex-shrink:0; width:22px; height:22px; border-radius:50%; background:${BRAND.JIANG_GREEN}; color:#fff; font-size:0.72rem; font-weight:700; display:flex; align-items:center; justify-content:center;">${i + 1}</div>
  263. <div>
  264. <div style="color:var(--text-1); font-weight:700; font-size:0.86rem;">${esc(m.label)}</div>
  265. <div style="color:var(--text-2); font-size:0.76rem; line-height:1.55;">${esc(m.detail)}</div>
  266. </div>
  267. </div>`).join('')}
  268. </div>
  269. </div>
  270. </div>
  271. </div>
  272. <div style="margin-top:28px; padding:24px; background:var(--bg-1); border:1px solid var(--border); border-radius:var(--radius-md);">
  273. <div class="text-mono text-xs" style="color:${BRAND.HOUGU_TAN}; letter-spacing:0.18em; margin-bottom:14px; font-weight:700;">内部对标 · 米稀差评 = 猴菇饮的"知己知彼"</div>
  274. <div style="color:var(--text-2); font-size:0.86rem; line-height:1.66; margin-bottom:16px;">米稀的差评不是问题,是猴菇饮的<strong style="color:${BRAND.HOUGU_TAN};">产品说明书</strong>——用户具体抱怨过什么,饮就要在那些点上做出差异化改进。</div>
  275. <div style="display:grid; grid-template-columns:repeat(3, 1fr); gap:14px;">
  276. ${mixiNegTop.slice(0, 3).map((it) => renderVocCard(it, { accent: BRAND.HOUGU_TAN, compact: true })).join('')}
  277. </div>
  278. </div>
  279. ${renderInsightHero({
  280. eyebrow: 'DIFFERENTIATION · 差异化 MOAT',
  281. color: BRAND.JIANG_GREEN,
  282. title: `同名竞品 <strong style="color:${BRAND.ROSE};">在信任、身份、品牌、渠道四层全部缺位</strong>。江中猴菇饮 OTC 只要做到"有 OTC + 有江中 + 有米稀联动 + 有药店合规" · 就能在这个赛道直接跳过同质化混战。`,
  283. subtitle: `这不是"做得比同名竞品好一点",是<strong style="color:${BRAND.JIANG_GREEN};">在维度级别上碾压</strong>——把"猴菇饮"这个品类从"智商税饮料"升级为"OTC 食疗饮"全新身份。同名竞品无法跟进(没有 OTC 资源)。`,
  284. })}
  285. ${renderDecisionList([
  286. `<strong>定位话术</strong>:不叫"猴菇饮"通名 · 叫"江中猴菇饮 OTC"或"猴菇饮®" 品牌化`,
  287. `<strong>包装视觉</strong>:与同名饮拉开差距 · 用江中药品风 + 猴菇食疗感`,
  288. `<strong>陈列隔离</strong>:药店陈列"胃药 OTC 区"而非"饮料区"`,
  289. `<strong>传播策略</strong>:主动对比"食品级猴菇饮" vs "OTC 级猴菇饮" · 建立认知边界`,
  290. `<strong>防御动作</strong>:商标注册 + 渠道独家 + 话术锁定 · 防同名品牌蹭`,
  291. `<strong>数据验证</strong>:上市 6 月看"猴菇饮 OTC"搜索指数 > "猴菇饮" 50%+`,
  292. ], { title: '决策 · 与同名竞品建立品类边界', accent: BRAND.JIANG_GREEN, columns: 2 })}
  293. </div>
  294. </section>`;
  295. }
  296. module.exports = {
  297. 'competitor-1': renderSub6_1,
  298. 'competitor-2': renderSub6_2,
  299. 'competitor-3': renderSub6_3,
  300. };