Web To Markdown
rookie-ricardo/erduo-skills
Convert a web URL into cleaned Markdown with deterministic routing.
Saves tweets, threads and X Articles as Markdown files with YAML front matter, using an unofficial API that asks for your consent first.
The automated check flagged lines worth reading first. See the safety section below.
$ npx skills add JimLiu/baoyu-skills --skill baoyu-danger-x-to-markdown -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install JimLiu/baoyu-skills baoyu-danger-x-to-markdown --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/JimLiu/baoyu-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/baoyu-danger-x-to-markdown .claude/skills/baoyu-danger-x-to-markdown && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "baoyu-danger-x-to-markdown" agent skill from https://github.com/JimLiu/baoyu-skills/tree/main/skills/baoyu-danger-x-to-markdown into .claude/skills/baoyu-danger-x-to-markdown/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "baoyu-danger-x-to-markdown", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/JimLiu/baoyu-skills/tree/main/skills/baoyu-danger-x-to-markdownType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add JimLiu/baoyu-skills --skill baoyu-danger-x-to-markdown -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install JimLiu/baoyu-skills baoyu-danger-x-to-markdown --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/JimLiu/baoyu-skills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/baoyu-danger-x-to-markdown .agents/skills/baoyu-danger-x-to-markdown && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "baoyu-danger-x-to-markdown" agent skill from https://github.com/JimLiu/baoyu-skills/tree/main/skills/baoyu-danger-x-to-markdown into .agents/skills/baoyu-danger-x-to-markdown/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "baoyu-danger-x-to-markdown", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add JimLiu/baoyu-skills --skill baoyu-danger-x-to-markdown -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install JimLiu/baoyu-skills baoyu-danger-x-to-markdown --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/JimLiu/baoyu-skills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/baoyu-danger-x-to-markdown .cursor/skills/baoyu-danger-x-to-markdown && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "baoyu-danger-x-to-markdown" agent skill from https://github.com/JimLiu/baoyu-skills/tree/main/skills/baoyu-danger-x-to-markdown into .cursor/skills/baoyu-danger-x-to-markdown/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "baoyu-danger-x-to-markdown", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/JimLiu/baoyu-skills.git --path skills/baoyu-danger-x-to-markdown--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add JimLiu/baoyu-skills --skill baoyu-danger-x-to-markdown -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install JimLiu/baoyu-skills baoyu-danger-x-to-markdown --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/JimLiu/baoyu-skills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/baoyu-danger-x-to-markdown .gemini/skills/baoyu-danger-x-to-markdown && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "baoyu-danger-x-to-markdown" agent skill from https://github.com/JimLiu/baoyu-skills/tree/main/skills/baoyu-danger-x-to-markdown into .gemini/skills/baoyu-danger-x-to-markdown/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "baoyu-danger-x-to-markdown", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install JimLiu/baoyu-skills baoyu-danger-x-to-markdownInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add JimLiu/baoyu-skills --skill baoyu-danger-x-to-markdown -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/JimLiu/baoyu-skills.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/baoyu-danger-x-to-markdown .github/skills/baoyu-danger-x-to-markdown && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "baoyu-danger-x-to-markdown" agent skill from https://github.com/JimLiu/baoyu-skills/tree/main/skills/baoyu-danger-x-to-markdown into .github/skills/baoyu-danger-x-to-markdown/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "baoyu-danger-x-to-markdown", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add JimLiu/baoyu-skills --skill baoyu-danger-x-to-markdown -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install JimLiu/baoyu-skills baoyu-danger-x-to-markdown --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/JimLiu/baoyu-skills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/baoyu-danger-x-to-markdown .opencode/skills/baoyu-danger-x-to-markdown && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "baoyu-danger-x-to-markdown" agent skill from https://github.com/JimLiu/baoyu-skills/tree/main/skills/baoyu-danger-x-to-markdown into .opencode/skills/baoyu-danger-x-to-markdown/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "baoyu-danger-x-to-markdown", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
baoyu-danger-x-to-markdownSaves tweets, threads and X Articles as Markdown files with YAML front matter, using an unofficial API that asks for your consent first.
Given an x.com or twitter.com link, the agent runs a bundled TypeScript script, through Bun or npx running Bun, that converts a tweet or thread into Markdown with YAML front matter, or extracts the full text of an X Article. The scripts include modules for threads, referenced tweets, a media localizer, cookie handling and a GraphQL layer.
Because the tool relies on a reverse-engineered X API rather than an official one, the skill checks for a stored consent file before any conversion and shows a disclaimer if none exists or its version differs. You must accept; declining stops the run. Preferences are read from an EXTEND.md file looked up in the project folder, then the XDG config folder, then the home folder, and the first one found wins.
3 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 1567581. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Ships 16 files in scripts/ (TypeScript, from the files we listed), which the agent can run.
Shell commands in SKILL.md call:
npxFrom the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
x.comtwitter.compbs.twimg.comFrom URLs in SKILL.md, links to its own repository left out.
Names these keys or tokens, usually read from environment variables:
X_AUTH_TOKENFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
X to Markdown Converter loads about 1.8k tokens when it runs, and up to ~2.5k if it reads all its reference files. Until then it costs about 70 tokens; SKILL.md has 685 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found patterns that need a careful read before installing.
2. **Chrome login** (fallback): Auto-opens Chrome, caches cookies locallyAutomated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.
The full file from JimLiu/baoyu-skills at commit 1567581, republished under its MIT licence (© JimLiu). 685 words, ~1,834 tokens.
.claude/skills/baoyu-danger-x-to-markdown/SKILL.md (or your agent's skills folder). This skill also uses 19 other files; get the full folder from GitHub.Converts X content to markdown:
When this skill prompts the user, follow this tool-selection rule (priority order):
AskUserQuestion, request_user_input, clarify, ask_user, or any equivalent.Concrete AskUserQuestion references below are examples — substitute the local equivalent in other runtimes.
Scripts located in scripts/ subdirectory.
Path Resolution:
{baseDir} = this SKILL.md's directory{baseDir}/scripts/main.ts${BUN_X} runtime: if bun installed → bun; if npx available → npx -y bun; else suggest installing bunBefore any conversion, check and obtain consent.
Step 1: Check consent file
# macOS
cat ~/Library/Application\ Support/baoyu-skills/x-to-markdown/consent.json
# Linux
cat ~/.local/share/baoyu-skills/x-to-markdown/consent.jsonStep 2: If accepted: true and disclaimerVersion: "1.0" → print warning and proceed:
Warning: Using reverse-engineered X API. Accepted on: <acceptedAt>Step 3: If missing or version mismatch → display disclaimer:
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?Use AskUserQuestion with options: "Yes, I accept" | "No, I decline"
Step 4: On accept → create consent file:
{
"version": 1,
"accepted": true,
"acceptedAt": "<ISO timestamp>",
"disclaimerVersion": "1.0"
}Step 5: On decline → output "User declined. Exiting." and stop.
Check EXTEND.md in priority order — the 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 |
| Result | Action |
|---|---|
| Found | Read, parse, apply settings |
| Not found | MUST run first-time setup (see below) — do NOT silently create defaults |
EXTEND.md supports: Download media by default, default output directory.
CRITICAL: When EXTEND.md is not found, you MUST use AskUserQuestion to ask the user for their preferences before creating EXTEND.md. NEVER create EXTEND.md with defaults without asking. This is a BLOCKING operation — do NOT proceed with any conversion until setup is complete.
Use AskUserQuestion with ALL questions in ONE call:
Question 1 — header: "Media", question: "How to handle images and videos in tweets?"
Question 2 — header: "Output", question: "Default output directory?"
Question 3 — header: "Save", question: "Where to save preferences?"
After user answers, create EXTEND.md at the chosen location, confirm "Preferences saved to [path]", then continue.
Full reference: references/config/first-time-setup.md
| Key | Default | Values | Description |
|---|---|---|---|
download_media | ask | ask / 1 / 0 | ask = prompt each time, 1 = always download, 0 = never |
default_output_dir | empty | path or empty | Default output directory (empty = ./x-to-markdown/) |
Value priority:
--download-media, -o)${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 image/video assets to local imgs/ and videos/, and rewrite markdown links to local relative paths |
--login | Refresh cookies only |
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
When --download-media is enabled:
imgs/ next to the markdown filevideos/ next to the markdown fileBased on download_media setting in EXTEND.md:
| Setting | Behavior |
|---|---|
1 (always) | Run script with --download-media flag |
0 (never) | Run script without --download-media flag |
ask (default) | Follow the ask-each-time flow below |
--download-media → markdown savedhttps:// in image/video links)AskUserQuestion:--download-media (overwrites markdown with localized links)X_AUTH_TOKEN, X_CT0Custom configurations via EXTEND.md. See Preferences section for paths and supported options.
© JimLiu, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 19 other files (scripts, references) in skills/baoyu-danger-x-to-markdown of JimLiu/baoyu-skills.
Open the folder on GitHubat commit 1567581
We found 4 copies of this SKILL.md (exact, near-identical or edited) in other folders, from 4 other GitHub owners. This page covers the copy in JimLiu/baoyu-skills, which our catalogue first saw on October 7, 2026.
X to Markdown Converter next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| X to Markdown Converter this skillJimLiu/baoyu-skills | 27k | 4 repos | ~1.8k | Automated safety check: Warn | MIT | |
| Web To Markdownrookie-ricardo/erduo-skills | 935 | — | ~894 | Automated safety check: Pass | MIT | |
| URL to Markdown Fetcherjoeseesun/qiaomu-markdown-proxy | 509 | — | ~1.4k | Automated safety check: Pass | MIT | |
| Content Creation Publisherappleweiping/WEIPING_WIKI | 119 | 1 repos | ~1.7k | Automated safety check: Notes | MIT | |
| Clean Content FetchLeoYeAI/openclaw-master-skills | 2.2k | — | ~574 | Automated safety check: Pass | MIT | |
| Defuddlekepano/obsidian-skills | 49k | 11 repos | ~208 | Automated safety check: Pass | MIT |
rookie-ricardo/erduo-skills
Convert a web URL into cleaned Markdown with deterministic routing.
joeseesun/qiaomu-markdown-proxy
Converts a URL or PDF into clean Markdown, with dedicated routes for WeChat articles, Feishu docs, arXiv papers and login-gated pages, before any summary or rewrite.
appleweiping/WEIPING_WIKI
内容创作与发布全流程技能,整合网页采集、Markdown格式化、智能配图、多平台发布(微信公众号、X/Twitter)功能,实现从内容获取到发布的一站式解决方案
LeoYeAI/openclaw-master-skills
获取干净、可读的网页正文内容,适合现代网页、博客、新闻、公告和微信公众号文章抓取;支持网页正文提取、内容清洗、去噪、Markdown 输出,适用于普通 fetch 效果不佳、页面噪音较多或动态渲染干扰的场景。Clean content fetch for modern web pages, article extraction, WeChat article capture, content…
kepano/obsidian-skills
Uses the Defuddle CLI to pull clean, readable Markdown, JSON or metadata from web pages, stripping navigation, ads and clutter to save tokens.
sdyckjq-lab/llm-wiki-skill
Fetch any URL and convert to markdown using Chrome CDP. An agent skill from sdyckjq-lab/llm-wiki-skill.
JimLiu/baoyu-skills
Reformats plain text or Markdown articles with frontmatter, a title, a summary, headings, bold, lists and code blocks, and saves a separate formatted copy.
JimLiu/baoyu-skills
Creates standalone dark-themed SVG diagrams, including architecture, flowchart, sequence, structural, mind map, timeline and state machine types.
JimLiu/baoyu-skills
Publishes articles and image-text posts to a WeChat Official Account through the API or Chrome CDP, converting markdown to WeChat-ready HTML with link citations.
JimLiu/baoyu-skills
Compresses images to WebP by default, or to PNG or JPEG, picking the best available tool on the machine and optionally processing whole folders.
JimLiu/baoyu-skills
Generates text and images through an unofficial, reverse-engineered Gemini Web API, supporting reference images and multi-turn conversations.
JimLiu/baoyu-skills
Translates articles and files in quick, normal or refined mode, with a custom glossary, saved preferences and a review-and-polish workflow for publication quality.
Works with
Categories
Saves tweets, threads and X Articles as Markdown files with YAML front matter, using an unofficial API that asks for your consent first. com link, the agent runs a bundled TypeScript script, through Bun or npx running Bun, that converts a tweet or thread into Markdown with YAML front matter, or extracts the full text of an X Article. The scripts include modules for threads, referenced tweets, a media localizer, cookie handling and a GraphQL layer.
X to Markdown Converter fits situations like: archiving a tweet or thread as a Markdown note with front matter; pulling the full text of an X Article into a local file; converting an x.com or twitter.com link into Markdown.
Run `npx skills add JimLiu/baoyu-skills --skill baoyu-danger-x-to-markdown -a claude-code`. Or copy the skill folder (skills/baoyu-danger-x-to-markdown in JimLiu/baoyu-skills) into .claude/skills/baoyu-danger-x-to-markdown in your project. Claude Code loads it when a task matches its description.
Run `npx skills add JimLiu/baoyu-skills --skill baoyu-danger-x-to-markdown -a codex`. Or copy the skill folder (skills/baoyu-danger-x-to-markdown in JimLiu/baoyu-skills) into .agents/skills/baoyu-danger-x-to-markdown in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add JimLiu/baoyu-skills --skill baoyu-danger-x-to-markdown -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/baoyu-danger-x-to-markdown, .gemini/skills/baoyu-danger-x-to-markdown, .github/skills/baoyu-danger-x-to-markdown and .opencode/skills/baoyu-danger-x-to-markdown in your project.
Going by SKILL.md and its folder, X to Markdown Converter needs TypeScript for the scripts in its folder, the command-line tools its instructions call (npx) and credentials named X_AUTH_TOKEN. Our summary lists: Bun, or npx to run it; Your acceptance of the unofficial-API disclaimer.
SKILL.md names 3 domains. In commands or code: x.com, twitter.com and pbs.twimg.com; the agent is likely to contact these when it follows the instructions. This is read from the text; nothing was executed.
Our automated static check of SKILL.md flagged 1 warning(s): mentions a credentials file (ssh keys, cloud or package-manager tokens). Read the flagged lines before installing; the check is not a guarantee either way. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
X to Markdown Converter is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 1.8k tokens (SKILL.md is roughly 7.3k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 623 tokens, read only when the agent opens those files.
Skills that share tags, products or a category with X to Markdown Converter: Web To Markdown (rookie-ricardo/erduo-skills, 935 stars), URL to Markdown Fetcher (joeseesun/qiaomu-markdown-proxy, 509 stars), Content Creation Publisher (appleweiping/WEIPING_WIKI, 119 stars) and Clean Content Fetch (LeoYeAI/openclaw-master-skills, 2.2k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
JimLiu (a GitHub user) maintains it in JimLiu/baoyu-skills, which has 26,507 GitHub stars. The repository holds 22 skills in this directory. The repository was last updated on September 10, 2026.
Source: JimLiu/baoyu-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.