从「标记已读」到 Feedgrab 与 Ghostify:一个功能长成三个项目
来源:dev.to — 2026-11-01
📋 概述
作者删了 X、停用了 Facebook,于是每天在线时间几乎只剩 DEV 和 YouTube,而这两个地方都会把同一批内容反复端到他面前。他本来只想写个浏览器扩展,在卡片上加一个勾,点掉就再也不出现,结果第一个版本 myDEV 活了大约一小时就被归档——硬编码选择器只认一个站点,DEV 一改类名就死。第二个版本 Feedgrab 换了思路:不绑定站点,而让程序自己判断「这一页是信息流、这些是条目、这条和你以前看过的是同一条」,靠结构启发式加可选的 LLM 精修,支持 CSS/XPath 手填,在 Shadow DOM 浮层里让人确认或纠正,并把无限滚动重新渲染的条目去重成一条流。第三个版本 Ghostify 建在它之上:悬停点幽灵,帖子从信息流里彻底消失,但并没有被删掉——它变成幽灵存档,随时可以被召回或延后到周末。
🔑 核心要点
- 第一个版本死于过拟合:只认一个站点、选择器手写的扩展,在站点改类名的那一刻就报废,这也是后来做通用层的动机。
- 去重的难点是无限滚动:同一个条目会在滚动中被重新渲染成新节点,必须识别「这是同一条」而不是「这是一个新元素」。
- 猜错了要能被人纠正:检测结果放在 Shadow DOM 浮层里让人确认或改选择器,避免自动化误判直接吃掉内容。
- 「消失」不等于「删除」:Ghostify 保留副本,支持撤销五秒、稍后阅读和周末再看,把已读变成归档而不是销毁。
💡 金句
The posts you've already seen don't die, they just stop haunting your feed and move into the machine.
译:你已经看过的帖子并不会死,它们只是不再纠缠你的信息流,而是搬进了机器里。
👍 0
👎 0
← 返回 dev.to 首页