| name | x-post-extractor |
| description | Extract high-quality X posts and threads from stream transcripts. Finds shareable moments, discoveries, and insights with media requests. |
X Post Extractor Skill
Analyzes stream transcription files to extract high-quality X (Twitter) posts and threads, optimized for engagement using proven voice patterns.
Quick Start
When you have a stream transcription, ask Claude to extract posts:
User: "Extract X posts from my stream"
You will automatically:
- Detect the transcription file and check for
parsed.json
- Scan for trigger phrases and score moments
- Generate posts/threads
- Fetch media (screenshots, video clips, logos)
- Output to
x_posts_output/ folder with copy-paste ready files
Inputs Required
| Input | Required | Description |
|---|
| Stream transcript | Yes | Timestamped transcript (parsed.json or out.json) |
| Stream title/topic | Yes | Context for relevance filtering |
| Stream recording access | Yes | For screenshot/clip extraction |
Execution Checklist
When user asks to extract X posts, follow this exact sequence:
Phase 1: Detect & Parse Transcript
Phase 2: Scan & Score Moments
Phase 3: Generate Posts & Threads
For each high-scoring moment:
Phase 4: Fetch Media (Automatic)
For each post, automatically fetch the required media:
Phase 5: Write Output (Copy-Paste Ready)
Create x_posts_output/ folder with:
Output Structure:
x_posts_output/
├── README.md # All posts with copy-paste blocks
├── 01_topic_name.txt # Post 1 text
├── 01_topic_name_clip.mp4 # Post 1 video clip
├── screenshot_or_logo.png # Post 1 image
├── 02_topic_name.txt # Post 2 text
├── 02_topic_name_clip.mp4 # Post 2 video clip
└── ...
Detection Logic
Trigger Phrases to Scan
1. Discovery Moments (high engagement potential)
- Exclamations: "whoa", "dude", "that's actually", "wait", "sick", "boom"
- Surprise phrases: "I didn't know it could", "I haven't seen this before"
- Appreciation: "that's pretty cool", "that's really cool"
2. Result Statements (proof of value)
- Success indicators: "it worked", "it just", "there we go", "here we go"
- Specific metrics: stars, time saved, lines of code, speed, percentages
- Before/after: improvement metrics, comparison numbers
3. Comparison Signals (context and positioning)
- Comparators: "better than", "beats", "faster than", "unlike"
- Superlatives: tool name + "best", "fastest", "easiest", "first"
- Alternatives: "instead of", "replaced", "switched from"
4. Problem→Solution Arcs (narrative hooks)
- Resolution markers: "finally", "figured it out", "the fix was", "turns out"
- Pattern: frustration followed by resolution within 2-3 minutes of transcript
- Breakthrough moments: "oh that's why", "now it makes sense"
Scanning Process
When reading the transcript:
- First pass: Flag sentences containing any trigger phrase
- Context expansion: Include 1-2 sentences before and after for context
- Timestamp extraction: Note exact start/end times for media requests
- Deduplication: If same tool/topic appears multiple times, keep the strongest moment
Scoring Priority
Rank each detected moment by presence of these signals (highest to lowest):
| Priority | Signal | Weight | Example |
|---|
| 1 (Highest) | Tool name + specific result | 5 | "Cursor completed the entire function in 2 seconds" |
| 2 | Comparison to known tool | 4 | "This beats ChatGPT for coding tasks" |
| 3 | Metric or number | 3 | "Went from 500ms to 50ms load time" |
| 4 | Strong reaction word | 2 | "Whoa, that's actually incredible" |
| 5 (Lowest) | General discovery energy | 1 | "This is pretty cool" |
Priority Mapping:
- Score 5+: high priority
- Score 3-4: medium priority
- Score 1-2: low priority
Skip Criteria
Do NOT extract moments that are:
- Off-topic: Non-AI/tech tangents, personal stories unrelated to tools
- Incomplete: Abandoned explorations, interrupted thoughts
- Negative without resolution: Complaints without solutions or learnings
- Duplicate: Already covered same tool/insight in a previous extraction
- Too vague: Generic excitement without specific tool/insight
Format Selection
Use Single Post when:
- Discovery is self-contained
- 1-2 key points only
- No multi-step process
- Can be expressed in <280 characters (400 max)
Use Thread when:
- 3+ distinct points
- Multi-step process or tutorial
- Comparison of multiple things
- Story arc with beginning/middle/end
- Need more than 400 characters to convey value
Output Format
Create x_posts_output/ folder with copy-paste ready files:
Individual Post Files (.txt)
Each post gets its own text file with plain text ready to copy:
01_aide_cursor_alternative.txt:
Aide just autocompleted an entire function on first try.
Free. Open source. Runs locally.
Another Cursor alternative worth watching.
Check it out: [link]
README.md Summary
The README contains all posts in code blocks for quick copying:
# X Posts - [Stream Title]
## Post 1: Aide (HIGH PRIORITY)
**Copy this:**
\```
Aide just autocompleted an entire function on first try.
Free. Open source. Runs locally.
Another Cursor alternative worth watching.
Check it out: [link]
\```
**Media:**
- Video clip: `01_aide_clip.mp4`
- Screenshot: `aide.com.png`
---
## Post 2: [Next Topic]
...
Thread Files
For threads, create a single file with all tweets separated by ---:
02_cursor_alternatives_thread.txt:
1/ Tested 3 Cursor alternatives this week.
One of them is mass sleeping on.
Here's what I found
---
2/ Aide
Free, open source, runs locally.
Autocomplete is surprisingly good—completed entire functions without context.
---
3/ [Next tweet]
...
Quality Checklist
Before finalizing any extraction, verify:
For Single Posts:
For Threads:
Batch Processing Notes
When processing a full stream:
- Scan entire transcript first, flag all potential moments
- Rank by priority score
- Check for redundancy (don't extract 3 posts about same tool)
- Aim for 2-4 extractions per 1-hour stream
- Mix of posts and threads ideal (e.g., 2 posts + 1 thread)
- Note timestamps that could become TikTok/Shorts clips (add to notes)
Multi-step Analysis Process
Since transcripts can be large, analyze in overlapping windows:
- Get total count: Read
parsed.json metadata for total sentences
- Analyze in windows: Use 200-sentence windows with 50-sentence overlap
- Window 1: Sentences 0-200
- Window 2: Sentences 150-350
- Window 3: Sentences 300-500
- Continue until all analyzed
- Track all moments: Keep running list with timestamps and scores
- Deduplicate: Same topic in multiple windows → keep highest scoring
- Rank and select: Sort by score, take top 2-4 per hour of stream
- Generate content: Write posts/threads for selected moments
- Fetch media: Capture screenshots, extract video clips, fetch logos
- Write output: Create
x_posts_output/ with text files, media, and README
Example Analysis Output
Scan complete! Analyzed 4400 sentences (6.7 hours).
Moments detected: 15
- Discovery moments: 6
- Result statements: 4
- Comparisons: 3
- Problem→Solution: 2
After scoring and deduplication:
- High priority: 3
- Medium priority: 1
- Skipped: 11 (off-topic, duplicate, incomplete)
Generating posts and fetching media...
Fetching media:
✓ Screenshot: year-in-code.com.png
✓ Screenshot: openrouter.ai.png
✓ Logo: xiaomi_com.png
✓ Video clip: 01_github_wrapped_clip.mp4 (15s)
✓ Video clip: 02_open_router_clip.mp4 (35s)
✓ Video clip: 03_playwright_mcp_clip.mp4 (25s)
Output saved to x_posts_output/:
- 4 text files (copy-paste ready)
- 3 video clips
- 3 images (screenshots + logos)
- README.md with summary
Supporting Documents
- VOICE.md - Voice guidelines (words to use/avoid)
- FORMATS.md - Post and thread format templates
- EXAMPLES.md - Sample extractions with inputs/outputs
Integration with Other Skills
This skill works alongside:
- clipper: Uses same
parsed.json input format
- media-fetcher: Scripts are called automatically to fetch screenshots and logos
Typical workflow:
1. User runs transcription → out.json
2. Run x-post-extractor → x_posts_output/ with:
- Copy-paste ready text files
- Video clips extracted from stream
- Screenshots captured automatically
- Logos fetched for mentioned companies
3. User copies text, attaches media, posts to Twitter
What gets fetched automatically:
- Screenshots of product/tool websites mentioned
- Video clips from stream at relevant timestamps
- Company logos for brands discussed
Requirements
- Python 3.8+ for parse script and media-fetcher scripts
- ffmpeg for extracting video clips (
brew install ffmpeg)
- Playwright for screenshots (
pip install playwright && playwright install chromium)
- Stream transcription in JSON format with timestamps
- Stream video file (
.mp4, .webm, .mkv) for clip extraction
Troubleshooting
"No moments found": The stream may lack strong discovery/result moments. Try lowering the score threshold or look for teaching moments instead.
"Too many moments": Increase score threshold to 4+ or be more aggressive with deduplication.
"Posts feel generic": Ensure you're capturing specific tool names and metrics, not just reaction words.