AI-powered Twitter personality analyzer — savage, sharable, screenshot-worthy.
X-POSE is a single-user Twitter personality analyzer. Enter a username → scrape their profile & latest tweets → AI generates a 15-dimension personality report with cards, roast, strengths, weaknesses, and account valuation.
Inspired by Wordware's viral Twitter personality project.
English report for @elonmusk. See case/cn/ for Chinese examples.
- Scrape — fetches profile info + latest tweets via Playwright/CloakBrowser
- Analyze — sends profile + tweets to DeepSeek V4 Pro and returns structured JSON
- 15 Report Cards — about, roast, strengths, weaknesses, love life, money, health, and more
- Download as Image — one-click PNG screenshot via html2canvas
- Account Valuation — estimates the account's market value using a weighted formula (followers, engagement, verified status)
- Share to X — pre-filled tweet with your report
- Bilingual UI — Simplified Chinese / English toggle
- 1-Click Concurrency Limit — prevents server overload on Streamlit Cloud
# 1. Clone
git clone https://github.com/gokuscraper/x-pose.git
cd x-pose
# 2. Install Python deps
pip install -r requirements.txt
# 3. Install Playwright browsers (required by CloakBrowser)
playwright install chromium
# 4. Configure API key
# Create .streamlit/secrets.toml with:
# SILICON_API_KEY = "sk-your-key-here"
# 5. Run
streamlit run streamlit_app.pyX-POSE uses SiliconFlow DeepSeek V4 Pro. Get your API key from SiliconFlow Console.
x-pose/
├── streamlit_app.py # Home page — username input → scrape
├── pages/
│ └── 1_Analysis.py # Analysis report page
├── lib/
│ ├── ai.py # AI prompt & API call
│ ├── tweet_utils.py # Tweet formatting & stats
│ └── sidebar.py # Sidebar navigation
├── scraper/
│ ├── worker.py # Subprocess entry point (avoids event-loop conflict)
│ ├── subprocess_client.py# Subprocess communication
│ ├── client.py # CloakBrowser wrapper
│ ├── fetcher.py # Fetch user + tweets
│ ├── parser.py # Parse raw API data → models
│ ├── models.py # TwitterUser, Tweet dataclasses
│ ├── storage.py # Local JSON caching
│ └── config.py # API endpoints config
├── locales/
│ ├── zh.json # Chinese UI strings
│ └── en.json # English UI strings
├── i18n.py # i18n helper
├── requirements.txt
└── packages.txt # System deps for Streamlit Cloud
flowchart LR
A[User Input] --> B[Playwright Subprocess]
B --> C[Profile JSON + Tweets]
C --> D[DeepSeek V4 Pro]
D --> E[15-Field JSON Report]
E --> F[Card Grid UI]
F --> G[Download PNG / Share to X]
- Input — username (supports
@user,https://x.com/user, bare name) - Scrape — subprocess runs Playwright via CloakBrowser to bypass Vercel challenges
- Analyze — profile + tweets sent to DeepSeek V4 Pro with a savage, witty prompt
- Report — 15 cards rendered in a responsive grid
- Share — download as PNG or share to X with pre-filled text
| Layer | Technology |
|---|---|
| Frontend | Streamlit (single-page app) |
| AI Model | DeepSeek V4 Pro via SiliconFlow API |
| Scraper | CloakBrowser (Playwright-based) |
| Deployment | Streamlit Cloud |
| License | Apache 2.0 |

.png)
.png)