我的角色个人扩展开发、交互设计与发布整理
当前阶段v0.3.0 已公开,持续进行真实网页兼容验证
技术与方法JavaScript / Chrome Extension / Manifest V3 / Side Panel

阅读网页时,把对话放在旁边
我开发了这个扩展,把 ChatGPT 原网页放进 Chrome 原生侧栏。在阅读资料时,可以一边保留原页面,一边使用自己的 ChatGPT 账号讨论内容,再按需要传入当前页面链接或选中的文字。
扩展负责侧栏、网页内容传递和会话恢复,回复由 ChatGPT 原网页提供。它采用 Manifest V3,以 JavaScript、HTML 和 CSS 实现,使用 Chrome 的 Side Panel API。
从网页到对话草稿
我把操作区分为继续对话、补充上下文和显式新建对话:
| 操作 | 行为 |
|---|---|
扩展图标或 Ctrl+G | 打开或收起侧栏,继续已有对话 |
Alt+G | 打开侧栏,将当前网页链接追加到输入框 |
| 选中文字后点击“问问 ChatGPT” | 将页面链接和选中文字追加到输入框 |
Ctrl+Shift+G | 新建对话并清空侧栏草稿 |
传入的内容先成为草稿,由我检查后再发送。普通开关保留当前会话,开始新对话则需要明确操作;快捷键也可以在 Chrome 设置中调整。
会话与草稿怎样恢复
我用 chrome.storage.session 按窗口保存对话地址和文字草稿。侧栏重新打开时,恢复这两项信息,让短暂关闭侧栏后可以继续工作;退出 Chrome 或重新加载扩展会结束这份会话缓存。已发送的聊天仍由 ChatGPT 账号保存。
待传入的网页内容通过临时队列交给内嵌页面,成功填入后清除,并设有过期时间。内容脚本负责检测选区,划词按钮使用 Shadow DOM 与 Popover,和网页本身的界面样式分开处理;内嵌页面通过校验来源的消息通道接收内容和恢复状态。
嵌入、权限与兼容
为了嵌入 ChatGPT,扩展会调整由本扩展发起的 ChatGPT 内嵌请求的响应头,移除 X-Frame-Options 和整个 Content-Security-Policy。这会减少该内嵌页面的浏览器端保护,处理范围限定于这些请求;仓库 README 说明了相应权限与风险。
普通网页访问权限用于检测选区和显示按钮,点击按钮后才把选中文字和链接传入侧栏。网站是否能够被 ChatGPT 读取,也取决于链接本身的访问条件。
开发与发布
我完成了侧栏交互、链接与选区传入、会话内恢复、快捷键、打包和发布整理。已有单元测试、模拟网页的浏览器验收以及 GitHub 构建检查;真实网页的划词和恢复行为继续按实际使用验证,ChatGPT 页面变化也可能影响兼容性。
仓库提供双语说明、源码和 v0.3.0 发行包,可按说明以“加载已解压的扩展程序”方式安装。这是独立的第三方扩展,代码采用 MIT 许可,ChatGPT 服务及其名称和标志归相应权利方所有。
桑治