mcpbeat

Baoyu URL To Markdown

anbeime/baoyu-url-to-markdown

Fetch any URL and convert to markdown using Chrome CDP. Supports two modes - auto-capture on page load, or wait for user signal (for pages requiring login). Use when user wants to save a webpage as markdown.

This is a copy. The original lives at comeonoliver/baoyu-url-to-markdown.

12k tokens
context cost
the whole folder, loaded on every use
6
files
ships runnable scripts
0
copies elsewhere
how many repositories repackaged it
4658
stars on the repo
on the repository, not the skill itself

Install

one command, takes just this skill from the repository
npx skills add https://github.com/anbeime/skill --skill baoyu-url-to-markdown

What comes with it

43 526 bytes besides the instruction
scripts/cdp.ts
scripts/constants.ts
scripts/html-to-markdown.ts
scripts/main.ts
scripts/paths.ts

What it tells the agent to use

found in the instruction text
Bash runs shell commands — read the instruction before connecting

The instruction itself

11 sections, as written by the author

URL to Markdown

Fetches any URL via Chrome CDP and converts HTML to clean markdown.

Script Directory

Important: All scripts are located in the scripts/ subdirectory of this skill.

Agent Execution Instructions:

  • Determine this SKILL.md file's directory path as SKILL_DIR
  • Script path = ${SKILL_DIR}/scripts/<script-name>.ts
  • Replace all ${SKILL_DIR} in this document with the actual path

Script Reference:

| Script | Purpose |

|--------|---------|

| scripts/main.ts | CLI entry point for URL fetching |

Preferences (EXTEND.md)

Use Bash to check EXTEND.md existence (priority order):

# Check project-level first
test -f .baoyu-skills/baoyu-url-to-markdown/EXTEND.md && echo "project"

# Then user-level (cross-platform: $HOME works on macOS/Linux/WSL)
test -f "$HOME/.baoyu-skills/baoyu-url-to-markdown/EXTEND.md" && echo "user"

┌────────────────────────────────────────────────────────┬───────────────────┐

│ Path │ Location │

├────────────────────────────────────────────────────────┼───────────────────┤

│ .baoyu-skills/baoyu-url-to-markdown/EXTEND.md │ Project directory │

├────────────────────────────────────────────────────────┼───────────────────┤

│ $HOME/.baoyu-skills/baoyu-url-to-markdown/EXTEND.md │ User home │

└────────────────────────────────────────────────────────┴───────────────────┘

┌───────────┬───────────────────────────────────────────────────────────────────────────┐

│ Result │ Action │

├───────────┼───────────────────────────────────────────────────────────────────────────┤

│ Found │ Read, parse, apply settings │

├───────────┼───────────────────────────────────────────────────────────────────────────┤

│ Not found │ Use defaults │

└───────────┴───────────────────────────────────────────────────────────────────────────┘

EXTEND.md Supports: Default output directory | Default capture mode | Timeout settings

Features

  • Chrome CDP for full JavaScript rendering
  • Two capture modes: auto or wait-for-user
  • Clean markdown output with metadata
  • Handles login-required pages via wait mode

Usage

# Auto mode (default) - capture when page loads
npx -y bun ${SKILL_DIR}/scripts/main.ts <url>

# Wait mode - wait for user signal before capture
npx -y bun ${SKILL_DIR}/scripts/main.ts <url> --wait

# Save to specific file
npx -y bun ${SKILL_DIR}/scripts/main.ts <url> -o output.md

Options

| Option | Description |

|--------|-------------|

| <url> | URL to fetch |

| -o <path> | Output file path (default: auto-generated) |

| --wait | Wait for user signal before capturing |

| --timeout <ms> | Page load timeout (default: 30000) |

Capture Modes

| Mode | Behavior | Use When |

|------|----------|----------|

| Auto (default) | Capture on network idle | Public pages, static content |

| Wait (--wait) | User signals when ready | Login-required, lazy loading, paywalls |

Wait mode workflow:

  • Run with --wait → script outputs "Press Enter when ready"
  • Ask user to confirm page is ready
  • Send newline to stdin to trigger capture

Output Format

YAML front matter with url, title, description, author, published, captured_at fields, followed by converted markdown content.

Output Directory

url-to-markdown/<domain>/<slug>.md
  • <slug>: From page title or URL path (kebab-case, 2-6 words)
  • Conflict resolution: Append timestamp <slug>-YYYYMMDD-HHMMSS.md

Environment Variables

| Variable | Description |

|----------|-------------|

| URL_CHROME_PATH | Custom Chrome executable path |

| URL_DATA_DIR | Custom data directory |

| URL_CHROME_PROFILE_DIR | Custom Chrome profile directory |

Troubleshooting: Chrome not found → set URL_CHROME_PATH. Timeout → increase --timeout. Complex pages → try --wait mode.

Extension Support

Custom configurations via EXTEND.md. See Preferences section for paths and supported options.

How to use it

Copy the folder

Take anbeime/baoyu-url-to-markdown from the repository into ~/.claude/skills for personal use, or into .claude/skills inside a project.

Check the name does not clash

The agent identifies a skill by the name field in its header. Two skills with the same name cannot sit side by side — one of them will be ignored.

Install what it needs

The instructions reference npx. Without those the skill loads but fails at the first command.