Web To Markdown
rookie-ricardo/erduo-skills
Convert a web URL into cleaned Markdown with deterministic routing.
Fetches a web page, X post, YouTube transcript or Hacker News thread through a Chrome-driven CLI and saves it as clean markdown.
$ npx skills add JimLiu/baoyu-skills --skill baoyu-url-to-markdown -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install JimLiu/baoyu-skills baoyu-url-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-url-to-markdown .claude/skills/baoyu-url-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-url-to-markdown" agent skill from https://github.com/JimLiu/baoyu-skills/tree/main/skills/baoyu-url-to-markdown into .claude/skills/baoyu-url-to-markdown/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "baoyu-url-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-url-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-url-to-markdown -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install JimLiu/baoyu-skills baoyu-url-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-url-to-markdown .agents/skills/baoyu-url-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-url-to-markdown" agent skill from https://github.com/JimLiu/baoyu-skills/tree/main/skills/baoyu-url-to-markdown into .agents/skills/baoyu-url-to-markdown/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "baoyu-url-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-url-to-markdown -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install JimLiu/baoyu-skills baoyu-url-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-url-to-markdown .cursor/skills/baoyu-url-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-url-to-markdown" agent skill from https://github.com/JimLiu/baoyu-skills/tree/main/skills/baoyu-url-to-markdown into .cursor/skills/baoyu-url-to-markdown/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "baoyu-url-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-url-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-url-to-markdown -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install JimLiu/baoyu-skills baoyu-url-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-url-to-markdown .gemini/skills/baoyu-url-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-url-to-markdown" agent skill from https://github.com/JimLiu/baoyu-skills/tree/main/skills/baoyu-url-to-markdown into .gemini/skills/baoyu-url-to-markdown/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "baoyu-url-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-url-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-url-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-url-to-markdown .github/skills/baoyu-url-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-url-to-markdown" agent skill from https://github.com/JimLiu/baoyu-skills/tree/main/skills/baoyu-url-to-markdown into .github/skills/baoyu-url-to-markdown/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "baoyu-url-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-url-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-url-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-url-to-markdown .opencode/skills/baoyu-url-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-url-to-markdown" agent skill from https://github.com/JimLiu/baoyu-skills/tree/main/skills/baoyu-url-to-markdown into .opencode/skills/baoyu-url-to-markdown/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "baoyu-url-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-url-to-markdownFetches a web page, X post, YouTube transcript or Hacker News thread through a Chrome-driven CLI and saves it as clean markdown.
The skill runs the vendored `baoyu-fetch` command-line tool, which drives Chrome over the DevTools protocol and applies site-specific adapters. Built-in adapters cover X (Twitter), YouTube transcripts and Hacker News threads, and everything else goes through a generic adapter built on Defuddle. Pages that need a login or CAPTCHA can be handled with interaction wait modes.
The CLI needs Bun; when `scripts/node_modules` is missing, the agent installs dependencies with `bun install`. Preferences live in an `EXTEND.md` file, looked up in the project folder, then the XDG config folder, then the home folder, and they cover whether to download media and the default output directory. If none exists, a blocking first-time setup asks you questions through the runtime's user-input tool before anything is saved. Reference files describe the adapters and a quality gate.
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 9 files in scripts/ (TypeScript, from the files we listed), which the agent can run.
From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
URL to Markdown Fetcher loads about 2.1k tokens when it runs, and up to ~4.2k if it reads all its reference files. Until then it costs about 83 tokens; SKILL.md has 814 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 no risky patterns in SKILL.md.
Automated 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). 814 words, ~2,117 tokens.
.claude/skills/baoyu-url-to-markdown/SKILL.md (or your agent's skills folder). This skill also uses 54 other files; get the full folder from GitHub.Fetches any URL via baoyu-fetch CLI (Chrome CDP + site-specific adapters) and converts it to clean 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.
Important: The CLI source is vendored in {baseDir}/scripts/lib. scripts/package.json installs only third-party runtime dependencies.
Agent Execution Instructions:
{baseDir}${BUN} runtime: if bun installed → bun; else suggest installing Bun{baseDir}/scripts/node_modules does not exist, run ${BUN} install --cwd {baseDir}/scripts${READER} = {baseDir}/scripts/baoyu-fetch${READER} in this document with the resolved valueCheck EXTEND.md in priority order — the first one found wins:
| Priority | Path | Scope |
|---|---|---|
| 1 | .baoyu-skills/baoyu-url-to-markdown/EXTEND.md | Project |
| 2 | ${XDG_CONFIG_HOME:-$HOME/.config}/baoyu-skills/baoyu-url-to-markdown/EXTEND.md | XDG |
| 3 | $HOME/.baoyu-skills/baoyu-url-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.
When EXTEND.md is not found, you MUST use AskUserQuestion to gather preferences before creating EXTEND.md. NEVER create EXTEND.md with silent defaults. Generation is BLOCKED until setup completes. Batch all three questions into a single call:
imgs/ and videos/./url-to-markdown/{domain}/{slug}.md~/.baoyu-skills/ (all projects).baoyu-skills/ (this project only)After answers, write EXTEND.md, confirm "Preferences saved to [path]", then continue.
Full template: references/config/first-time-setup.md.
| Key | Default | Values | Description |
|---|---|---|---|
download_media | ask | ask / 1 / 0 | ask = prompt each time, 1 = always, 0 = never |
default_output_dir | empty | path or empty | Default output directory (empty = ./url-to-markdown/) |
EXTEND.md → CLI mapping:
| EXTEND.md key | CLI argument | Notes |
|---|---|---|
download_media: 1 | --download-media | Requires --output to be set |
default_output_dir: ./posts/ | Agent constructs --output ./posts/{domain}/{slug}.md | Agent generates path, not a direct flag |
Value priority: CLI arguments → EXTEND.md → skill defaults.
# Default: headless capture, markdown to stdout
${READER} <url>
# Save to file
${READER} <url> --output article.md
# Save with media download
${READER} <url> --output article.md --download-media
# Wait for interaction (login/CAPTCHA) — auto-detect and continue
${READER} <url> --wait-for interaction --output article.md
# Wait for interaction — manual control (Enter to continue)
${READER} <url> --wait-for force --output article.md
# JSON output
${READER} <url> --format json --output article.json
# Force specific adapter
${READER} <url> --adapter youtube --output transcript.md| Option | Description |
|---|---|
<url> | URL to fetch |
--output <path> | Output file path (default: stdout) |
--format <type> | Output format: markdown (default) or json |
--json | Shorthand for --format json |
--adapter <name> | Force adapter: x, youtube, hn, or generic (default: auto-detect) |
--headless | Force headless Chrome (no visible window) |
--wait-for <mode> | Interaction wait mode: none (default), interaction, or force |
--wait-for-interaction | Alias for --wait-for interaction |
--wait-for-login | Alias for --wait-for interaction |
--timeout <ms> | Page load timeout (default: 30000) |
--interaction-timeout <ms> | Login/CAPTCHA wait timeout (default: 600000 = 10 min) |
--interaction-poll-interval <ms> | Poll interval for interaction checks (default: 1500) |
--download-media | Download images/videos to local imgs/ and videos/, rewrite markdown links. Requires --output |
--media-dir <dir> | Base directory for downloaded media (default: same as --output directory) |
--cdp-url <url> | Reuse existing Chrome DevTools Protocol endpoint |
--browser-path <path> | Custom Chrome/Chromium binary path |
--chrome-profile-dir <path> | Chrome user data directory (default: BAOYU_CHROME_PROFILE_DIR env or ./baoyu-skills/chrome-profile) |
--debug-dir <dir> | Write debug artifacts (document.json, markdown.md, page.html, network.json) |
CRITICAL: treat default headless capture as provisional. Some sites render differently in headless mode and can silently return low-quality content without failing the CLI.
After every headless run, inspect the saved markdown. See references/quality-gate.md for the full checklist, recovery workflow, and capture-mode table. Read it whenever a run looks suspicious or the user asks about login/CAPTCHA handling.
The agent must construct the output file path — baoyu-fetch does not auto-generate paths.
Algorithm:
default_output_dir or default ./url-to-markdown/example.com){base_dir}/{domain}/{slug}/{slug}.md — each URL gets its own directory so media files stay isolated{slug}-YYYYMMDD-HHMMSS/{slug}-YYYYMMDD-HHMMSS.mdPass the constructed path to --output. Media files (--download-media) are saved into subdirectories next to the markdown file, keeping each URL's assets self-contained.
See references/adapters.md for the adapter catalog (X, YouTube, Hacker News, generic), per-adapter notes, the media download flow (ask / always / never), and the JSON output schema. Read it before answering adapter-specific questions or handling media prompts.
| Variable | Description |
|---|---|
BAOYU_CHROME_PROFILE_DIR | Chrome user data directory (can also use --chrome-profile-dir) |
Troubleshooting: Chrome not found → use --browser-path. Timeout → increase --timeout. Login/CAPTCHA → --wait-for interaction. Debug → --debug-dir to inspect captured HTML and network logs.
Custom configurations via EXTEND.md. See Preferences section above for paths and supported keys.
© 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 54 other files (scripts, references) in skills/baoyu-url-to-markdown of JimLiu/baoyu-skills.
Open the folder on GitHubat commit 1567581
We found 1 copy of this SKILL.md (exact, near-identical or edited) in other folders, from 1 other GitHub owner. This page covers the copy in JimLiu/baoyu-skills, which our catalogue first saw on October 7, 2026.
URL to Markdown Fetcher 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 |
|---|---|---|---|---|---|---|
| URL to Markdown Fetcher this skillJimLiu/baoyu-skills | 27k | 1 repos | ~2.1k | Automated safety check: Pass | MIT | |
| Web To Markdownrookie-ricardo/erduo-skills | 935 | — | ~894 | Automated safety check: Pass | MIT | |
| Baoyu URL To Markdownsdyckjq-lab/llm-wiki-skill | 2.5k | 2 repos | ~3.2k | Automated safety check: Pass | None | |
| Multi-Source to NotebookLM Processorjoeseesun/qiaomu-anything-to-notebooklm | 6.2k | — | ~3.6k | Automated safety check: Pass | MIT | |
| Youtube Transcriptbrowser-act/skills | 6.1k | — | ~2.1k | Automated safety check: Pass | MIT | |
| YouTube Talk Notetakerdair-ai/dair-academy-plugins | 614 | — | ~2.3k | Automated safety check: Pass | MIT |
rookie-ricardo/erduo-skills
Convert a web URL into cleaned Markdown with deterministic routing.
sdyckjq-lab/llm-wiki-skill
Fetch any URL and convert to markdown using Chrome CDP. An agent skill from sdyckjq-lab/llm-wiki-skill.
joeseesun/qiaomu-anything-to-notebooklm
Collects content from WeChat articles, web pages, YouTube, podcasts, documents and more, uploads it to NotebookLM and generates podcasts, slides or mind maps.
browser-act/skills
YouTube transcript extraction and content reformatting: given a YouTube video URL, opens the video's transcript panel, extracts all timestamped segments, and transforms the raw transcript into…
dair-ai/dair-academy-plugins
Converts a YouTube talk into a markdown study note with slide images, a timestamped transcript and editable notes, browsable through a small local server.
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.
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
Saves tweets, threads and X Articles as Markdown files with YAML front matter, using an unofficial API that asks for your consent first.
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.
Works with
Fetches a web page, X post, YouTube transcript or Hacker News thread through a Chrome-driven CLI and saves it as clean markdown. The skill runs the vendored `baoyu-fetch` command-line tool, which drives Chrome over the DevTools protocol and applies site-specific adapters. Built-in adapters cover X (Twitter), YouTube transcripts and Hacker News threads, and everything else goes through a generic adapter built on Defuddle.
URL to Markdown Fetcher fits situations like: saving a web article as a markdown file; capturing a YouTube transcript or a Hacker News discussion as notes; archiving an X post or article thread in markdown.
Run `npx skills add JimLiu/baoyu-skills --skill baoyu-url-to-markdown -a claude-code`. Or copy the skill folder (skills/baoyu-url-to-markdown in JimLiu/baoyu-skills) into .claude/skills/baoyu-url-to-markdown in your project. Claude Code loads it when a task matches its description.
Run `npx skills add JimLiu/baoyu-skills --skill baoyu-url-to-markdown -a codex`. Or copy the skill folder (skills/baoyu-url-to-markdown in JimLiu/baoyu-skills) into .agents/skills/baoyu-url-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-url-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-url-to-markdown, .gemini/skills/baoyu-url-to-markdown, .github/skills/baoyu-url-to-markdown and .opencode/skills/baoyu-url-to-markdown in your project.
Going by SKILL.md and its folder, URL to Markdown Fetcher needs TypeScript for the scripts in its folder. Our summary lists: Bun; Chrome; Network access to the pages you want to fetch.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
URL to Markdown Fetcher is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.1k tokens (SKILL.md is roughly 8.5k 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 2k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with URL to Markdown Fetcher: Web To Markdown (rookie-ricardo/erduo-skills, 935 stars), Baoyu URL To Markdown (sdyckjq-lab/llm-wiki-skill, 2.5k stars), Multi-Source to NotebookLM Processor (joeseesun/qiaomu-anything-to-notebooklm, 6.2k stars) and Youtube Transcript (browser-act/skills, 6.1k 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.