PixelBrowse 的定位是“基于截图的网页阅读”:当你需要知道一个页面长什么样、需要读取页面上的视觉信息,而不是仅仅获取原始 HTML 时,用它替代直接抓取 HTML。它借助 pixelshot 把目标渲染为分块的 JPEG 图像,然后以视觉方式阅读这些图像。
【用途与依赖】 该技能依赖 PATH 中可用的 pixelshot 命令。如果找不到它,可以隔离安装并放入 PATH:uv tool install pixelrag(或 pipx install pixelrag,或 pip install pixelrag),然后重试;文档提醒不要到项目虚拟环境中翻找它。
【主要能力】
- 截图任意 URL,并按适合视觉理解的分块高度输出(推荐 1568px)。
- 并行截图多个 URL。
- 为桌面布局指定更宽的视口(如 --viewport-width 1280,默认 875 适用于移动端/文章宽度)。
- 渲染 PDF:pixelshot document.pdf --output /tmp/pixelbrowse。
- 支持 URL(http/https)、本地 HTML 文件、PDF 与图片。
- 后端可选 --backend cdp(默认,最快)或 --backend playwright。
【使用方式】 基本命令: pixelshot <url> --output /tmp/pixelbrowse --tile-height 1568 --wait-network-idle 并行多个 URL: pixelshot <url1> <url2> --output /tmp/pixelbrowse --tile-height 1568 --wait-network-idle --workers 4 更宽的视口: pixelshot <url> --output /tmp/pixelbrowse --tile-height 1568 --viewport-width 1280 --wait-network-idle 渲染 PDF: pixelshot document.pdf --output /tmp/pixelbrowse
两条重要注意事项:面向视觉阅读的截图务必使用 --tile-height 1568,因为视觉模型会把长边超过 1568px(Sonnet/Haiku)或 2576px(Opus)的图像降采样,而默认 8192px 的分块高度会被降采样、文字变得不可读;同时分块高度也是模拟的视口高度,因此在 1568 下一篇普通文章会变成十几张图块而不是一两张,具体数量由清单文件给出。URL 截图务必使用 --wait-network-idle,否则 JavaScript 较重的页面(大多数现代站点/单页应用)会在渲染完成前被截取,返回空白或半空的画面;该参数会等待页面的 load 事件并加上一段短暂的网络静默窗口,使客户端渲染的内容真正出现在画面上。
【工作流】
- 运行 pixelshot <url> --output /tmp/pixelbrowse --tile-height 1568 --wait-network-idle。
- 读取 /tmp/pixelbrowse/<domain>.png.tiles/tiles.json,它是本次捕获内容的清单。
- 按顺序读取清单中列出的每一张图块,而不是只读 tile_0000.jpg。
输出路径模式为 /tmp/pixelbrowse/<sanitized-url>.png.tiles/tile_NNNN.jpg;例如 https://news.ycombinator.com 对应 /tmp/pixelbrowse/news.ycombinator.com.png.tiles/tile_0000.jpg,https://example.com/page 对应 /tmp/pixelbrowse/example.com_page.png.tiles/tile_0000.jpg。应读取 tiles.json 而不是用 ls 或猜测图块编号,因为它一次读取即可回答图块文件无法回答的两个问题:其一,tiles 是完整列表,长页面会有很多图块,一篇 30000px 的文章如果只读 tile_0000.jpg 就只读了 5%,总结前应全部读完;其二,complete: false 表示本次捕获不可信——pixelshot 无法测量页面,你手上大约只是未知长度页面的一屏,回答时应如实说明,而不是把它当作整页呈现;若原先漏加参数,重跑时加上 --wait-network-idle 或换一个 --viewport-width 通常能解决。如果完全没有 tiles.json,说明渲染失败,这应当作为错误上报,而不是当作空页面。
清单示例:{"url": "...", "page_height": 29184, "tile_height": 1568, "tiles": ["tile_0000.jpg", "..."], "complete": true}
【裁剪与放大】 如果文字或细节太小看不清,可裁剪感兴趣的区域并按全分辨率重新读取。Pillow 始终可用(它是 pixelshot 的依赖): python3 -c "from PIL import Image; Image.open('<tile_path>').crop((x1, y1, x2, y2)).save('/tmp/pixelbrowse/crop.png')" 坐标以图块左上角为原点的像素值计;为获得最佳清晰度,裁剪到大约 800x800 或更小;可以多次裁剪以查看不同区域;裁剪后的图像像其他图像一样正常读取。当你看到内容但看不清细节时(表格、小标签、细则、图表坐标轴等)即可使用此方法。
【提示与限制】 输出为分块 JPEG 图像,tile_0000.jpg 在顶部,编号越大越靠页面下方;桌面布局用 --viewport-width 1280,默认 875 为移动端/文章宽度;支持 URL(http/https)、本地 HTML 文件、PDF 与图片;后端可选 --backend cdp(默认、最快)或 --backend playwright。关于具体收费标准、支持平台范围、效果指标等信息,资料暂未提供。