BiSheng (毕昇) —— 一个 MCP 工具,让你的大模型能“看懂”任意网页
一、 当前 AI 编程痛点:当 AI “瞎”了怎么办
随着 Cursor、Claude Code、Windsurf 等 AI 编程工具的普及,我们越来越依赖将 API 文档直接丢给 AI,让它基于文档写代码。
但现实往往很骨感。当你满怀期待地把一个 URL 发给 AI 时,你可能会遇到以下问题:
- SPA 页面“白屏”:现在很多文档站(如 React、Vue 官网)是单页应用(SPA)。普通的 AI 工具大多使用简单的
fetch请求,无法执行 JavaScript,结果 AI 读到的是<div id="app"></div>,根本拿不到内容。 - Token 爆炸与噪声干扰:即便抓取到了 HTML,里面充斥着
<nav>、<footer>、广告脚本和 Base64 图片。把这几万个 Token 的“垃圾”喂给 AI,不仅浪费上下文窗口(耗钱),还会严重干扰 AI 的注意力,导致它产生幻觉。 - 内网/本地文档:你的 API 文档可能部署在
http://localhost:8080/docs或者公司的内网上。大多数云端 AI 服务(如 OpenAI 或 Claude 的服务器)根本无法访问你的本地服务。 - 反爬虫与 WAF 拦截:有些带防爬虫防御的网站,可能直接拒绝掉 AI 服务器 IP 过来的请求。
- 截图无法 Copy:有些工具试图通过“看截图”来解决,但截图无法让 AI 准确复制长代码块,且 OCR 识别率在复杂代码场景下并不完美。
结果就是: 你明明有了最强的 AI 模型,却还得手动把文档复制粘贴到对话框里,效率瞬间回到了解放前。
二、 BiSheng(毕昇):AI 时代的“活字印刷术”
为了解决上述问题,我开发了 BiSheng。
之所以命名为“毕昇”,是因为它的核心理念与活字印刷术异曲同工:将互联网上杂乱无章、甚至由于动态渲染而无法直接读取的网页内容(原始素材),重新“排版”为大模型最容易理解、最标准化的 Markdown 格式(活字)。
BiSheng 是一个标准的 MCP (Model Context Protocol) Server,它可以无缝集成到 Claude Desktop、Cursor(通过 MCP 桥接)等支持该协议的工具中。
它不仅仅是一个简单的爬虫,它具备以下核心能力:
- 🖥️ 真浏览器渲染:基于 Playwright (Chromium),完美支持 React / Vue 等 SPA 页面,自动处理懒加载。
- 🌐 本地与内网可见:进程运行在本机或 Docker 容器内,可以直接访问
localhost、局域网以及公司内网。 - 🧹 智能清洗与重组:集成 Mozilla Readability + Turndown 引擎,自动剥离导航栏、侧边栏、弹窗广告,只提取核心正文,并转为结构化 Markdown。
- 📝 完整 Markdown 输出:保留代码块语言标记、表格结构,并自动修复相对链接。
- 🛡️ 类人浏览行为:通过模拟真实浏览器指纹,有效降低被基础反爬与 WAF 拦截的概率。
最终结果:BiSheng 让你的 AI 助手拥有了一双运行在本地的、能看懂动态网页的“眼睛”。
2.1 原始 HTML vs BiSheng Markdown 对比
实际效果对比图:
| 原始网页 | BiSheng 输出 |
|---|---|
2.2 进阶必杀技:喂饱 Cursor 的索引,让 Context "零"负担
BiSheng 最强大的用法,不仅仅是"读给 AI 听",而是**"存给 AI 查"**。
在 BiSheng 的 MCP 工具中,你可以指定 output_path 参数,将抓取到的 Markdown 直接保存到你的项目目录(例如 docs/external_api.md)。结合 Cursor 或 Windsurf 强大的 Codebase Indexing(代码库索引) 能力,将产生质的飞跃:
- 从"被动灌输"变为"主动检索": 通常我们需要把几万字的 API 文档全部塞进对话框,不仅瞬间耗尽 Token 额度,还容易让模型"迷失"在无关信息中。 但当你把 BiSheng 生成的 Markdown 存入文件后,Cursor 会自动对这些文档建立向量索引。当你问"如何调用这个登录接口?"时,Cursor 只会精准检索文档中关于"登录"的那几行片段喂给模型。
- 极度节省上下文窗口: 你不再需要为每一次对话重复支付昂贵的长文档 Token 费用。文档就在项目里,模型按需取用,既省钱响应速度又快。
- 长期记忆与知识沉淀: 这些由 BiSheng 清洗过的 Markdown 文档变成了项目的一部分。即使下周你换了一个新的 Chat Session,AI 依然记得这些文档的内容,因为它们已经成为了代码库的一部分。
场景模拟:
你正在开发一个支付模块,需要参考 微信支付 的文档。
- 以前:复制 微信支付 官网 -> 粘贴给 AI -> AI 报错"太长" -> 手动截取 -> AI 还是读不懂。
- 现在:让 BiSheng 把 微信支付 文档抓下来存为
wxpay_doc.md-> 在 Cursor 里直接打字如何编写支付回调接口-> AI 可检索文档正确回复。
三、 不止于编程:通用的网页转 Markdown 神器
虽然 BiSheng 的初衷是为了辅助编程,但作为一个将 URL -> Markdown 做到极致的工具,它的想象空间远不止于此。
一旦你安装了 BiSheng,你的 AI 就获得了一个通用的信息获取接口。你可以尝试以下玩法:
- 生成技术博客摘要:把一篇几万字的技术长文链接发给 AI,BiSheng 把它转换成 Markdown 后,AI 可以精准地为你生成摘要、提炼要点,甚至通过多轮对话帮你从文中学习新知识。
- 构建个人知识库:看到好的文章想保存到 Obsidian 或 Notion?让 AI 帮忙整理,通过 BiSheng 获取纯净内容,格式完美,甚至连图片链接都保留完好。
- 舆情分析与数据抓取:需要分析某个新闻网页的评论风向?或者提取某个电商页面的商品参数?BiSheng 能够将复杂的 DOM 结构扁平化为 Markdown,让 LLM 极其容易地从中提取结构化数据(JSON)。
四、 如何开始使用
4.1 在 Claude Desktop 中使用
在 Claude Desktop 的配置文件(例如 claude_desktop_config.json)中新增一个 MCP Server:
{
"mcpServers": {
"bisheng": {
"command": "npx",
"args": ["-y", "@curzbin/mcp-bisheng@latest"]
}
}
}
保存配置并重启 Claude Desktop 后,你就可以在对话中直接调用 read_url 工具,让 Claude 通过 BiSheng 读取任意网页并返回 Markdown。
一个典型的交互流程可能是这样的:
- 你对 Claude 说:“用 BiSheng 帮我读取这个文档并总结重点:
https://react.dev/learn。” - Claude 通过 MCP 调用 BiSheng 的
read_url,获取到清洗好的 Markdown。 - Claude 基于这份 Markdown 继续对话,为你生成学习笔记或示例代码。
在内部实现上,可以抽象成一次这样的工具调用:
{ "tool": "read_url", "params": { "url": "https://react.dev/learn" } }
4.1.2 在 Cursor 中作为 MCP 工具使用
在 Cursor 中,你可以在“Settings → MCP Servers”(或相应的 MCP 配置入口)中新增一个 MCP Server,命令配置为:
{
"mcpServers": {
"bisheng": {
"command": "npx",
"args": ["-y", "@curzbin/mcp-bisheng@latest"]
}
}
}
当 Cursor 启动这个 MCP Server 后,你的对话就具备了“原生看网页”的能力。例如:
- 你在项目中集成了某个三方支付 SDK,对着 Cursor 说:“请根据这个 API 文档帮我写一个下单示例,文档地址是
https://example.com/pay/docs。” - Cursor 通过 MCP 调用 BiSheng 的
read_url,得到结构化的 Markdown 文档。 - 如果你在调用时增加了
output_path参数,例如:
{
"tool": "read_url",
"params": {
"url": "https://example.com/pay/docs",
"output_path": "docs/external/pay-api.md"
}
}
那么 BiSheng 会在你的仓库中生成一个 Markdown 文档,Cursor 会自动将其纳入索引。之后你只需要在对话中问:“帮我实现退款接口。”,Cursor 就会自动检索这份文档,并基于其中的内容给出准确实现。
4.2 使用 Docker 一键运行
docker pull curzbin/mcp-bisheng:latest
docker run --rm -i curzbin/mcp-bisheng:latest
容器启动后,同样可以作为 MCP Server 被上层客户端(如 Claude Desktop、通过桥接的 Cursor 等)调用。
4.3 命令行(CLI)临时使用
只想临时把某个网页转成 Markdown 存到本地,可以直接用 npx:
npx @curzbin/mcp-bisheng@latest
在工具中,你可以调用以下两个核心能力:
read_url:使用无头浏览器渲染网页并返回 Markdown 主内容,可选地通过output_path参数把结果保存到本地文件。install_chromium:在首次使用或更换环境时,安装 Playwright 所需的 Chromium 浏览器。