Clean Web Clipper 添加到 Chrome(免费)

适用人群

别再把同一份网站菜单粘贴给模型

在 109 个页面的正面对比中,Clean Web Clipper 留下 102 行重复的导航,另外三个提取引擎分别留下 282、478 和 491 行,而且完全没有残留的 HTML 标签。送到模型面前的,是文章正文,外加一段写明来源网址和发布日期的属性头。

粘贴一个网页,真正的代价

从浏览器里复制一页文档,粘贴进对话框,你发给模型的还有 Cookie 提示、侧栏、版本切换器、“本页目录”侧栏、四列页脚链接和一条“接下来阅读”推荐栏。每一行都是你要付费的 token,每一行都在和你真正想让模型读的那两段争夺注意力。

第二重代价更隐蔽:重复的导航看起来像结构。让模型总结这个页面,它会把菜单项列成主题;问它某个说法出自哪里,它会指向一个链接文字。粗糙的转换器留下的零散 divtable 标签,又给模型多加了一层要绕开的东西,然后才轮到正文句子。

真正开始花钱的是第二次粘贴。对话越来越长,历史被截断,你把页面再粘贴一次,可页面从早上到现在已经改过,模型现在推理的是一段略有不同的文字,对话里却没有任何记录说明这件事发生过。每次运行都去抓同一个网址的智能体也有同样的问题,还要加上频率限制和它过不去的登录。磁盘上的文件每次都是同样的输入,网站打不开时它依然可读。

模型收到的变成了什么

模型拿到的全部内容,除此之外什么都没有docs.python.org/zh-cn/3/library/asyncio-task.html
---
title: "协程与任务"
source: "https://docs.python.org/zh-cn/3/library/asyncio-task.html"
extraction: "dom"
---

## 可等待对象

如果一个对象可以在 `await` 语句中使用,那么它就是 **可等待** 对象。许多 asyncio API 都被设计为接受可等待对象。

```python
async def main():
    await asyncio.sleep(1)
    print("hello")
```

为提示词做好设置

两套设置,大部分选项相同:一套用于粘贴进对话,一套用于给智能体准备一个读取用的文件夹。每套大约五分钟。

  1. 右键点击图标,打开选项,把点击图标时设为“复制 Markdown”。这是最短的路径:点一下,切到对话窗口,粘贴。
  2. 把图片设为跳过。一个 CDN 图片地址光是缩放参数就可能有两百个字符,对纯文本模型毫无意义。
  3. 在属性部分保留 sourcedate,关闭 authorextraction。两行文件头就足够模型标注出处,其余字段都是你花钱发送的冗余。
  4. Alt+Shift+M 剪藏页面,然后粘贴。如果扩展程序提示“没有文章”,就别硬贴进去。这个提示说明页面主要是链接文字,而这正是会让模型把菜单项当成主题罗列的输入。
  5. 如果是给智能体而不是对话用,把保存位置设为智能体本来就会读取的文件夹,比如项目里的 context/,文件名模板设为 {domain}-{title}
  6. 把任务真正依赖的六到八个页面剪藏进这个文件夹。智能体读的是本地文件:不抓取,不受频率限制,没有过不去的登录,每次运行读到的文字都一样。
  7. 为最常剪藏的网站加一条按网站规则,比如把 reddit.com 送进单独的子文件夹并跳过图片,这样文件夹不用你费心也能保持分类整齐。

压缩上下文开销的设置

下面每一项,都去掉了模型要按量计费去读的一部分内容。属性那一行最容易设错:标注出处两行就够,不需要五行。

设置项取值为什么这样设
点击图标时复制 Markdown点一下、切窗口、粘贴:没有文件,没有窗口,没有对话框
图片跳过图片地址很长,对纯文本模型毫无意义,常常比旁边的段落还长
属性开启 `source` 和 `date`,关闭 `author` 和 `extraction`足以标注出处,不在模型用不上的字段上花 token
保存位置(智能体)项目里的 `context/` 文件夹本地文件意味着不抓取、不限流,每次运行输入完全相同
文件名模板`{domain}-{title}`在文件夹里 grep 的智能体能分清两个都叫“概览”的页面
剪藏范围只剪藏选中内容,而不是整页一个章节就能回答问题时,其余九个章节纯属开销
按网站规则`reddit.com` → 子文件夹,跳过图片讨论帖和参考资料值得分开存放
信息流页面返回的是这个,而不是三百个链接分类列表页上的剪藏窗口
此页面上没有文章

提取出的文字中,超过四分之一在链接文字里,这正是信息流、
商品页或搜索结果页的样子。没有任何内容写入剪贴板。

  检查的区块      41
  选中的区块      <section class="cards">
  链接占比        0.71
  实际文本        740 个字符

三种用法

一个页面,一个问题

你在读一份规范,想让模型核对你对其中一节的理解。你选中那一节,按 Alt+Shift+M,然后粘贴。模型收到的是这一节、一行 source 和一行 date:没有 Cookie 提示,没有版本切换器,没有“本页目录”侧栏,也没有八列页脚。

差别体现在回答上,而不只是账单上。让模型总结一个粘贴进来的页面,如果导航也在里面,它会把菜单项列进主题,因为一个在每个章节里都重复出现的短语,看起来确实像结构。把导航去掉,错误也就从源头上去掉了。

智能体读文件夹,而不是自己去抓取

一个编程智能体需要某个 SDK 的 API 参考文档。你把八个页面剪藏进 context/,每个文件以域名和标题命名。智能体读取本地文件:不抓取,不限流,你登录后才能看到的页面和公开页面一样可读。

