| .. | ||
| background.js | ||
| background.test.cjs | ||
| config.js | ||
| content.js | ||
| manifest.json | ||
| options.html | ||
| options.js | ||
| popup.html | ||
| popup.js | ||
| README.md | ||
| shared.js | ||
| styles.css | ||
zncm Web Clipper
这是给 zncm 使用的 Chrome 插件,安装后默认连接 config.js 中配置好的服务地址。
默认地址配置在 browser-extension/deer-web-clipper/config.js:
globalThis.ZNCM_WEB_CLIPPER_CONFIG = Object.freeze({
defaultWebBaseUrl: "http://47.94.209.59:2026",
defaultApiBaseUrl: "http://47.94.209.59:2026",
});
如果部署地址变化,只需要修改 config.js 里的这两个字段,然后重新加载插件。
正常情况下不需要手动配置 URL,也不需要手动复制 token。
能做什么
- 把当前浏览器标签页发送到 zncm,作为 Markdown 附件进入聊天。
- 接收 zncm 聊天中由
browser_fetch_page工具创建的网页抓取任务。 - 插件在 Chrome 中打开目标网页,读取可见文本和表格,再把结果回传给 zncm。
- 在普通网页右下角显示“zncm 页面问答”浮窗,直接把当前页面内容交给 zncm 问答。
- 接收 zncm 的
browser_act交互式操作任务:在 Chrome 中打开页面并按 zncm 的指令操作页面——点击、输入、滚动、等待、页内跳转,每一步把页面上的可交互元素清单和正文回传给 zncm,由 zncm 决定下一步(observe→act 循环)。
页面操作(browser_act)
除了只读抓取,zncm 还能驱动插件实际操作网页,完成登录、填表、翻页找数据等多步任务:
- zncm 调用
browser_act工具,先navigate打开页面。 - 插件打开标签页(同一会话会复用这个标签页),扫描页面上的可交互元素,给每个元素编号后连同正文回传给 zncm。
- zncm 根据元素编号决定下一步(点第 3 个按钮、在第 1 个输入框填字……),再次调用
browser_act。 - 插件执行动作、重新扫描页面、回传新状态,如此循环,直到任务完成。
- 任务结束时 zncm 用
action="close"关闭该会话标签页。
支持的动作:navigate(打开/跳转 URL)、click(点击元素)、type(输入文字,可选回车提交)、scroll(滚动到元素或下翻一屏)、wait(等待某 CSS 选择器出现)、extract(重新读取正文)、observe(仅重新扫描)、close(关闭会话标签页)。
提示:页面操作能力较强(可点击任意按钮、提交表单),可在后端
config.yaml用browser_context.actions_enabled: false关闭,只保留只读抓取。
后端启用
在 offline-backend-20260512/backend/config.yaml 中保持:
browser_context:
enabled: true # 只读抓取 + 页面问答
actions_enabled: true # 交互式页面操作 browser_act(不需要可设为 false)
修改配置后需要重启后端。
安装插件
- 打开 Chrome 的
chrome://extensions。 - 开启右上角的“开发者模式”。
- 点击“加载已解压的扩展程序”。
- 选择目录:
browser-extension/deer-web-clipper。 - 安装后插件名会显示为
zncm Web Clipper。
安装即用
插件默认已经开启:
- 自动识别已打开 zncm 页面的服务地址。
- 自动同步已登录 zncm 的 token。
- 自动轮询 zncm 聊天触发的浏览器抓取任务。
- 页面问答框默认开启。
如果你打开的是 config.js 里配置的默认服务器,通常无需进入设置页。
如果部署地址变了,保持一个已登录的 zncm 页面打开,然后在插件设置里点击:
重新识别服务地址同步 token
自动同步 Token
插件会自动从两个位置获取登录 token:
- zncm API 域名下的
access_tokenCookie,包括 HttpOnly Cookie。 - 已登录 zncm 前端页面里的浏览器本地登录态。
切换登录账号后,插件后台每次轮询任务前都会重新同步 token;点击插件里的“同步 token”也可以立即刷新。
如果当前浏览器已经登出 zncm,且打开的 zncm 页面里没有 token,插件会清空旧 token,避免继续用上一个账号请求。
页面问答框
安装插件后,普通 http / https 页面右下角会出现 AI 按钮。点击后可以在当前网页上直接提问,例如:
总结这页的核心结论
提取页面里的价格和时间
这张表里哪个指标最高?
插件会读取当前页面可见文本和表格,发送到 zncm,并把 zncm 的回答显示回浮窗里。多轮追问会复用同一个 zncm 会话;如果页面 URL 变化,会自动重新开始当前页会话。
是否显示问答框可以自己控制:
- 插件弹窗里勾选或取消“启用页面问答框”。
- 插件设置页里勾选或取消“启用页面问答框”。
关闭问答框只会隐藏页面浮窗,不会影响“发送当前页”和 zncm 聊天中的 browser_fetch_page 抓取任务。
手动发送当前网页
点击插件图标,选择“发送当前页”。
插件会读取当前页面的可见文本和表格,发送到 zncm,并打开一个新的 zncm 聊天页面。zncm 会把网页内容作为上传文件注入到首条问题里。
在 zncm 聊天中触发浏览器抓取
在 zncm 中输入带有明确 URL 的问题,例如:
使用 browser_fetch_page 打开 https://example.com/report,提取页面里的关键表格数据并总结。
执行流程:
- zncm 调用
browser_fetch_page工具创建浏览器任务。 - 插件后台轮询到任务。
- 插件在 Chrome 中打开目标网页。
- 插件提取页面文本和表格。
- 插件把结果回传给 zncm。
- zncm 基于回传内容回答你的问题。
这个方式适合读取需要浏览器登录态、内网权限或当前 Chrome 环境才能访问的页面。
注意事项
- 目标 URL 必须是明确的
http或https地址。 - 插件不能读取
chrome://等浏览器内部页面。 - 如果目标网站阻止扩展脚本注入,抓取可能失败。
- 后台任务默认会打开新标签页;是否抓取完成后关闭标签页,可在插件设置里配置。