Elfeed Curate Update: Two new features

1 hour ago 1

Die-hard Emacs users (myself included) happily spend an inordinate amount of time tweaking their configurations in order to personalize their look-and-feel, or more importantly, streamline their workflows. The elimination of even a few keystrokes can significantly reduce the time spent completing a task. Whether it's a keyboard macro, a newly discovered package, or custom elisp code, the time savings - and the sense of accomplishment - make the tinkering worthwhile.

I started using elfeed-curate (see Introducing elfeed-curate) regularly a couple of years ago. In the recent v0.3.0 release, I added two time-saving features: annotation link creation - for those who publish curated link content - and ask gptel, which may appeal to most elfeed RSS users.

Annotation Link Creation

One curation feature that I often use is the ability to override the feed link with a custom link. This link most often originates from the original feed post. This is done by adding an org-mode link and other text between two brackets, <Org-Link ...>, into the annotation buffer. It has always been time consuming and error prone to do this manually.

The new function elfeed-curate-get-link (j key) solves the most annoying part of the workflow. Normally, I have to open a link in a Browser and create an org-mode link (I use the Chrome Create Link plugin for this) and then paste it back into the annotation buffer.

The elfeed-curate-get-link function takes the link under point in the entry buffer, creates the org-mode link from it, and inserts it as part of an annotation template: <Org-Link (author) =comment=>. The org-mode link is also added to the kill ring in case you want to add it to an org-mode file.

Usage and Configuration

M-x elfeed-curate-get-link RET

(define-key elfeed-show-mode-map "j" #'elfeed-curate-get-link)

This may seem like a small thing, but it greatly improves the speed and enjoyment of my curation workflow.

Ask gptel (experimental)

As everyone knows, LLMs are eating the world! I've been using the amazing gptel package for a while and have been spoiled by its seamless integration into Emacs.

I wanted to ask an LLM about the content of links in my RSS feed. Because many feeds truncate articles while others are too long to read, I built custom integration between elfeed and gptel to handle both cases.

Also, if you ask an LLM to get the contents from a URL, it responds:

I can't fetch URLs from here. Please paste the page content, or run one of these and share the output, and I'll summarize it:

This necessitated implementing a function to fetch the content from the link URL and convert it to text for inclusion in the prompt request.

elfeed-curate-ask-gptel (i key) will first ask you to enter a prompt (see elfeed-curate-gptel-prompt--default = "Briefly summarize:") and then send a request to an LLM (see the gptel-request API) with the prompt text along with the link content. The response will be displayed in the *ask-gptel* buffer and added to the kill ring. The gptel backends and models are configured separately and can be changed as desired.

Usage and Configuration

M-x elfeed-curate-ask-gptel RET

(define-key elfeed-search-mode-map "i" #'elfeed-curate-ask-gptel)
(define-key elfeed-show-mode-map "i" #'elfeed-curate-ask-gptel)

*ask-gptel* Buffer example

The reasons I consider ask-gptel experimental are:

  1. Testing ask-gptel was mostly done with only one LLM: ChatGPT:gpt-5. Other backends and models may not function properly and changes may be needed for broader support.
  2. Extraction of the URL content is a work in progress. I've already seen that some URLs do not work at all, but I haven't had time to investigate the root causes. Also, I think the extracted content sent to the LLM can be improved to be more concise which will reduce the token count (and cost) and increase upload speed.
  3. Besides CliffNotes-like functionality, I'm not really sure what other RSS reader use cases there might be for LLM integration. This is currently a "hammer looking for a nail", so it may not end up going anywhere.

Feedback Welcome

Please do not hesitate to report bugs and suggestions. Thanks and enjoy!

This entry was posted in Emacs. Bookmark the permalink.

Read Entire Article