网页内容提取服务

Digest MCP Server 是一个通过 puppeteer-core 使用 browserless.io 提取动态网页完整渲染内容的服务,适用于单页应用和无限滚动网站。

  • by bakhtiyork
  • JavaScript
  • 本地部署
  • 更新于
在 GitHub 查看 bakhtiyork/digest-mcp

使用说明

摘要MCP服务器

用于web内容消化的MCP服务器 无浏览器.io 通过木偶核心。从动态网页(包括SPA和无限滚动网站)中提取完全渲染的DOM内容。

特性

  • 连接到browserless.io云浏览器
  • 加载具有可配置等待时间的网页
  • 多次向下滚动页面,但有延迟
  • 提取完整的页面内容(HTML)

安装

npm install
npm run build

配置

使用以下方法之一设置browserless.io API密钥:

选项1:使用.env文件(推荐)

创建一个 .env 项目根目录中的文件:

cp .env.example .env

然后编辑 .env 并添加您的API密钥:

BROWSERLESS_API_KEY=your_api_key_here

选项2:使用环境变量

export BROWSERLESS_API_KEY=your_api_key_here

用法

运行服务器

服务器使用stdio传输进行MCP通信:

node build/index.js

工具:web_content

通过可选的滚动和HTML清理来获取网页内容。

参数:

  • url (string,必填):要获取的URL
  • initialWaitTime (number,可选):加载页面后等待的时间(毫秒)。默认值:3000
  • scrolls (数字,可选):向下滚动页面的次数。默认值:5
  • scrollWaitTime (数字,可选):每次滚动之间的等待时间(毫秒)。默认值:1000
  • cleanup (布尔值,可选):是否清理HTML(删除脚本、样式、SVG、表单等),只保留有意义的文本内容。默认值:false

退货:

  • size (number):内容的大小(以字节为单位)
  • content (string):获取的HTML内容

例子:

{
  "url": "https://example.com",
  "initialWaitTime": 2000,
  "scrolls": 3,
  "scrollWaitTime": 1000,
  "cleanup": true
}

运作原理

  1. 通过WebSocket使用API密钥连接到browserless.io
  2. 在远程浏览器中创建新页面
  3. 导航到指定的URL(等待加载DOM内容)
  4. 等待1秒以稳定页面
  5. 等待初始等待时间(默认值:3秒)
  6. 滚动到页面底部指定的次数
  7. 每次滚动后,智能地等待新内容加载:
    • 监控页面高度变化
    • 检测动态加载的内容
    • 等待滚动WaitTime以获取新内容(默认值:3秒)
  8. 等待网络空闲(AJAX请求完成)
  9. 等待额外1秒进行JavaScript渲染
  10. 返回完全重命名的DOM (非原始HTML源代码)
    • 包括所有JavaScript生成的内容
    • 包括所有AJAX加载的内容
    • 包括所有动态插入的元素
    • 用途 document.documentElement.outerHTML 完整渲染状态

动态内容和无限滚动

该工具专为具有动态内容的现代web应用程序而设计:

AJAX/JavaScript处理:

  • ✅ 等待网络空闲:确保所有AJAX请求完成
  • ✅ 返回渲染的DOM:获取JavaScript执行后的实际内容
  • ✅ 非原始HTML源:使用浏览器的渲染输出
  • ✅ 包含动态元素:捕获React、Vue、Angular等插入的内容。

无限滚动支持:

  • ✅ 滚动到底:触发延迟加载机制
  • ✅ 检测新内容:监视页面高度变化
  • ✅ 智能等待:加载内容时提前退出
  • ✅ 多次回退:如果JavaScript失败,请滚动键盘

非常适合:

  • 单页应用程序(React、Vue、Angular)
  • 无限滚动推送(推特、脸书、领英)
  • 延迟加载的图像和内容
  • AJAX驱动的内容(搜索结果、过滤器)
  • 动态仪表板和管理面板

最佳效果提示:

  • 默认 scrolls: 5 适用于大多数延迟加载内容的页面
  • 增加 scrolls 对于非常长的无限滚动页面,为10-15
  • 集 scrolls: 0 禁用静态页面的滚动
  • 使用 scrollWaitTime 慢加载内容为1000-3000ms(默认值:1000ms)
  • 增加 initialWaitTime 如果页面初始化繁重,则为5000+
  • 对于SPA,留出时间进行初始JavaScript引导
  • 使用 cleanup: true 只提取有意义的文本内容,不提取脚本、样式和视觉元素
  • 使用 cleanup: false (默认)获取完整渲染的HTML

MCP客户端配置

添加到您的MCP客户端配置中(例如,Claude Desktop):

{
  "mcpServers": {
    "digest": {
      "command": "node",
      "args": ["/path/to/digest-mcp/build/index.js"],
      "env": {
        "BROWSERLESS_API_KEY": "your_api_key_here"
      }
    }
  }
}

许可证

国际协调委员会