home / skills / questnova502 / claude-skills-sync / baoyu-danger-x-to-markdown

baoyu-danger-x-to-markdown skill

/skills/baoyu-danger-x-to-markdown

This skill converts X tweet or article URLs into clean markdown with front matter and content extraction, enabling easy sharing and archival.

npx playbooks add skill questnova502/claude-skills-sync --skill baoyu-danger-x-to-markdown

Review the files below or copy the command above to add this skill to your agents.

Files (14)
SKILL.md
4.0 KB
---
name: baoyu-danger-x-to-markdown
description: Convert X (Twitter) tweet or article URL to markdown. Uses reverse-engineered X API (private). Requires user consent before use.
---

# 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**:
1. Determine this SKILL.md file's directory path as `SKILL_DIR`
2. Script path = `${SKILL_DIR}/scripts/<script-name>.ts`
3. 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

```bash
# 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:

```bash
# 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

```bash
# 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

```markdown
---
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):
1. `.baoyu-skills/baoyu-danger-x-to-markdown/EXTEND.md` (project)
2. `~/.baoyu-skills/baoyu-danger-x-to-markdown/EXTEND.md` (user)

If found, load before workflow. Extension content overrides defaults.

Overview

This skill converts X (Twitter) tweets, tweet threads, and X Articles into clean Markdown files, including YAML front matter for metadata. It uses a reverse-engineered X API and requires explicit user consent before any network requests. Outputs can be saved as files, directories, or emitted as JSON for automation.

How this skill works

Given a tweet or article URL, the tool fetches content via a private X API and extracts text, images, and thread structure. Threads are rendered as a single Markdown document with YAML front matter (url, author, tweet_count). Articles are fully scraped and converted to Markdown. The tool supports environment-variable or browser-based authentication and can cache output in a per-user directory.

When to use it

  • You need readable, portable Markdown copies of tweets, threads, or X Articles.
  • You want a local archive of a user thread in a single file with metadata.
  • You need machine-readable JSON output for pipelines or backups.
  • You prefer to convert links to blog-ready Markdown including images and author info.

Best practices

  • Run the built-in consent flow before first use and store consent as instructed; the tool will not proceed without acceptance.
  • Prefer environment variables (X_AUTH_TOKEN and X_CT0) for stable, headless authentication where possible.
  • Use the --json flag when integrating into automation or CI to avoid filesystem side effects.
  • When saving many items, organize output using the provided {username}/{tweet-id}.md structure to avoid collisions.
  • Check saved YAML front matter after conversion to ensure author and tweet_count match expectations.

Example use cases

  • Archive a multi-tweet thread into a single Markdown post for a personal knowledge base.
  • Convert an X Article URL into Markdown for republishing or sentiment analysis.
  • Automate a nightly job that converts a set of tweet URLs to JSON for downstream indexing.
  • Save tweet conversations related to a project into a docs folder using the organized username/tweet-id layout.

FAQ

Why do I have to accept a disclaimer?

The tool uses a reverse-engineered X API that is not official. Acceptance records that you understand the risks, and the tool will create a local consent file to avoid repeating the prompt.

What authentication methods are supported?

You can supply X_AUTH_TOKEN and X_CT0 environment variables or allow the tool to open a browser to capture cookies. Environment variables are recommended for automation.

Can this break if X changes?

Yes. Because the API is unofficial, changes on X may break extraction. The disclaimer explains this risk and recommends cautious use.