• Stars
    star
    810
  • Rank 54,006 (Top 2 %)
  • Language
    Ruby
  • License
    MIT License
  • Created almost 9 years ago
  • Updated 3 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

📝 A Jekyll plugin to generate an Atom (RSS-like) feed of your Jekyll posts

Jekyll Feed plugin

A Jekyll plugin to generate an Atom (RSS-like) feed of your Jekyll posts

Continuous Integration Gem Version

Installation

Add this line to your site's Gemfile:

gem 'jekyll-feed'

And then add this line to your site's _config.yml:

plugins:
  - jekyll-feed

⚠️ If you are using Jekyll < 3.5.0 use the gems key instead of plugins.

Usage

The plugin will automatically generate an Atom feed at /feed.xml.

Optional configuration options

The plugin will automatically use any of the following configuration variables, if they are present in your site's _config.yml file.

  • title or name - The title of the site, e.g., "My awesome site"
  • description - A longer description of what your site is about, e.g., "Where I blog about Jekyll and other awesome things"
  • url - The URL to your site, e.g., https://example.com. If none is provided, the plugin will try to use site.github.url.
  • author - Global author information (see below)

Already have a feed path?

Do you already have an existing feed someplace other than /feed.xml, but are on a host like GitHub Pages that doesn't support machine-friendly redirects? If you simply swap out jekyll-feed for your existing template, your existing subscribers won't continue to get updates. Instead, you can specify a non-default path via your site's config.

feed:
  path: /blog/feed.atom

To note, you shouldn't have to do this unless you already have a feed you're using, and you can't or wish not to redirect existing subscribers.

Optional front matter

The plugin will use the following post metadata, automatically generated by Jekyll, which you can override via a post's YAML front matter:

  • date
  • title
  • excerpt
  • id
  • category
  • tags

Additionally, the plugin will use the following values, if present in a post's YAML front matter:

  • image - URL of an image that is representative of the post (can also be passed as image.path)

  • author - The author of the post, e.g., "Dr. Jekyll". If none is given, feed readers will look to the feed author as defined in _config.yml. Like the feed author, this can also be an object or a reference to an author in _data/authors.yml (see below).

  • description - A short description of the post.

Author information

TL;DR: In most cases, put author: [your name] in the document's front matter, for sites with multiple authors. If you need something more complicated, read on.

There are several ways to convey author-specific information. Author information is found in the following order of priority:

  1. An author object, in the document's front matter, e.g.:
author:
  twitter: benbalter
  1. An author object, in the site's _config.yml, e.g.:
author:
  twitter: benbalter
  1. site.data.authors[author], if an author is specified in the document's front matter, and a corresponding key exists in site.data.authors. E.g., you have the following in the document's front matter:
author: benbalter

And you have the following in _data/authors.yml:

benbalter:
  picture: /img/benbalter.png
  twitter: jekyllrb

potus:
  picture: /img/potus.png
  twitter: whitehouse

In the above example, the author benbalter's Twitter handle will be resolved to @jekyllrb. This allows you to centralize author information in a single _data/authors file for site with many authors that require more than just the author's username.

Pro-tip: If authors is present in the document's front matter as an array (and author is not), the plugin will use the first author listed.

  1. An author in the document's front matter (the simplest way), e.g.:
author: benbalter
  1. An author in the site's _config.yml, e.g.:
author: benbalter

Meta tags

The plugin exposes a helper tag to expose the appropriate meta tags to support automated discovery of your feed. Simply place {% feed_meta %} someplace in your template's <head> section, to output the necessary metadata.

SmartyPants

The plugin uses Jekyll's smartify filter for processing the site title and post titles. This will translate plain ASCII punctuation into "smart" typographic punctuation. This will not render or strip any Markdown you may be using in a title.

Jekyll's smartify filter uses kramdown as a processor. Accordingly, if you do not want "smart" typographic punctuation, disabling them in kramdown in your _config.yml will disable them in your feed. For example:

kramdown:
  smart_quotes:               apos,apos,quot,quot
  typographic_symbols:        {hellip: ...}

Custom styling

