Skip to content

/baoyu-danger-x-to-markdown

Converts X (Twitter) tweets and articles to markdown with YAML front matter. Uses reverse-engineered API requiring user consent. Use when user mentions "X to markdown", "tweet to markdown", "save tweet", or provides x.com/twitter.com URLs for conversion.

From plugin
baoyu-skills
27k22 skills

Claude Code

$ npx -y skills add JimLiu/baoyu-skills --skill baoyu-danger-x-to-markdown --agent claude-code

SKILL.md

baoyu-danger-x-to-markdown.SKILL.md
name: baoyu-danger-x-to-markdown
description: Converts X (Twitter) tweets and articles to markdown with YAML front matter. Uses reverse-engineered API requiring user consent. Use when user mentions "X to markdown", "tweet to markdown", "save tweet", or provides x.com/twitter.com URLs for conversion.
version: 1.117.3
metadata:
  openclaw:
    homepage: https://github.com/JimLiu/baoyu-skills#baoyu-danger-x-to-markdown
    requires:
      anyBins:
        - bun
        - npx

X to Markdown

Tweets/threads → markdown with YAML front matter; X Articles → full content.

User Input Tools

When this skill prompts the user, follow this tool-selection rule (priority order):

1. **Prefer built-in user-input tools** exposed by the current agent runtime — e.g., `AskUserQuestion`, `request_user_input`, `clarify`, `ask_user`, or any equivalent. 2. **Fallback**: if no such tool exists, emit a numbered plain-text message and ask the user to reply with the chosen number/answer for each question. 3. **Batching**: if the tool supports multiple questions per call, combine all applicable questions into a single call; if only single-question, ask them one at a time in priority order.

Concrete `AskUserQuestion` references below are examples — substitute the local equivalent in other runtimes.

Script Directory

1. `{baseDir}` = this SKILL.md's directory; script = `{baseDir}/scripts/main.ts` 2. `${BUN_X}` = `bun` if installed; else `npx -y bun` if `npx` available; else suggest installing bun

Consent Requirement (before any conversion)

1. Read the consent file:

  • macOS: `~/Library/Application\ Support/baoyu-skills/x-to-markdown/consent.json`
  • Linux: `~/.local/share/baoyu-skills/x-to-markdown/consent.json`

2. `accepted: true` and `disclaimerVersion: "1.0"` → print `Warning: Using reverse-engineered X API. Accepted on: <acceptedAt>` and proceed. 3. Missing or version mismatch → show this disclaimer and ask "Yes, I accept" | "No, I decline":

   DISCLAIMER

   This tool uses a reverse-engineered X API, NOT official.

   Risks:
   - May break if X changes API
   - No guarantees or support
   - Possible account restrictions
   - Use at your own risk

   Accept terms and continue?

4. Accept → write the consent file:

   {
     "version": 1,
     "accepted": true,
     "acceptedAt": "<ISO timestamp>",
     "disclaimerVersion": "1.0"
   }

5. Decline → output "User declined. Exiting." and stop.

Preferences (EXTEND.md)

First one found wins:

| Priority | Path | Scope | |----------|------|-------| | 1 | `.baoyu-skills/baoyu-danger-x-to-markdown/EXTEND.md` | Project | | 2 | `${XDG_CONFIG_HOME:-$HOME/.config}/baoyu-skills/baoyu-danger-x-to-markdown/EXTEND.md` | XDG | | 3 | `$HOME/.baoyu-skills/baoyu-danger-x-to-markdown/EXTEND.md` | User home |

Found → read and apply. Not found → **BLOCKING** first-time setup: ask the questions in [references/config/first-time-setup.md](references/config/first-time-setup.md) (Media, Output, Save — all in one call) before any conversion, write EXTEND.md at the chosen location, confirm "Preferences saved to [path]", then continue. Never create EXTEND.md with defaults without asking.

| Key | Default | Values | |-----|---------|--------| | `download_media` | `ask` | `ask` (prompt each time) / `1` (always) / `0` (never) | | `default_output_dir` | empty (= `./x-to-markdown/`) | path or empty |

Value priority: CLI arguments (`--download-media`, `-o`) → EXTEND.md → skill defaults.

