OPML in FreshRSS

FreshRSS supports the OPML format to export and import lists of RSS/Atom feeds in a standard way, compatible with several other RSS aggregators.

However, FreshRSS also supports several additional features not covered by the basic OPML specification. Luckily, the OPML specification allows extensions:

An OPML file may contain elements and attributes not described on this page, only if those elements are defined in a namespace.

and:

OPML can also be extended by the addition of new values for the type attribute.

FreshRSS OPML extension

FreshRSS uses the XML namespace https://freshrss.org/opml to export/import extended information not covered by the basic OPML specification.

The list of the custom FreshRSS attributes can be seen in the source code, and here is an overview:

HTML+XPath or XML+XPath

ℹ️ XPath 1.0 is a standard query language, which FreshRSS supports to enable Web scraping.

The following attributes are using similar naming conventions than RSS-Bridge.

JSON+DotPath

JSON Feed

cURL

A number of cURL options are supported:

Miscellaneous

Dynamic OPML (reading lists)

Example

<?xml version="1.0" encoding="UTF-8"?>
<opml version="2.0">
	<head>
		<title>FreshRSS OPML extension example</title>
	</head>
	<body>
		<outline xmlns:frss="https://freshrss.org/opml"
			text="Example"
			type="HTML+XPath"
			xmlUrl="https://www.example.net/page.html"
			htmlUrl="https://www.example.net/page.html"
			description="Example of Web scraping"
			frss:xPathItem="//a[contains(@href, '/interesting/')]/ancestor::article"
			frss:xPathItemTitle="descendant::h2"
			frss:xPathItemContent="."
			frss:xPathItemUri="descendant::a[string-length(@href)&gt;0]/@href"
			frss:xPathItemThumbnail="descendant::img/@src"
			frss:cssFullContent="article"
			frss:filtersActionRead="intitle:⚡️ OR intitle:🔥&#10;something"
		/>
	</body>
</opml>