.fyi
SkillsMCPPluginsSubagents

Browse by category

DevOps & CI/CD SkillsProductivity & Workflow SkillsOther SkillsProduct & Project Management SkillsDocumentation & Knowledge SkillsCode Review & Refactor SkillsBackend & APIs SkillsAgent Meta & Communication SkillsResearch SkillsSecurity SkillsUX UI & Design SkillsTesting & QA SkillsSee all →

Every Claude Code skill, MCP server, plugin and subagent in one directory. Searchable, comparable, and one command from installed. Live stats from GitHub, npm and PyPI.

We're on Product HuntYour agent's app storeCheck it out →
Agent SkillsMCP ServersPluginsSubagentsCoding Agents
CollectionsOfficial publishersGlossaryFAQBlogSearchSavedFeedback
PrivacyTermsllms.txtSitemap

made with ♥ · © 2026 aaaa.fyi

Independent project · real data from public registries

…/baoyu-skills/baoyu-url-to-markdown
home/skills/jimliu/baoyu-skills/baoyu-url-to-markdown
jimliu avatar

baoyu-url-to-markdown

byjimliu· 68 skills

Installs

28k

Stars

24k

Forks

2.7k

Category

Productivity & Workflow

View on GitHub

TL;DR

Fetch any URL and convert to markdown using baoyu-fetch CLI (Chrome CDP with site-specific adapters). Built-in adapters for X/Twitter, YouTube transcripts, Hacker News threads, and generic pages via Defuddle. Handles login/CAPTCHA via interaction wait modes. Use when user wants to save a webpage as markdown.

How to install baoyu-url-to-markdown?

jimliu/baoyu-skills/baoyu-url-to-markdown
$npx -y skills add jimliu/baoyu-skills --skill baoyu-url-to-markdown

Installs into the current project.

›Prefer a prompt? Paste this to your agent

Use this skill

Run `npx skills use "https://github.com/jimliu/baoyu-skills" --skill "jimliu/baoyu-skills/baoyu-url-to-markdown"` and follow the generated skill instructions now. Read its complete output, redirecting it to a temporary file first if necessary. Resolve relative paths from the supporting-files directory it provides.

Use the whole pack

Use the skills in "https://github.com/jimliu/baoyu-skills" that are relevant to the current task. Run `npx skills add "https://github.com/jimliu/baoyu-skills"` and select the relevant skills, then follow their instructions.

Files · 1

