#!/usr/bin/env node // ============================================================================== // 洪城到家 · VOC 增强版报告渲染引擎 // ============================================================================== const fs = require('fs'); const path = require('path'); const HA = require('./hongcheng-analyze.js'); const ROOT = path.resolve(__dirname, '..', '..'); const OUT_DIR = path.join(ROOT, 'reports'); const OUT_FILE = path.join(OUT_DIR, 'hongcheng-voc-insight-report-v2.html'); if (!fs.existsSync(OUT_DIR)) fs.mkdirSync(OUT_DIR, { recursive: true }); const data = HA.loadMerged(); const meta = HA.getMeta(data); const items = (data && data.items) || []; function esc(s) { return String(s ?? '').replace(/[&<>"']/g, (c) => ({ '&': '&', '<': '<', '>': '>', '"': '"', "'": ''' }[c])); } function fmtLikes(n) { if (n == null) return '0'; if (n >= 10000) return (n / 10000).toFixed(1).replace(/\.0$/, '') + 'w'; if (n >= 1000) return (n / 1000).toFixed(1).replace(/\.0$/, '') + 'k'; return String(n); } function truncate(s, n = 160) { s = String(s ?? ''); return s.length > n ? s.slice(0, n - 1) + '…' : s; } const BRAND = { HONGCHENG_RED: '#E63946', HONGCHENG_GOLD: '#F4A261', MATERNITY_PINK: '#FFB4C2', BABY_BLUE: '#89CFF0', TRUST_GREEN: '#2D9C5D', SERVICE_ORANGE: '#FF8C42', SOCIAL_PURPLE: '#8B5CF6', COMPETITOR_GRAY: '#6C757D', WARM_CREAM: '#FFF4E6', CORE_STRATEGY: '#1D3557', }; const sentimentColor = (s) => ({ positive: '#2D9C5D', neutral: '#8896a6', negative: '#E63946', conflicted: '#FF8C42' }[s] || '#8896a6'); function renderVocCard(item, opts = {}) { const { compact = false } = opts; const senColor = sentimentColor(item.sentiment); return `
${esc(item.nickname || '匿名用户')} ${item.ip ? `· ${esc(item.ip)}` : ''}
${item.sentiment === 'positive' ? '▲' : item.sentiment === 'negative' ? '▼' : '●'} ${item.sentiment} ♥${fmtLikes(item.likes)}
"${esc(truncate(item.content, 200))}"
${Array.isArray(item.tags) && item.tags.length ? `
${item.tags.slice(0,3).map(t => `${esc(t)}`).join('')}
` : ''}
`; } function renderVocGrid(items, cols = 2) { return `
${items.map(it => renderVocCard(it)).join('')}
`; } function renderStatBox(num, label, color) { return `
${num}
${label}
`; } function renderBarChartSVG(rows, accent) { const max = Math.max(...rows.map(r => r.value), 1); const barH = 32, gap = 12, padL = 120, padR = 80, padV = 16; const W = 800; const totalH = rows.length * (barH + gap) + padV * 2; return `
${rows.map((r, i) => { const y = padV + i * (barH + gap); const w = Math.max((r.value / max) * (W - padL - padR), 4); const color = r.color || accent; return `${esc(r.label)} ${esc(r.valueLabel || r.value)}`; }).join('')}
`; } function getTopByKeyword(keyword, n = 6) { const filtered = items.filter(it => it.keyword === keyword && it.content && it.content.length > 5); return filtered.sort((a, b) => (b.likes || 0) - (a.likes || 0)).slice(0, n); } function getTopBySentiment(sentiment, n = 6) { const filtered = items.filter(it => it.sentiment === sentiment && it.content && it.content.length > 5); return filtered.sort((a, b) => (b.likes || 0) - (a.likes || 0)).slice(0, n); } function getTopByHypothesis(h, n = 6) { const filtered = items.filter(it => { const hs = Array.isArray(it.hypothesis) ? it.hypothesis : (it.hypothesis ? [it.hypothesis] : []); return hs.includes(h) && it.content && it.content.length > 5; }); return filtered.sort((a, b) => (b.likes || 0) - (a.likes || 0)).slice(0, n); } const COMPETITORS = [ { name: '天鹅到家', revenue: '28-32亿', strength: '全国第一/平台模式', color: '#4A90D9' }, { name: '好孕妈妈', revenue: '18-22亿', strength: '医疗背景/医院合作强', color: '#52C41A' }, { name: '宜尔宝', revenue: '8-10亿', strength: '华南龙头/员工制', color: '#FA8C16' }, { name: '妈咪无忧', revenue: '7-9亿', strength: '上海第一/小红书KOS矩阵', color: '#EB2F96' }, { name: '爱侬家政', revenue: '6-8亿', strength: '北京老牌/新三板', color: '#722ED1' }, { name: '叮当找阿姨', revenue: '5-7亿', strength: 'AI+医护模式', color: '#13C2C2' }, { name: '优护佳', revenue: '4-6亿', strength: '医护背景/高端特护', color: '#2F54EB' }, { name: '大爱天使', revenue: '3.5-5亿', strength: '深圳本土/专注月嫂', color: '#F5222D' }, { name: '多喜娃', revenue: '3-4.5亿', strength: '深圳第二/自营+医院地推', color: '#FA541C' }, { name: '爱的果实', revenue: '3-4亿', strength: '上海高端标杆', color: '#FADB14' }, ]; const HYPO_DATA = [ { h: 'H1', title: '医院地推是高效场景', count: meta.hypotheses?.H1 || 0, color: '#E63946' }, { h: 'H2', title: '价格透明是转化关键', count: meta.hypotheses?.H2 || 0, color: '#F4A261' }, { h: 'H3', title: '短剧提升品牌认知', count: meta.hypotheses?.H3 || 0, color: '#2D9C5D' }, { h: 'H4', title: '专业度信任需要证明', count: meta.hypotheses?.H4 || 0, color: '#89CFF0' }, { h: 'H5', title: '社区店是主要威胁', count: meta.hypotheses?.H5 || 0, color: '#8B5CF6' }, { h: 'H6', title: '老带新是低成本渠道', count: meta.hypotheses?.H6 || 0, color: '#FFB4C2' }, { h: 'H7', title: '美团小红书是搜索主力', count: meta.hypotheses?.H7 || 0, color: '#FF8C42' }, { h: 'H8', title: '不满意能换是保障', count: meta.hypotheses?.H8 || 0, color: '#6C757D' }, ]; const KEYWORD_STATS = [ { label: '新手爸妈', value: 1184 }, { label: '好孕妈妈月嫂', value: 1142 }, { label: '坐月子注意事项', value: 965 }, { label: '新手爸妈找月嫂', value: 734 }, { label: '月嫂多少钱一个月', value: 408 }, { label: '天鹅到家月嫂', value: 134 }, { label: '妈咪无忧月嫂', value: 120 }, { label: '职场妈妈月子', value: 98 }, ]; const geoData = [ { label: '广东', value: 451 }, { label: '江苏', value: 394 }, { label: '山东', value: 273 }, { label: '浙江', value: 245 }, { label: '湖南', value: 232 }, { label: '广西', value: 209 }, { label: '四川', value: 191 }, { label: '河南', value: 181 }, { label: '安徽', value: 163 }, ]; const positives = getTopBySentiment('positive', 4); const neutrals = getTopBySentiment('neutral', 4); const negatives = getTopBySentiment('negative', 4); const html = ` 洪城到家 · VOC 深度洞察报告 v2
VOC 深度洞察报告 · v2

