+(defun my-org-rss-publish-to-rss (plist filename pub-dir)
+ "Publish RSS with PLIST, only when FILENAME is 'rss.org'.
+PUB-DIR is when the output will be placed."
+ (if (equal "rss.org" (file-name-nondirectory filename))
+ (org-rss-publish-to-rss plist filename pub-dir)))
+
+(defun my-format-rss-feed (title list)
+ "Generate RSS feed, as a string.
+TITLE is the title of the RSS feed. LIST is an internal
+representation for the files to include, as returned by
+`org-list-to-lisp'. PROJECT is the current project."
+ (concat "#+OPTIONS: ^:nil\n" ; do not use underscores as subscript
+ "#+TITLE: " title "\n\n"
+ (org-list-to-subtree list 0)))
+
+(defun my-format-rss-feed-entry (entry style project)
+ "Format ENTRY for the RSS feed.
+ENTRY is a file name. STYLE is either 'list' or 'tree'.
+PROJECT is the current project."
+ (cond ((not (directory-name-p entry))
+ (let* ((file (org-publish--expand-file-name entry project))
+ (title (org-publish-find-title entry project))
+ (date (format-time-string "%Y-%m-%d" (org-publish-find-date entry project)))
+ (link (concat my-blog-target-url (file-name-sans-extension entry) ".html")))
+ (with-temp-buffer
+ (org-mode)
+ (insert (format "* [[file:%s][%s]]\n" file title))
+ (org-set-property "RSS_PERMALINK" link)
+ (org-set-property "PUBDATE" date)
+ (insert-file-contents file)
+ (buffer-string))))
+ ((eq style 'tree)
+ ;; Return only last subdir.
+ (file-name-nondirectory (directory-file-name entry)))
+ (t entry)))
+
+