# SeimiRender
**Repository Path**: xiaohuo/seimi-render
## Basic Information
- **Project Name**: SeimiRender
- **Description**: seimi-render是 SeimiAgent 项目的现代化升级版。基于Chromium的网页渲染服务。提交 URL,以真实的 Chromium 浏览器行为渲染页面(执行 JS、等待异步内容),然后返回渲染后的完整 HTML、pdf、png、json结构化搜素结果。可在后台静默无打扰运行。支持MCP协议,完美适配各类Ai Agent工具,拓展你的AI助手数据获取边界。
- **Primary Language**: Unknown
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 4
- **Forks**: 1
- **Created**: 2026-08-03
- **Last Updated**: 2026-08-04
## Categories & Tags
**Categories**: ai
**Tags**: None
## README
# seimi-render
> 📖 **文档语言:** **简体中文** | [English](docs/README.en.md) | [项目地址一键直达](https://github.com/zhegexiaohuozi/seimi-render) | 欢迎Star
这个工程的更原始的版本是[SeimiAgent](https://github.com/zhegexiaohuozi/SeimiAgent),SeimiRender是SeimiAgent的现代化升级版。基于Chromium的网页渲染服务。提交 URL,以真实的 Chromium 浏览器行为渲染页面(执行 JS、等待异步内容),然后返回渲染后的完整 HTML、pdf、png、json结构化搜素结果。支持长轮询与 WebSocket 推送获取结果。可在后台静默无打扰运行。支持MCP协议,完美适配各类AI Agent工具,拓展你的Harness数据获取边界。也可以是Vibe Coding中AI进行RL迭代自动优化的基础设施。
## 特性
- **真实浏览器渲染**:基于 QtWebEngine (Chromium),支持 JS 渲染(Ajax)、SPA、动态内容
- **HTTP API**:远程管理界面,支持提交任务、查询状态、长轮询拉取结果(html / markdown / pdf / image)
- **WebSocket 推送**:渲染完成实时通知,方便自由组建各种工作流。
- **MCP 协议支持**:内置 MCP server(端口 8090),Zcode / Codex /Claude Code / Cursor 等 agent 可直接接入调用渲染。任意网络数据读取或者不限次数是使用搜索引擎能力。
- **自带Chrome插件**支持Cookie状态和自用Chrome进行1:1同步,确保Agent或者其他自动化场景使用时登录态快速的继承并保持一致。
- **登录态持久化**:cookie 加密落盘(`data/cookies.dat`),服务重启自动恢复,无需重新同步
- **运行时代理热切换**:`--proxy` / `POST /proxy` 随时改上游代理,无需重启,可自行拓展引入代理池,彻底避开IP流控。
- **内置 Web 管理后台**:监控大盘、渲染测试台、cookie 管理、接口文档、Agent 配置一键复制
- **搜索引擎结果结构化提取**:百度/必应/Google 搜索结果去广告结构化,直接返回 JSON
- **运行时监控指标**:成功率、延迟分位数(p50/p90/p99)、吞吐、域名分布,适合运维大盘
- **网络录制与 HAR 导出**:开启 `--remote-debugging-port` 后,渲染时带 `record_network=true` 即可录制页面加载全过程(请求/响应/headers/响应体/timing,类似 Chrome F12 Network),产出标准 HAR 1.2 文件,可直接导入 Chrome DevTools / Charles / haralyzer 分析。可以极大的提高自动化信息挖掘效率。
- **多种渲染输出**:html、markdown、pdf、png/jpg、搜索结果json结构化。
- **无头运行**:默认 offscreen 平台,无需显示器,不会干扰本地浏览器操作,本地操作也不会干扰浏览结果获取。
- **基础防浏览器指纹识别**:基础反爬识别能力。
## 架构

## 构建与运行
### 安装依赖
| 平台 | 命令 |
|------|------|
| Windows | `scripts\setup-windows.bat` |
| Linux | `sh scripts\setup-linux.sh` |
| macOS | `sh scripts\setup-macos.sh` |
### 构建打包
| 平台 | 命令 |
|------|------|
| Windows | `scripts\package-windows.bat` |
| Linux | `sh scripts\package-linux.sh` |
| macOS | `sh scripts\package.sh` |
## 免构建直接下载地址
https://github.com/zhegexiaohuozi/seimi-render/releases
## 快速开始
启动服务(默认无头 offscreen):
### MacOs
```bash
build/seimi-render.app/Contents/MacOS/seimi-render --http-port 8088 --ws-port 8089
```
### AI工具使用示例
标准通用MCP工具配置:
```
{
"mcpServers": {
"seimi-render": {
"type": "http",
"url": "http://127.0.0.1:8090/mcp"
}
}
}
```
> 注意:如果带密码启动,需要增加授权信息。可以去 [管理后台](#浏览器图形化界面可远程管理后台) **配置示例** 标签页直接拷贝。
### AI工具使用效果参考
seimi-render 通过 MCP 协议接入各类 AI agent 客户端后,agent 可用自然语言直接驱动「渲染网页 → 提取正文 → 结构化分析」全流程,无需用户手写 URL 或解析 HTML。下表给出几种典型用法实测(截图取自真实 agent 会话),基于Seimi-render,你可以自由构建任意数据抓取和分析工作流,如:股票舆情、历史K线分析等等,下面是简单的场景作为功能演示。复杂任务可以自定义Skill把seimi-render作为数据获取的基础能力,完成自己预期的闭环数据工作流搭建。
| 场景 | 说明 | 截图(点击放大) |
|------|------|:----------------:|
| **自然语言驱动渲染** | 在 ZCode 等 agent 客户端里,用户用一句话描述需求(如「我想了解北京种植牙哪些医院靠谱」),agent 自动规划调用 `mcp__seimi-render__browser_search` 同步等待获取结构化搜素引擎结果,如果判断有必要获得更多信息,再用 `get_web_content` 获取具体网页完整内容。 |
|
| **搜索结果结构化输出** | 调用`browser_search`工具,返回结构化搜索结果,方便Agent处理和识别。 |
|
| **多步迭代** | 复杂需求下,agent 会拆解为多步:先渲染目标页 → 读取结构化结果 → 再渲染关联页或调用搜索引擎结果提取(百度/必应/Google SERP)→ 综合输出。图中展示 agent 在单次会话内连续调用多次 MCP 工具 + 中间思考的完整链路。 |
|
> 接入方式见上文 [AI工具使用示例](#ai工具使用示例) 章节;配置 JSON 可在管理后台 **配置示例** 标签页一键复制。截图工具调用名 `mcp__seimi-render__*` 对应 [`McpServer`](src/McpServer.cpp) 暴露的工具(详见 [接口文档](#浏览器图形化界面可远程管理后台) 标签页的 MCP 分组)。
### 手动对接或者自己开发应用对接流程
一条命令渲染 `https://www.sohu.com/` 并拿到 HTML(提交 + 长轮询合一):
```bash
curl -X POST http://localhost:8088/render \
-H "Content-Type: application/json" \
-d '{"url":"https://www.sohu.com/","settle_ms":2500,"long_poll_ms":35000}'
```
返回(已格式化,HTML 省略):
```json
{
"task_id": "a3f1...",
"url": "https://www.sohu.com/",
"state": "succeeded",
"elapsed_ms": 8550,
"html": "