release-skills
Universal release workflow. Auto-detects version files and changelogs. Supports Node.js, Python, Rust, Claude Plugin, GitHub…
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.
Claude Code
$ npx -y skills add JimLiu/baoyu-skills --skill baoyu-danger-x-to-markdown --agent claude-code
Codex
$ npx skills add JimLiu/baoyu-skills --skill baoyu-danger-x-to-markdown -a codex -y
Cursor
$ npx skills add JimLiu/baoyu-skills --skill baoyu-danger-x-to-markdown -a cursor -y
Gemini CLI
$ npx skills add JimLiu/baoyu-skills --skill baoyu-danger-x-to-markdown -a gemini-cli -y
GitHub Copilot
$ npx skills add JimLiu/baoyu-skills --skill baoyu-danger-x-to-markdown -a github-copilot -y
OpenCode
$ npx skills add JimLiu/baoyu-skills --skill baoyu-danger-x-to-markdown -a opencode -y
Windsurf
$ npx skills add JimLiu/baoyu-skills --skill baoyu-danger-x-to-markdown -a windsurf -y
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
- npxTweets/threads → markdown with YAML front matter; X Articles → full content.
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.
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
1. Read the consent file:
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.
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.
${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>`
--- 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`
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)
1. Environment variables (preferred): `X_AUTH_TOKEN`, `X_CT0` 2. Chrome login (fallback): auto-opens Chrome, caches cookies locally
Custom configurations via EXTEND.md — see **Preferences** above.
Skills shared by Baoyu for improving daily work efficiency with AI Agents (Claude Code, Codex, etc.).
Universal release workflow. Auto-detects version files and changelogs. Supports Node.js, Python, Rust, Claude Plugin, GitHub…
Analyzes article structure, identifies positions requiring visual aids, generates illustrations with Type × Style × Palette…
Knowledge comic creator supporting multiple art styles and tones. Creates original educational comics with detailed panel layouts…
Compresses images to WebP (default) or PNG with automatic tool selection. Use when user asks to "compress image", "optimize…
Generates article cover images with 5 dimensions (type, palette, rendering, text, mood) combining 11 color palettes and 7…
Generates images and text via reverse-engineered Gemini Web API. Supports text generation, image generation from prompts,…
Activates when the user asks about AI prompts, needs prompt templates, wants to search for prompts, or mentions prompts.chat. Use…
AI-driven presentation workflow for generating editable PPTX decks and slides, reconstructing page visuals, creating reusable…
Use this skill when the user wants a .pptx with smooth cross-slide animation — PowerPoint Morph transitions, Keynote-style…
Create stunning, animation-rich HTML presentations from scratch or by converting PowerPoint files. Use when the user wants to…