Loading...
Loading...
Social-SBTI — Scrape public posts from Jike / X and generate parody SBTI personality profile cards. Wizard-style workflow: User trigger → Select platform → Paste URL → Auto health check/credential configuration/scraping/scoring/rendering → Generate card. Trigger scenarios: - User says "Run social-sbti" / "Start social-sbti" - User says "Help me analyze @someone's SBTI" - User says "Analyze @someone using social-sbti" - User says "Create a social version SBTI personality card for XXX"
npx skill4agent add backtthefuture/huangshu social-sbtiThis SKILL.md is a dialogue script. Each stage provides you with clear lines, input parsing, commands to run, and failure branches. Strictly follow the stage order, do not skip steps.
SBTI_HOME="$(
for d in "$HOME/.claude/skills/social-sbti" \
"$(pwd)/.claude/skills/social-sbti" \
"$(pwd)/skills/social-sbti" \
"$HOME/.claude/plugins/social-sbti/social-sbti"; do
[ -f "$d/SKILL.md" ] && echo "$d" && break
done
)"
export SBTI_HOME
echo "SBTI_HOME=$SBTI_HOME"export SBTI_HOME=<path>"$SBTI_HOME/bin/sbti" <subcmd>🎭 Social-SBTI Personality Profile (For entertainment only · Only analyze yourself or fully public figures)
Please select the platform to analyze:
1. Jike
2. X (Twitter)12JikeXTwitter1JikejikePLATFORM=jike2xXtwitterPLATFORM=x@samaAI产品黄叔Got it, analyzing Jike user. Please paste the user's Jike homepage URL or username.
Examples:
https://web.okjike.com/u/E272054E-D904-4F13-A7EC-9ABD2CBF209E
Or directly usernameGot it, analyzing X user. Please paste the user's X handle / homepage URL / user id.
Examples:
@sama
https://x.com/elonmusk
44196397 (user id, most stable, not affected by name changes)TARGET=<user input>Confirm, is this your own account, or a fully public figure? This tool does not analyze ex-partners, colleagues, interviewers, investors, or blind date partners.
"$SBTI_HOME/bin/sbti" doctor --fix --platform "$PLATFORM"--fixjike-authFirst scan to get token, QR code will be displayed shortly.mkdir -p ~/.config/sbti && rm -f ~/.config/sbti/jike-tokens.json && \
"$SBTI_HOME/bin/sbti" jike-auth > ~/.config/sbti/jike-tokens.jsonsbti jike-authjike-authpip install --user~/Library/Python/3.x/binsbti jike-authrun_in_background: trueRead[+] Session: 642d995d-31a6-...
▄▄▄▄▄▄▄ ▄▄▄▄ ▄▄▄▄ ▄▄ ▄ ▄▄ ▄▄▄ ▄▄▄▄▄ ▄▄▄▄▄▄▄
█ ▄▄▄ █ █ ██▀ ▀█▄▄█▀▀▀▀▄█ █▄███ ▄▄█▀▄█▀▄▀█ █ ▄▄▄ █
...about 25 lines of QR...
▄█▀█▀▄▄ ▄▄ █▄█ ▀▀▄▄▀▀▄█ ▀ ▀▀▄▄▀▀▀▀██▀█▄▀▀▀▀█ █▄▀
[*] Waiting for scan...Waiting for scan...[+] Session:Waiting for scan<Paste original stderr content here>👆 Please scan the above QR code with the Jike App. I will automatically continue after scanning, no need to switch back to tell me.
TaskOutputblock: true, timeout: 120000Read~/.config/sbti/jike-tokens.json"$SBTI_HOME/bin/sbti" config jike --from-inbox✓ Jike tokens imported from inbox| Symptom | Handling |
|---|---|
| No scan after 2 minutes → task exits with code 1 | Tell the user "Scan timed out, would you like to try again?", return to step ① after confirmation |
jike-tokens.json exists but | jike-auth crashed midway, |
| Background task output file has no QR block characters for a long time | jike-auth may be stuck on network, |
First time using X, need to get two fields from browser cookies:
1. Log in to https://x.com in your browser
2. Press F12 to open DevTools → Application → Cookies → https://x.com
3. Find these two cookies and copy their Values:
- auth_token (long string)
- ct0 (long string, CSRF token)
Paste them directly, format doesn't matter, e.g.:
auth_token = xxxxxx
ct0 = yyyyyyauth_tokenct0"$SBTI_HOME/bin/sbti" config x \
--auth-token "<auth_token value>" \
--ct0 "<ct0 value>"~/.config/sbti/x_cookies.jsonX has strict risk control. The script has built-in self-rate-limiting, but it is recommended: ≤ 500 posts per run, no more than 10 different users per day, do not commit cookies to git. If rate-limited, stop and try again the next day.
"$SBTI_HOME/bin/sbti" fetch "$PLATFORM" "$TARGET" --limit 200./sbti-output/<name>_raw.jsonRAW_FILE| Error | Handling |
|---|---|
| 401 / token expired | Ask user to re-run jike-auth (Jike) or re-import cookies (X), return to Phase 4 |
| 404 user not found | Ask user to confirm if the URL / username is correct |
| 429 / rate limited | Stop, ask user to come back after 30 minutes |
| Network error | Ask user to check network and retry |
Read$RAW_FILEposts[]Read$SBTI_HOME/docs/SCORING_RUBRIC.mdS1 S2 S3 E1 E2 E3 A1 A2 A3 Ac1 Ac2 Ac3 So1 So2 So3post_idoverall_impressionpersonality_descriptionquotescontent{
"profile": { "screen_name": "...", "platform": "jike|x",
"bio": "...", "post_count": 200 },
"personality_description": "...",
"overall_impression": "...",
"quotes": ["...", "...", "...", "..."],
"scores": [
{
"dimension": "S1",
"level": "H",
"confidence": 0.9,
"evidence": ["<real post_id>", "<real post_id>"],
"reasoning": "No more than 40 words"
}
// ... total 15 entries
]
}./sbti-output/<name>_scores.json<name>"drunk": trueSCORES_FILE=./sbti-output/<name>_scores.json"$SBTI_HOME/bin/sbti" finalize "$SCORES_FILE"match.pypatternpersonalitymake_card.pyrender_png.py━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
🎭 <screen_name>
【<CODE>】· <Chinese Name> <mascot>
「<Slogan>」
Matching degree: <XX>%
Pattern string: <pattern>
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━Self Model
S1 Self-esteem & Confidence H — <reasoning>
S2 Self-clarity H — <reasoning>
S3 Core Values H — <reasoning>
Emotional Model
E1 Attachment Security H — <reasoning>
...overall_impression📁 Outputs:
sbti-output/<name>_scores.json (Complete data)
sbti-output/<name>-sbti.html (Shareable card)
sbti-output/<name>-sbti.png (Screenshot, if playwright is ready)open sbti-output/<name>-sbti.png
open sbti-output/<name>-sbti.htmldocs/SCORING_RUBRIC.mddocs/DISCLAIMER.mdbin/sbtisbti --helpexamples/huangshu_scores.json