social-sbti
Installation
SKILL.md
Social-SBTI Skill
这是一个娱乐工具。仅用于测试本人账号、或用户明确授权的公开公众人物。 不要用来分析前任、面试官、投资人、相亲对象、同事 —— 拒绝后果自负。
首次使用前(Claude 先执行)
所有 Python 脚本都在 skills/social-sbti/src/ 下,依赖写在 skills/social-sbti/requirements.txt。
第一次运行时执行:
pip install -r skills/social-sbti/requirements.txt
# 如果要生成 PNG,还需要一次性装 chromium:
playwright install chromium
目录约定
- skill 代码:
skills/social-sbti/(只读,不要往里写数据) - 运行产物:
./sbti-output/(用户项目根下,跑完可以 gitignore)<name>_raw.json— fetcher 抓到的原始动态<name>_scores.json— Claude 打分的结果(主工件)<name>-sbti.html— 最终卡片<name>-sbti.png— 截图(可选)
开始时先:
mkdir -p sbti-output
合规守则(每次运行必须执行)
- 开场白必须包含:"本工具仅供娱乐。只分析你自己或明确授权的公开公众人物。"
- 如果用户让你分析明显的私人/非公开对象(前任、同事、亲戚、陌生匿名号),
直接拒绝,并引导他们回到合法用法。参考
skills/social-sbti/docs/DISCLAIMER.md。 - 生成的 HTML 页脚必须保留"仅供娱乐 · 零科学依据"。
五步流程
Step 1 · 确认对象 & 平台
询问或确认:
- 对象: 谁?(账号名 / 用户名 / 本人)
- 平台: 即刻 / X / 微博 / 小红书
- 授权: "这是你自己的账号,或对方是完全公开的公众人物吗?"
如果对象不符合合规要求,在此步就停住。
Step 2 · 抓取动态
根据平台使用对应 fetcher:
| 平台 | 脚本 | 备注 |
|---|---|---|
| 即刻 | skills/social-sbti/src/fetch_jike.py |
需要 access_token / refresh_token |
| X | skills/social-sbti/src/fetch_x.py |
需要 twikit 登录,见 skills/social-sbti/X_SETUP.md |
| 微博 | (未来) | |
| 小红书 | (未来) |
输出统一 schema:
{
"profile": {"screen_name": "...", "platform": "jike", "bio": "...", "post_count": 200},
"posts": [{"id":"...","content":"...","created_at":"..."}, ...]
}
保存到 ./sbti-output/<name>_raw.json。
Step 3 · 你(Claude)直接打分
这是这个 skill 最关键的一步 —— 不调 LLM API,你就是那个 LLM。
- 读取 Step 2 的 raw.json,通读 150 条动态(按时间分层采样:近期 60% + 较早 40%)。
- 打开
skills/social-sbti/docs/SCORING_RUBRIC.md,对照 15 个维度的 L/M/H 锚点逐条打分。 - 严守硬约束:
- 每个维度至少引用 1 条
post_id作为证据 - 有明确反向证据时,降一档
- 置信度 < 0.4 或无证据 → 强制 M
- 每个维度至少引用 1 条
- 额外产出:
overall_impression: 100-200 字一句话整体印象personality_description: 200-300 字"本人定制版"的人格描述 (不要照抄通用文案,要带对象身上的具体事实)quotes: 选 4-6 条最有信息量的原文引用
把结果写成 ./sbti-output/<name>_scores.json。
scores.json schema:
{
"profile": {"screen_name":"...","platform":"jike","bio":"...","post_count":200},
"personality_description": "...",
"overall_impression": "...",
"quotes": ["...","..."],
"scores": [
{
"dimension": "S1",
"level": "H",
"confidence": 0.9,
"evidence": ["6953c49f","69bcf3c6"],
"reasoning": "不超过 40 字的中文理由"
}
// ... 共 15 条,顺序固定: S1 S2 S3 E1 E2 E3 A1 A2 A3 Ac1 Ac2 Ac3 So1 So2 So3
]
}
可选字段:
"drunk": true— 对象动态里非常明显地大量提"喝酒""白酒""灌杯",直接触发 DRUNK 彩蛋。
Step 4 · 匹配人格模板
python3 skills/social-sbti/src/match.py ./sbti-output/<name>_scores.json
这一步会在 scores.json 里补写 pattern 和 personality 字段,并在终端打印
匹配结果(代号 / 中文名 / 匹配度 / 模式串)。
Step 5 · 渲染 HTML + PNG
python3 skills/social-sbti/src/make_card.py ./sbti-output/<name>_scores.json
# → ./sbti-output/<name>-sbti.html
python3 skills/social-sbti/src/render_png.py ./sbti-output/<name>-sbti.html
# → ./sbti-output/<name>-sbti.png
render_png.py 需要 playwright,如果用户没装就跳过 PNG 这步,只给 HTML,
并提示 HTML 里自带"📸 保存为图片"按钮可以在浏览器里一键导出。
Step 6 · 展示结果
向用户展示:
-
人格代号 + 中文名 + 匹配度(ASCII 框):
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 🎭 <对象名> 【CODE】· <中文名> <mascot> 「<标语>」 匹配度: XX% ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ -
15 维度表格(ASCII,一行一维):
S1 自尊自信 H —— 短理由 S2 自我清晰 H —— 短理由 ... -
文件路径: HTML + PNG(在
./sbti-output/下) -
打开命令:
open ./sbti-output/<name>-sbti.html
常见陷阱(从实战里学到的)
- "高执行力 ≠ 自信": 一个人 Ac3 很高不代表 S1 高,有些人是被死线推着走的。
- "毒舌 ≠ 愤世": 中文互联网常见阴阳表达,别把玩梗当 SHIT。
- "社群活跃 ≠ So1 高": 要看是 ta 主动发起,还是被动响应别人。
- "转发多 ≠ 情感投入": 有些账号转发是信息流水,不是情感卷入。
- "自嘲 ≠ 低 S1": 如果是"我真的牛 + 自嘲"的组合,S1 反而是 H。
- M 是安全区: 不确定就打 M,别为了好看硬凑 H/L。
参考文件
skills/social-sbti/docs/SCORING_RUBRIC.md— 15 维度 L/M/H 行为锚点 + 硬约束skills/social-sbti/docs/DISCLAIMER.md— 合规文案 & 拒绝话术skills/social-sbti/src/personalities.py— 27 人格元数据(代号/中文/标语/吉祥物/模板串)skills/social-sbti/src/match.py— 曼哈顿距离匹配skills/social-sbti/src/make_card.py— scores.json → HTML 通用渲染器skills/social-sbti/templates/card.html— HTML 模板skills/social-sbti/data/huangshu_scores.json— 参考样例
Weekly Installs
4
Repository
backtthefuture/huangshuGitHub Stars
8
First Seen
Today
Security Audits
Installed on
amp3
cline3
opencode3
cursor3
kimi-cli3
warp3