Summa 治好了我的信息饥渴症 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
silvon
V2EX    分享创造

Summa 治好了我的信息饥渴症

  •  
  •   silvon 282 天前 3635 次点击
    这是一个创建于 282 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我想我是有什么病的,暂且叫间歇性信息饥渴症吧。

    发作时会疯狂订阅 RSS 源、关注 Medium 博主、加入 Reddit 版块......

    后遗症是一段时间后就会积累很多待读文章或帖子,多到不敢打开这些网站。

    当鼓足勇气打开这些网站后,通常我会快速浏览,遇到感兴趣的内容再细读,但这存在两个问题:

    1. 快速浏览可能会错过重要信息或文章;
    2. 如果是英文文章,无法快速判断是否值得细读;

    为了解决这两个问题,我开发了 Summa 插件,旨在帮助用户(我自己)快速浏览大量文章。

    功能介绍

    Summa 是一款 Chrome 扩展,利用 AI 对网页内容进行总结。无论是博客文章还是论坛帖子,只需点击扩展图标,即可获得当前页面核心内容,包括摘要、主要内容和关键结论。

    • 总结微信公众号文章 总结微信公众号文章

    • 总结 Hacker News 长贴 总结 hackernews 长贴

    • 总结 Medium 博客文章 总结 medium 博客文章

    使用说明

    1. 适用于任意网站: 包括但不限于 Medium 、Reddit 、Hacker News 、知乎、CSDN......甚至 V2EX 。
    2. API Key 配置: 需要自行配置 API key 。我使用的是 openRouter 提供的 API ,该平台目前支持免费使用 gemini-2.0-flash 模型。
    3. 模型建议: Gemini 模型非常适合内容总结,可能是因为上下文窗口更大,Gemini 模型相比 OpenAI 和 Claude 的模型,能够在总结中保留更多细节。
    4. Prompt 可自定义: 内置 prompt 适合总结技术类文章,也支持自定义,以适应不同类型文章。
    5. 安装地址: https://chromewebstore.google.com/detail/summa/ifpcledicmpicocmaggfkegiighkdeog

    技术栈

    • 网页内容提取: 使用 mozilla/readability 库准确提取正文内容。
    • 格式转换: 使用 Turndown 将 HTML 内容转换为 Markdown 格式,方便 LLM 处理。
    • 摘要渲染: 使用 marked 和 github-markdown-css 渲染生成的摘要。
    • 前端开发: 使用 Shadow DOM 、TypeScript 和 CSS 实现总结面板,使用 React 和 Shadcn 实现配置页。
    • LLM 接入: 通过 Vercel AI SDK 接入 OpenAI 、Anthropic 、openRouter 、LMStudio 、Ollama 等多个 LLM 服务商。
    • 开源地址: https://github.com/silvonli/Summa.git

    开发说明

    1. 大部分代码由 cursor 生成,我的主要工作是做技术选型,感觉这可能是 AI 时代的开发新模式。
    2. 由于没有设计师,界面效果全靠 cursor 发挥,因此 UI/UX 存在不一致和不完善的地方。
    27 条回复    2025-02-13 23:20:26 +08:00
    9420JackT
        1
    9420JackT  
       282 天前
    https://telegraph-image-92x.pages.devundefined
    1Z3KYa0qBLvei98o
        3
    1Z3KYa0qBLvei98o  
       282 天前
    deepseek 花这么点钱就能训练出 4o 一样的模型, 我不知道老美是傻还是技术不行, 还是国内太内卷了.
    lasuar
        4
    lasuar  
       282 天前
    没有一个 key 是免费的。。
    34433kp58111R75i
        5
    34433kp58111R75i  
       282 天前   1
    很不错的项目~
    GG668v26Fd55CP5W
        6
    GG668v26Fd55CP5W  
       282 天前 via iPhone
    有一个刚需,把 V2EX 收藏的帖子总结并汇总成电子书。已经收藏了接近 1500 多个了,从来没看过。
    GG668v26Fd55CP5W
        7
    GG668v26Fd55CP5W  
       282 天前 via iPhone
    还有 GitHub 的 star ,很多只是躺在那里,一个个点进页面还是不方便,希望可以批量处理。
    silvon
        8
    silvon  
    OP
       281 天前
    @falcon05 一样一样的,我也在 GitHub 上 Star 了很多项目,但很少真正点进去看。可能就是因为总觉得看一个项目太费时间,需要花很多精力。现在如果项目页面太长,我会先用 Summa 把页面总结一下,先对 README.md 有个大概的了解,再决定要不要细看,这样效率提高了不少。
    silvon
        9
    silvon  
    OP
       281 天前   1
    @DamonXPlus 感谢认可。虽然大部分代码是用 Cursor 写的,但其实我自己也没少费脑筋,中间还走了不少弯路。尤其是在前期选择如何提取页面正文时,踩了不少坑。一开始尝试用 firecrawl ,但这个框架会把页面中的其他内容也抓取下来,比如导航栏、侧边栏之类的。后来尝试自己写代码从页面提取正文,但发现只能适配少数网站,实用性很差。最后偶然发现了 Mozilla 的 readability 库,这个库专门用来从网页中提取主要的可读内容,过滤掉广告、导航和其他无关元素,正好符合需求。
    ColoThor
        10
    ColoThor  
       281 天前
    支持 firefox 吗
    silvon
        11
    silvon  
    OP
       281 天前
    @ColoThor 现在只支持 chrome 。
    Ma4cus
        12
    Ma4cus  
       281 天前
    想问下开发 chrome 插件有什么脚手架吗?
    Ma4cus
        13
    Ma4cus  
       281 天前   1
    提个建议,回答改成流式输出的,不然回答完成前要等待好久
    silvon
        14
    silvon  
    OP
       281 天前
    @Ma4cus 我是基于 https://github.com/lxieyang/chrome-extension-boilerplate-react 这个 chrome 插件模板开发的,该模板搭建好了 React + Webpack 的开发脚手架。

    也有使用 React + Vite 的开发脚手架,比如这个项目: https://github.com/Jonghakseo/chrome-extension-boilerplate-react-vite
    人气高(start 2.7k ),且更新频繁很活跃。
    silvon
        15
    silvon  
    OP
       281 天前
    @Ma4cus 感谢建议。我居然没想到过改为流式,认为等那么久是合理的。
    gzcrtw
        16
    gzcrtw  
       280 天前
    能不能加个自定义 endpoint 的功能
    silvon
        17
    silvon  
    OP
       280 天前
    @gzcrtw 模型提供商中的 OpenAI Like 确实支持自定义 endpoint ,但目前界面上未显示 API 地址输入框,这是一个 bug 。目前修复代码已经提交到 https://github.com/silvonli/Summa.git ,你可以选择自行打包插件进行加载,或者等待我提交到 Chrome 商店。不过,具体审核通过的时间暂时无法确定。
    ahtian928
        18
    ahtian928  
       280 天前   1
    感谢分享 用 deepseek 的 API 也可以
    laox0
        19
    laox0  
       279 天前
    使用其他 API 没问题,但使用本地 Ollama 调用 DeepSeekV2 模型,会报 [总结时发生错误: Failed after 3 attempts. Last error: Internal Server Error]
    我的 ollama 功能是正常的,是不是我的模型 ID 填写的有误:我填写的是 [deepseek-v2]
    silvon
        20
    silvon  
    OP
       279 天前
    @laox0 DeepSeek V2 的模型 ID 应该是类似 "deepseek-v2:16b" 或 "deepseek-v2:236b" 这样的格式。可以通过运行 ollama list 命令看看本地有哪些模型以及对应的 ID 。比如,如果你已经下载了 deepseek-v2:16b ,模型 ID 就是 "deepseek-v2:16b"。

    不过我这边没法跑 Ollama ,所以可能不完全准确,具体还得你自己确认下~
    laox0
        21
    laox0  
       279 天前
    @silvon #20
    ollama list 命令返回的内容是:
    NAME ID SIZE MODIFIED
    deepseek-v2:latest 7c8c332f2df7 8.9 GB 10 minutes ago
    模型 ID 改为"deepseek-v2:16b" 或 "deepseek-v2:236b"之后,报错现象变为立马报错,并提示 [总结时发生错误: Not Found]
    如果用"deepseek-v2",至少还会转圈加载,提示总结完成,然后才报错
    silvon
        22
    silvon  
    OP
       279 天前
    @laox0 从 ollama list 的返回来看,模型 ID 好像是 "deepseek-v2:latest 7c8c332f2df7",看起来 Ollama 可能有自己的一套本地命名规则。你可以试试用 "deepseek-v2:latest 7c8c332f2df7" 或者 "deepseek-v2:latest" 作为模型 ID ,看看能不能行~
    Is0
        23
    Is0  
       247 天前
    可以支持硅基流动的 api 吗,其他几个国内不是很稳定
    silvon
        24
    silvon  
    OP
       247 天前
    @Is0 我正在增加对硅基流动、TogetherAI 和 Hyperbolic 的支持。不过,在测试过程中,我发现硅基流动在调用 DeepSeek R1 和 DeepSeek V3 时速度较慢,不清楚具体原因。此外,TogetherAI 和 Hyperbolic 的响应速度也不算快。
    Is0
        25
    Is0  
       246 天前
    @silvon 硅基流动现在基本要充值后用 pro 版本的模型速度会正常一些,可能白嫖用户太多撑不住吧
    silvon
        26
    silvon  
    OP
       245 天前   1
    @Is0 LLM 服务商现在支持硅基流动,代码已经推到 https://github.com/silvonli/Summa.git 。另外,还加了多个总结切换的功能。先测试两天,没问题的话就提交到 Chrome 商店!
    Is0
        27
    Is0  
       245 天前 via Android
    @silvon 感谢
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1173 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 17:45 PVG 01:45 LAX 10:45 JFK 13:45
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86