generate-feed
Generate rss/atom/json feeds from a simple, scalable and standard blog index format.
Usage
$ tree log-folder/
log-folder/
├── 2016.json
├── 2017.json
├── 2018.json
└── config.json
$ generate-feed log-folder --dest build-folder # generates a json and atom feed file from the
$ tree build-folder/
build-folder/
├── 2016.json
├── 2016.xml
├── 2017.json
├── 2017.xml
├── feed.json
└── feed.xml
CLI
$ generate-feed --help
Usage: generate-feed [source] [options]
Example: generate-feed source/ -b build/
source path to source directory (default: log)
--dest, -b path to build directory (default: "build")
--version, -v show version information
--help, -h show help
Config
The log folder is required to have a config.json
file.
Required + recommended options:
{
"title": "Feeds need a title!",
"url": "https://thesiteurl.com",
"description": "Explain what this feed is for",
"author": "Your Name <your@email.com> (https://yourPersonalWebsite.com)"
}
Additional configuration properties:
{
"user_comment": "A comment viewers of the raw feed should see",
"icon": "https://examaple.com/pic512x512.png",
"favicon": "https://examaple.com/pic64x64.png",
"expired": false
}
Log types
All log entries must have a type field, to specify how it is processed. Any fields missing a log field are processed as a Log
entry.
Log files should be alphanumerical so they sort from oldest to latest.
$ tree log-folder
log-folder/
├── 2016.json
├── 2017.json
├── 2018.json
└── config.json
The log json should be a single array with typed objects ascending (oldest at the top, newest at the bottom).
[
{
date: "2018-04-07T15:06:43-07:00"
},
{
date: "2018-04-08T15:06:43-07:00"
},
{
date: "2018-04-09T15:06:43-07:00"
}
]
Log
All fields are optional. These are recommended:
{
"date": "2018-04-07T15:06:43-07:00",
"content": "Plain text or HTML",
"title": "Optional title",
"url": "/some/url"
}
Additional properties:
{
"modified": "2018-04-07T13:48:02-07:00",
"link": "https://example.com/some/external/link",
"image": "/some/optional/image/url",
"banner_image": "/some/optional/image/url",
"author": "Some Author <email@gmail.com> (https://example.com/some/external/link)",
"summary": "you can include a summary",
"tags": [ "any", "tags" ],
"attachments": [
{
"url": "https://example.com",
"mime_type": "audio/mpeg",
"title": "foo a title",
"size_in_bytes": 123,
"duration_in_seconds": 123
}
]
}
Markdown
Example markdown log example
{
"content": "Websockets",
"type": "md",
"date": "2019-10-29T18:50:05.140Z",
"path": "../projects/websockets/README.md",
"url": "https://bret.io/projects/websockets/"
}
References
- jsonfeed.org
- validator.jsonfeed.org
- twitter.com/jsonfeed
- http://atomenabled.org
- bcomnes/jsonfeed-to-atom
- json-feed-viewer.herokuapp.com