惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Recorded Future
Recorded Future
C
Cyber Attacks, Cyber Crime and Cyber Security
D
Darknet – Hacking Tools, Hacker News & Cyber Security
Scott Helme
Scott Helme
Cyberwarzone
Cyberwarzone
C
CERT Recently Published Vulnerability Notes
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
P
Palo Alto Networks Blog
Google Online Security Blog
Google Online Security Blog
Security Archives - TechRepublic
Security Archives - TechRepublic
WordPress大学
WordPress大学
博客园 - 聂微东
L
LINUX DO - 最新话题
月光博客
月光博客
小众软件
小众软件
T
Troy Hunt's Blog
A
Arctic Wolf
量子位
I
Intezer
大猫的无限游戏
大猫的无限游戏
T
Tailwind CSS Blog
S
Schneier on Security
Schneier on Security
Schneier on Security
NISL@THU
NISL@THU
T
Threat Research - Cisco Blogs
TaoSecurity Blog
TaoSecurity Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
博客园_首页
有赞技术团队
有赞技术团队
N
News and Events Feed by Topic
美团技术团队
The Cloudflare Blog
P
Privacy International News Feed
S
Security Affairs
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
G
GRAHAM CLULEY
N
News | PayPal Newsroom
Apple Machine Learning Research
Apple Machine Learning Research
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
L
LINUX DO - 热门话题
V
Vulnerabilities – Threatpost
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
C
CXSECURITY Database RSS Feed - CXSecurity.com
宝玉的分享
宝玉的分享
Application and Cybersecurity Blog
Application and Cybersecurity Blog
IT之家
IT之家
Hacker News: Ask HN
Hacker News: Ask HN
雷峰网
雷峰网

BlogFinder

日常漫步 Vol.24 之漫步前山河 - 雅余 周报 #1-聊聊本周的收获 - Edwin's Blog 我的OpenCode必装插件与Skill Write Something 掌中之物未必在掌握之中 · CRIVU PiliNara,一个更顺手的 PiliPlus 分支 「NekoEcho」:做一个必有回响的猫娘主题博客 2026-05 书影音总结 简化博客主题 - 安迪 我第一次发布 npm 包 拾花小记#45:中考前的二三事 – 小改学习志 黛西花园5月游 #18 枇杷又熟了的五月月报 一些奇奇怪怪的需求?word仿方正书版的几个小操作 - Xiobb's Blog 0419 御温泉之旅 修复了一些bug,网站基本上趋于稳定了 - 新锐博客 又回到四十年前 如何定义成功 迷鹿屋2026已重新上线 科技冰火两重天+一周回顾 ${title} 热度退了,我反而用得更深了-咕咚同学 我到底该不该换个域名? 随身WIFI折腾记 - 安迪 博客撰写体验提升——hexo pro插件 为什么不用相机把屏幕上的接关密码拍下来? 国清寺与天台山 – Ouroboros ★★★★☆《挽救计划》——久违的经济上行感 - Davidの3号基地 删除右键“打开方式”里多余选项 第三周刊_No.53|一切都会被支付两次 安卓APP通话记录与录音上传踩坑记录 - 子舒的博客 天量下跌 inBox 笔记 2.3.8,把工具栏交给了你-咕咚同学 我把小龙虾搬到了微信-咕咚同学 安好 - 响石潭 Compound Engineering Plugin:让每个工程单元都比上一个更容易 MOSS-TTS Family:开源高质量语音与声音生成模型家族深度解析 Crawl4AI:专为 LLM 设计的开源 Web 爬虫与数据抓取工具 Build Your Own X:从零实现你最喜欢的技术——程序员进阶的终极资源清单 Anthropic Skills:用文件夹教 Claude 专业技能的开源框架 1年的去月球(下) - 梅之夏 欢迎回来。 简单讲讲 ASN.1 与 OID DTV - 直播聚合客户端 5.22-5.27 – 不兴江 还没去过鸭川 – 不兴江 张晶晶同学三刷林志颖 关于我 – 不兴江 爱与嫉妒 – 不兴江 港股被持续做空 备案码花了四百块-咕咚同学 一句话生成封面:我给公众号做了4种风格的AI封面生成技能 「官」方認證 再谈费曼学习法 2026-05-28T00:34:11+08:00 2026-05-28T00:28:45+08:00 离谱的英语学习指南:基于AI的英语进阶系统方法论 iii:零集成架构的后端统一运行时 Claude Code Harness:让 Claude Code 工作有迹可循的工程化框架 Heretic:全自动移除大语言模型审查机制的开源工具 MarkItDown:微软开源的万能文档转 Markdown 利器 Harness:让 Claude Code 秒变多智能体协作工厂 这段时间尽折腾AI Agent了,确实极大地提高了效率 近期动态:两个新站点正式上线啦 误判解除!zhouayuan.com 腾讯安全申诉成功 - 周阿源|玩具设计・插画日常・生活随笔 Ralph:让 AI 编码工具自主循环跑完所有 PRD 任务的量产神器 全都违法 – 个人工作记录 关于zhouayuan.com被误判 “含违规信息” 的说明与申诉记录 - 周阿源|玩具设计・插画日常・生活随笔 小米 MiMo v2.5 Pro 白嫖 最大的人间清醒,兜里有钱,但是不花。 夜晚靓歌(12):于文文现场solo - 王志勇的Blog 今日插画:风扬起的倔强 - 周阿源|玩具设计・插画日常・生活随笔 回门习俗 独立网卡 - 忘记了回忆 500亿入股人工智能企业 从命令行到桌面智能体-咕咚同学 第一性原理读书笔记 行者微评论223-加班の守株待兔-博客|政治与时事-风雨行者 ZOZO开源物理接触求解器:GPU加速的可扩展仿真引擎 OpenStock:开源股票市场交易平台技术深度解析 MoneyPrinterTurbo:基于AI的全自动短视频生成工具深度解析 Claude-Mem:为 Claude Code 构建的持久化记忆压缩系统 Twenty:可代码化定制的企业级开源 CRM 平台技术深度解析 2026-05-26T22:59:17+08:00 企业级开源大模型部署平台 GPUStack 实战教程 1年的去月球(上) - 梅之夏 Sevalla - 静态网站托管服务 不用翻墙、不用注册、不用月费,普通人也能用上 Claude Code 装修灯具要注意⚠️ 黄梅天先锋 - 游子微博 公安备案顺利办结,站点备案全部完成 - 周阿源|玩具设计・插画日常・生活随笔 第三次兑换天猫超市卡了宗宗酱-三维狐少儿编程 Don't think, feel. - Rolen's Blog 人这一辈子,到底图个什么 博客迁移 - Edwin's Blog 情感赛道写作模板 再现本轮行情的典型特征 裁员与平常心-咕咚同学 别让“偷懒”,成为隐私泄露的破绽 片刻 - Jdeal | Life is like a Design.
Elfeed 4.0.0 使用分享
Spike Leung · 2026-06-20 · via BlogFinder