Usage

${BUN_X} {baseDir}/scripts/main.ts <url>
${BUN_X} {baseDir}/scripts/main.ts <url> -o output.md
${BUN_X} {baseDir}/scripts/main.ts <url> --download-media
${BUN_X} {baseDir}/scripts/main.ts <url> --json

| Option | Description | |--------|-------------| | `<url>` | Tweet or article URL | | `-o <path>` | Output path | | `--json` | JSON output | | `--download-media` | Download images/videos to local `imgs/` and `videos/` next to the markdown, rewrite links to local relative paths | | `--login` | Refresh cookies only |

Supported URLs: `https://x.com/<user>/status/<id>`, `https://twitter.com/<user>/status/<id>`, `https://x.com/i/article/<id>`

Output

---
url: "https://x.com/user/status/123"
author: "Name (@user)"
tweetCount: 3
coverImage: "https://pbs.twimg.com/media/example.jpg"
---

Content...

File structure: `x-to-markdown/{username}/{tweet-id}/{content-slug}.md`

Media Download

By EXTEND.md `download_media`: `1` → run with `--download-media`; `0` → run without; `ask` (default):

1. Run **without** `--download-media` → markdown saved 2. Check it for remote media (`https://` image/video links); none → done, no prompt 3. Otherwise ask (header "Media", question "Download N images/videos to local files?"): "Yes" — download to local directories / "No" — keep remote URLs 4. Yes → rerun **with** `--download-media` (overwrites markdown with localized links)

Authentication

1. Environment variables (preferred): `X_AUTH_TOKEN`, `X_CT0` 2. Chrome login (fallback): auto-opens Chrome, caches cookies locally

Extension Support

Custom configurations via EXTEND.md — see **Preferences** above.

Read more
@jimliu
Ships withbaoyu-skills

Skills shared by Baoyu for improving daily work efficiency with AI Agents (Claude Code, Codex, etc.).

Stars on GitHub

Momentum

stars in total
27.5k
Star history of JimLiu/baoyu-skills on GitHub, a chart by star-history.com

Other skills on baoyu-skills.

release-skills
Auto-invoked

release-skills

Universal release workflow. Auto-detects version files and changelogs. Supports Node.js, Python, Rust, Claude Plugin, GitHub…

@jimliu@jimliuInstall Skill
baoyu-article-illustrator
Auto-invoked

baoyu-article-illustra…

Analyzes article structure, identifies positions requiring visual aids, generates illustrations with Type × Style × Palette…

@jimliu@jimliuInstall Skill
baoyu-comic
Auto-invoked

baoyu-comic

Knowledge comic creator supporting multiple art styles and tones. Creates original educational comics with detailed panel layouts…

@jimliu@jimliuInstall Skill
baoyu-compress-image
Auto-invoked

baoyu-compress-image

Compresses images to WebP (default) or PNG with automatic tool selection. Use when user asks to "compress image", "optimize…

@jimliu@jimliuInstall Skill
baoyu-cover-image
Auto-invoked

baoyu-cover-image

Generates article cover images with 5 dimensions (type, palette, rendering, text, mood) combining 11 color palettes and 7…

@jimliu@jimliuInstall Skill
baoyu-danger-gemini-web
Auto-invoked

baoyu-danger-gemini-we…

Generates images and text via reverse-engineered Gemini Web API. Supports text generation, image generation from prompts,…

@jimliu@jimliuInstall Skill

More skills from other plugins.

prompt-lookup

prompt-lookup

Activates when the user asks about AI prompts, needs prompt templates, wants to search for prompts, or mentions prompts.chat. Use…

@gh-f@gh-fInstall Skill
ppt-master

ppt-master

AI-driven presentation workflow for generating editable PPTX decks and slides, reconstructing page visuals, creating reusable…

@hugohe3@hugohe3Install Skill
morph-ppt

morph-ppt

Use this skill when the user wants a .pptx with smooth cross-slide animation — PowerPoint Morph transitions, Keynote-style…

@iofficeai@iofficeaiInstall Skill

Questions about baoyu-danger-x-to-markdown.

Which coding agents can use baoyu-danger-x-to-markdown?
baoyu-danger-x-to-markdown installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.