Elfeed

Table of Contents

1. Description

Elfeed is an Emacs web feeds client.

2. Feeds and filters template

(use-package elfeed
  :custom
  (elfeed-feeds
   '(
     ("https://example.org/rss" tag1 tag2) ; COMMENT
     ))
  :config
  (add-hook 'elfeed-new-entry-hook
            (elfeed-make-tagger :before "2 weeks ago"
                                :remove 'unread))
  ;; (regexp-opt '("firefox" "mozilla" "manifest" "ublock"))
  (add-hook 'elfeed-new-entry-hook
            (elfeed-make-tagger :entry-title "\\(?:firefox\\|m\\(?:anifest\\|ozilla\\)\\|ublock\\)"
                                :add 'firefox)))

3. How to use Elfeed score

elfeed-score brings Gnus-style scoring to Elfeed

Info: info elfeed-score Website: https://www.unwoundstack.com/doc/elfeed-score/curr

This will set the score of every articles from Feed Author to +10 in the feed titled Feed Title with tag1 as tag and reduce by -10 every other articles within that feed, mark 0 will set the score of every non-matching articles to 0.

(("authors"
  (:text "Feed Author" :value 10 :type W :tags (t tag1) :feeds (t . (t S "Feed Title"))))
 ("feed"
  (:text "Feed Title" :value -10 :type S :tags (t tag1) :attr t))
 (mark 0))

Find the score of an entry with M-x elfeed-score-get-score

  1. Run M-x elfeed-score-load-score-file RET ~/path/to/efleed.score to refresh the rules
  2. Check if the selected entries are matching something M-x elfeed-score-explain
  3. To set the score value on selected entries M-x elfeed-score-score

3.1. Elfeed score file template

;; #+begin_src emacs-lisp :tangle ~/.emacs.d/elfeed.score
(("authors"
  (:text "ARTICLE_AUTHOR_CASE_SENSITIVE_SUBSTRING" :value 10 :type S :feeds (t . (t S "FEED_TITLE_CASE_SENSITIVE_SUBSTRING"))))
 ("feed"
  (:text "FEED_TITLE_CASE_SENSITIVE_WORD" :value 5 :type W :tags (t TAG) :attr t :comment "Add 5 points to feeds tagged TAG and title that contains WORD")
  (:text "FEED_URL_SUBSTRING" :value 20 :type s :tags (t TAG_1 TAG_2) :attr u)
 ("link"
  (:text "\\(ARTICLE_LINK_REGEXP\\|ARTICLE_LINK_REGEXP\\)" :value -10 :type r :tags (t TAG) :feeds (t . (t s "FEED_TITLE_SUBSTRING"))))
 ("tag"
  (:tags (nil . TAG) :value -5 :comment "Remove 5 points from entries not tagged TAG")
  (:tags (t . TAG) :value 10 :comment "Add 10 points for entries tagged TAG"))
 ("title"
  (:text "ARTICLE_TITLE_WORD" :value -5 :type w :tags (nil TAG) :comment "Remove 5 points from entries not tagged TAG and title containing WORD")
  (:text "ARTICLE_TITLE_REGEXP" :value 10 :type r :tags (t TAG_1 TAG_2) :feeds (t . (u R "FEED_URL_CASE_SENSITIVE_REGEXP")))
  (:text "ARTICLE_TITLE_CASE_SENSITIVE_SUBSTRING" :value 10 :type S :tags (t TAG) :feeds (t . (t W "FEED_TITLE_CASE_SENSITIVE_WORD"))))
 ("content"
  :text "ARTICLE_CONTENT_CASE_SENSITIVE_REGEXP" :value -5 :type R :feeds (t . (u r "FEED_URL_REGEXP")))
 ("title-or-content"
  (:text "ARTICLE_TITLE_OR_CONTENT_REGEXP" :title-value 50 :content-value 45 :type r :tags (t TAG) :feeds (t . ((t S "FEED_URL_CASE_SENSITIVE_SUBSTRING")))))
 (mark 0))

3.2. :attr

Determines the attribute of the feed against which this rule’s text will be matched.

Symbol Description
a Author
t Title
u URL

3.3. :type

Symbol Description
s case-insensitive substring match
S case-sensitive substring match
r case-insensitive regexp match
R case-sensitive regexp match
w case-insensitive whole word match
W case-sensitive whole word match

3.4. :feeds

(boolean . ((attr match-type match-text)...))

4. References

lun. 13 juillet 2026

Generated with Emacs 30.1 (Org mode 9.7.11)