~taingram/org-publish-rss

Automatically generate RSS feeds for org-publish projects
Add function for creating file GUIDs
Update README to recommend using org-publish-current-project
Remove "auto" from package name, shorten all funcs and variables

refs

master
browse  log 

clone

read-only
https://git.sr.ht/~taingram/org-publish-rss
read/write
git@git.sr.ht:~taingram/org-publish-rss

You can also use your local clone with git send-email.

#+TITLE: Org Publish RSS

Quickly add RSS feeds to org-publish projects.

This works similar to the :auto-sitemap publishing option.

* Setup
To use org-publish-rss.el you must add the configuration options
to your org-publish-project-alist settings.  The minimum required
options are:

- :auto-rss :: (t/nil) Enables RSS feed generation.

- :rss-title :: Channel title of the RSS feed.  If blank will fall
  back to :sitemap-title.

- :rss-description :: Channel description of the RSS feed.

- :rss-link :: The URL to the website corresponding to the RSS
  channel.  Will use :html-link-home if blank.

For complete list of options see the Commentary section of
[[file:org-publish-rss.el]].

** Running

M-x org-publish-rss [RET] PROJECT

You may get a cache error, retry this after recently publishing the
corresponding project.

Verify that the generated urls for the articles' `<link>' tags are correct. If
not, adjust the `:rss-root-url' property.

** Run Automatically when Publishing

You can run this automatically by adding org-publish-rss as a
:completion-function which will run after any publishing action for
that project.  This is the final publishing step so uploading the RSS
file will need to be handled by a separate project, see example project.

** Example Project
#+begin_src emacs-lisp
  (setq org-publish-project-alist
	'(("blog"
	   :base-directory "~/Documents/org/website/"
	   :base-extension "org"
	   :publishing-directory "~/public_html/"
	   :publishing-function  org-html-publish-to-html

	   :html-link-home "https://example.com"

	   :auto-rss t
	   :rss-title "Example Posts"
	   :rss-description "My example website."

	   :completion-function org-publish-rss
	  ("static"
	   :base-directory "~/Documents/org/website/"
	   :base-extension "css\\|jpg\\|png\||gif"
	   :include ("rss.xml")
	   :publishing-directory "~/public_html/"
	   :publishing-function org-publish-attachment)
	  ("example.com" :components ("blog" "static"))))
#+end_src

*Note*: When publishing a file you can ensure all related projects are
also published by using: ~org-publish-current-project~ (C-c C-e P p).

* Why not use ox-rss.el?
Using an Org exporter adds an additional export steps and
configuration that is unnecessary for a basic project.

Org project --> Generate Org sitemap --> Export sitemap to RSS

Org project --> RSS feed

Ox-rss.el is still a great solution if you want to convert one
monolithic Org file into an RSS feed.  If you are interested in using
ox-rss with org-publish see the [[https://writepermission.com/org-blogging-rss-feed.html][clever solution provided by Toon
Claes]].

* Outstanding Development Goals

** TODO Optionally generate GUID tags
** TODO Add global customization variables
** TODO Add ability to export with full HTML post content

* License GPLv3

See LICENSE file.

#+begin_quote
This file is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 3, or (at your option)
any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

For a full copy of the GNU General Public License
see <http://www.gnu.org/licenses/>.
#+end_quote
Do not follow this link