#!/usr/bin/env node
const fs = require('fs');
const path = require('path');
const ROOT = path.resolve(__dirname, '..', '..', '..');
const OUT_FILE = path.join(ROOT, 'reports', 'KS-快聘-voc-insight-report.html');
const hypos = [
{h:'H1',title:'快聘是蓝领求职主阵地',count:596,color:'#F5A623'},
{h:'H2',title:'直播带岗降低信息不对称',count:1930,color:'#00DC82'},
{h:'H3',title:'薪资透明度是核心关切',count:1842,color:'#8B5CF6'},
{h:'H4',title:'食宿条件影响求职决策',count:2194,color:'#FF4D8D'},
{h:'H5',title:'入职流程便捷性',count:595,color:'#3B82F6'},
{h:'H6',title:'求职被骗是普遍焦虑',count:4435,color:'#EF4444'},
{h:'H7',title:'黑中介是核心痛点',count:3705,color:'#F97316'},
{h:'H8',title:'工资结算方式差异',count:2417,color:'#6B6B6B'},
];
const riskSignals = [
{label:'骗',value:252,heat:514788,color:'#EF4444'},
{label:'黑中介',value:109,heat:393762,color:'#EF4444'},
{label:'坑',value:92,heat:375264,color:'#FF4D8D'},
{label:'套路',value:45,heat:144842,color:'#F97316'},
{label:'黑厂',value:43,heat:123531,color:'#FF4D8D'},
{label:'押金',value:105,heat:95543,color:'#F5A623'},
{label:'不退',value:70,heat:84106,color:'#F5A623'},
{label:'陷阱',value:21,heat:74090,color:'#F97316'},
];
const careFactors = [
{label:'包吃包住',value:31,heat:89190,color:'#00DC82'},
{label:'工资',value:186,heat:89081,color:'#00DC82'},
{label:'加班费',value:20,heat:43986,color:'#3B82F6'},
{label:'吃住',value:21,heat:34060,color:'#00DC82'},
{label:'住宿',value:15,heat:25224,color:'#3B82F6'},
{label:'当天入职',value:7,heat:19264,color:'#8B5CF6'},
{label:'日结',value:30,heat:12651,color:'#8B5CF6'},
{label:'靠谱',value:20,heat:9509,color:'#00DC82'},
];
const keywords = [
{label:'黑中介',value:109,heat:393762,color:'#EF4444'},
{label:'找工作',value:95,heat:212718,color:'#3B82F6'},
{label:'被坑',value:27,heat:147566,color:'#FF4D8D'},
{label:'套路',value:52,heat:144858,color:'#F97316'},
{label:'黑厂',value:44,heat:123531,color:'#FF4D8D'},
{label:'工资',value:334,heat:117968,color:'#00DC82'},
{label:'押金',value:105,heat:95543,color:'#F5A623'},
{label:'包吃包住',value:44,heat:94771,color:'#00DC82'},
];
const kwData = [
{label:'包吃包住',value:785,color:'#00DC82'},
{label:'克扣工资',value:776,color:'#EF4444'},
{label:'黑中介',value:669,color:'#EF4444'},
{label:'入职被坑',value:600,color:'#FF4D8D'},
{label:'打工陷阱',value:593,color:'#F97316'},
{label:'押金不退',value:523,color:'#F5A623'},
];
const emotionSamples = [
{keyword:'黑厂',direction:'负向',likes:91732,expr:'揭秘!广东5大黑厂有哪些?想不被坑,千万不要进'},
{keyword:'入职被坑',direction:'负向',likes:6276,expr:'22年差点被骗去当咯咯哒 说什么模特走台下面的人送花就有提成'},
{keyword:'求职被骗',direction:'负向',likes:8062,expr:'东北小伙被骗进厂干到S,马总竟是最大黒中芥!?'},
{keyword:'打工陷阱',direction:'负向',likes:2857,expr:'找工作别踩坑!警惕黑中介套路与离谱高价工陷阱'},
];
const highLikedComments = [
{rank:1,likes:6276,expr:'22年差点被骗去当咯咯哒 说什么模特走台下面的人送花就有提成',kw:'入职被坑'},
{rank:2,likes:2209,expr:'去买几个鸡蛋,打碎,放在沙发下面...',kw:'押金不退'},
{rank:3,likes:808,expr:'我在广西就遇到过房东死活不退押金...',kw:'押金不退'},
{rank:4,likes:533,expr:'做的不错,就该那样!有些房东太不像话了!',kw:'押金不退'},
{rank:5,likes:491,expr:'无论怎么样,反正$黑中介$是赚了',kw:'黑中介'},
{rank:6,likes:422,expr:'那暑假工能做什么啊',kw:'入职被坑'},
{rank:7,likes:403,expr:'干的漂亮,支持小伙子不应该判刑...',kw:'黑中介'},
{rank:8,likes:312,expr:'都绑起来了,都投降了,那人还要去喷那个喷雾',kw:'黑中介'},
{rank:9,likes:311,expr:'为什么南方的房东都不退押金',kw:'押金不退'},
{rank:10,likes:228,expr:'只要收身份证的都是,正常的面试只需要填表就行',kw:'黑中介'},
];
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 fmtHeat(n) { if (n == null) return '0'; if (n >= 10000) return (n/10000).toFixed(1)+'w'; if (n >= 1000) return (n/1000).toFixed(1)+'k'; return String(n); }
function barChart(rows, accent, maxW=900) {
const max = Math.max(...rows.map(r=>r.value),1);
const barH=36,gap=14,padL=140,padR=100,padV=16,W=maxW;
const totalH = rows.length*(barH+gap)+padV*2;
return `
`;
}
function vocCard(comment) {
return `
快
快手用户
▼ 负向
♥${fmtLikes(comment.likes)}
"${esc(comment.expr)}"
关键词: ${esc(comment.kw)}
`;
}
const html = `
快手快聘 · VOC 深度洞察报告
VOC 深度洞察报告
快手快聘
"10个蓝领,9个都用快手" · 蓝领求职生态洞察
快手
7,902 条真实评论
19 个关键词覆盖
380 个视频
2026/4/24 · Generated by OpenClaw VOC System
CHAPTER 01
执行摘要
快手快聘蓝领求职生态核心洞察
核心问题
蓝领求职最担心什么?最看重什么?
最强焦虑不是"工资低",而是"信息不真实、被骗、被坑、押金不退、工资被克扣"
🛡️
风险焦虑
被骗/被坑/黑中介/押金不退/克扣工资/打工陷阱 - 最稳定、最强烈的底层情绪
💰
确定性诉求
工资真实、发薪稳定、包吃包住、当天入职、流程简单
🤝
信任机制
"老铁文化"+"眼见为实" - 快手在蓝领求职场景的核心竞争力
CHAPTER 02
蓝领求职时最担心什么
风险焦虑是最稳定、最强烈的底层情绪
风险信号排行(按热度)
${barChart(riskSignals.slice(0,6),'#EF4444')}
高风险场景样本
[黑中介] 热度203219
#万恶之源 #搞笑我是认真的 #搞笑 黑中介的噩梦,只要我不努力,你就过不上你想要的生活
[黑厂] 热度122687
揭秘!广东5大黑厂有哪些?想不被坑,千万不要进
[入职被坑] 热度42121
#黑中介招工套路 ,刚开始签18块钱一个小时...
🚨
招聘信息虚假
"货不对版" - 承诺薪资、食宿条件与实际不符
⚖️
权益无保障
不签劳动合同、不上社保、欠薪维权难
CHAPTER 03
蓝领求职时最看重什么
确定性 + 即时性 = 快速入职决策
看重因素排行(按热度)
${barChart(careFactors.slice(0,6),'#00DC82')}
高代表性样本
[工资日结] 热度48804
"..."
[包吃包住] 热度15768
距你0.9km #找工作 #包吃包住 #勤杂工 #大龄工
[当天入职] 热度17397
#不体检不收费当天安排 #当天来当天入职安排住宿
👁️
眼见为实
直播展示车间、宿舍、食堂,消解信息不对称
CHAPTER 04
情绪价值强的表达
情绪价值的核心不是娱乐,而是"确定性"
▼ 负向情绪样本(高赞)
${emotionSamples.map(e=>`
${esc(e.keyword)} · ${esc(e.direction)}
♥${fmtLikes(e.likes)}
"${esc(e.expr)}"
`).join('')}
CHAPTER 05
H1-H8 假设验证
基于7,902条VOC的假设覆盖分析
H1-H4 假设覆盖
${barChart(hypos.slice(0,4).map(h=>({label:h.h+' '+h.title.slice(0,8),value:h.count,color:h.color})),'#8B5CF6')}
H5-H8 假设覆盖
${barChart(hypos.slice(4).map(h=>({label:h.h+' '+h.title.slice(0,8),value:h.count,color:h.color})),'#FF4D8D')}
CHAPTER 06
用户关注关键字
跨视频与评论反复出现的关注焦点
风险类关键字(热度排行)
${barChart(keywords.slice(0,5).map(k=>({label:k.label,value:k.heat,color:k.color})),'#EF4444')}
保障类关键字(热度排行)
${barChart(careFactors.slice(0,5).map(k=>({label:k.label,value:k.heat,color:k.color})),'#00DC82')}
CHAPTER 07
快聘战略位势
"仅次于电商" · 日活数十万简历
快聘的战略逻辑
● 用户价值层面
求职是蓝领用户的刚性高频需求
● 市场规模层面
蓝领招聘线上渗透率2025-2026年可达30%
● 竞争壁垒层面
用户即求职者,无需额外获客
快聘的四大角色
🌊 流量入口 - 2.5亿月活蓝领用户
📺 岗位展示 - 直播带岗超500万场/年
🤝 信任建立 - "老铁文化"天然适配
⚡ 快速转化 - 当天入职不是梦
CHAPTER 08
VOC 高赞精选 TOP10
真实用户声音
${highLikedComments.map(c=>`
#${c.rank}
${esc(c.kw)}
♥${fmtLikes(c.likes)}
"${esc(c.expr)}"
`).join('')}
`;
fs.writeFileSync(OUT_FILE, html, 'utf8');
console.log('✅ 深色风格报告已生成: ' + OUT_FILE);
console.log(' VOC数据: 7,902 条 | 关键词: 19 个 | 视频: 380 个');