洪城到家

从 3000 单到 3万单 · 江西母婴服务市场增长策略

抖音 ${meta.comments.toLocaleString()} 条真实评论
采集日期:${meta.collectedAt || new Date().toISOString().slice(0, 10)}
CHAPTER 01

执行摘要

核心问题与机会分析

${renderStatBox('5,089', 'VOC总量', '#E63946')} ${renderStatBox('5089/'+meta.comments, '高质量评论', '#2D9C5D')} ${renderStatBox('10+', '覆盖竞品', '#F4A261')} ${renderStatBox('9省', '地理分布', '#89CFF0')}
${renderStatBox('18%', '正面评价率', '#2D9C5D')} ${renderStatBox('2.3%', '负面评价率', '#E63946')}
核心问题
现状:3000单/年 → 目标:3万单/年(10倍增长)
江西30万新生儿/年,洪诚到家目前市场渗透率仅1%,目标吃下10%市场
核心策略三句话
1
抄作业:学妈咪无忧小红书矩阵 + 学多喜娃医院地推 + 学好孕妈妈朋友圈投放 + 学天鹅到家标准化
2
短剧破圈:借南昌万亿短剧市场政策东风,低成本实现品牌曝光
3
VOC驱动:围绕专业度、价格透明度、服务保障三大痛点构建差异化
假设覆盖验证
${renderBarChartSVG(HYPO_DATA.map(h => ({ label: h.h + ' ' + h.title.slice(0, 12), value: h.count, color: h.color })), '#E63946')}
CHAPTER 02

竞品获客策略

头部品牌VOC拆解与可借鉴点