而且内容不会变。抓取来的页面在同一任务的两次运行之间可能已经改了,对话记录里却不会有任何提示。剪藏的文件只有在你重新剪藏时才会变,旧文件也还在,可以拿来 diff。

模型根本访问不到的页面

文档在需要单点登录的公司内网 Wiki 上,或者在你付费订阅的内容里。让模型去抓这个网址,它拿到的是登录页;给模型一个搜索工具,它拿到的是专门给爬虫看的版本。扩展程序读取的是浏览器已经为你当前会话渲染好的页面,所以你能看到的文字,就是你能粘贴的文字。

在这个过程中,页面文本不会离开你的电脑,剪藏内容本身也不会上传到任何地方。剪藏进入你的剪贴板,“发到 AI 对话”按钮只是复制并打开一个标签页,自己不传输任何东西。

和其他把网页交给模型的方式比一比

下面是人们把网页交给模型时实际在用的五种做法。每一行都写明得到什么、代价是什么,包括这个扩展程序自己。

现在的做法得到什么代价是什么
直接粘贴网址提示词里的一行很多模型无法抓取网页;能抓取的,拿到的可能是给爬虫看的版本
复制粘贴整个页面所有内容,连同页面上的各种摆设可比的输出里有 282–491 行重复菜单,这里是 102 行
截图交给多模态模型页面当时的样子图片 token,没有来源,没有日期,事后也没法 grep
把网页另存为 HTML磁盘上一份忠实的副本文件里大部分是标记,文章只占你发送内容的一小部分
阅读模式后再复制有时文字更干净有的页面能触发,有的不能,而且没有来源和日期信息
Clean Web Clipper正文,外加两行文件头一次一个页面;不总结、不分块、不做向量嵌入

回答出错时怎么办

为什么模型总结的是导航,不是文章?

信息流页面放进提示词,就会是这个结果。看看剪藏窗口的提示:如果显示“没有文章”,说明提取出的字符中有大约四分之一以上在链接文字里,这正是分类页、搜索结果页或商品页的特征。找到文章页本身,剪藏那一页。回答的改善会比怎么改提示词都明显。

为什么剪藏比页面看起来短得多?

常见原因有两个。一是页面在你滚动时才加载正文,剪藏那一刻只有已渲染的部分存在:先滚到底,再剪藏。二是某个章节在折叠面板或未打开的选项卡里,打开之前它不在 DOM 中。浏览器没有渲染出来的内容,任何扩展程序都读不到。

为什么没有可供模型引用的日期?

页面没有声明日期。这个字段宁可留空,也不填今天的日期,因为在模型的上下文里,一个言之凿凿的错误日期比缺失更糟:它会被当作事实复述给你。有些语料带日期的频率远低于其他语料,在土耳其和捷克的前五十名网站中,发布日期确实很少见,这是这些网站的特点,不是提取的问题。

为什么图片链接还在占用上下文?

图片默认保留为链接,这对阅读是对的,对提示词是错的。把图片设为“跳过”,可以全局设置,也可以设为按网站规则,Markdown 里就完全没有图片引用:没有占位符,没有空括号,什么都没有。

它不做什么

它不与任何 AI 服务通信。剪藏内容不会发往任何地方,只进入你的剪贴板或磁盘;“发到 AI 对话”按钮也只是复制内容并打开一个标签页。它不总结、不分块、不做向量嵌入,那是模型的工作,不是剪藏工具的工作。它一次只剪藏一个页面,也就是你正在看的那一页,没有爬虫。页面从未渲染出来的内容,它也拿不到。

添加到 Chrome(免费)完全免费:无需账号,无需注册,没有限制。

常见问题

为什么不直接把网址发给模型?
很多模型根本访问不到这个页面,能访问的往往拿到的是给爬虫看的版本,而不是你正在读的那个。剪藏得到的正是你屏幕上的内容,包括你已经登录才能看到的页面。
扩展程序会把内容发给 AI 服务吗?
只有你按下那个按钮时才会,而且即便如此,它也只是复制到剪贴板并打开对话标签页。扩展程序本身不会上传任何页面内容。
到底能省下多少上下文?
可以量化的是重复导航:在 109 个页面上,这里留下 102 行重复菜单,对比引擎分别留下 282、478 和 491 行。在菜单于每个章节反复出现的页面上,这就是噪音的大头。
能去掉图片来节省 token 吗?
能。把图片设为“跳过”,Markdown 里就没有任何图片链接。
需要登录的页面能剪藏吗?
能。它读取的是浏览器已经渲染好的页面,所以公司内网 Wiki 或你订阅的文章,剪藏起来和其他页面一样。
能配合本地模型使用吗?
能,而且它本来就没有任何别的假设。剪藏内容从不上传,只进入你的剪贴板或磁盘上的文件夹,之后由什么来读完全由你决定。
它会对文本分块、做向量嵌入或总结吗?
不会。它转换完页面就停下。分块和嵌入属于你正在搭建的流水线;一个会总结的剪藏工具,等于替你决定了原文的哪些部分模型永远看不到。
同一个页面明天剪藏,得到的文字还一样吗?
只有页面没变时才一样。这正是保留文件的理由:剪藏一旦写入就固定下来,一个月后重跑任务,读到的是同样的输入,之前的版本也还在磁盘上,可以对比。
代码示例能完整保留、让模型读懂吗?
能,而且带着语言标签:在九个页面的技术语料上,156 个代码块中有 73 个保留了标签,对比引擎分别为 20 个和 0 个。标签来自网站高亮库留下的 class,所以从来不是猜的。
能一次把好几个标签页剪进同一个提示词吗?
不能。没有批量模式,也没有爬虫,它只剪藏你当前所在的页面。需要多个页面时,逐个剪藏进一个文件夹,再让模型或智能体去读这个文件夹。