1. SBTI现象观察:一场病毒式传播的社交实验
这两天我的朋友圈被一个叫SBTI的人格测试刷爆了。作为一个长期观察互联网传播现象的产品经理,我立刻意识到这不仅仅是个简单的测试游戏——它完美复刻了当年MBTI的传播路径,而且更加疯狂。48小时内,B站相关视频播放量突破百万,sbti.dev域名在测试走红当天就被抢注,小红书上的"最全解析"笔记如雨后春笋般涌现。
这个测试最有趣的地方在于它的"不正经"。25种人格类型从"CTRL(拿捏者)"到"DEAD(死者)",从"FUCK(草者)"到"DRUNK(酒鬼)",每个命名都带着强烈的网络梗文化色彩。测试题目更是接地气到令人发笑,比如询问"便秘坐在马桶上"时的心理活动,完全打破了传统心理测试的严肃框架。
提示:这种"反套路"的设计恰恰是SBTI能够病毒式传播的关键——它用网络语言解构了严肃的人格测试,让分享结果变成了一种社交货币。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. SBTI的技术实现与开源项目解析
2.1 项目架构设计
我花了两天时间完整拆解了SBTI的技术实现,并将其封装成了一个开源的Claude Code斜杠命令项目。整个项目采用模块化设计,主要分为两个核心部分:
-
sbti命令模块:
- 完整复现了30道原版题目(含特殊题)
- 实现了25种常规人格+兜底人格+彩蛋人格的判定逻辑
- 采用基于欧式距离的计分算法
- 支持在对话中完成完整的测试流程
-
quiz-designer技能框架:
- 提供从主题拆解到测试设计的完整工具链
- 包含维度划分、题型设计、计分规则等标准化组件
- 可快速适配各类"测一测"内容开发
技术栈选择上,我刻意保持了轻量化:
- 核心逻辑使用JavaScript实现
- 数据存储采用JSON格式
- 通过GitHub进行版本管理和分发
2.2 关键算法解析
测试最核心的部分是人格判定算法。与传统的MBTI不同,SBTI采用了更灵活的计分方式:
javascript复制// 人格匹配算法示例
function calculatePersonality(scores) {
const personalities = require('./data/personalities.json');
let minDistance = Infinity;
let matchedPersonality = null;
personalities.forEach(personality => {
const distance = euclideanDistance(scores, personality.vector);
if (distance < minDistance) {
minDistance = distance;
matchedPersonality = personality;
}
});
return matchedPersonality;
}
function euclideanDistance(a, b) {
return Math.sqrt(
a.reduce((sum, val, i) => sum + Math.pow(val - b[i], 2), 0)
);
}
这个算法会计算用户答案向量与各人格特征向量之间的欧式距离,选择距离最小的人格作为匹配结果。这种设计既保证了科学性,又为彩蛋人格的植入提供了技术可能性。
3. 测试类内容的传播密码
3.1 四大核心传播机制
通过分析SBTI的爆火现象,我总结了测试类内容能够病毒式传播的四个关键机制:
-
自我确认幻觉:
- 题目设计诱导用户选择符合自我认知的选项
- 结果描述使用巴纳姆效应增强认同感
- 示例:"当看到'你其实很在乎别人看法'时,大多数人都会点头"
-
社交货币属性:
- 短代码人格标识(如"INTJ")便于记忆和传播
- 人格类型名称具有强意象性和话题性
- 示例:"DRUNK人格"比"感性型人格"更具传播力
-
确定性安慰剂:
- 用精确的15位码替代模糊的性格描述
- 算法黑箱制造神秘感和权威性
- 示例:"你的专属人格代码:A1B2-C3D4-E5F6"
-
彩蛋激励机制:
- 隐藏人格触发特殊传播行为
- 示例:选择"将白酒灌在保温杯当白开水喝"触发DRUNK人格
3.2 题目设计方法论
在quiz-designer模块中,我总结了一套可复用的题目设计框架:
| 设计维度 | 要点 | SBTI应用案例 |
|---|---|---|
| 题目数量 | 25-30题最佳 | 30道主测题+特殊题 |
| 选项设计 | 3个选项最优 | 强制选择,无中间项 |
| 语言风格 | 网络梗文化 | "便秘坐在马桶上" |
| 结果呈现 | 视觉化+代码化 | 人格代码+特征描述 |
| 传播钩子 | 可比较性 | "你是什么型?" |
注意:题目文案必须使用用户日常交流的语言,避免学术化表达。测试时长控制在3-5分钟完成最佳。
4. 实操:基于开源项目的二次开发
4.1 环境配置与快速启动
要使用这个开源项目,你需要:
- 克隆仓库:
bash复制git clone https://github.com/shadowcz007/sbti.skill.git
cd sbti.skill
- 安装依赖:
bash复制npm install
- 运行测试:
bash复制npm test
项目结构说明:
code复制sbti.skill/
├── data/ # 题库和人格数据
│ ├── questions.json # 题目库
│ └── personalities.json # 人格定义
├── lib/ # 核心逻辑
│ ├── calculator.js # 计分算法
│ └── renderer.js # 结果渲染
└── index.js # 主入口文件
4.2 自定义测试开发指南
使用quiz-designer框架创建新测试的步骤:
- 定义测试维度:
javascript复制// 在data/dimensions.json中定义
{
"energy": {
"name": "能量来源",
"options": ["独处充电", "社交充电", "看情况"]
},
// 其他维度...
}
- 设计题目关联维度:
javascript复制// 在data/questions.json中配置
{
"id": 1,
"text": "周末你更愿意?",
"options": [
{"text": "宅家刷剧", "dimension": "energy", "value": 0},
{"text": "约朋友聚会", "dimension": "energy", "value": 1},
// 其他选项...
]
}
- 配置人格类型:
javascript复制// 在data/personalities.json中定义
{
"INTJ": {
"name": "战略家",
"vector": [0.8, 0.2, 0.5, ...], // 各维度得分向量
"description": "你是一个...",
// 其他元数据...
}
// 其他人格...
}
4.3 常见问题排查
在实际开发中可能会遇到以下问题:
-
人格匹配异常:
- 检查personalities.json中的向量维度是否与题目维度一致
- 验证calculatePersonality函数中的距离计算逻辑
-
题目显示错乱:
- 确认questions.json中的选项结构与renderer.js的解析逻辑匹配
- 检查各题目的id是否唯一
-
彩蛋人格不触发:
- 检查specialQuestions.json中的触发条件定义
- 验证用户答案与触发条件的匹配逻辑
实操心得:在开发过程中,建议先使用单元测试验证核心算法,再逐步完善UI交互。测试类项目对算法准确性的要求远高于界面美观度。
5. 测试类产品的商业价值延伸
虽然SBTI本身是个恶搞测试,但其底层模式具有可观的商业潜力。基于这个开源框架,可以延伸出多种应用场景:
-
品牌营销工具:
- 定制品牌人格测试
- 示例:汽车品牌可开发"你的驾驶人格"测试
-
用户增长钩子:
- 测试结果页嵌入社交分享组件
- 设置"解锁详细报告"引导关注公众号
-
数据收集入口:
- 通过测试结果构建用户画像
- 示例:美妆品牌测试收集用户护肤习惯
-
内容创作素材:
- 测试结果生成个性化内容
- 示例:"根据你的XX人格推荐书单"
这个开源项目最值得关注的价值在于,它提供了一套完整的测试类内容生产框架,而不仅限于SBTI这个具体案例。通过修改数据配置,开发者可以快速创建各类病毒式测试内容。
我在项目文档中特意详细注释了每个扩展点的设计思路,比如如何添加新的计分算法、如何设计更复杂的人格匹配规则等。这些经验都来自我之前开发多个爆款测试产品的实战教训——比如早期版本没有考虑缓存策略,导致高并发时结果计算出现延迟。