Want to style what your feed looks like in the browser? When a XSLT Styleheet file named feed.xslt.xml exists at the root of your repository, a link to this stylesheet is added to the generated feed.

Why Atom, and not RSS?

Great question. In short, Atom is a better format. Think of it like RSS 3.0. For more information, see this discussion on why we chose Atom over RSS 2.0.

Categories

Jekyll Feed can generate feeds for each category. Simply define which categories you'd like feeds for in your config:

feed:
  categories:
    - news
    - updates

Posts limit

By default the plugin limits the number of posts in the feed to 10. Simply define a new limit in your config:

feed:
  posts_limit: 20

Collections

Jekyll Feed can generate feeds for collections other than the Posts collection. This works best for chronological collections (e.g., collections with dates in the filenames). Simply define which collections you'd like feeds for in your config:

feed:
  collections:
    - changes

By default, collection feeds will be outputted to /feed/<COLLECTION>.xml. If you'd like to customize the output path, specify a collection's custom path as follows:

feed:
  collections:
    changes:
      path: "/changes.atom"

Finally, collections can also have category feeds that are outputted as /feed/<COLLECTION>/<CATEGORY>.xml. Specify categories like so:

feed:
  collections:
    changes:
      path: "/changes.atom"
      categories:
        - news
        - updates

Excerpt Only flag

Optional flag excerpt_only allows you to exclude post content from the Atom feed. Default value is false for backward compatibility.

When in config.yml is true then all posts in feed will be without <content> tags.

feed:
  excerpt_only: true

The same flag can be used directly in post file. It will disable <content> tag for selected post. Settings in post file have higher priority than in config file.

Tags

To automatically generate feeds for each tag you apply to your posts you can add a tags setting to your config:

feed:
  tags: true

If there are tags you don't want included in this auto generation you can exclude them

feed:
  tags:
    except:
      - tag-to-exclude
      - another-tag

If you wish to change the location of these auto generated feeds (/feed/by_tag/<TAG>.xml by default) you can provide an alternative folder for them to live in.

feed:
  tags:
    path: "alternative/path/for/tags/feeds/"

If you only want to generate feeds for a few tags you can also set this.

feed:
  tags:
    only:
      - tag-to-include
      - another-tag

Note that if you include a tag that is excluded a feed will not be generated for it.

Skip development

Use disable_in_development: true if you want to turn off feed generation when jekyll.environment == "development", but don't want to remove the plugin (so you don't accidentally commit the removal). Default value is false.

feed:
  disable_in_development: true