View on GitHub
SKILL.md
1# URL to Markdown
2 
3Fetches any URL via `baoyu-fetch` CLI (Chrome CDP + site-specific adapters) and converts it to clean markdown.
4 
5## User Input Tools
6 
7When this skill prompts the user, follow this tool-selection rule (priority order):
8 
91. **Prefer built-in user-input tools** exposed by the current agent runtime — e.g., `AskUserQuestion`, `request_user_input`, `clarify`, `ask_user`, or any equivalent.
102. **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.
113. **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.
12 
13Concrete `AskUserQuestion` references below are examples — substitute the local equivalent in other runtimes.
14 
15## CLI Setup
16 
17**Important**: The CLI source is vendored in `{baseDir}/scripts/lib`. `scripts/package.json` installs only third-party runtime dependencies.
18 
19**Agent Execution Instructions**:
201. Determine this SKILL.md file's directory path as `{baseDir}`
212. Resolve `${BUN}` runtime: if `bun` installed → `bun`; else suggest installing Bun
223. If `{baseDir}/scripts/node_modules` does not exist, run `${BUN} install --cwd {baseDir}/scripts`
234. `${READER}` = `{baseDir}/scripts/baoyu-fetch`
245. Replace all `${READER}` in this document with the resolved value
25 
26## Preferences (EXTEND.md)
27 
28Check EXTEND.md in priority order — the first one found wins:
29 
30| Priority | Path | Scope |
31|----------|------|-------|
32| 1 | `.baoyu-skills/baoyu-url-to-markdown/EXTEND.md` | Project |
33| 2 | `${XDG_CONFIG_HOME:-$HOME/.config}/baoyu-skills/baoyu-url-to-markdown/EXTEND.md` | XDG |
34| 3 | `$HOME/.baoyu-skills/baoyu-url-to-markdown/EXTEND.md` | User home |
35 
36| Result | Action |
37|--------|--------|
38| Found | Read, parse, apply settings |
39| Not found | **MUST** run first-time setup (see below) — do NOT silently create defaults |
40 
41**EXTEND.md supports**: download media by default, default output directory.
42 
43### First-Time Setup ⛔ BLOCKING
44 
45When 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:
46 
47- **Q1 — Media** (header "Media"): "How to handle images and videos in pages?"
48 - "Ask each time (Recommended)" — Prompt after each save
49 - "Always download" — Download to local `imgs/` and `videos/`
50 - "Never download" — Keep remote URLs
51- **Q2 — Output** (header "Output"): "Default output directory?"
52 - "url-to-markdown (Recommended)" — Save to `./url-to-markdown/{domain}/{slug}.md`
53 - User may pick "Other" and type a custom path
54- **Q3 — Save** (header "Save"): "Where to save preferences?"
55 - "User (Recommended)" — `~/.baoyu-skills/` (all projects)
56 - "Project" — `.baoyu-skills/` (this project only)
57 
58After answers, write EXTEND.md, confirm "Preferences saved to [path]", then continue.
59 
60Full template: [references/config/first-time-setup.md](references/config/first-time-setup.md).
61 
62### Supported Keys
63 
64| Key | Default | Values | Description |
65|-----|---------|--------|-------------|
66| `download_media` | `ask` | `ask` / `1` / `0` | `ask` = prompt each time, `1` = always, `0` = never |
67| `default_output_dir` | empty | path or empty | Default output directory (empty = `./url-to-markdown/`) |
68 
69**EXTEND.md → CLI mapping**:
70 
71| EXTEND.md key | CLI argument | Notes |
72|---------------|-------------|-------|
73| `download_media: 1` | `--download-media` | Requires `--output` to be set |
74| `default_output_dir: ./posts/` | Agent constructs `--output ./posts/{domain}/{slug}.md` | Agent generates path, not a direct flag |
75 
76**Value priority**: CLI arguments → EXTEND.md → skill defaults.
77 
78## Usage
79 
80```bash
81# Default: headless capture, markdown to stdout
82${READER} <url>
83 
84# Save to file
85${READER} <url> --output article.md
86 
87# Save with media download
88${READER} <url> --output article.md --download-media
89 
90# Wait for interaction (login/CAPTCHA) — auto-detect and continue
91${READER} <url> --wait-for interaction --output article.md
92 
93# Wait for interaction — manual control (Enter to continue)
94${READER} <url> --wait-for force --output article.md
95 
96# JSON output
97${READER} <url> --format json --output article.json
98 
99# Force specific adapter
100${READER} <url> --adapter youtube --output transcript.md
101```
102 
103## Options
104 
105| Option | Description |
106|--------|-------------|
107| `<url>` | URL to fetch |
108| `--output <path>` | Output file path (default: stdout) |
109| `--format <type>` | Output format: `markdown` (default) or `json` |
110| `--json` | Shorthand for `--format json` |
111| `--adapter <name>` | Force adapter: `x`, `youtube`, `hn`, or `generic` (default: auto-detect) |
112| `--headless` | Force headless Chrome (no visible window) |
113| `--wait-for <mode>` | Interaction wait mode: `none` (default), `interaction`, or `force` |
114| `--wait-for-interaction` | Alias for `--wait-for interaction` |
115| `--wait-for-login` | Alias for `--wait-for interaction` |
116| `--timeout <ms>` | Page load timeout (default: 30000) |
117| `--interaction-timeout <ms>` | Login/CAPTCHA wait timeout (default: 600000 = 10 min) |
118| `--interaction-poll-interval <ms>` | Poll interval for interaction checks (default: 1500) |
119| `--download-media` | Download images/videos to local `imgs/` and `videos/`, rewrite markdown links. Requires `--output` |
120| `--media-dir <dir>` | Base directory for downloaded media (default: same as `--output` directory) |
121| `--cdp-url <url>` | Reuse existing Chrome DevTools Protocol endpoint |
122| `--browser-path <path>` | Custom Chrome/Chromium binary path |
123| `--chrome-profile-dir <path>` | Chrome user data directory (default: `BAOYU_CHROME_PROFILE_DIR` env or `./baoyu-skills/chrome-profile`) |
124| `--debug-dir <dir>` | Write debug artifacts (document.json, markdown.md, page.html, network.json) |
125 
126## Agent Quality Gate
127 
128**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.
129 
130After every headless run, inspect the saved markdown. See [references/quality-gate.md](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.
131 
132## Output Path Generation
133 
134The agent must construct the output file path — `baoyu-fetch` does not auto-generate paths.
135 
136**Algorithm**:
1371. Determine base directory from EXTEND.md `default_output_dir` or default `./url-to-markdown/`
1382. Extract domain from URL (e.g., `example.com`)
1393. Generate slug from URL path or page title (kebab-case, 2-6 words)
1404. Construct: `{base_dir}/{domain}/{slug}/{slug}.md` — each URL gets its own directory so media files stay isolated
1415. Conflict resolution: append timestamp `{slug}-YYYYMMDD-HHMMSS/{slug}-YYYYMMDD-HHMMSS.md`
142 
143Pass 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.
144 
145## Adapters & Media
146 
147See [references/adapters.md](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.
148 
149## Environment Variables
150 
151| Variable | Description |
152|----------|-------------|
153| `BAOYU_CHROME_PROFILE_DIR` | Chrome user data directory (can also use `--chrome-profile-dir`) |
154 
155**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.
156 
157## Extension Support
158 
159Custom configurations via EXTEND.md. See **Preferences** section above for paths and supported keys.

Security

Review

  • Gen Agent Trust Hubpass
  • Socketpass
  • Snykwarn
  • Runlayerwarn
  • ZeroLeakspass

Preview

jimliu/baoyu-skillsjimliu/baoyu-skills

$ npx -y skills add jimliu/baoyu-skills --skill baoyu-url-to-markdown

▸ installing to .claude/skills…

✓ baoyu-url-to-markdown ready

Repojimliu/baoyu-skills
TypeSkills
CategoryProductivity & Workflow
ForDeveloperResearcher
UpdatedJul 2026
License—
First seenJul 26, 2026

Tags

Skill

Related

6 picks
Type
  1. juliusbrussee avatarcavemanUltra-compressed communication mode. Cuts output tokens 65% (measured) by speaking like caveman while keeping full technical accuracy.SkillsJul 2026391k93k
  2. larksuite avatarlark-im飞书即时通讯:收发消息和管理群聊。发送和回复消息、搜索聊天记录、管理群聊成员、上传下载图片和文件(支持大文件分片下载)、管理表情回复、发送应用内/短信/电话加急、发送和处理交互卡片(Interactive…SkillsJul 2026390k16k
  3. larksuite avatarlark-calendar飞书日历:管理日历日程和会议室。查看/搜索日程、创建/更新日程、管理参会人、查询忙闲和推荐时段、预定会议室。当用户需要查看日程安排、创建/修改会议、查询/预定会议室时使用。不负责:查询过去的视频会议记录(走 lark-vc)、待办任务(走 lark-task)。SkillsJul 2026388k16k
  4. larksuite avatarlark-contact飞书 / Lark 通讯录:按姓名 / 邮箱解析成 open_id,或按 open_id 反查姓名 / 部门 / 邮箱 / 联系方式 / 个人状态 / 签名。当用户提到某人姓名要下一步发消息 / 排日程,或拿到 open_id 想查具体信息时使用。不负责部门树遍历、按部门列员工、组织架构图,这类需求走原生…SkillsJul 2026387k16k
  5. larksuite avatarlark-workflow-meeting-summary会议纪要整理工作流:汇总指定时间范围内的会议纪要并生成结构化报告。当用户需要整理会议纪要、生成会议周报、回顾一段时间内的会议内容时使用。SkillsJul 2026386k16k
  6. larksuite avatarlark-workflow-standup-report日程待办摘要:编排 calendar +agenda 和 task +get-my-tasks,生成指定日期的日程与未完成任务摘要。适用于了解今天/明天/本周的安排。SkillsJul 2026386k16k