X to Markdown
Converts X (Twitter) content to markdown format:
- •Tweet threads → Markdown with YAML front matter
- •X Articles → Full article content extraction
Script Directory
Important: All scripts are located in the scripts/ subdirectory of this skill.
Agent Execution Instructions:
- •Determine this SKILL.md file's directory path as
SKILL_DIR - •Script path =
${SKILL_DIR}/scripts/<script-name>.ts - •Replace all
${SKILL_DIR}in this document with the actual path
Script Reference:
| Script | Purpose |
|---|---|
scripts/main.ts | CLI entry point for URL conversion |
⚠️ Disclaimer (REQUIRED)
Before using this skill, the consent check MUST be performed.
Consent Check Flow
Step 1: Check consent file
# macOS cat ~/Library/Application\ Support/baoyu-skills/x-to-markdown/consent.json 2>/dev/null # Linux cat ~/.local/share/baoyu-skills/x-to-markdown/consent.json 2>/dev/null # Windows (PowerShell) Get-Content "$env:APPDATA\baoyu-skills\x-to-markdown\consent.json" 2>$null
Step 2: If consent exists and accepted: true with matching disclaimerVersion: "1.0":
Print warning and proceed:
⚠️ Warning: Using reverse-engineered X API (not official). Accepted on: <acceptedAt date>
Step 3: If consent file doesn't exist or disclaimerVersion mismatch:
Display disclaimer and ask user:
⚠️ DISCLAIMER This tool uses a reverse-engineered X (Twitter) API, NOT an official API. Risks: - May break without notice if X changes their API - No official support or guarantees - Account restrictions possible if API usage detected - Use at your own risk Do you accept these terms and wish to continue?
Use AskUserQuestion tool with options:
- •Yes, I accept - Continue and save consent
- •No, I decline - Exit immediately
Step 4: On acceptance, create consent file:
# macOS
mkdir -p ~/Library/Application\ Support/baoyu-skills/x-to-markdown
cat > ~/Library/Application\ Support/baoyu-skills/x-to-markdown/consent.json << 'EOF'
{
"version": 1,
"accepted": true,
"acceptedAt": "<ISO timestamp>",
"disclaimerVersion": "1.0"
}
EOF
# Linux
mkdir -p ~/.local/share/baoyu-skills/x-to-markdown
cat > ~/.local/share/baoyu-skills/x-to-markdown/consent.json << 'EOF'
{
"version": 1,
"accepted": true,
"acceptedAt": "<ISO timestamp>",
"disclaimerVersion": "1.0"
}
EOF
Step 5: On decline, output message and stop:
User declined the disclaimer. Exiting.
Usage
# Convert tweet (outputs markdown path)
npx -y bun ${SKILL_DIR}/scripts/main.ts <url>
# Save to specific file
npx -y bun ${SKILL_DIR}/scripts/main.ts <url> -o output.md
# JSON output
npx -y bun ${SKILL_DIR}/scripts/main.ts <url> --json
Options
| Option | Description |
|---|---|
<url> | Tweet or article URL |
-o <path> | Output path (file or dir) |
--json | Output as JSON |
--login | Refresh cookies only |
File Structure
x-to-markdown/
└── {username}/
└── {tweet-id}.md
Supported URLs
- •
https://x.com/<user>/status/<id> - •
https://twitter.com/<user>/status/<id> - •
https://x.com/i/article/<id>
Output Format
--- url: https://x.com/username/status/123 author: "Display Name (@username)" tweet_count: 3 --- Tweet content... --- Thread continuation...
Authentication
Option 1: Environment variables (recommended)
- •
X_AUTH_TOKEN- auth_token cookie - •
X_CT0- ct0 cookie
Option 2: Chrome login (auto if env vars not set)
- •First run opens Chrome for login
- •Cookies cached locally
Extension Support
Custom configurations via EXTEND.md.
Check paths (priority order):
- •
.baoyu-skills/baoyu-danger-x-to-markdown/EXTEND.md(project) - •
~/.baoyu-skills/baoyu-danger-x-to-markdown/EXTEND.md(user)
If found, load before workflow. Extension content overrides defaults.