Contributing

  1. Fork it (https://github.com/jekyll/jekyll-feed/fork)
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create a new Pull Request

More Repositories

1

jekyll

🌐 Jekyll is a blog-aware static site generator in Ruby
Ruby
48,088
star
2

minima

Minima is a one-size-fits-all Jekyll theme for writers.
SCSS
3,238
star
3

jekyll-admin

A Jekyll plugin that provides users with a traditional CMS-style graphical interface to author content and administer Jekyll sites.
JavaScript
2,799
star
4

jekyll-seo-tag

A Jekyll plugin to add metadata tags for search engines and social networks to better index and display your site's content.
Ruby
1,594
star
5

jekyll-sitemap

Jekyll plugin to silently generate a sitemaps.org compliant sitemap for your Jekyll site
Ruby
932
star
6

jekyll-redirect-from

🔀 Seamlessly specify multiple redirections URLs for your pages and posts.
Ruby
770
star
7

jekyll-compose

📝 Streamline your writing in Jekyll with these commands.
Ruby
651
star
8

classifier-reborn

A general classifier module to allow Bayesian and other types of classifications. A fork of cardmagic/classifier.
Ruby
544
star
9

jemoji

GitHub-flavored emoji plugin for Jekyll
Ruby
544
star
10

jekyll-import

📥 The "jekyll import" command for importing from various blogs to Jekyll format.
Ruby
503
star
11

jekyll-archives

📚 Archive pages for your Jekyll tags and categories.
Ruby
433
star
12

github-metadata

Jekyll plugin to propagate the `site.github` namespace and set default values for use with GitHub Pages.
Ruby
270
star
13

jekyll-gist

📃 Liquid tag for displaying GitHub Gists in Jekyll sites.
Ruby
262
star
14

jekyll-mentions

👥 @mention support for your Jekyll site
Ruby
197
star
15

jekyll-sass-converter

A Sass converter for Jekyll.
Ruby
181
star
16

mercenary

An easier way to build your command-line scripts in Ruby.
Ruby
149
star
17

jekyll-help

NO LONGER MAINTAINED. USE JEKYLL TALK INSTEAD.
147
star
18

jekyll-paginate

NO LONGER UNDER ACTIVE DEVELOPMENT as of Jekyll 3: Pagination Generator for Jekyll
Ruby
109
star
19

jekyll-watch

👀 Rebuild your Jekyll site when a file changes with the `--watch` switch.
Ruby
92
star
20

jekyll-avatar

A Jekyll plugin for rendering GitHub avatars
Ruby
89
star
21

jekyll-coffeescript

A CoffeeScript converter for Jekyll.
Ruby
50
star
22

brand

Logo files for Jekyll.
40
star
23

dashboard

A dashboard for at-a-glance knowledge of the health of the Jekyll ecosystem.
Go
38
star
24

example

Jekyll example Project site. Do not clone.
CSS
38
star
25

jekyll-docs

Offline usage documentation for Jekyll. Requires Jekyll 3 and above.
Ruby
37
star
26

jekyll-opal

Let Jekyll convert your Ruby into JavaScript using Opal
Ruby
36
star
27

jekyll-commonmark

CommonMark generator for Jekyll
Ruby
33
star
28

directory

Plugins and Themes discovery for Jekyll, built with Jekyll.
SCSS
32
star
29

atom-jekyll

An editor built on top of a web browser? How 'bout some static site previewing?
26
star
30

jekyll-textile-converter

Textile converter for Jekyll.
Ruby
19
star
31

Utterson

CI benchmarking suite for Jekyll
Shell
14
star
32

dns

DNS records for Jekyll properties. Uses octodns to sync.
Shell
13
star
33

hyde

Our Campfire Hubot. Helps us maintain Jekyll even better. ❤️
CoffeeScript
13
star
34

benchmarking

Benchmarking tools for Jekyll
Shell
12
star
35

hubot-pr-status

Determine the status of a given pull request on GitHub.
CoffeeScript
9
star
36

jekyllbot

The code that runs @jekyllbot
Go
8
star
37

acceptance

Daily acceptance tests for Jekyll. Builds 10 complex websites.
Shell
8
star
38

themes-site

A list of third-party themes.
8
star
39

teams

The code behind teams.jekyllrb.com
HTML
7
star
40

screencast

A collection of Jekyll screencast ideas.
7
star
41

rubocop-jekyll

A RuboCop extension to enforce common code style in Jekyll and Jekyll plugins
Ruby
7
star
42

jekyll-test

Testing helpers for Jekyll.
Ruby
6
star
43

test-site

A very, very simple, barebones test site for Jekyll.
CSS
6
star
44

omnibus-jekyll

NOT UNDER ACTIVE DEVELOPMENT: Build standalone installers for Jekyll & its dependencies.
Ruby
6
star
45

jekyll-test-gem-plugin

Wouldn't it be cool if you could ship Jekyll plugins as gems?
Ruby
5
star
46

mojobot

The #jekyll IRC bot.
CoffeeScript
4
star
47

cases

Test cases to aid in exploring bugs with Jekyll.
CSS
4
star
48

jekyll-test-plugin-malicious

A MALICIOUS I WILL EAT ALL YOUR CODE plugin. Use at your own risk.
Ruby
4
star
49

common-theme

HTML
3
star
50

carbon-copy-content

Clone these files from here to other repos using probot.
3
star
51

jekyll-test-theme-malicious

A malicious theme for Jekyll (for testing)
Ruby
3
star
52

.github

Jekyll organization github metadata
2
star
53

profiling

Profiling the build time of various types of sites.
Shell
2
star