关于 url-to-markdown
URL to Markdown 通过 Chrome CDP 获取网页,并将渲染后的 HTML 转为带页面元数据的 Markdown。它适用于公开页面及需交互的页面,提供自动捕获和等待用户操作两种模式。
主要功能
- 01通过 Chrome CDP 捕获 JavaScript 渲染页面
- 02自动捕获与等待用户操作模式
- 03输出含页面元数据的 Markdown
- 04可配置输出路径与超时
- 05按域名组织捕获文件
适用场景
- 01将公开网页保存为 Markdown
- 02登录或滚动操作后捕获页面
- 03提取动态渲染网页的内容
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ zlh-428/ naruto-skills --skill url-to-markdown安装后在 Claude Code 中输入/url-to-markdown确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
scripts/cdp.tsconstants.tshtml-to-markdown.tsmain.tspaths.ts详细介绍
URL 转 Markdown
通过 Chrome CDP 获取任意 URL,并将 HTML 转换为干净的 Markdown。
脚本目录
重要:所有脚本都位于此技能的 scripts/ 子目录中。
Agent 执行说明:
- 将此 SKILL.md 文件所在目录路径确定为
SKILL_DIR - 脚本路径 =
${SKILL_DIR}/scripts/<script-name>.ts - 将本文档中的所有
${SKILL_DIR}替换为实际路径
脚本参考:
| 脚本 | 用途 |
|---|---|
scripts/main.ts | 获取 URL 的命令行入口 |
功能
- 使用 Chrome CDP 完整渲染 JavaScript
- 两种抓取模式:自动或等待用户
- 输出包含元数据的干净 Markdown
- 通过等待模式处理需要登录的页面
用法
# 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
选项
| 选项 | 说明 |
|---|---|
<url> | 要获取的 URL |
-o <path> | 输出文件路径(默认:自动生成) |
--wait | 抓取前等待用户发出信号 |
--timeout <ms> | 页面加载超时时间(默认:30000) |
抓取模式
自动模式(默认)
页面加载 → 等待网络空闲 → 立即抓取。
适用于:
- 公共页面
- 静态内容
- 无需登录
等待模式(--wait)
打开页面 → 用户可进行交互(登录、滚动等)→ 用户发出就绪信号 → 抓取。
适用于:
- 需要登录的页面
- 需要交互的动态内容
- 含有延迟加载内容的页面
等待模式的 Agent 工作流:
- 使用
--wait标志运行脚本 - 脚本输出:
Page opened. Press Enter when ready to capture... - 使用
AskUserQuestion询问用户页面是否已就绪 - 用户确认后,向 stdin 发送换行符以触发抓取
输出格式
---
url: https://example.com/page
title: "Page Title"
description: "Meta description if available"
author: "Author if available"
published: "2024-01-01"
captured_at: "2024-01-15T10:30:00Z"
---
# Page Title
Converted markdown content...
模式选择指南
用户请求抓取 URL 时,帮助选择合适的模式:
建议使用自动模式的情况:
- URL 是公开的(没有明显的登录墙)
- 内容看起来是静态的
- 用户没有提到需要登录
建议使用等待模式的情况:
- 用户提到需要登录
- 已知网站需要身份验证
- 用户想在抓取前滚动或交互
- 内容位于付费墙后
不确定时询问用户:
The page may require login or interaction before capturing.
Which mode should I use?
1. Auto - Capture immediately when loaded
2. Wait - Wait for you to interact first
输出目录
每次抓取都会创建一个按域名整理的文件:
url-to-markdown/
└── <domain>/
└── <slug>.md
路径组成部分:
<domain>:网站域名(例如,example.com、github.com)<slug>:根据页面标题或 URL 路径生成(kebab-case)
Slug 生成:
- 从页面标题(优先)或 URL 路径提取
- 转换为 kebab-case,包含 2-6 个单词
- 示例:"Getting Started with React" →
getting-started-with-react
冲突处理:
如果 url-to-markdown/<domain>/<slug>.md 已存在:
- 附加时间戳:
<slug>-YYYYMMDD-HHMMSS.md - 示例:
getting-started.md已存在 →getting-started-20260118-143052.md
错误处理
| 错误 | 解决方法 |
|---|---|
| 未找到 Chrome | 安装 Chrome 或设置 URL_CHROME_PATH 环境变量 |
| 页面超时 | 增大 --timeout 值 |
| 抓取失败 | 尝试对复杂页面使用等待模式 |
| 内容为空 | 页面可能需要时间进行 JS 渲染 |
环境变量
| 变量 | 说明 |
|---|---|
URL_CHROME_PATH | 自定义 Chrome 可执行文件路径 |
URL_DATA_DIR | 自定义数据目录 |
URL_CHROME_PROFILE_DIR | 自定义 Chrome 配置目录 |
扩展支持
通过 EXTEND.md 使用自定义配置。
检查路径(按优先级排序):
.content-gen-skills/url-to-markdown/EXTEND.md(项目)~/.content-gen-skills/url-to-markdown/EXTEND.md(用户)
如果找到,请在工作流开始前加载。扩展内容会覆盖默认设置。
评论
支持 Markdown