基础工具与工作流 · Backtthefuture/huangshu

social-sbti

Social-SBTI — 从即刻 / X 抓取公开动态,生成 SBTI 恶搞人格画像卡。 向导式流程:用户触发 → 选平台 → 贴 URL → 自动体检/配凭证/抓取/打分/渲染 → 出卡片。 触发场景: - 用户说"跑一下 social-sbti" / "启动 social-sbti" - 用户说"帮我分析 @某某 的 SBTI" - 用户说"用 social-sbti 分析 @某某" - 用户说"给 XXX 来个社交版 SBTI 人格卡"

L5 严管 · 隔离环境与严格审计V2 已复核凭据/登录态执行命令安装依赖联网读写文件Dual-pass Audit
Author BacktthefutureGitHub Backtthefuture/huangshu ↗License MIT(仓库根 LICENSE)Commit 3cfa898c51
管控等级描述 skill 的能力与建议配套的管控措施,不代表质量或安全认证,也不表示可用或不可用。是否使用由用户和管理者决定。不同 agent 宿主对权限的约束各不相同,请勿假定宿主一定会提供安全兜底。第三方 skill 版权归原作者,使用风险由使用者自行承担。

1实现原理 · 为什么它能做到

首先定位 skill 根目录,之后所有命令都经 bin/sbti 统一入口执行。

skills/social-sbti/SKILL.md
如果输出为空,告诉用户 skill 安装位置非标准,让他们给你路径,然后手工 `export SBTI_HOME=<路径>`。
这里在做什么:解决 skill 被装到非标准路径时的自定位问题。

把 SKILL.md 写成阶段 0–8 的对话剧本,强制按序执行不跳步。

skills/social-sbti/SKILL.md
严格按阶段顺序执行,**不要跳步**。
这里在做什么:用剧本约束 agent 行为,保证向导流程稳定。

进入抓取前先跑体检,未过体检不得抓取。

skills/social-sbti/SKILL.md
**不要骗自己**:体检没过就不要进抓取,不然就是浪费时间。
这里在做什么:把依赖/凭证问题挡在抓取之前,避免无谓耗时。

即刻凭证走交互式扫码:后台跑 jike-auth 并把 QR 原样回显到对话。

skills/social-sbti/SKILL.md
把 stderr 里的 QR 原样贴到对话里让用户用手机 App 扫。
这里在做什么:让扫码全程留在对话里完成,不要求用户另开终端。

X 凭证从浏览器导出 auth_token 与 ct0,落到 ~/.config/sbti/x_cookies.json。

skills/social-sbti/SKILL.md
**成功**: cookies 已落到 `~/.config/sbti/x_cookies.json`。回阶段 3 重跑 doctor。
这里在做什么:用用户自己的登录态抓取,凭证仅存本机。

抓取阶段把动态写到用户项目根的 sbti-output/<name>_raw.json。

skills/social-sbti/SKILL.md
这会把数据写到 `./sbti-output/<name>_raw.json`(用户项目根下)。
这里在做什么:产物落在用户项目而非 skill 目录,避免污染。

由宿主 agent 本人充当打分 LLM,对照 rubric 的 L/M/H 锚点逐维打分。

skills/social-sbti/SKILL.md
3. **读 rubric**: `Read` 工具读 `$SBTI_HOME/docs/SCORING_RUBRIC.md`。对照每个维度的 L/M/H 锚点打分。
这里在做什么:不依赖外部评分 API,用当前模型读规则直接打分。

打分带硬约束:每维至少引 1 条真实 post_id,置信度低于 0.4 强制回退 M。

skills/social-sbti/SKILL.md
- 每维至少引 1 条真实 `post_id`(必须来自 raw.json,不要编)
这里在做什么:用证据引用约束抑制编造,保证可复核。

finalize 一条龙跑 match→HTML→PNG,完成人格匹配与渲染。

skills/social-sbti/SKILL.md
1. `match.py` → 匹配 27 人格模板,写回 scores.json 补上 `pattern` + `personality`
这里在做什么:把打分结果落成可分享的卡片产物。

合规前置:对象确认阶段直接拒绝分析私人对象,只在允许范围内运行。

skills/social-sbti/docs/DISCLAIMER.md
遇到上述请求时,skill 会**直接拒绝**并说明原因。
这里在做什么:把滥用场景挡在流程起点,降低伦理风险。

2核心能力