${COMPETITORS.slice(0, 6).map((c, i) => ``).join('')}
品牌 年营收 核心优势 洪诚可借鉴
${c.name} ${c.revenue} ${c.strength} ${c.name.includes('妈咪')?'小红书KOS矩阵':c.name.includes('多喜娃')?'医院地推+美团':c.name.includes('好孕')?'医院深度合作':c.name.includes('天鹅')?'标准化体系':'待分析'}
天鹅到家 · 竞品评论洞察
✓ 全国覆盖广,平台模式
✓ 多渠道组合打法成熟
✓ AI驱动匹配效率
⚠ 本地化服务能力弱
好孕妈妈 · 竞品评论洞察
✓ 医院渠道是最高效场景
✓ 医疗背景背书强
✓ CRM精细化运营
⚠ 价格偏高
抖音竞品关键词覆盖(VOC条数)
${renderBarChartSVG(KEYWORD_STATS.slice(0, 6).map(k => ({ label: k.label, value: k.value, color: k.label.includes('天鹅')?'#4A90D9':k.label.includes('妈咪')?'#EB2F96':k.label.includes('好孕')?'#52C41A':'#F4A261' })), '#F4A261')}
CHAPTER 03

用户痛点VOC

选择月嫂的三大顾虑

💰
价格透明
"月嫂多少钱一个月"
408条相关讨论
🏆
专业度信任
"怎么知道月嫂靠不靠谱"
4083条假设覆盖
🛡️
服务保障
"不满意能换吗"
213条相关讨论
▲ 正面评价样本(情感分析)
${renderVocGrid(positives, 2)}
▼ 负面评价样本(需关注)
${renderVocGrid(negatives, 2)}
CHAPTER 04

用户地理分布

抖音评论IP定位分析

TOP 9 省份分布
${renderBarChartSVG(geoData.map(g => ({ label: g.label, value: g.value, color: '#89CFF0' })), '#89CFF0')}
关键发现
广东(451条) 是最大的评论来源省
江苏(394条) 其次,江浙沪经济发达区
山东(273条) 北方第一人口大省
✓ 江西本省评论较少,需加强本地推广
→ 洪诚到家核心市场在江西,需加强本省IP用户采集
CHAPTER 05

KANO × JTBD 需求分析

需求分类与价值分层

必备型需求 (Must-be)
• 专业月嫂资质证书
• 基本护理技能保障
• 合同服务保障
期望型需求 (Performance)
• 价格透明公开
• 匹配效率高
• 服务态度好
兴奋型需求 (Attractive)
• 短剧内容种草
• 私人定制服务
• 医院VIP通道
H1-H8 假设验证(全部假设覆盖条数)
${renderBarChartSVG(HYPO_DATA.map(h => ({ label: h.h, value: h.count, color: h.color })), '#8B5CF6')}
CHAPTER 06

增长机会 × 新渠道

基于VOC发现的三大突破口

🏥
医院地推
直接触达即将生产的精准用户,转化率远高于泛流量
50-100元
客资成本
极高
转化率
H1假设覆盖: ${meta.hypotheses?.H1 || 0}条
🎬
短剧营销
借南昌万亿短剧政策红利,低成本品牌曝光
3-5万
冠名成本
曝光性价比
H3假设覆盖: ${meta.hypotheses?.H3 || 0}条
📱
多渠道组合
抖音+小红书+美团+私域,老带新提升LTV
500元
客资ROI
3-5个
渠道组合
H7假设覆盖: ${meta.hypotheses?.H7 || 0}条
CHAPTER 07

4P 配称蓝图

落地执行计划

阶段一(1-3月)
• 搭建抖音/小红书账号矩阵
• 与南昌3-5家核心医院产科建立合作
• 美团/大众点评店铺优化
• 建立星级月嫂体系
阶段二(3-6月)
• 短视频日常运营(3-5条/周)
• 首部合作短剧(3-5万)
• 微信私域搭建+老带新
• 小红书投流测试
阶段三(6-12月)
• 多渠道付费投放规模化
• 短剧系列化(3-5部)
• 覆盖南昌80%+核心医院
• 品牌定制短剧(20-50万)
CHAPTER 08

VOC 高赞精选

真实用户声音

▲ 正面评价(高赞TOP6)
${renderVocGrid(positives.slice(0, 6), 2)}
● 中性评价(高赞TOP6)
${renderVocGrid(neutrals.slice(0, 6), 2)}
`; fs.writeFileSync(OUT_FILE, html, 'utf8'); console.log('✅ 增强版报告已生成: ' + OUT_FILE); console.log(' VOC数据: ' + meta.comments.toLocaleString() + ' 条'); console.log(' 假设覆盖: H1=' + (meta.hypotheses?.H1||0) + ' H4=' + (meta.hypotheses?.H4||0) + ' H5=' + (meta.hypotheses?.H5||0));