AI-powered article summarization for elfeed, using gptel.
Mark articles in the elfeed search buffer, press S, and get
concise summaries in a dedicated Org buffer — powered by any LLM
backend that gptel supports (Claude, ChatGPT, Gemini, Ollama, etc.).
- Mark/unmark individual entries with
m/u(or unmark all withU) - Summarize multiple articles in one shot, asynchronously
- Output is a clean Org buffer with one heading per article, including feed name, date, and URL as properties
- Full gptel integration: configure model, backend, temperature,
system prompt and more via
ginside the menu - The
Elfeed-AIdirective is registered in gptel’s directive list so it appears alongside your other directives - Summaries are filled/reflowed with
fill-regionfor readable output - Summarizes the RSS/Atom feed content as stored by elfeed — no live web crawling; works best with feeds that include full article text
(use-package elfeed-ai
:ensure t
:hook (elfeed-search-mode . elfeed-ai-mode))(use-package elfeed-ai
:straight (:host github :repo "danielfleischer/elfeed-ai")
:hook (elfeed-search-mode . elfeed-ai-mode))
;; Example specifying the version-control backend explicitly
(use-package elfeed-ai
:vc (elfeed-ai :url "https://github.com/danielfleischer/elfeed-ai")
:hook (elfeed-search-mode . elfeed-ai-mode))Clone the repo, add it to your load-path, then:
(require 'elfeed-ai)
(add-hook 'elfeed-search-mode-hook #'elfeed-ai-mode)- Open elfeed with
M-x elfeed - Navigate to entries and press
mto mark them for summarization (thesummarizetag appears on each marked entry) - Press
Sto open the elfeed-ai menu - Optionally press
gto open the full gptel menu and configure the model, backend, system prompt, temperature, etc. - Press
sto summarize — results appear asynchronously in*elfeed-ai*
These are active when elfeed-ai-mode is enabled:
| Key | Command | Description |
|---|---|---|
m | elfeed-ai-mark | Mark entry for summarization |
u | elfeed-ai-unmark | Unmark entry |
U | elfeed-ai-unmark-all | Unmark all entries in current search |
S | elfeed-ai-menu | Open the summarization transient |
s | elfeed-ai-summarize | (inside menu) Run summarization |
g | gptel-menu | (inside menu) Configure gptel |
(setq elfeed-ai-system-prompt
"Summarize this article in 3 bullet points. Be concise.")(setq elfeed-ai-buffer-name "*my-summaries*")Configure gptel as usual. To use a specific model for elfeed-ai, set
it via the gptel menu (S → g) before summarizing — the choice is
reflected in the #+MODEL: header of the output buffer.
GPLv3. See ./LICENSE or the header of elfeed-ai.el.