01即刻 / X 公开动态抓取
02依赖体检与自动修复(pip / chromium)
03凭证配置与管理(即刻 tokens / X cookies)
0415 维 L/M/H 打分规则(证据必填)
0527 人格模板的曼哈顿距离匹配
06HTML 卡片生成与 PNG 截图渲染
07合规拒绝话术与边界声明
08twikit 兼容性补丁(适配 X 前端改版)
09产物与凭证的固定落盘路径

3外部依赖

KindDependency / Endpoint
packagejike-skill[qr](GitHub git URL 安装)
packagetwikit>=2.0.0
packageplaywright>=1.40.0
networkX / Twitter
networkesm.sh(产物期卡片保存按钮 CDN)

4管控建议与判定依据

建议配套管控措施
面向 Agent
隔离环境,逐次授权
面向管理者
严格授权、全量审计、合规确认
判定依据(文件路径与关键语句摘要)
  • 本地凭据 / 浏览器配置: 读取用户登录 Cookie/会话/密钥环: 读取即刻 tokens(~/.config/sbti/config.json / jike-tokens.json)
  • scripts/: 执行本地脚本或命令: bin/sbti(Python CLI shim,转发到 src/cli.py)
  • scripts/ 或 SKILL.md: 声明动态安装外部语言包依赖
  • 网络端点: 声明外部网络访问: 抓取即刻动态(web.okjike.com)
  • 本地工作目录: 文件读写与工件输出: ~/.config/sbti/config.json(chmod 600)
审计说明: 橙色:skill 目录自带 Python 源码(cli/config/doctor/fetch_jike/fetch_x/match/make_card/render_png/twikit_patch),并为其声明用途读取凭证——即刻 tokens 与 X 的 auth_token/ct0 cookies(写入 ~/.config/sbti/,chmod 600),且经 git 安装未发布到 PyPI 的 jike-skill 包。抓取目标为 x.com / web.okjike.com,属可预期的平台端点。§3『危險旗標/防護繞過』无命中;twikit_patch 只是适配 X 前端 chunk 结构变化,非绕过风控,故不判红。

5第二遍独立确认

  • [ok] 流程阶段完整性 — SKILL.md 阶段 0–8 与 README『这个 skill 做什么』流程一致。
  • [ok] 依赖来源 — requirements.txt 三个包与 doctor.py 的 pip 安装点一致;jike-skill 走 git URL(PyPI 无此包)。
  • [ok] 凭证路径与权限 — README 与 src/config.py 均指向 ~/.config/sbti/,并声明 chmod 600。
  • [ok] 抓取端点 — fetch_x.py 用 twikit、twikit_patch 指向 abs.twimg.com;fetch_jike 走即刻端点。
  • [ok] 反检测检查 — §3『危險旗標/防護繞過』无命中;twikit_patch 是前端结构适配而非绕过风控。
  • [ok] 打分硬约束 — SCORING_RUBRIC 的硬约束与 SKILL.md 阶段 6 一致(证据必填、confidence<0.4 回退 M)。
  • [ok] 合规拒绝逻辑 — DISCLAIMER『不允许的用法』与 SKILL.md 阶段 2 的拒绝分支一致。
  • [ok] 档位复核 — 读凭据 + 远程包 → orange;无绕过/降级 → 不判红。

6结论

  • 端到端自动化:触发→选平台→贴 URL 后自动完成体检/配凭证/抓取/打分/渲染。
  • 打分可复核:15 维均要求真实 post_id 证据,confidence<0.4 强制回退 M。
  • 合规前置:对象确认阶段拒绝分析私人对象,且不上传对象数据到第三方服务器。
  • 适合: 想分析自己或公开公众人物的社交动态、生成可分享人格卡的自媒体/玩梗场景;接受一次扫码或贴 cookie 配置的用户。
    不适合: 分析前任/同事/面试官/投资人/相亲对象等私人对象;HR 背调、择偶匹配、尽调等严肃用途;不愿提供平台登录凭证者。
    Install Agent-Ready
    ① Verified Mirror 2026-10-10
    Option A · Direct DownloadDownload social-sbti.tar.gz
    sha256: 4319620f4435f0cc…
    Option B · Copy Guide for Agent
    install.json
    agent 读 JSON 指南后会自动从本站下载安装,无需更多说明。
    ② Upstream GitHub
    GitHub Repo ↗
    Pinned to commit 3cfa898c51.