Personality Profiler
Generate comprehensive, extensible personality profiles from social media data exports.
Overview
This skill analyzes exported social media data to create detailed personality profiles suitable for:
- AI assistant personalization (training data for personalized responses)
- Self-reflection and pattern discovery
Workflow
- Receive data — User provides exported data files (JSON/CSV)
- Parse data — Extract posts, comments, interactions using platform-specific parsers
- Analyze dimensions — Evaluate across 8 personality dimensions
- Generate profile — Output structured profile in extensible JSON format
- Summarize insights — Provide human-readable summary
Supported Platforms
| Platform | Export Type | Key Files |
|----------|-------------|-----------|
| Twitter/X | ZIP archive | tweets.js, like.js, profile.js |
| LinkedIn | ZIP archive | Profile.csv, Connections.csv, Comments.csv, Shares.csv |
| Instagram | ZIP archive | content/posts_1.json, comments.json, profile.json |
For detailed format specifications, see references/platform-formats.md.
Analysis Dimensions
Analyze content across these 8 dimensions:
1. Communication Style
- Tone: formal ↔ casual, serious ↔ playful, direct ↔ diplomatic
- Verbosity: concise ↔ elaborate, uses bullet points vs paragraphs
- Vocabulary: technical level, industry jargon, colloquialisms
2. Interests & Expertise
- Topics: recurring themes, domains of focus
- Depth: surface mentions vs deep engagement
- Evolution: how interests have changed over time
3. Values & Beliefs
- Priorities: what matters most (inferred from emphasis)
- Advocacy: causes supported or promoted
- Philosophy: worldview indicators
4. Social Patterns
- Engagement style: initiator vs responder, commenter vs creator
- Network orientation: broad reach vs tight community
- Interaction tone: supportive, challenging, neutral
5. Emotional Expression
- Range: emotional vocabulary breadth
- Valence: positive/negative tendency
- Triggers: what elicits strong reactions
6. Cognitive Style
- Reasoning: analytical vs intuitive, data-driven vs narrative
- Complexity: nuanced vs straightforward positions
- Openness: receptivity to new ideas
7. Professional Identity
- Domain: industry, role, expertise areas
- Aspirations: career direction signals
- Network: professional relationship patterns
8. Temporal Patterns
- Activity rhythms: when they post, reply, engage
- Content cycles: seasonal or event-driven patterns
- Growth trajectory: how expression has evolved
Profile Schema
Output profiles in this extensible JSON structure:
{
"version": "1.0",
"generated_at": "ISO-8601 timestamp",
"data_sources": [
{
"platform": "twitter|linkedin|instagram",
"date_range": {"start": "YYYY-MM-DD", "end": "YYYY-MM-DD"},
"item_count": 1234
}
],
"profile": {
"summary": "2-3 paragraph narrative summary",
"dimensions": {
"communication_style": {
"confidence": 0.0-1.0,
"traits": {
"formality": {"value": -1.0 to 1.0, "evidence": ["quote1", "quote2"]},
"verbosity": {"value": -1.0 to 1.0, "evidence": []},
"directness": {"value": -1.0 to 1.0, "evidence": []}
},
"patterns": ["pattern1", "pattern2"],
"recommendations_for_ai": "How an AI should communicate with this person"
}
},
"notable_quotes": [
{"text": "quote", "context": "why notable", "dimension": "which dimension"}
],
"keywords": ["term1", "term2"],
"topics_ranked": [
{"topic": "name", "frequency": 0.0-1.0, "sentiment": -1.0 to 1.0}
]
},
"extensions": {}
}
The extensions field allows adding custom dimensions without breaking compatibility.
Process
Step 1: Data Ingestion
When user provides files:
- Identify platform from file structure
- Locate key content files (see platform table above)
- Parse using appropriate format handler
- Normalize to common internal structure:
{
"items": [
{
"id": "unique_id",
"type": "post|comment|share|like",
"timestamp": "ISO-8601",
"content": "text content",
"metadata": {
"platform": "twitter",
"engagement": {"likes": 0, "replies": 0, "shares": 0},
"context": "reply_to_id or null"
}
}
]
}
Step 2: Content Analysis
For each dimension:
- Extract signals — Find relevant content snippets
- Score traits — Rate on dimension-specific scales
- Gather evidence — Collect representative quotes
- Calculate confidence — Based on data volume and consistency
Minimum thresholds for confident analysis:
- 50+ posts for basic profile
- 200+ posts for detailed profile
- 500+ posts for high-confidence profile
If below thresholds, note reduced confidence in output.
Step 3: Profile Generation
- Populate all dimension objects in schema
- Write narrative summary synthesizing key findings
- Extract notable quotes (5-10 most characteristic)
- Rank topics by frequency and engagement
- Generate AI personalization recommendations
Step 4: Output Delivery
Provide two outputs:
- JSON profile — Complete structured data (save as
personality_profile.json) - Markdown summary — Human-readable insights document
AI Personalization Recommendations
For each dimension, include specific guidance for AI systems:
Example recommendations:
communication_style.recommendations_for_ai:
"Use a conversational but informed tone. Avoid excessive formality.
Include occasional humor. Lead with conclusions, then supporting detail.
Match their tendency for medium-length responses (2-3 paragraphs)."
interests.recommendations_for_ai:
"Can reference machine learning, distributed systems, and startup culture
without explanation. Assume familiarity with Python ecosystem. May enjoy
tangential connections to philosophy of technology."
Handling Multiple Platforms
When analyzing data from multiple platforms:
- Process each platform separately first
- Cross-reference for consistency
- Note platform-specific behaviors (e.g., more formal on LinkedIn)
- Weight professional platforms for work identity
- Weight personal platforms for authentic voice
- Merge into unified profile with platform annotations
Privacy Considerations
Before processing:
- Confirm user owns the data
- Note that analysis stays local (no external API calls for content)
- Offer to redact specific people/topics if requested
- Output can be edited before use
Extending the Profile
The profile schema supports extensions:
{
"extensions": {
"custom_dimension": {
"confidence": 0.8,
"traits": {},
"patterns": [],
"recommendations_for_ai": ""
},
"domain_specific": {
"developer_profile": {
"languages": ["python", "rust"],
"paradigm_preference": "functional-leaning"
}
}
}
}
Users can request custom dimensions by describing what they want analyzed.