CheckMyFeed

Checks a podcast feed (a raw XML string) against RSS 2.0 and the Apple Podcasts requirements, and reports what falls short. Every rule has an id, a severity (:error, :warning or :info), an explanation and a link to the specification it comes from.

The library never fetches anything and never fixes up the feed before looking at it: what it sees is exactly what a podcast app would get. It only checks what the feed text itself shows, so it does not download artwork or media to verify pixel sizes, file types or loudness.

Installation

def deps do
[
{:check_my_feed, "~> 0.1.0"}
]
end

Usage

{:ok, report} = CheckMyFeed.check(xml)
for finding <- report.findings do
IO.puts("[#{finding.severity}] #{finding.rule_id}: #{finding.detail}")
end
# rules that were checked and passed
Enum.map(report.passed, & &1.id)

CheckMyFeed.check/1 returns {:error, {:invalid_xml, reason}} if the document cannot be parsed at all.

License

AGPL-3.0-or-later, see LICENSE.