mcpField
U
url-to-markdown

url-to-markdown

github.com/zlh-428文档处理736 次安装39 周前更新
代码仓库

关于 url-to-markdown

URL to Markdown 通过 Chrome CDP 获取网页,并将渲染后的 HTML 转为带页面元数据的 Markdown。它适用于公开页面及需交互的页面,提供自动捕获和等待用户操作两种模式。

主要功能

  1. 01通过 Chrome CDP 捕获 JavaScript 渲染页面
  2. 02自动捕获与等待用户操作模式
  3. 03输出含页面元数据的 Markdown
  4. 04可配置输出路径与超时
  5. 05按域名组织捕获文件

适用场景

  1. 01将公开网页保存为 Markdown
  2. 02登录或滚动操作后捕获页面
  3. 03提取动态渲染网页的内容

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/zlh-428/naruto-skills --skill url-to-markdown

安装后在 Claude Code 中输入/url-to-markdown确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

scripts/
cdp.ts
constants.ts
html-to-markdown.ts
main.ts
paths.ts

详细介绍

URL 转 Markdown

通过 Chrome CDP 获取任意 URL,并将 HTML 转换为干净的 Markdown。

脚本目录

重要:所有脚本都位于此技能的 scripts/ 子目录中。

Agent 执行说明:

  1. 将此 SKILL.md 文件所在目录路径确定为 SKILL_DIR
  2. 脚本路径 = ${SKILL_DIR}/scripts/<script-name>.ts
  3. 将本文档中的所有 ${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 工作流:

  1. 使用 --wait 标志运行脚本
  2. 脚本输出:Page opened. Press Enter when ready to capture...
  3. 使用 AskUserQuestion 询问用户页面是否已就绪
  4. 用户确认后,向 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 生成:

  1. 从页面标题(优先)或 URL 路径提取
  2. 转换为 kebab-case,包含 2-6 个单词
  3. 示例:"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 使用自定义配置。

检查路径(按优先级排序):

  1. .content-gen-skills/url-to-markdown/EXTEND.md(项目)
  2. ~/.content-gen-skills/url-to-markdown/EXTEND.md(用户)

如果找到,请在工作流开始前加载。扩展内容会覆盖默认设置。

评论

支持 Markdown