Proper ATOM feed Formatting
Planted 02020-12-19
Tips to generate a good feed.
The <id>
element an be defined by using the format
<id>tag:exampledomain.com,2020:uniqueidentifier</id>
For example I used
<id>tag:lukasmurdock.com,2020-12-19:/booklist/map-and-territory</id>
- Starts with
tag
- Followed by a
:
- Followed by an authority name of either a DNS name or an email address
- Followed by a
,
- Followed by
YYYY-MM-DD
, month and day are optional. This date is when the tag scheme was first used, not the date of the specific entry or item. - Followed by a
:
- Followed by any number of characters which are valid in a URI. Special characters may be escaped using percent encoding.
As I found out from How to ATOM id, w3 tag docs, and ID Element
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:webfeeds="http://webfeeds.org/rss/1.0">
<title>Lukas Murdock</title>
<link rel="alternate" type="text/html" href="https://lukasmurdock.com/"/>
<link rel="self" type="application/atom+xml" href="https://lukasmurdock.com/booklist.xml"/>
<id>https://lukasmurdock.com/</id>
<subtitle>This is the website of Lukas Murdock, designer, developer, and marketer helping you do work that matters for people who care.</subtitle>
<webfeeds:cover image="https://lukasmurdock.com/images/LM-portrait.jpg"/>
<webfeeds:icon>https://lukasmurdock.com/safari-pinned-tab.svg</webfeeds:icon>
<webfeeds:logo>https://lukasmurdock.com/safari-pinned-tab.svg</webfeeds:logo>
<webfeeds:accentColor>da532c</webfeeds:accentColor>
<webfeeds:related layout="card" target="browser"/>
<link href="https://lukasmurdock.com/feed.xml" rel="self" type="application/rss+xml"/>
<updated>2020-12-19T14:59:10+00:00</updated>
<author>
<name>Lukas Murdock</name>
<email>[email protected]</email>
<uri>https://lukasmurdock.com/</uri>
</author>
<generator>Jekyll v3.9.0</generator>
<entry>
<title>Map and Territory</title>
<id>tag:lukasmurdock.com,2020-12-19:/booklist/map-and-territory</id>
<updated>2020-12-19T00:00:00+00:00</updated>
<content type="html" xml:lang="en" xml:base="https://lukasmurdock.com/">
<![CDATA[ <h1>Map and Territory</h1><h2>Rationality: From AI to Zombies Book 1</h2><p>By Eliezer Yudkowsky</p><a href="https://lukasmurdock.com/booklist/"><img alt="Map and Territory" src="https://lukasmurdock.com/images/books/map-and-territory.jpeg" /></a> ]]>
</content>
<category term="Books"/>
<published>2020-12-19T00:00:00+00:00</published>
</entry>
</feed>
And here it is with Liquid in Jekyll for my booklist.yaml
file
<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:webfeeds="http://webfeeds.org/rss/1.0">
<title>{{ site.title | xml_escape }}</title>
<link rel="alternate" type="text/html" href="https://lukasmurdock.com/"/>
<link rel="self" type="application/atom+xml" href="https://lukasmurdock.com/booklist.xml"/>
<id>https://lukasmurdock.com/</id>
<subtitle>{{ site.description | xml_escape }}</subtitle>
<webfeeds:cover image="https://lukasmurdock.com/images/LM-portrait.jpg" />
<webfeeds:icon>https://lukasmurdock.com/safari-pinned-tab.svg</webfeeds:icon>
<webfeeds:logo>https://lukasmurdock.com/safari-pinned-tab.svg</webfeeds:logo>
<webfeeds:accentColor>da532c</webfeeds:accentColor>
<webfeeds:related layout="card" target="browser"/>
<link href="{{ "/feed.xml" | prepend: site.baseurl | prepend: site.url }}" rel="self" type="application/rss+xml"/>
<updated>{{ site.time | date_to_xmlschema }}</updated>
<author>
<name>Lukas Murdock</name>
<email>[email protected]</email>
<uri>https://lukasmurdock.com/</uri>
</author>
<generator>Jekyll v{{ jekyll.version }}</generator>
{% assign sorted = site.data.booklistRead.isbns | sort: 'dateRead' | reverse %}
{% for book in site.data.booklistRead.isbns %}
<entry>
<title>{{ book.title | xml_escape }}</title>
<id>tag:lukasmurdock.com,2020-12-19:/booklist/{{ book.title | slugify }}</id>
<updated>{{ book.dateRead | date_to_xmlschema }}</updated>
<content type="html" xml:lang="en" xml:base="https://lukasmurdock.com/">
<![CDATA[<h2>{{ book.title | strip_html | escape }}</h2><h3>{{ book.subtitle | strip_html | escape }}</h3><p>By {{ book.author | join: ", " | strip_html | escape }}</p><a href="https://lukasmurdock.com/booklist/"><img alt="{{ book.title }}" src="https://lukasmurdock.com{{ book.image }}" /></a>]]>
</content>
<category term="Books"/>
<published>{{ book.dateRead | date_to_xmlschema }}</published>
</entry>
{% endfor %}
</feed>