Elfeed 是一個 Emacs 里的 RSS 閲讀器,關於 Elfeed 之前寫過一篇 在 Emacs 中用 Elfeed 阅读订阅流,那篇文章没怎麼展示 Elfeed 的使用,更多還是在分享一些工具函数。前陣子 Elfeed 也更新到了 4.0.0,新增了很多方便的功能,我最近也用的很多,所以再分享一下它的使用,或許你會想嘗試一下它。

為了更直觀了解,我录󠄃了個視頻,也可以看看:

有點囉嗦,推薦 1.5 倍速看。

視頻演示中的配置
(defconst *is-a-mac* (eq system-type 'darwin))

;;; 设置 mac 的快捷键
(when *is-a-mac*
  (setq mac-command-modifier 'meta
      mac-option-modifier 'super))

;;; 設置默認字體大小
(set-face-attribute 'default nil :height 250)

;;; 添加 package 的下載仓庫,melpa 上有更多的擴展
(require 'package)
(add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/") t)
(add-to-list 'package-unsigned-archives "melpa")

;;; 調整 elfeed 数据庫的目录󠄃位置
(setq elfeed-db-directory "~/Downloads/emacs-config/.elfeed")

;;; 添加訂閱流
(setq elfeed-feeds
      '(("https://taxodium.ink/rss.xml" :title "Taxodium"  emacs zine)
      ("https://kagi.com/api/v1/smallweb/feed/" :title "Kagi Small Web" )
      ("https://bf.zzxworld.com/feed.xml" :title "BlogFinder" :no-update t :fetch-link t feeds )))

;;; 設置 *elfeed-search* 頁面的時間格式,會影响分組的展示
(setq elfeed-search-separator-date-format "%Y-%m-%d")

;;; 設置默認的過濾条件
(setq-default elfeed-search-filter "@1weeks +unread")

;;; 拉取新条目時,將一個月前的自動標記為己讀
(add-hook 'elfeed-new-entry-hook
          (elfeed-make-tagger :before "1 months ago"
                              :remove 'unread))

;;; 閱讀時開啟 `olivetti-mode',讓內容居中展示
(defun spike-leung/preview-elfeed-with-olivetti ()
  "Preview elfeed with `olivetti-mode'."
  (olivetti-mode)
  (olivetti-set-width 80)
  (visual-line-mode))
(add-hook 'elfeed-show-mode-hook #'spike-leung/preview-elfeed-with-olivetti)

;; 增強自動補全
(use-package vertico
  :init
  (vertico-mode))

;; 允許補全關鍵字无序
(use-package orderless
  :custom
  ;; Configure a custom style dispatcher (see the Consult wiki)
  ;; (orderless-style-dispatchers '(+orderless-consult-dispatch orderless-affix-dispatch))
  ;; (orderless-component-separator #'orderless-escapable-split-on-space)
  (completion-styles '(orderless basic))
  (completion-category-overrides '((file (styles partial-completion))))
  (completion-category-defaults nil) ;; Disable defaults, use our settings
  (completion-pcm-leading-wildcard t)) ;; Emacs 31: partial-completion behaves like substring

;;; 讓補全顯示注解 (annotation)
(use-package marginalia
  ;; Bind `marginalia-cycle' locally in the minibuffer.  To make the binding
  ;; available in the *Completions* buffer, add it to the
  ;; `completion-list-mode-map'.
  :bind (:map minibuffer-local-map
              ("M-A" . marginalia-cycle))

  ;; The :init section is always executed.
  :init

  ;; Marginalia must be activated in the :init section of use-package such that
  ;; the mode gets enabled right away. Note that this forces loading the
  ;; package.
  (marginalia-mode))

(custom-set-variables
 ;; custom-set-variables was added by Custom.
 ;; If you edit it by hand, you could mess it up, so be careful.
 ;; Your init file should contain only one such instance.
 ;; If there is more than one, they won't work right.
 '(package-selected-packages '(elfeed marginalia olivetti orderless vertico)))
(custom-set-faces
 ;; custom-set-faces was added by Custom.
 ;; If you edit it by hand, you could mess it up, so be careful.
 ;; Your init file should contain only one such instance.
 ;; If there is more than one, they won't work right.
 )

安装

Elfeed 運行在 Emacs 中,關於 Emacs 的安装1 和使用這里就不贅述了,之前可以參考之前寫的 如何上手 Emacs。我想說的是,Emacs 安装和簡单使用并不難, Emacs 也有圖形界面,也可以通過鼠標完成大部分常用操作,不必看到 Emacs 就望而止步。不過請至少閲讀一遍 Emacs tutorial,下面的安装我會假設你己經讀過一遍了。

Elfeed 的安装參考 Elfeed 的 README,大致這几步:

  • 执行 M-x package-install ,輪入 elfeed 进行安装
  • 配置 Elfeed,可以寫在 ~/.emacs.d/init.el

    Emacs 的配置一般寫在 ~/.emacs.d/init.el ,取决於的操作系統路徑可能有差异。

    (setq elfeed-feeds
          '("https://taxodium.ink/rss.xml"
            "https://kagi.com/api/v1/smallweb/feed/"))
    
  • 执行 M-x load-file ,輪入 ~/.emacs.d/init.el ,讓 Emacs 加載 init.el 里的配置

這樣就安装好了,之後可以执行 M-x elfeed 打開 Elfeed 閲讀,执行 M-x elfeed-update 拉取訂閱流获取更新 (也可以在 Elfeed 的 buffer 按 G 触發)。

管理訂閱流

Elfeed 的訂閲流是在一個配置文件(例如 init.el )中配置的, 格式如下:

(setq elfeed-feeds
      '(("https://taxodium.ink/rss.xml" :title "Taxodium")
        ("https://protesilaos.com/master.xml" :title "Protesilaos" emacs)
        ("https://www.stefanjudis.com/rss.xml" :title "Stefan Judis" weekly frontend)
        ("https://bf.zzxworld.com/feed.xml" :title "BlogFinder" :no-update t :fetch-link t feeds blog)
        ("https://kagi.com/api/v1/smallweb/feed/" :title "Kagi Small Web" :no-update t :fetch-link t feeds blog)))

上面我添加了 5 条訂閱流,其中

  • :title 可以指定顯示的名称。
  • :no-update 可以讓訂閱流默認不更新,需要手動去触發更新。有的訂閲流更新太多太頻繁,就可以讓它們默認不更新,什麼時候想看再用 elfeed-update-feed 手動触發更新。

    更好的補全

    elfeed-update-feed 支持自動補全,但默認的補全不是很好用。建議安装 minad/verticooantolin/orderlessminad/marginalia 获得更好的補全。

  • :fetch-link 有的訂閲流只包含原文鏈接,設置 :fetch-link 可以自動拉取鏈接內容。
  • 剩下的 emacsweekly 等是標簽。 (添加標簽後,执行 M-x elfeed-apply-autotags-now 可以更新己有条目的標簽)

更多配置見 Elfeed 的 README

可以看到這就是一些有一定格式的文本,很容易編輯、搜索,所有用於文本的編輯技巧都能用上,例如多指針編輯、正則替換等,比許多圖形介面要方便的多。

如果後面想換一個閱讀器,可以执行 M-x elfeed-export-opml 將所有訂閱流导出。

閱讀

执行 M-x elfeed 就可以打開 Elfeed 閱讀,在 Elfeed 的 buffer 按 G (elfeed-update) 触發更新 (那些設置了 :no-update t 的訂閱流不會被触發)。

默認視圖是按月份分組的。

elfeed-search-month-view.webp
图1  elfeed 默認視圖,按月分組

我更傾向於按天分組,可以在 init.el 中添加配置,設置默認按天分組:

(setq elfeed-search-separator-date-format "%Y-%m-%d")
elfeed-search-date-view.webp
图2  elfeed 視圖,按天分組

按下 o (elfeed-search-cycle-order) 可以切換分組模式,默認在按日期分組和按訂閱流分組之間切換。

elfeed-search-feed-view.webp
图3  elfeed 視圖,按訂閱流分組

在条目上,按下 ENTER (elfeed-search-show-entry) 可以查看条目的文章內容,它是通過解析 XML 呈現的,不會加載 JS、CSS,只顯示 HTML 的內容,可以說很簡陋,但它也更干净,没有太多干擾。

elfeed-show.webp
图4  elfeed 閲讀視圖

在条目上按下:

  • b (elfeed-search-browse-url) 可以用默認瀏覧器打開条目。
  • r (elfeed-search-untag-all-unread) 可以標記己讀,
  • u (elfeed-search-untag-all-unread) 可以標記未讀。

更多可以參考 README,或者执行 M-x describe-mode 查看 elfeed-search-mode 的按鍵綁定。

elfeed-describe-mode.webp
图5  使用 describe-mode 後列出的 Elfeed 相關的快捷鍵

搜索過濾

在条目上按下:

  • @ 可以基於条目的日期過濾,例如条目的日期是 2026-06-01,按下後就只顯示 2026-06-01 往後的条目。
  • = 可以基於条目的訂閱流過濾,例如条目属於 taxodium.ink,按下後就只顯示属於 taxodium.ink 的条目。
  • ~ 可以排除条目的訂閱流,例如条目属於 taxodium.ink,按下後就不會顯示属於 taxodium.ink 的条目。

在 Elfeed 的 buffer (*elfeed-search*) 上,按下 s (elfeed-search-live-filter) 可以輸入過濾條件實時過濾,可以按照日期、訂閱流名称、条目名称、標簽 (支持自動補全) 過濾,也支持設置排除条件,具體語法可以參考 Filter Syntax

4.0.0 還增加了 Tree View,可以集中查看所有標簽,执行 M-x elfeed-tree 可以打開 Tree View 視圖。

elfeed-tree-view.webp
图6  Elfeed Tree View

Tree View 的結构和標簽的位置有關:

  • ("https://yhetil.org/emacs-devel/new.atom" emacs lists) emacs 會作為根節點,lists 是它下面的子節點。
  • ("https://yhetil.org/emacs-devel/new.atom" lists emacs) lists 會作為根節點,emacs 是它下面的子節點。

其它

  • 默認過濾条件
  • 將某個時間之前的条目自動標記己讀
  • 在手機上閱讀
  • 优化閱讀體驗

默認過濾条件

默認過濾条件是 @6months +unread ,即近 6 個月未讀的条目,但我只想看最近一周,可以修改 elfeed-search-filter

(setq-default elfeed-search-filter "@1weeks +unread")

過濾條件語法參考 Filter Syntax

將某個時間之前的条目自動標記己讀

新增訂閱流時,我可能只是想看作者的後續更新,有的訂閱流可能塞进了所有文章,就會一下子出現大量未讀条目。

我只想看最近一個月的,可以在拉取時讓 Elfeed 自動將一個月前的標記為己讀。

(add-hook 'elfeed-new-entry-hook
          (elfeed-make-tagger :before "1 months ago"
                              :remove 'unread))

更多見 Tag Hooks

优化閱讀體驗

我的顯示器比较寬,默認內容都在左側,閱讀起來不舒服。在閱讀時我會開啟󠄁 olivetti-mode 讓內容居中。

(defun spike-leung/preview-elfeed-with-olivetti ()
  "Preview elfeed with `olivetti-mode'."
  (olivetti-mode)
  (olivetti-set-width 80)
  (visual-line-mode))
(add-hook 'elfeed-show-mode-hook #'spike-leung/preview-elfeed-with-olivetti)
elfeed-show.webp
图7  elfeed 閲讀視圖
elfeed-show-olivetti.webp
图8  elfeed 閲讀視圖,開啟了 olivetti-mode
Webmentions (加载中...)

如果你想回应这篇文章,可以在你的文章或社交媒体帖子中链接这篇文章,然后提交你的 URL,你的回应随后会显示在此页面上。 (关于 Webmention)