Skip to content

Platform Method ​

The Platform method generates feed URLs for known platforms using URL pattern matching. Most handlers work from the URL alone by recognizing URL structures specific to each platform. Some also read the page content or response headers to detect self-hosted instances or to extract an ID.

How It Works ​

The Platform method uses handlers for each supported platform:

  1. Pattern Matching: Each handler checks if the URL matches its platform (e.g., github.com, youtube.com).
  2. URL Generation: The matching handler generates feed URLs based on the URL structure.
  3. First Match: The first matching handler that generates feeds wins. Subsequent handlers are skipped. A handler that matches but generates nothing passes the page to the next one.

TIP

Even when feeds are discoverable via HTML <link> tags, the Platform method is useful because it generates feed variants the page does not advertise, like a channel's Shorts feed or a repository's releases feed. Handlers that work from the URL alone need no page content, which helps when you use the method directly and only have a URL.

Hints ​

Platform handlers attach a hint to each feed URI they generate. Hints provide a machine-readable key and a human-readable label that describe what type of feed the URI represents (e.g., "All uploads", "Videos", "Shorts"). This is useful when a single URL generates multiple feed variants and you need to let users pick the right one, especially for feeds that don't include a descriptive title.

Hints are propagated to the final DiscoverResult objects returned by discoverFeeds. Results from non-platform methods (HTML, headers, guess) do not include hints.

When a platform serves the same feed in several formats, like WordPress posts in RSS, Atom and RDF, each variant gets the same label and its own format. The hint carries the format the platform serves at that URL, so it is there for results that failed to validate too.

typescript
type DiscoverUriHint = {
  key: string                              // e.g., 'youtube:all', 'wordpress:posts'
  label: string                            // e.g., 'All uploads', 'Posts'
  format?: 'rss' | 'atom' | 'rdf' | 'json' // e.g., 'atom'
}

Supported Platforms ​

A † after a feed marks one that only the Platform method finds. The page doesn't link it, and the HTML, Headers and Guess methods miss it. A ? marks a feed that failed to load when it was measured, so there's no result for it. The marks come from discovery runs on real pages, so a row with no measured page carries none.

Apple Podcasts ​

Discovers RSS feeds for Apple Podcasts shows by extracting the feed URL from the page content.

URL PatternFeeds Generated
podcasts.apple.com/{locale}/podcast/{name}/id{id}Podcast†*

* Requires HTML content to extract feed URL.

† Found only by the Platform method.

YouTube ​

Discovers Atom feeds for channels and playlists. Generates ten feed variants for channels: all uploads, then videos, shorts and live streams, each also as a popular and a members-only feed.

URL PatternFeeds Generated
youtube.com/channel/{id}All uploads · videos? · shorts? · live streams† · popular videos? · popular shorts† · popular live streams† · member videos? · member shorts? · member live streams?
music.youtube.com/channel/{id}All uploads† · videos? · shorts? · live streams† · popular videos? · popular shorts† · popular live streams? · member videos? · member shorts? · member live streams?
youtube.com/@{handle}All uploads · videos? · shorts? · live streams† · popular videos? · popular shorts? · popular live streams? · member videos? · member shorts? · member live streams?*
youtube.com/user/{name}All uploads · videos? · shorts? · live streams? · popular videos† · popular shorts? · popular live streams? · member videos? · member shorts? · member live streams?*
youtube.com/c/{custom}All uploads · videos? · shorts? · live streams† · popular videos? · popular shorts† · popular live streams† · member videos? · member shorts? · member live streams?*
youtube.com/watch?v={id}All uploads† · videos? · shorts? · live streams† · popular videos? · popular shorts† · popular live streams? · member videos? · member shorts? · member live streams?*
youtu.be/{id}All uploads† · videos? · shorts? · live streams† · popular videos? · popular shorts† · popular live streams? · member videos? · member shorts? · member live streams?*
youtube.com/shorts/{id}All uploads† · videos? · shorts? · live streams† · popular videos? · popular shorts† · popular live streams† · member videos? · member shorts? · member live streams?*
youtube.com/live/{id}All uploads? · videos? · shorts? · live streams† · popular videos† · popular shorts? · popular live streams† · member videos? · member shorts? · member live streams?*
youtube.com/playlist?list={id}Playlist†

* Requires HTML content to extract channel ID.

† Found only by the Platform method.

? Not measured, the feed failed to load during the run.

Reddit ​

Discovers Atom feeds for subreddits, users, multireddits, and domains.

URL PatternFeeds Generated
reddit.comHomepage†
reddit.com/search?q={query}Search results†
reddit.com/subredditsSubreddits
reddit.com/r/{subreddit}Subreddit posts · comments†
reddit.com/r/{subreddit}/{sort}Sorted posts† (hot/new/rising/top) · comments†
reddit.com/r/{subreddit}/comments/{id}Post comments†
reddit.com/u/{username}User activity†
reddit.com/user/{username}/submittedSubmitted posts†, plus the feeds above
reddit.com/user/{username}/m/{multireddit}Multireddit†
reddit.com/domain/{domain}Domain submissions

† Found only by the Platform method.

Medium ​

Discovers RSS feeds for Medium user profiles, publications, tags, and subdomains.

URL PatternFeeds Generated
medium.com/@{username}User posts
medium.com/{publication}Publication
medium.com/tag/{tag}Tag†
medium.com/{publication}/tagged/{tag}Tagged publication
*.medium.comSubdomain publication
*.medium.com/tagged/{tag}Subdomain tagged

† Found only by the Platform method.

Substack ​

Discovers RSS feeds for Substack newsletters.

URL PatternFeeds Generated
*.substack.comNewsletter
substack.com/@{user}Newsletter†*

* The publication can differ from the handle and can sit on a custom domain. It is read from the page content when available, with the handle as the fallback.

† Found only by the Platform method.

WordPress.com ​

Discovers RSS and Atom feeds for WordPress.com and Unblog blogs, with category, tag, and author support.

URL PatternFeeds Generated
*.wordpress.comPosts (RSS + Atom + RDF†) · comments (RSS + Atom†)
*.wordpress.com/category/{category}Category (RSS + Atom† + RDF†), plus the feeds above
*.wordpress.com/category/{parent}/{category}Nested category (RSS + Atom† + RDF†), plus the feeds above
*.wordpress.com/tag/{tag}Tag (RSS + Atom† + RDF†), plus the feeds above
*.wordpress.com/author/{author}Author (RSS + Atom + RDF†), plus the feeds above
*.unblog.frSame as *.wordpress.com (Unblog)
*.hypotheses.orgSame as *.wordpress.com
*.hypotheses.org/{post_id}Post comments (RSS + Atom†), plus the feeds above
*.home.blogSame as *.wordpress.com
*.wpcomstaging.comSame as *.wordpress.com
*.edublogs.orgSame as *.wordpress.com

† Found only by the Platform method.

WP Engine ​

Discovers feeds for WP Engine-hosted WordPress sites. Uses the same feed structure as WordPress.com.

URL PatternFeeds Generated
*.wpenginepowered.comPosts (RSS + Atom† + RDF†) · comments (RSS + Atom†)
*.wpengine.comSame as WordPress.com (legacy domain)

† Found only by the Platform method.

Blogspot ​

Discovers RSS and Atom feeds for Blogspot blogs, including label, comments, summary, and per-post comments feeds. Also matches country-coded TLDs (*.blogspot.co.uk, *.blogspot.de, etc.), and Blogger blogs on custom domains, detected by the www.blogger.com/static/v1/widgets/ assets every Blogger page loads.

URL PatternFeeds Generated
*.blogspot.comPosts (Atom + RSS) · summary (Atom + RSS) · comments (Atom + RSS†)
*.blogspot.com/search/label/{label}Label† (Atom + RSS), plus the feeds above
*.blogspot.com/{year}/{month}/{slug}.htmlPost comments (Atom + RSS†)*, plus the feeds above
Custom domain, any of the paths aboveSame as on *.blogspot.com

* Requires HTML content to extract the post ID.

† Found only by the Platform method.

DEV.to ​

Discovers RSS feeds for DEV.to user profiles, tags, the global community, and the latest sort.

URL PatternFeeds Generated
dev.toCommunity
dev.to/latestLatest sort† · community
dev.to/{username}User or organization posts
dev.to/{username}/{article}Author's posts†
dev.to/t/{tag}Tag posts†

† Found only by the Platform method.

Lobsters ​

Discovers RSS feeds for Lobsters homepage, users, tags, and domains.

URL PatternFeeds Generated
lobste.rsHomepage · site-wide comments
lobste.rs/newestNewest posts
lobste.rs/topTop stories
lobste.rs/top/{period}Top stories by period (1d/3d/1w/1m/1y)
lobste.rs/commentsSite-wide comments
lobste.rs/~{username}User stories†
lobste.rs/t/{tag}Tag
lobste.rs/t/{tag1},{tag2}Multi-tag
lobste.rs/domains/{domain}Domain

† Found only by the Platform method.

Goodreads ​

Discovers RSS feeds for Goodreads user activity and bookshelves.

URL PatternFeeds Generated
goodreads.com/user/show/{id}User updates · reviews
goodreads.com/review/list/{id}Reviews · user updates

GitHub ​

Discovers Atom feeds for users, organizations, and repositories.

URL PatternFeeds Generated
github.com/{user}, github.com/{user}.atom or github.com/{user}.pngUser activity†
github.com/orgs/{org}/discussionsOrganization discussions†
github.com/orgs/{org}/discussions/categories/{category}Discussion category†, plus the feeds above
github.com/{owner}/{repo}Releases† · commits† · tags†
github.com/{owner}/{repo}/wikiWiki changes†, plus the feeds above
github.com/{owner}/{repo}/discussionsDiscussions†, plus the feeds above
github.com/{owner}/{repo}/discussions/categories/{category}Discussion category†, plus the feeds above
github.com/{owner}/{repo}/tree/{branch}Branch commits†, plus the feeds above
github.com/{owner}/{repo}/blob/{branch}/{path}File commits†, plus the feeds above
github.com/{owner}/{repo}/commits/{branch}/{path}File commits†, plus the feeds above

† Found only by the Platform method.

GitHub Gist ​

Discovers Atom feeds for GitHub Gist users, starred gists, forked gists, and the discover stream.

URL PatternFeeds Generated
gist.github.com/{username}User gists
gist.github.com/{username}/{gist-id}User gists
gist.github.com/{username}/public or /secretUser gists
gist.github.com/{username}/starred or /starred.atomUser starred gists
gist.github.com/{username}/forks or /forkedUser forked gists†
gist.github.com/discoverDiscover gists†

† Found only by the Platform method.

Gitea ​

Discovers Atom feeds for Gitea users, repositories, releases, tags, branch commits and file history, with RSS as the fallback. Codeberg and gitea.com are matched by host; any other instance is matched by the session cookie Gitea sets on a repository page.

URL PatternFeeds Generated
{instance}/{user}, {instance}/{user}.rss, .atom or .keysUser activity
{instance}/{user}/{repo}Releases† · tags† · activity
{instance}/{user}/{repo}/src/branch/{branch}Branch commits†, plus the feeds above
{instance}/{user}/{repo}/src/branch/{branch}/{path}File history†, plus the feeds above
{instance}/{user}/{repo}/commits/branch/{branch}Branch commits†, plus the feeds above
{instance}/{user}/{repo}/commits/branch/{branch}/{path}File history†, plus the feeds above

† Found only by the Platform method.

NOTE

A self-hosted Forgejo instance sets no cookie on an anonymous request and is not matched; Codeberg, which runs Forgejo, is covered by the host list. gitea.com sends anonymous visitors of branch, file and commit history pages to its sign-in page, so discovery from those pages finds no feeds there.

GitLab ​

Discovers Atom feeds for GitLab users and repositories. Self-hosted instances are detected via the og:site_name HTML meta tag or the X-Gitlab-Meta response header, on project paths only: /{group}/{project} or any path containing /-/.

URL PatternFeeds Generated
gitlab.com/{user} or gitlab.com/{user}.atomUser activity
gitlab.com/{project}Releases† · tags† · issues† · merge requests† · activity
gitlab.com/{project}/-/commits/{branch}Branch commits, plus the feeds above
gitlab.com/{project}/-/tree/{branch}Branch commits, plus the feeds above

† Found only by the Platform method.

{project} is the full path and can be any depth, because groups nest: group/subgroup/project is one project. GitLab puts /-/ between the project path and the feature path, which is where the split happens.

Product Hunt ​

Discovers the Atom feed for Product Hunt.

URL PatternFeeds Generated
producthunt.comProducts (Atom)

There is one feed. Topic and category pages have no feed of their own, and the ?topic= and ?category= parameters are ignored.

Pinboard ​

Discovers RSS feeds for Pinboard users, user tags, and the popular and recent lists.

URL PatternFeeds Generated
pinboard.inPopular bookmarks†
pinboard.in/popularPopular bookmarks†
pinboard.in/recentRecent bookmarks†
pinboard.in/u:{username}User bookmarks†
pinboard.in/u:{username}/t:{tag}User tag†
pinboard.in/u:{username}/t:{tag1}/t:{tag2}User multi-tag†
pinboard.in/t:{tag}Site-wide tag?

† Found only by the Platform method.

? Not measured, the feed failed to load during the run.

Pinterest ​

Discovers RSS feeds for Pinterest user profiles.

URL PatternFeeds Generated
pinterest.com/{username}User pins†

† Found only by the Platform method.

Dailymotion ​

Discovers RSS feeds for Dailymotion users, playlists, channels, and the global trending feed.

URL PatternFeeds Generated
dailymotion.com/{username}User videos†
dailymotion.com/playlist/{id}Playlist†
dailymotion.com/channel/{name}Channel†
dailymotion.com or dailymotion.com/trendingTrending†

† Found only by the Platform method.

DeviantArt ​

Discovers RSS feeds for DeviantArt user portfolios, gallery folders, favourites, and tags.

URL PatternFeeds Generated
deviantart.com/{username}User deviations†
deviantart.com/{username}/galleryUser gallery†
deviantart.com/{username}/gallery/{id}Gallery folder†
deviantart.com/{username}/favouritesUser favourites†
deviantart.com/{username}/journalJournal
deviantart.com/tag/{tag}Tag†
deviantart.com/daily-deviationsDaily deviations†

† Found only by the Platform method.

Mastodon ​

Discovers RSS feeds for Mastodon user profiles and hashtag pages. Detects Mastodon instances via the <meta name="generator"> HTML tag, the <div id="mastodon"> app root or the Server response header. There is no hardcoded instance list.

URL PatternFeeds Generated
{instance}/@{username} or {instance}/users/{username}User posts
{instance}/@{username}/tagged/{tag}User posts tagged · posts†
{instance}/@{username}/with_repliesUser posts with replies† · posts
{instance}/@{username}/mediaUser media-only† · posts
{instance}/tags/{tag}Hashtag†

† Found only by the Platform method.

NOTE

Requires page content or response headers to detect Mastodon instances. Works with any Mastodon-compatible server, not just well-known instances.

Bluesky ​

Discovers RSS feeds for Bluesky profiles.

URL PatternFeeds Generated
bsky.app/profile/{handle}Profile posts

Tumblr ​

Discovers RSS feeds for Tumblr blogs and tagged posts.

URL PatternFeeds Generated
*.tumblr.comBlog posts
*.tumblr.com/tagged/{tag}Tagged posts†
www.tumblr.com/{blog}Blog posts

† Found only by the Platform method.

Behance ​

Discovers RSS feeds for Behance user portfolios, plus the homepage Featured-projects feed.

URL PatternFeeds Generated
behance.net or behance.net/galleriesFeatured projects
behance.net/{username}User portfolio†
behance.net/{username}/appreciatedUser portfolio*

* Behance ignores content=appreciated and serves the user's own projects, so the appreciated page gets the portfolio feed.

† Found only by the Platform method.

SoundCloud ​

Discovers RSS feeds for SoundCloud user profiles.

URL PatternFeeds Generated
soundcloud.com/{user}User sounds†*

* Requires HTML content to extract user ID.

† Found only by the Platform method.

Vimeo ​

Discovers RSS feeds for Vimeo user profiles, channels, groups, and albums (showcases).

URL PatternFeeds Generated
vimeo.com/{user}User videos
vimeo.com/{user}/likesUser likes · user videos†
vimeo.com/channels/{channel}Channel
vimeo.com/groups/{group}Group
vimeo.com/album/{id}Album/showcase†

† Found only by the Platform method.

SourceForge ​

Discovers RSS feeds for SourceForge project activity, file releases, news, and discussion.

URL PatternFeeds Generated
sourceforge.net/projects/{project} or sourceforge.net/p/{project}Activity · project · files · news† (RSS + Atom) · discussion† (RSS + Atom) · bugs†

† Found only by the Platform method.

Kickstarter ​

Discovers Atom feeds for Kickstarter projects and global new projects.

URL PatternFeeds Generated
kickstarter.comGlobal new projects†
kickstarter.com/discoverGlobal new projects
kickstarter.com/projects/{creator}/{project}Project updates†

† Found only by the Platform method.

Launchpad ​

Discovers the Atom feeds Launchpad serves on feeds.launchpad.net for projects, distributions, people, teams, bugs and Bazaar branches. The bugs. and code. subdomains get the feeds of their own section.

URL PatternFeeds Generated
launchpad.netAnnouncements†
bugs.launchpad.netLatest bugs†
launchpad.net/{project}Announcements · latest bugs · branches · revisions
bugs.launchpad.net/{project}Latest bugs
code.launchpad.net/{project}Branches · revisions
launchpad.net/~{user}Latest bugs · branches · revisions
bugs.launchpad.net/~{user}Latest bugs
code.launchpad.net/~{user}Branches† · revisions†
bugs.launchpad.net/{distro}/+source/{package}Package latest bugs
bugs.launchpad.net/{project}/+bug/{id} or bugs.launchpad.net/bugs/{id}Bug
code.launchpad.net/~{user}/{project}/{branch}Branch

† Found only by the Platform method.

Letterboxd ​

Discovers RSS feeds for Letterboxd user profiles.

URL PatternFeeds Generated
letterboxd.com/{username}User diary
letterboxd.com/journalJournal

Steam ​

Discovers RSS feeds for Steam game news and community groups.

URL PatternFeeds Generated
store.steampowered.comGlobal news† · daily deals†
store.steampowered.com/newsGlobal news† · daily deals†
store.steampowered.com/app/{id}Game news†
store.steampowered.com/news/app/{id}Game news†
store.steampowered.com/newshub/app/{id}Game news
steamcommunity.com/app/{id}Game news†
steamcommunity.com/groups/{name}Group† (RSS)

† Found only by the Platform method.

Stack Exchange ​

Discovers Atom feeds for Stack Overflow, Server Fault, Super User, Ask Ubuntu, MathOverflow, Stack Apps, and all *.stackexchange.com sites.

URL PatternFeeds Generated
{site}Site-wide newest questions
{site}/questions/tagged/{tag}Tag†
{site}/questions/{id}Question
{site}/users/{id}User†
{site}/collectives/{name}Collective†

† Found only by the Platform method.

NOTE

Tag feeds accept ?sort={newest|active|votes|creation|hot|week|month} (also ?tab=…). The value is passed through to the generated feed URL when it matches one of the allowed sorts. Unknown values are silently dropped.

Hashnode ​

Discovers RSS feeds for Hashnode blogs on *.hashnode.dev.

URL PatternFeeds Generated
*.hashnode.devBlog

Paragraph ​

Discovers RSS feeds for Paragraph blogs (successor to Mirror.xyz).

URL PatternFeeds Generated
paragraph.com/@{username}Blog

Hatena Antenna ​

Discovers RSS feeds for Hatena Antenna users and their groups.

URL PatternFeeds Generated
a.hatena.ne.jp/{user}Antenna
a.hatena.ne.jp/{user}/?gid={group}Group?

? Not measured, the feed failed to load during the run.

A group id the user does not have falls back to the antenna feed, since Hatena serves an empty feed under any made-up group id. A real group with no updated page keeps its own feed.

Hatena Bookmark ​

Discovers RSS feeds for Hatena Bookmark listings, searches, sites and user bookmarks.

URL PatternFeeds Generated
b.hatena.ne.jpHot entries
b.hatena.ne.jp/hotentry/{category}Hot entries by category
b.hatena.ne.jp/entrylist/{category}New entries by category
b.hatena.ne.jp/q/{query}Search†
b.hatena.ne.jp/search/{tag|text|title}?q={query}Search
b.hatena.ne.jp/site/{domain}Site bookmarks†
b.hatena.ne.jp/{user}User bookmarks

† Found only by the Platform method.

Categories are it, general, social, economics, life, knowledge, fun, entertainment and game. Search feeds keep the target, sort, users, date_range and safe filters already on the URL, site feeds keep any filters, and both add mode=rss. The old /search/ URLs redirect to /q/{query}, so their feeds use that path too.

Hatena Fotolife ​

Discovers RSS feeds for Hatena Fotolife users, folders, tags, camera models and stars.

URL PatternFeeds Generated
f.hatena.ne.jp/{user}Photos
f.hatena.ne.jp/{user}?model={model}Camera model
f.hatena.ne.jp/{user}/{folder}/Folder
f.hatena.ne.jp/{user}/t/{tag}Tag
f.hatena.ne.jp/{user}/favoriteStars
f.hatena.ne.jp/{user}/starfriendsStar Friends

A folder, tag or camera model page that lists no photo falls back to the user's photos feed, since Hatena serves an empty feed under any made-up name.

Hatena Blog ​

Discovers RSS and Atom feeds for Hatena Blog on *.hatenablog.com, *.hatenablog.jp, and *.hateblo.jp.

URL PatternFeeds Generated
*.hatenablog.comPosts (RSS + Atom)
*.hatenablog.jpPosts (RSS + Atom)
*.hateblo.jpPosts (RSS + Atom)
*/archive/category/{category}Category (RSS + Atom) · posts
*/archive/author/{author}Author (RSS + Atom) · posts

Itch.io ​

Discovers RSS feeds for Itch.io games, creators, devlogs, and browse pages.

URL PatternFeeds Generated
{creator}.itch.io/{game}Game devlog
{creator}.itch.ioCreator's games†
itch.io/games or /games.xmlGames†
itch.io/games/by-{username} or /by-{username}.xmlCreator's games†
itch.io/games/tag-{tag} or /tag-{tag}.xmlTag†
itch.io/games/platform-{platform} or /platform-{platform}.xmlPlatform†
itch.io/games/genre-{genre} or /genre-{genre}.xmlGenre†
itch.io/games/made-with-{engine} or /made-with-{engine}.xmlEngine†
itch.io/games/{sort} or /{sort}.xmlSorted games† (newest/top-rated/top-sellers/on-sale/free/released/in-development)
itch.io/{section} or /{section}.xmlSection† (tools/game-assets/soundtracks/physical-games/books/comics/misc)
itch.io/devlogs or /devlogs.xmlAll devlogs
itch.ioFeatured · new† · sales† · all devlogs† · itch.io blog
itch.io/feed/{feed}.xmlCurated (featured/new/sales)
itch.io/blog or itch.io/blog.rssitch.io blog

† Found only by the Platform method.

CSDN ​

Discovers RSS feeds for CSDN user blogs.

URL PatternFeeds Generated
blog.csdn.net/{username}Blog†

† Found only by the Platform method.

Douban ​

Discovers RSS feeds for Douban user interests, reviews, notes, and subject reviews.

URL PatternFeeds Generated
www.douban.com/people/{user}Interests · reviews† · notes†
{subdomain}.douban.com/subject/{id}Subject reviews
www.douban.comBook† · movie† · music† · drama† reviews

† Found only by the Platform method.

V2EX ​

Discovers Atom feeds for V2EX index, nodes, members, and tabs.

URL PatternFeeds Generated
v2ex.comIndex
v2ex.com/go/{node}Node
v2ex.com/member/{username}Member
v2ex.com/?tab={tab}Tab · index

Ximalaya ​

Discovers RSS feeds for Ximalaya podcast albums.

URL PatternFeeds Generated
www.ximalaya.com/album/{id}Album†

† Found only by the Platform method.

Write.as ​

Discovers RSS feeds for Write.as blogs, including tag feeds.

URL PatternFeeds Generated
write.as/{user}Blog
write.as/{user}/tag:{tag}Tag · blog

Prose.sh ​

Discovers Atom feeds for Prose.sh blogs.

URL PatternFeeds Generated
prose.shDiscovery
*.prose.shBlog

Pagecord ​

Discovers RSS feeds for Pagecord blogs.

URL PatternFeeds Generated
*.pagecord.comBlog

ArtStation ​

Discovers RSS feeds for ArtStation portfolios and the global artwork feed.

URL PatternFeeds Generated
artstation.com/{user}Portfolio†
{user}.artstation.comPortfolio
artstation.com/artworkArtwork† · Artwork (Latest)†

† Found only by the Platform method.

?sorting=trending is the feed default and returns the same items as the bare URL, so only ?sorting=latest is emitted alongside it.

Bear Blog ​

Discovers Atom and RSS feeds for Bear Blog, including tag-filtered feeds.

URL PatternFeeds Generated
bearblog.devTrending† (Atom + RSS)
*.bearblog.devPosts (Atom + RSS)
*.bearblog.dev/?q={tag}Tag (Atom + RSS) · posts

† Found only by the Platform method.

Buttondown ​

Discovers RSS feeds for Buttondown newsletters.

URL PatternFeeds Generated
buttondown.com/{user}Newsletter

Dreamwidth ​

Discovers RSS and Atom feeds for Dreamwidth blogs.

URL PatternFeeds Generated
*.dreamwidth.orgPosts (RSS + Atom) · userpics† (Atom)

† Found only by the Platform method.

Excite Blog ​

Discovers RSS and Atom feeds for Excite Blog, including category feeds.

URL PatternFeeds Generated
{blog}.exblog.jpPosts (RSS + Atom)
{blog}.exblog.jp/i{N}Category (RSS + Atom) · posts

Fireside.fm ​

Discovers RSS and JSON feeds for Fireside.fm-hosted podcasts.

URL PatternFeeds Generated
*.fireside.fmPodcast (RSS + JSON)

Firstory ​

Discovers the RSS feed of a Firstory podcast. The feed is keyed by the show's ID, which the handler reads from the page.

URL PatternFeeds Generated
open.firstory.fm/user/{show}Podcast (RSS)
open.firstory.fm/story/{episodeId}Podcast (RSS)
{show}.firstory.ccPodcast (RSS)
{show}.firstory.cc/episodes/{episodeId}Podcast (RSS)

Hacker News ​

Discovers RSS feeds for Hacker News.

URL PatternFeeds Generated
news.ycombinator.comFront page (RSS)
news.ycombinator.com/showShow HN (RSS)

Listed ​

Discovers RSS feeds for Listed (Standard Notes) blogs.

URL PatternFeeds Generated
listed.to/@{user}Blog

MyAnimeList ​

Discovers RSS feeds for MyAnimeList user lists and site-wide news.

URL PatternFeeds Generated
myanimelist.net/profile/{user}Anime list† · Manga list† · Recently watched† · Recently read† · Blog (RSS)
myanimelist.net/animelist/{user}Anime list† · Manga list† · Recently watched† · Recently read† · Blog† (RSS)
myanimelist.net/mangalist/{user}Anime list† · Manga list† · Recently watched† · Recently read† · Blog† (RSS)
myanimelist.net/history/{user}(same as above)
myanimelist.net/newsSite-wide news
myanimelist.net/featuredFeatured articles

† Found only by the Platform method.

Nebula ​

Discovers RSS feeds for Nebula channels, the global video feed, and category feeds, each with a Plus-only variant.

URL PatternFeeds Generated
nebula.tv/{channel}Videos · Videos (Plus)
nebula.tvAll videos · All videos (Plus) · Nebula Originals · recently added channels
nebula.tv/videosAll videos · All videos (Plus) · Nebula Originals · recently added channels
nebula.tv/videos?category={slug}Category · Category (Plus), plus the feeds above

note.com ​

Discovers RSS feeds for note.com, including hashtag and magazine feeds.

URL PatternFeeds Generated
note.comFeatured
note.com/{user}Blog
note.com/hashtag/{tag} or note.com/tag/{tag}Hashtag†
note.com/{user}/m/{magazineId}Magazine†

† Found only by the Platform method.

Odysee ​

Discovers RSS feeds for Odysee channels.

URL PatternFeeds Generated
odysee.com/@{channel}:{id}Videos†

† Found only by the Platform method.

Tistory ​

Discovers RSS feeds for Tistory blogs.

URL PatternFeeds Generated
*.tistory.comBlog†

† Found only by the Platform method.

Transistor ​

Discovers RSS feeds for Transistor-hosted podcasts.

URL PatternFeeds Generated
*.transistor.fmPodcast*

* The feed slug can differ from the subdomain. It is read from the page content when available, with the subdomain as the fallback.

Velog ​

Discovers RSS feeds for Velog users and the platform-wide trending feed.

URL PatternFeeds Generated
velog.io/@{user}Posts†
velog.ioTrending posts†

† Found only by the Platform method.

Acast ​

Discovers RSS feeds for Acast-hosted podcasts.

URL PatternFeeds Generated
shows.acast.com/{slug}Podcast (RSS)
play.acast.com/s/{slug}Podcast (RSS)
embed.acast.com/{slug}Podcast† (RSS)

† Found only by the Platform method.

Ameba Blog ​

Discovers RSS, Atom, and RDF feeds for Ameba Blog.

URL PatternFeeds Generated
ameblo.jp/{user}Posts (RSS + Atom + RDF†)

† Found only by the Platform method.

Are.na ​

Discovers RSS feeds for Are.na user profiles and channels.

URL PatternFeeds Generated
are.na/{user}User profile
are.na/{user}/{channel}Channel
are.na/editorialEditorial

Audioboom ​

Discovers RSS feeds for Audioboom channels.

URL PatternFeeds Generated
audioboom.com/channels/{id}Podcast (RSS)

Ausha ​

Discovers the RSS feed of an Ausha show by reading its feed id from the page content.

URL PatternFeeds Generated
podcast.ausha.co/{show}Podcast† (RSS)*
podcast.ausha.co/{show}/{episode}Podcast† (RSS)*
smartlink.ausha.co/{show}Podcast (RSS)*
smartlink.ausha.co/{show}/{episode}Podcast (RSS)*

* Requires HTML content to extract the feed id.

† Found only by the Platform method.

BookWyrm ​

Discovers RSS feeds for BookWyrm user activity, reviews, quotes, comments, and per-shelf feeds. Detected by the link to the BookWyrm source code in the page footer, or by the BookWyrm generator meta tag.

URL PatternFeeds Generated
{instance}/user/{user}Activity · reviews† · quotes† · comments† (RSS)
{instance}/user/{user}/(shelf|books)/{shelf-id}Shelf (RSS) · activity/reviews†/quotes†/comments†

† Found only by the Platform method.

Buzzsprout ​

Discovers RSS feeds for Buzzsprout-hosted podcasts.

URL PatternFeeds Generated
buzzsprout.com/{id}Podcast

CANPAN Blog ​

Discovers RSS 2.0 and RDF feeds for CANPAN Blog.

URL PatternFeeds Generated
blog.canpan.info/{blog}Posts (RSS 2.0† + RDF)

† Found only by the Platform method.

Canalblog ​

Discovers RSS feeds for Canalblog.

URL PatternFeeds Generated
*.canalblog.comPosts

Captivate ​

Discovers RSS feeds for Captivate-hosted podcasts.

URL PatternFeeds Generated
*.captivate.fmPodcast (RSS)

Castopod ​

Discovers the RSS feed of a podcast hosted on a Castopod instance. Detected by the theme colors stylesheet that Castopod prints in every page head.

URL PatternFeeds Generated
{instance}/@{handle}Podcast (RSS)
{instance}/@{handle}/episodes/{slug}Podcast (RSS)

Castos ​

Discovers RSS feeds for podcasts with a Castos-hosted website.

URL PatternFeeds Generated
*.castos.comPodcast (RSS)

Discourse ​

Discovers RSS feeds for Discourse forums. Detected by the Discourse generator meta tag, the data-discourse-setup meta tag or the X-Discourse-Route response header.

URL PatternFeeds Generated
{instance}/u/{user}User activity† (RSS)
{instance}/c/{slug}Category (RSS)
{instance}/t/{slug}/{id}Topic (RSS)
{instance}/top or /top/{period}Top topics (RSS)
{instance}/ (or any other path)Latest topics · latest posts (RSS)

† Found only by the Platform method.

NOTE

The top topics feed accepts {daily|weekly|monthly|quarterly|yearly|all} via either the /top/{period} path or ?period={period} query param. An unknown path period falls back to the query param, and an unknown value in both is dropped.

Flickr ​

Discovers Atom feeds for Flickr photostreams, favorites, tags, groups and the help forum.

URL PatternFeeds Generated
flickr.com/photos/tags/{tag}Tag†
flickr.com/photos/{nsid}Photostream
flickr.com/photos/{nsid}/favoritesFavorites
flickr.com/groups/{nsid}Group pool† · discussions · pool with location
flickr.com/groups/{nsid}/poolGroup pool† · pool with location
flickr.com/groups/{nsid}/discussGroup discussions
flickr.com/help/forumForum†

† Found only by the Platform method.

The photo and group feeds take an NSID such as 24662369@N07, never a vanity alias: photos_public.gne?id={alias} answers 404. A URL carrying an alias is left to the other methods, and the page itself links the right feed.

Friendica ​

Discovers Atom feeds for Friendica user profiles. Detected by the Friendica generator meta tag or the X-Friendica-Version response header.

URL PatternFeeds Generated
{instance}/profile/{user}Posts · comments · replies · activity (Atom)

Ghost ​

Discovers RSS feeds for Ghost-hosted blogs, including tag and author feeds.

URL PatternFeeds Generated
*.ghost.ioBlog
*.ghost.io/tag/{slug}Tag · blog
*.ghost.io/author/{slug}Author · blog

Hearthis.at ​

Discovers RSS feeds for Hearthis.at user profiles, plus the site-wide new tracks feed every page links.

URL PatternFeeds Generated
hearthis.at/{user}Tracks · new tracks

HEY World ​

Discovers Atom feeds for HEY World blogs.

URL PatternFeeds Generated
world.hey.com/{user}Blog

Huffduffer ​

Discovers RSS feeds for Huffduffer users and their huffduffed episodes.

URL PatternFeeds Generated
huffduffer.com/{user}Huffduffs
huffduffer.com/{user}/{id}Possibly related† · huffduffs
huffduffer.com/{user}/{id}/relatedPossibly related

† Found only by the Platform method.

InsaneJournal ​

Discovers RSS and Atom feeds for InsaneJournal journals.

URL PatternFeeds Generated
*.insanejournal.comPosts (RSS + Atom) · userpics† (Atom)

† Found only by the Platform method.

JUGEM ​

Discovers RSS 1.0 and Atom feeds for JUGEM blogs. A blog on a custom domain is detected by imaging.jugem.jp assets or the ./template/js/cookie.js script.

URL PatternFeeds Generated
{blog}.jugem.jpPosts (RSS 1.0 + Atom)
{blog}.jugem.ccPosts (RSS 1.0 + Atom)
Any page on a custom domainPosts (RSS 1.0 + Atom)

Lemmy ​

Discovers RSS feeds for Lemmy instances, communities and users. Detected by the lemmy-site app root, the Lemmy generator meta tag or the X-Powered-By response header. There is no hardcoded instance list.

URL PatternFeeds Generated
{instance}/All posts · local posts
{instance}/c/{community}Community
{instance}/u/{user}User

NOTE

Requires page content or response headers to detect Lemmy instances. The ?sort= and ?limit= query params are passed through to the generated feed URL. Unknown sort values are silently dropped. When the page URL has no valid sort, the feed takes the sort the page advertises.

Libsyn ​

Discovers RSS feeds for Libsyn-hosted podcasts.

URL PatternFeeds Generated
{slug}.libsyn.comPodcast
feeds.libsyn.com/{showId}Podcast

Livedoor Blog ​

Discovers RDF and Atom feeds for Livedoor Blog on *.blog.jp, *.doorblog.jp, *.ldblog.jp, and *.livedoor.biz, including category feeds.

URL PatternFeeds Generated
{blog}.blog.jpPosts (RDF + Atom)
{blog}.blog.jp/archives/cat_{N}.htmlCategory (RDF) · posts
{blog}.doorblog.jpPosts (RDF + Atom)
{blog}.doorblog.jp/archives/cat_{N}.htmlCategory (RDF) · posts
{blog}.ldblog.jpPosts (RDF + Atom)
{blog}.ldblog.jp/archives/cat_{N}.htmlCategory (RDF) · posts
{blog}.livedoor.bizPosts (RDF + Atom)
{blog}.livedoor.biz/archives/cat_{N}.htmlCategory (RDF) · posts

LiveJournal ​

Discovers RSS and Atom feeds for LiveJournal blogs.

URL PatternFeeds Generated
*.livejournal.comPosts (RSS + Atom) · userpics† (Atom)

† Found only by the Platform method.

Mataroa ​

Discovers RSS feeds for Mataroa blogs.

URL PatternFeeds Generated
*.mataroa.blogBlog

Megaphone ​

Discovers RSS feeds for Megaphone-hosted podcasts from their embed players.

URL PatternFeeds Generated
playlist.megaphone.fm/?p={id}Podcast†
player.megaphone.fm/{episode}Podcast (read from the page)

† Found only by the Platform method.

Micro.blog ​

Discovers RSS, JSON, and podcast feeds for Micro.blog-hosted blogs, including category, archive, photos, and replies feeds.

URL PatternFeeds Generated
*.micro.blogPosts (RSS + JSON) · podcast (RSS + JSON†)
*.micro.blog/categories/{slug}Category (RSS + JSON), plus the feeds above
*.micro.blog/archiveArchive†, plus the feeds above
*.micro.blog/photosPhotos†, plus the feeds above
*.micro.blog/repliesReplies, plus the feeds above

† Found only by the Platform method.

Misskey ​

Discovers Atom, RSS, and JSON feeds for Misskey and Sharkey user profiles. Detected by the Misskey or Sharkey application-name meta tag, or the misskey_meta script tag.

URL PatternFeeds Generated
{instance}/@{user}Posts† (Atom + RSS + JSON)

† Found only by the Platform method.

Discovers RSS feeds for Naver Blog.

URL PatternFeeds Generated
blog.naver.com/{id}Blog
m.blog.naver.com/{id}Blog†

† Found only by the Platform method.

Observable ​

Discovers RSS feeds for Observable user notebooks and collections.

URL PatternFeeds Generated
observablehq.com/@{user}Notebooks†
observablehq.com/@{user}/collection/{slug} or /@{user}/-/collection/{slug}Collection†
observablehq.com/recent or /public?sort=publish_timeRecent†
observablehq.com/trending or /publicTrending†

† Found only by the Platform method.

Pika ​

Discovers Atom and RSS feeds for Pika blogs, including tag feeds.

URL PatternFeeds Generated
*.pika.pagePosts (Atom + RSS†)
*.pika.page/tag/{tag}Tag (Atom + RSS†) · posts (Atom + RSS†)

† Found only by the Platform method.

Pixelfed ​

Discovers Atom feeds for Pixelfed user profiles. Detected by the pixelfed generator meta tag or the Pixelfed application-name meta tag.

URL PatternFeeds Generated
{instance}/{user} or {instance}/users/{user}Posts (Atom)

Pleroma ​

Discovers Atom and RSS feeds for Pleroma (and Akkoma) user profiles. Detected by Pleroma-specific API endpoint references in HTML.

URL PatternFeeds Generated
{instance}/users/{user}Posts (Atom + RSS†)

† Found only by the Platform method.

Podbean ​

Discovers RSS feeds for Podbean-hosted podcasts.

URL PatternFeeds Generated
*.podbean.comPodcast

Podhome ​

Discovers the RSS feed of a Podhome show, on serve.podhome.fm or a custom domain. Detected by the show site's assets on cdn.podhome.fm, and the feed is read from the page, since its URL carries an ID the page URL does not.

URL PatternFeeds Generated
serve.podhome.fm/{show}Podcast (RSS)
serve.podhome.fm/episodepage/{show}/{episode}Podcast (RSS)
Any page of a show on a custom domainPodcast (RSS)

Podigee ​

Discovers RSS feeds for Podigee-hosted podcasts.

URL PatternFeeds Generated
*.podigee.ioPodcast (RSS)

Postach.io ​

Discovers Atom feeds for Postach.io sites.

URL PatternFeeds Generated
*.postach.ioPosts (Atom)

Posthaven ​

Discovers Atom feeds for Posthaven blogs.

URL PatternFeeds Generated
*.posthaven.comPosts (Atom)

Qiita ​

Discovers Atom feeds for Qiita users, tags, organizations, and popular items.

URL PatternFeeds Generated
qiita.com/{user}User posts
qiita.com/tags/{tag}Tag
qiita.com/organizations/{org}Organization
qiita.com/popular-itemsPopular items
qiita.com/official-columnsQiita Zine

RSS.com ​

Discovers RSS feeds for RSS.com-hosted podcasts.

URL PatternFeeds Generated
rss.com/podcasts/{slug}Podcast

RubyGems ​

Discovers Atom feeds for RubyGems.org gems and the site-wide latest gems.

URL PatternFeeds Generated
rubygems.org/gems/{name}Gem versions (Atom)
rubygems.orgLatest gems† (Atom)

† Found only by the Platform method.

Every page links the latest gems feed through a FeedBurner address that now serves HTML, so the handler emits the rubygems.org copy.

Sakura blog ​

Discovers RSS 2.0 and RDF feeds for Sakura blog.

URL PatternFeeds Generated
*.sblo.jpPosts (RSS 2.0 + RDF)

SAPO Blogs ​

Discovers the posts, comments and tag feeds of a blog on *.blogs.sapo.pt. Comment feeds are served from blogs.sapo.pt.

URL PatternFeeds Generated
{blog}.blogs.sapo.ptPosts (RSS + Atom) · comments†
{blog}.blogs.sapo.pt/{slug}-{id}Post comments†, plus the blog feeds
{blog}.blogs.sapo.pt/{id}.htmlPost comments†, plus the blog feeds
{blog}.blogs.sapo.pt/tag/{tag}Tag†, plus the blog feeds

† Found only by the Platform method.

Seesaa Blog ​

Discovers RSS 2.0 and RDF feeds for Seesaa Blog on *.seesaa.net and its other blog domains.

URL PatternFeeds Generated
*.seesaa.netPosts (RSS 2.0 + RDF)
*.iiblog.jpPosts (RSS 2.0 + RDF)
*.seesaa.blogPosts† (RSS 2.0 + RDF)
*.seesaa.spacePosts (RSS 2.0 + RDF)
*.sokuho.orgPosts (RSS 2.0 + RDF)
*.stablo.jpPosts (RSS 2.0 + RDF)
*.xblog.jpPosts (RSS 2.0 + RDF)

† Found only by the Platform method.

Sermon.net ​

Discovers the audio podcast feed of every channel a church page lists, or of the one channel a channel page names.

URL PatternFeeds Generated
*.sermon.netChannel podcasts (RSS), or the church feed when no channel is listed
*.sermon.net/{mediaCentre}/{channel}That channel's podcast† (RSS)

† Found only by the Platform method.

Shinobi Blog ​

Discovers RSS and Atom feeds for Shinobi Blog, on blog.shinobi.jp and on 100 other Ninja Blog domains such as ni-3.net.

URL PatternFeeds Generated
{blog}.blog.shinobi.jpPosts (RSS + Atom)
{blog}.{domain}Posts (RSS + Atom)

Spotify for Creators ​

Discovers RSS feeds for Spotify for Creators (formerly Anchor) podcasts by extracting the station ID from the page content.

URL PatternFeeds Generated
creators.spotify.com/pod/profile/{name}Podcast*
creators.spotify.com/pod/show/{name}Podcast*
creators.spotify.com/pod/profile/{name}/episodes/{slug}Podcast*

* Requires HTML content to extract the station ID.

Spreaker ​

Discovers RSS feeds for Spreaker-hosted podcasts.

URL PatternFeeds Generated
spreaker.com/podcast/{slug}--{id}Podcast
spreaker.com/show/{id}Podcast

Tildes ​

Discovers RSS and Atom feeds for Tildes homepage and groups.

URL PatternFeeds Generated
tildes.netTopics (RSS + Atom)
tildes.net/~{group}Group (RSS + Atom)

Viabloga ​

Discovers RSS, Atom and RDF feeds for Viabloga.

URL PatternFeeds Generated
*.viabloga.comPosts (RSS + Atom + RDF) · comments† · wiki†

† Found only by the Platform method.

weblog.lol ​

Discovers RSS, Atom, and JSON feeds for weblog.lol blogs.

URL PatternFeeds Generated
*.weblog.lolPosts (RSS + Atom + JSON)

Weebly ​

Discovers RSS feeds for Weebly-hosted blogs.

URL PatternFeeds Generated
*.weebly.comBlog
*.weebly.com/{slug}Blog (custom page slug) · default blog

Zenn ​

Discovers RSS feeds for Zenn users, topics, publications, and the platform-wide trending feed.

URL PatternFeeds Generated
zenn.dev/{user}User posts
zenn.dev/topics/{topic}Topic
zenn.dev/p/{pub}Publication
zenn.devTrending posts

BitChute ​

Discovers RSS feeds for BitChute channels. Channel pages carry only an oEmbed link, so nothing finds these without the handler.

URL PatternFeeds Generated
bitchute.com/channel/{slug}Channel† (RSS)

† Found only by the Platform method.

NOTE

The feed endpoint accepts only the vanity slug that appears in the channel URL. A channel's internal id returns 404.

Confluence ​

Discovers the Atom activity streams of a Confluence Data Center site. Detected by the confluence-base-url meta tag, with the context path and space key read from the page.

URL PatternFeeds Generated
Any page on a spaceSpace stream† · site stream† (Atom)
Any other pageSite stream† (Atom)

† Found only by the Platform method.

NOTE

Confluence Cloud is not supported. It renders client-side, serves no confluence-* meta tag, and its stream needs a session.

diaspora* ​

Discovers the Atom feed of a diaspora* profile. Detected by the Diaspora.Page global.

URL PatternFeeds Generated
{pod}/u/{user}Posts (Atom)
{pod}/public/{user}Posts (Atom)
{pod}/people/{guid}Posts (Atom)*

* Requires HTML content to read the username from the profile's diaspora ID.

Instatus ​

Discovers the incident history feeds of an Instatus status page. Detected by the status page route Instatus names in the x-matched-path response header, or by the custom HTML slots of its page template, so custom domains are covered as well as *.instatus.com hosts.

URL PatternFeeds Generated
Any status pageIncident history (RSS + Atom)
{page}/{language}/...Translated incident history (RSS + Atom)

Jira ​

Discovers the Atom activity streams of a Jira site. Cloud is detected by the atlassian.net host, Data Center by the ajs-base-url meta tag together with a Jira path.

URL PatternFeeds Generated
{base}/browse/{KEY}-{n}Project stream† · site stream† (Atom)
{base}/projects/{KEY}Project stream† · site stream† (Atom)
Any other Jira pageSite stream† (Atom)

† Found only by the Platform method.

NOTE

Bitbucket Server ships the same meta tag and uses /projects/{KEY}/repos/, which is excluded. Confluence under /wiki/ on a Cloud site is excluded too.

Neocities ​

Discovers the RSS feed of a Neocities site. The feed is served from neocities.org, not from the site's own host, and lists file updates rather than posts.

URL PatternFeeds Generated
{user}.neocities.orgSite updates† (RSS)
neocities.org/site/{user}Site updates† (RSS)

† Found only by the Platform method.

NOTE

A site served on a custom domain carries no username, so it is not matched.

OpenStatus ​

Discovers the incident feeds of an OpenStatus status page. Detected by the /api/status/summary.json link the page carries, or by its generated preview image.

URL PatternFeeds Generated
Any status pageUpdates† (RSS + Atom)

† Found only by the Platform method.

Postype ​

Discovers RSS feeds for Postype channels. Channel pages carry no feed link.

URL PatternFeeds Generated
postype.com/@{id}Posts (RSS)
{id}.postype.comPosts (RSS)

Sourcehut ​

Discovers the commit and ref feeds of a Sourcehut repository. Repository pages carry no feed link.

URL PatternFeeds Generated
git.sr.ht/~{user}/{repo}Commits · refs† (RSS)

† Found only by the Platform method.

Squarespace ​

Discovers the RSS feed of a Squarespace collection. Detected by the Server: Squarespace response header.

URL PatternFeeds Generated
{site}/{collection}Collection (RSS)

NOTE

The collection slug is operator-chosen, commonly blog, news or journal, so it is taken from the first path segment. The site root is not matched: it answers ?format=rss with a 400.

Statuspage ​

Discovers the incident history feeds of an Atlassian Statuspage status page. Detected by the x-statuspage-version response header or the page's dka575ofm4ao0.cloudfront.net/packs/ assets, so custom domains are covered as well as *.statuspage.io hosts.

URL PatternFeeds Generated
Any status pageIncident history (RSS + Atom)

Wikidot ​

Discovers the site and forum feeds of a Wikidot wiki. Detected by the WIKIDOT.page.listeners.editClick() call in the page, so custom domains are covered as well as *.wikidot.com hosts.

URL PatternFeeds Generated
Any wiki pageSite changes† · forum threads† (RSS)

† Found only by the Platform method.

Drupal ​

Discovers the site feed of a Drupal site. Detected by the Generator meta tag or the X-Generator response header.

URL PatternFeeds Generated
Any pageSite (RSS)

NOTE

Both signals are Drupal 8 and later, and a site builder can disable the /rss.xml view, so treat the feed as a probe.

Shopify ​

Discovers the Atom feed of a Shopify store's blog. Detected by the Powered-By response header.

URL PatternFeeds Generated
{store}/blogs/{handle}Blog (Atom)

NOTE

There is no store-wide feed, so the blog handle is required. A missing blog answers 404 with an Atom content type and an empty body.

HubSpot ​

Discovers the RSS feeds of a HubSpot blog. Detected by the HubSpot generator meta tag or the x-hs-hub-id response header. A page the x-hs-cfworker-meta header marks as something other than a blog page is not matched.

URL PatternFeeds Generated
{site}/{blog-path}Blog (RSS)
{site}/{blog-path}/author/{slug}Author† · blog (RSS)
{site}/{blog-path}/topic/{slug}Tag† · blog (RSS)

† Found only by the Platform method.

NOTE

The feed hangs off the blog path, never the host root, which answers 404.

Publii ​

Discovers the feeds of a Publii-built site. Detected by the Publii generator meta tag or by media linked under /media/website/ or /media/posts/. The media links also name the site root, so a site under a sub-path gets its own feeds.

URL PatternFeeds Generated
Any pagePosts (Atom) · JSON Feed

NOTE

/feed.xml is Atom despite the name, and the theme decides whether either file is linked.

Wix ​

Discovers the blog feed of a Wix site. Detected by the Wix.com generator meta tag, static.parastorage.com assets or the x-wix-request-id response header.

URL PatternFeeds Generated
{account}.wixsite.com/{site}/…Blog (RSS), under the site path
Any other pageBlog (RSS)

NOTE

The feed sits at the site root wherever the blog appears in navigation, and only sites with the Wix Blog app installed have it.

Webnode ​

Discovers the article feeds of a Webnode site. Detected by the classic editor's client script, so custom domains are covered. Sites built in Webnode 2 serve no feeds and are not matched.

URL PatternFeeds Generated
{site}/{page}/Section articles† · all articles (RSS)
{site}/news/{article}/All articles (RSS)
Any other pageAll articles (RSS)

† Found only by the Platform method.

NOTE

A section feed is named after the page that holds its articles, so a page without an articles block has none. A block whose name repeats another's is numbered, blog1.xml, and a page holding one gets the unnumbered feed.

Joomla ​

Discovers the feed forms of a Joomla list view. Detected by the Joomla! generator meta tag or the joomla-script-options script every Joomla 3, 4 and 5 page ships.

URL PatternFeeds Generated
Any list viewView (RSS + Atom)

NOTE

Only list views produce a feed. A non-list view answers 404 as application/xml with an <error> root. The ?format=feed form is used because it works with and without search-engine friendly URLs, while the .feed suffix answers 404 on a site without the .html suffix.

WriteFreely ​

Discovers the feeds of a WriteFreely blog. Detected by the WriteFreely generator meta tag or the /css/write.css stylesheet.

URL PatternFeeds Generated
{instance}/{blog}Blog · instance reader† (RSS)
{instance}/{blog}/tag:{tag}Tag · blog · instance reader† (RSS)
{instance}/{post} on a single-user instanceBlog (RSS)
{instance}/page/{n} on a single-user instanceBlog (RSS)
{instance}/lang:{code} on a single-user instanceBlog (RSS)
{instance}/archive on a single-user instanceBlog (RSS)
{instance}/tag:{tag} on a single-user instanceTag · blog (RSS)

† Found only by the Platform method.

NOTE

A single-user instance serves its blog at the root, so the blog path of a post is read from the link in the blog title rather than from the URL.

Svbtle ​

Discovers the Atom feed of a Svbtle blog. Detected by the Svbtle.com generator meta tag or lightning.svbtle.com/cargo/ assets.

URL PatternFeeds Generated
Any page on a blog hostPosts (Atom)

NOTE

svbtle.com itself is excluded: its /feed answers 200 with an HTML discovery page, and the svbtle.com/{user}/feed form does not exist.

Textpattern ​

Discovers the feeds of a Textpattern site. Detected by the Textpattern generator meta tag.

URL PatternFeeds Generated
Any pagePosts (RSS + Atom)

Grav ​

Discovers the feed forms of a Grav listing page. Detected by the GravCMS generator meta tag, a /user/themes/ or /user/plugins/ asset path, or the grav-site-{hash} cookie.

URL PatternFeeds Generated
{site}/Site root† (RSS + Atom) at /.rss and /.atom
Any listing pagePage (RSS + Atom)

† Found only by the Platform method.

NOTE

The generator value is matched in full, because the meta content is compared as a prefix and Grav alone also matches Gravity Forms.

Mailchimp ​

Discovers the RSS feed of a Mailchimp campaign archive.

URL PatternFeeds Generated
{dc}.campaign-archive.com/?u={u}&id={id}Archive (RSS)

NOTE

The datacentre prefix and both ids come from the input URL; none of them can be derived.

Discuz! ​

Discovers the feeds of a Discuz! board. Detected by the Discuz! generator meta tag or the {prefix}_saltkey cookie.

URL PatternFeeds Generated
{board}/forum-{fid}-1.htmlBoard · site† (RSS)
{board}/forumdisplay.php?fid={fid} on Discuz! 7 and olderBoard · site† (RSS) from rss.php
{board}/archiver/?fid-{fid}.html or {board}/archiver/fid-{fid}.htmlBoard† · site† (RSS), from rss.php on Discuz! 7 and older
Any other pageSite (RSS)

† Found only by the Platform method.

NOTE

Many installs gate the feed behind a login and answer with an HTML notice at status 200, so the body is what decides.

XenForo ​

Discovers the feeds of a XenForo board. Detected by the XF or XenForo id on the html element.

URL PatternFeeds Generated
{board}/f/{slug}.{id} or {board}/forums/{slug}.{id}Forum · board (RSS)
Any other pageBoard (RSS)*

* The board feed sits under the forum route prefix, /forums/-/index.rss by default and /f/-/index.rss where the board renames it. A page outside a forum carries no prefix, so both are emitted.

NOTE

A missing forum answers with an XML error document rather than HTML, so a check for well-formed XML passes on a 404.

FC2 Blog ​

Discovers the RSS feeds of an FC2 blog.

URL PatternFeeds Generated
{user}.blog.fc2.comPosts · comments · trackbacks (RSS)
{user}.blog{n}.fc2.comPosts · comments · trackbacks (RSS)
{user}.fc2.netPosts · comments · trackbacks (RSS)
{user}.blog.2nt.comPosts · comments† · trackbacks† (RSS)

† Found only by the Platform method.

NOTE

The canonical host redirects to a numbered host from the old sharding scheme, so both shapes are matched and the feed is built from whichever host answers.

Togetter ​

Discovers the feeds of a Togetter curator or the site-wide popular feed.

URL PatternFeeds Generated
togetter.com/id/{user}Curator† · popular† (RSS)
Any other pagePopular (RSS)

† Found only by the Platform method.

Syosetu ​

Discovers the Atom feeds of a Syosetu author.

URL PatternFeeds Generated
mypage.syosetu.com/{writerId}Author novels† · activity (Atom)

† Found only by the Platform method.

NOTE

There is no per-work feed, and a novel URL carries an ncode rather than the numeric writer id, so only an author page resolves.

Cnblogs ​

Discovers the feed of a Cnblogs blog.

URL PatternFeeds Generated
cnblogs.com/{user}Posts

NOTE

The response says RSS while the document is Atom, and the body opens with a byte order mark before the XML declaration.

Homeland ​

Discovers the feeds of a Homeland forum. Detected by the Homeland generator meta tag or the _homeland_session cookie.

URL PatternFeeds Generated
{site}/topics/node{id}Node† · topics (RSS)
Any other pageTopics (RSS)

† Found only by the Platform method.

LearnKu ​

Discovers the feeds of a LearnKu community.

URL PatternFeeds Generated
learnku.com/{community}Community† · site (RSS)
Any other pageSite (RSS)

† Found only by the Platform method.

Habr ​

Discovers the feeds of a Habr hub, user or company, plus the site articles feed.

URL PatternFeeds Generated
habr.com/{lang}/hubs/{hub}Hub · articles (RSS)
habr.com/{lang}/users/{user}User · articles (RSS)
habr.com/{lang}/companies/{company}Company · articles (RSS)
Any other pageArticles (RSS)

NOTE

The language segment is taken from the page URL and every one of these paths needs its trailing slash.

phpBB ​

Discovers the feeds of a phpBB board. Detected by the phpbb body id or the {name}_u, {name}_k and {name}_sid cookies.

URL PatternFeeds Generated
{board}/viewtopic.php?t={id}Topic · forum?, plus the board feeds (Atom)
{board}/viewtopic.php?p={id}Topic from the page's canonical link, plus the board feeds (Atom)
{board}/viewforum.php?f={id}Forum?, plus the board feeds (Atom)
Any other pageBoard: all posts · news† · new topics · active topics? · forums (Atom)

† Found only by the Platform method.

? Not measured, the feed failed to load during the run.

NOTE

A board is routinely mounted under a sub-path, so the feed is built from the directory holding the script. Each feed is an administrator toggle, so a board serves any subset of them.

NodeBB ​

Discovers the feeds of a NodeBB forum. Detected by the X-Powered-By response header.

URL PatternFeeds Generated
{forum}/category/{cid}Category, plus the site feeds (RSS)
{forum}/topic/{tid}Topic, plus the site feeds (RSS)
Any other pageRecent† · popular† (RSS)

† Found only by the Platform method.

FluxBB ​

Discovers the feeds of a FluxBB board. Detected by the brdheader and brdmain ids together, or the brdmenu and brdfooter ids together, which the board prints whatever its template.

URL PatternFeeds Generated
{board}/viewforum.php?id={id}Forum (Atom) · posts† (RSS + Atom)
{board}/viewtopic.php?id={id}Topic (Atom) · posts† (RSS + Atom)
Any other pagePosts (RSS† + Atom)

† Found only by the Platform method.

MyBB ​

Discovers the feeds of a MyBB board. Detected by the mybb[lastvisit] cookie, under any cookie prefix, or the cookiePrefix and cookieDomain script variables core prints in every page head.

URL PatternFeeds Generated
{board}/forumdisplay.php?fid={id} or {board}/forum-{id}.htmlForum · latest threads (RSS + Atom)
{board}/showthread.php?tid={id} or {board}/thread-{id}.htmlForum† from the breadcrumb · latest threads (RSS + Atom)
Any other pageLatest threads (RSS + Atom)

† Found only by the Platform method.

NOTE

A board is routinely mounted under a sub-path, so the feed is built from the board URL the page prints as rootpath, or from the page's directory on a board older than 1.8.

SMF ​

Discovers the feeds of a Simple Machines Forum. Detected by the smf_scripturl and smf_theme_url script variables core prints in every page head.

URL PatternFeeds Generated
{script}?board={id}Board · recent posts (RSS + Atom†)
{script}?topic={id}Board from the rel="index" link · recent posts (RSS + Atom†)
Any other pageRecent posts (RSS + Atom)

† Found only by the Platform method.

NOTE

A forum is routinely mounted under a sub-path, so the feed is built from the script URL the page prints as smf_scripturl. A forum can disable feeds, and then the feed URLs answer with an HTML page.

Mobilizon ​

Discovers the feeds of a Mobilizon instance or group. Detected by the noscript notice, which is the only text the server renders on every page.

URL PatternFeeds Generated
{instance}/@{group}Group · instance† (Atom)
Any other pageInstance (Atom)

† Found only by the Platform method.

Hubzilla ​

Discovers the Atom feed of a Hubzilla channel. Detected by the hubzilla generator meta tag or the var zid script core prints in every page head.

URL PatternFeeds Generated
{hub}/channel/{name}, {hub}/profile/{name} or {hub}/@{name}Channel (Atom)

NOTE

There is no site-wide feed, so a page outside a channel is not matched.

snac ​

Discovers the RSS feed of a snac user. Detected by the snac/ generator meta tag or the x-creator: snac/… response header.

URL PatternFeeds Generated
{instance}/{user}, {instance}/{user}/p/{id} or {instance}/{user}/h/{month}.htmlPosts (RSS)

NOTE

An instance is routinely mounted under a sub-path, so the feed is built from the page path and never from the origin.

Shaarli ​

Discovers the feeds of a Shaarli instance. Detected by the shaarli-menu id or the shaarli cookie. An instance under a sub-path gets its feeds there, read from js_base_path or from the page directory.

URL PatternFeeds Generated
Any pagePosts (RSS + Atom), plus the pre-0.12 shape

PeerTube ​

Discovers the feeds of a PeerTube instance, channel or account. Detected by the X-Powered-By response header.

URL PatternFeeds Generated
{instance}/c/{channel}Channel · instance
{instance}/a/{account}Account† · instance
Any other pageInstance

† Found only by the Platform method.

NOTE

A channel federated from another instance is addressed as [email protected], and the bare handle answers 404.

Funkwhale ​

Discovers the RSS feed of a Funkwhale channel. Detected by the Funkwhale generator meta tag or the fake-app element of its app shell.

URL PatternFeeds Generated
{instance}/channels/{handle}Channel (RSS)
{instance}/channels/{handle}@{domain}Channel (RSS) on the channel's own instance

NOTE

The v1 API path is emitted rather than v2, which one instance advertises in its own link tag while another answers 404 for it. An unknown channel answers 404 carrying an RSS content type and an <rss> root.

Art19 ​

Discovers the RSS feed of an Art19 show.

URL PatternFeeds Generated
art19.com/shows/{slug}Show (RSS)

NOTE

The feed is derived from the URL in hand, never from where it redirects: a show can redirect to a site that mentions no feed while the derived feed still resolves.

Omny Studio ​

Discovers the RSS feed of an Omny Studio show.

URL PatternFeeds Generated
omny.fm/shows/{slug}Show (RSS)

NOTE

A show whose page answers 404 can still resolve through this shortcut, which redirects to an identifier path on the content host.

Blubrry PowerPress ​

Discovers the podcast feed of a WordPress site running the PowerPress plugin. Detected by the player function the plugin writes into the page.

URL PatternFeeds Generated
Any pagePodcast (RSS)

NOTE

Generic discovery finds {site}/feed/, which is the blog feed. This adds the podcast feed. A site can redirect it to its podcast host, which resolves normally.

Podlove Publisher ​

Discovers the podcast feeds of a WordPress site running the Podlove Publisher plugin. Detected by the plugin's asset path, and the feeds are read from the alternate links the plugin prints on every page, since the owner sets each feed's slug.

URL PatternFeeds Generated
Any pagePodcasts (RSS), one per feed the site marks discoverable

Podomatic ​

Discovers the RSS feed of a Podomatic show.

URL PatternFeeds Generated
{show}.podomatic.comShow (RSS)
podomatic.com/podcasts/{show}Show (RSS)

iVoox ​

Discovers the RSS feed of an iVoox podcast.

URL PatternFeeds Generated
ivoox.com/{slug}_sq_f{id}_1.htmlPodcast† (RSS)
ivoox.com/{slug}_rf_{episode}_1.htmlPodcast† (RSS), read from the episode page's series link

† Found only by the Platform method.

Atypon ​

Discovers the table of contents feed of a journal hosted on Atypon Literatum: ACM, ASCE, Health Affairs, INFORMS, Mary Ann Liebert, NEJM, Sage, Science, SIAM, Taylor & Francis, University of Chicago Press and Wiley.

URL PatternFeeds Generated
{host}/toc/{code}/…Journal (RDF)
{host}/journal/{code}Journal (RDF)
{host}/loi/{code}Journal (RDF)
tandfonline.com/journals/{code}Journal (RDF)
journals.sagepub.com/home/{code}Journal (RDF)
onlinelibrary.wiley.com/journal/{code}Journal (RSS) · Most cited (RSS)

NOTE

Journal pages answer a server-side fetch with a Cloudflare challenge, so the feed is derived from the URL alone. Article pages under /doi/ name no journal and are not matched.

SoundOn ​

Discovers the RSS feed of a SoundOn podcast. The player page is a script-only shell with no feed link.

URL PatternFeeds Generated
player.soundon.fm/p/{id}Podcast† (RSS)
player.soundon.fm/p/{id}/episodes/{episodeId}Podcast† (RSS)
player.soundon.fm/embed?podcast={id}Podcast† (RSS)

† Found only by the Platform method.

crates.io ​

Discovers the RSS feeds of crates.io, built from the URL, since the page answers 404 to a request without Accept: text/html.

URL PatternFeeds Generated
crates.ioNew crates† · recent updates† (RSS)
crates.io/crates/{name}Crate releases† (RSS)

† Found only by the Platform method.

NOTE

The feed path takes the crate name exactly as crates.io spells it, so a page URL with another case or - in place of _ leads to a feed that answers 403.

Packagist ​

Discovers the RSS and Atom feeds of Packagist packages, vendors and the site.

URL PatternFeeds Generated
packagist.org/packages/{vendor}/{package}Package releases (RSS + Atom†)
packagist.org/packages/{vendor}Vendor releases (RSS + Atom†)
packagist.org/extensionsNew extensions (RSS + Atom†) · extension releases (RSS + Atom†)
packagist.org/*New packages (RSS + Atom†) · new releases (RSS + Atom†)

† Found only by the Platform method.

Plurk ​

Discovers Atom feeds for Plurk users and single plurks.

URL PatternFeeds Generated
plurk.com/{username}User plurks (Atom)
plurk.com/u/{username}User plurks (Atom)
plurk.com/m/{username}User plurks† (Atom)
plurk.com/p/{id}Plurk responses (Atom)
plurk.com/m/p/{id}Plurk responses† (Atom)

† Found only by the Platform method.

Internet Archive ​

Discovers the RSS feeds of Internet Archive collections and searches. A collection page is told from an item page by its markup: collections serve the app shell that loads /offshoot_assets/, and items serve full HTML. Item pages resolve nothing.

URL PatternFeeds Generated
archive.org/details/{collection}Collection† (RSS)
archive.org/search?query={query}Search† (RSS)

† Found only by the Platform method.

Sveriges Radio ​

Discovers the feed of a Sveriges Radio program.

URL PatternFeeds Generated
sverigesradio.se/{program}Program (RSS)
sverigesradio.se/...?programid={id}Program† (Atom)

† Found only by the Platform method.

NOTE

Program pages answer 403 to many server-side fetches, so the feed is derived from the URL alone. A discontinued program's feed answers 404.

DokuWiki ​

Discovers the recent changes feeds of a DokuWiki wiki. Detected by the DokuWiki session cookie. A wiki under a sub-path gets its feeds there, read from the start link the page prints or from the cookie path.

URL PatternFeeds Generated
A page inside a namespaceNamespace recent changes† · namespace pages · recent changes
Any other pageRecent changes

† Found only by the Platform method.

NOTE

The feed format is a wiki setting, so one wiki serves RSS 1.0 and the next Atom from the same feed.php.

MediaWiki ​

Discovers the page history and recent changes feeds of a MediaWiki wiki. Detected by the EditURI link to api.php?action=rsd that core prints in every page head, which also gives the script path, so a wiki under /w/ gets its feeds there. The page title is read from the wgPageName config core prints, whatever the URL rewriting.

URL PatternFeeds Generated
Any page with a titlePage history† · recent changes
A special pageRecent changes

† Found only by the Platform method.

Gancio ​

Discovers the RSS feeds of a Gancio event calendar. Detected by the custom_css stylesheet its layout prints in every page head, which also gives the install root, so a calendar under a sub-path gets its feeds there.

URL PatternFeeds Generated
{instance}/tag/{tag}Tag (RSS)
{instance}/place/{id}/{name}Place (RSS)
{instance}/collection/{name}Collection (RSS)
Any other pageSite (RSS)

NOTE

The iCal feeds Gancio serves beside each RSS feed are not emitted, since they are not RSS, Atom or JSON feeds. Gancio 2 answers 404 on the tag and place feed paths its own pages advertise.

Niconico ​

Discovers the video, live and blog feeds of a Niconico channel on ch.nicovideo.jp.

URL PatternFeeds Generated
ch.nicovideo.jp/{channel}Videos · Live† · Blog†
ch.nicovideo.jp/{channel}/videoVideos first, then Live† · Blog†
ch.nicovideo.jp/{channel}/liveLive first, then Videos† · Blog†
ch.nicovideo.jp/{channel}/blomaga or ch.nicovideo.jp/{channel}/blomaga/ar{id}Blog first, then Videos† · Live†

† Found only by the Platform method.

LibriVox ​

Discovers the RSS feed of a LibriVox audiobook, read from the feed link on the audiobook page.

URL PatternFeeds Generated
librivox.org/{slug}Audiobook (RSS)

PyPI ​

Discovers the RSS feeds of the Python Package Index, built from the URL.

URL PatternFeeds Generated
pypi.orgNew packages · recent updates (RSS)
pypi.org/project/{name}Project releases (RSS)
pypi.org/project/{name}/{version}Project releases (RSS)

RedCircle ​

Discovers the RSS feed of a RedCircle show. A show under a slug is read from the show uuid its page names in og:url.

URL PatternFeeds Generated
redcircle.com/shows/{uuid} or redcircle.com/shows/{slug}Show (RSS)
redcircle.com/shows/{uuid}/ep/{episode} or redcircle.com/shows/{slug}/ep/{episode}Show (RSS)

Royal Road ​

Discovers the update feed of a Royal Road fiction.

URL PatternFeeds Generated
royalroad.com/fiction/{id} or royalroad.com/fiction/{id}/{slug}Fiction updates (RSS)
royalroad.com/fiction/{id}/{slug}/chapter/{chapterId}/{chapterSlug}Fiction updates (RSS)

NOTE

Profile pages and fiction lists serve no feed, so only fiction and chapter pages resolve.

Flipboard ​

Discovers the RSS feeds of Flipboard profiles, magazines, storyboards and topics.

URL PatternFeeds Generated
flipboard.com/@{username}Profile
flipboard.com/@{username}/{magazine}Magazine or storyboard
flipboard.com/topic/{topic}Topic

Webtoons ​

Discovers the episode feed of a WEBTOON series, Originals and Canvas alike.

URL PatternFeeds Generated
webtoons.com/{language}/{genre}/{name}/list?title_no={id}Series
webtoons.com/{language}/{genre}/{name}/{episode}/viewer?title_no={id}Series†
webtoons.com/{language}/canvas/{name}/list?title_no={id}Series

† Found only by the Platform method.

Lichess ​

Discovers Atom feeds for Lichess user blogs, the official blog and the community blogs.

URL PatternFeeds Generated
lichess.org/@/{user}/blog or lichess.org/@/{user}/blog/{slug}/{id}User blog
lichess.org/blog or lichess.org/blog/{id}/{slug}Official Lichess blog
lichess.org/blog/community or lichess.org/{lang}/blog/communityCommunity blogs, in that language when the URL names one
Any other pageSite-wide updates

@wiki ​

Discovers the updated pages and new pages feeds of an @wiki (atwiki.jp) wiki. Links to the legacy www{N}.atwiki.jp hosts redirect to w.atwiki.jp.

URL PatternFeeds Generated
w.atwiki.jp/{wiki}/…Updated pages (RDF + Atom) · new pages (RDF)

Teletype.in ​

Discovers RSS and Atom feeds for Teletype.in blogs.

URL PatternFeeds Generated
teletype.in/@{user}Posts (RSS + Atom)
teletype.in/@{user}/{post}Posts (RSS + Atom)

PmWiki ​

Discovers the recent changes feeds of a PmWiki wiki. Detected by the <!--HTMLHeader--> comment every skin prints, so any domain is covered. A wiki under a sub-path gets its feeds there.

URL PatternFeeds Generated
{wiki}/{Group}/{Page}Group recent changes† · site recent changes (RSS + Atom†)
{wiki}?n={Group}.{Page}Group recent changes† · site recent changes (RSS + Atom†)
Any other pageSite recent changes† (RSS + Atom)

† Found only by the Platform method.

NOTE

Feeds are off in a default PmWiki install and a wiki owner turns them on, so many wikis answer these URLs with the page itself.

Ning ​

Discovers the site feeds of a Ning network and the feed of a forum topic. Detected by the static.ning.com/socialnetworkmain/ asset path, so ning.com subdomains and custom domains are both covered. Ning 3 networks load their assets from another path and serve none of these feeds, so they are left to generic discovery.

URL PatternFeeds Generated
{network}/forum/topics/{topic}Topic · latest activity† · blog posts† · forum
Any other pageLatest activity† · blog posts† · forum†

† Found only by the Platform method.

vBulletin ​

Discovers the feeds of a vBulletin 3 to 6 forum. Detected by the clientscript/vbulletin-core.js script of vBulletin 4, the js/header-rollup script of vBulletin 5 and 6, or the {prefix}lastvisit and {prefix}lastactivity cookies.

URL PatternFeeds Generated
{forum}/forumdisplay.php?f={id}Forum · site (RSS)
{forum}/forumdisplay.php?{id}-{title}Forum · site (RSS)
Any other pageSite (RSS)
Any vBulletin 5 or 6 channel pageChannel · site (RSS)
Any vBulletin 5 or 6 pageSite at {forum}/external?type=rss2 (RSS)

NOTE

The forum root is read from the core script's URL, or the page's <base> on vBulletin 5 and 6, so a forum under a sub-path or behind rewritten page URLs gets its feeds there. A vBulletin 3 or 4 forum with feeds turned off answers these URLs with an empty page.

Omeka ​

Discovers the item feeds of an Omeka Classic site, self-hosted or on omeka.net. Detected by the plugin and core script asset paths every page loads, so any domain is covered. A site under a sub-path gets its feeds there.

URL PatternFeeds Generated
{site}/items/browse?{filters}Filtered items for the same tags, collection or search (RSS + Atom)
Any other pageItems (RSS + Atom)

Koha ​

Discovers the feeds of a Koha library catalogue. Detected by the /opac-tmpl/ asset path every OPAC theme loads, so any domain is covered.

URL PatternFeeds Generated
{catalogue}/cgi-bin/koha/opac-search.pl?q={query}Search results, newest acquisitions first (RSS)
{catalogue}/cgi-bin/koha/opac-shelves.pl?op=view&shelfnumber={id}List† (RSS)
{catalogue}/cgi-bin/koha/opac-showreviews.plRecent comments (RSS)

† Found only by the Platform method.

public-inbox ​

Discovers the Atom feeds of a public-inbox mailing list archive. Detected by the help and color links every page prints, so any domain is covered, and lore.kernel.org by its host, since its pages answer a plain fetch with a bot challenge. An inbox under a sub-path or at the root of its host gets its feeds there.

URL PatternFeeds Generated
{inbox}/Messages (Atom)
{inbox}/{message-id}/Thread · messages (Atom)
{inbox}/{message-id}/T/Thread · messages (Atom)

CivicPlus ​

Discovers the module feeds of a CivicPlus government website. Detected by the CP_IsMobile cookie or the /Areas/Layout/Assets/ scripts, so any domain is covered. The module is read from the page's pageModuleID field, and a page with no module feed gets the site-wide Pages feed.

URL PatternFeeds Generated
{site}/CivicAlerts.aspx, {site}/m/newsflashNews Flash† (RSS)
{site}/Blog.aspxBlog† (RSS)
{site}/Gallery.aspxPhoto Gallery† (RSS)
{site}/Calendar.aspx, {site}/m/calendarCalendar† (RSS)
{site}/AlertCenter.aspxAlert Center† (RSS)
{site}/RealEstate.aspxReal Estate Locator† (RSS)
{site}/AgendaCenterAgenda Center† (RSS)
{site}/Jobs.aspxJobs† (RSS)
{site}/CivicMedia.aspxMedia Center† (RSS)
{site}/, any other pagePages† (RSS)

† Found only by the Platform method.

NOTE

Each feed covers every category of its module. The home page, content pages and modules with no feed of their own get the Pages feed.

DSpace ​

Discovers the feeds of a DSpace repository, on any domain. DSpace 7 and later is detected by the ds-app element of its Angular app, and its OpenSearch feeds are built on the REST API the page's config names, which can sit on another host. DSpace 6 and older is detected by the dspace-theme.css stylesheet of the JSPUI, the X-Cocoon-Version header of the XMLUI or the DSpace generator meta of older JSPUI releases, each beside a feed link in the DSpace shape, and its feeds are the ones the page links.

URL PatternFeeds Generated
{repository}/collections/{uuid}Collection† · site† (RSS + Atom)
{repository}/communities/{uuid}Community · site† (RSS + Atom)
Any other page, DSpace 7 and laterSite† (RSS + Atom)
{repository}/handle/{prefix}/{id}, DSpace 6 and olderCollection or community (RSS 1.0, RSS 2.0 + Atom, as linked)
{repository}/, DSpace 6 and olderSite (RSS 1.0, RSS 2.0 + Atom, as linked)

† Found only by the Platform method.

NOTE

The search endpoint ignores a scope it does not know and answers with the site feed, so only an id the page URL names is used.

SPIP ​

Discovers the feeds of a SPIP site. Detected by the Composed-By or X-Spip-Cache header SPIP sends with every page, so any domain is covered. A site under a sub-path gets its feeds there.

URL PatternFeeds Generated
{site}/spip.php?article{id}, article{id}.htmlArticle comments† · latest articles
{site}/spip.php?rubrique{id}, rubrique{id}.htmlSection · latest articles
{site}/spip.php?mot{id}, mot{id}.htmlKeyword† · latest articles
{site}/spip.php?auteur{id}, auteur{id}.htmlAuthor · latest articles
Any other pageLatest articles

† Found only by the Platform method.

NOTE

Comment feeds come from the comments plugin, so a site without it answers them with an error. Each page is also recognised in its spip.php?page=article&id_article={id} form. Rewritten URLs such as /Some-Title name no id, and those pages get the latest articles feed alone.

Odoo ​

Discovers the Atom feed of a blog on an Odoo website. Detected by the frontend_lang and session_id cookies Odoo sets on every website page, so any domain is covered. A page under a language prefix gets the feed in that language.

URL PatternFeeds Generated
{site}/blog/{blog}-{id}Blog (Atom)
{site}/blog/{blog}-{id}/{post}-{id}Blog (Atom)
{site}/blog/{blog}-{id}/post/{post}-{id}Blog (Atom)
{site}/blog/{blog}-{id}/tag/{tag}-{id}Blog (Atom)

Zenfolio ​

Discovers the gallery and blog feeds of a Zenfolio photography site. A custom domain is detected by cdn.zenfolio.com/zf/ stylesheets or the zf_5y_visitor cookie.

URL PatternFeeds Generated
{user}.zenfolio.com/…Recent galleries · featured galleries · blog (RSS + Atom)
Any other pageRecent galleries · featured galleries · blog (RSS + Atom)

NOTE

The featured and blog feeds answer with no items on a site that has no featured galleries or blog posts.

BubbleLife ​

Discovers the RSS feed of a BubbleLife community. The page's alternate link has no href, so the feed id is read from the community's library links.

URL PatternFeeds Generated
{city}.bubblelife.com/community/{name}Posts† (RSS)
{city}.bubblelife.com/community/{name}/library/{id}Library† (RSS)
{city}.bubblelife.com/community/{name}/type/rssinfoPosts† (RSS)

† Found only by the Platform method.

NOTE

A city news community links no library of its own, so its page yields no feed. Its rssinfo page names the feed.

BigCommerce ​

Discovers the product and blog feeds of a BigCommerce store. Detected by the SHOP_SESSION_TOKEN cookie, so any domain is covered. Interspire Shopping Cart installs set the same cookie and serve the same feeds.

URL PatternFeeds Generated
Category pageCategory new products · category popular products · new products · popular products · featured products† · blog (RSS + Atom)
{store}/search.php?search_query={query}Product search · new products · popular products · featured products† · blog (RSS + Atom)
Any other pageNew products · popular products · featured products† · blog (RSS + Atom)

† Found only by the Platform method.

NOTE

A category URL carries only its slug, so the category id is read from the feed link the category page prints.

Cocolog ​

Discovers the posts feeds of a Cocolog blog on cocolog-nifty.com and its sibling domains. One account can host several blogs, each under its own path. The home page names its blog only in its feed links, so a home page URL needs the page content.

URL PatternFeeds Generated
{user}.cocolog-nifty.com/{blog}/…Posts (Atom + RDF + RSS)
{user}.cocolog-nifty.comPosts of the blog the page links (Atom + RDF + RSS)

blog.hu ​

Discovers the feeds of blog.hu blogs, and the activity feed of a blog.hu user.

URL PatternFeeds Generated
*.blog.huPosts (RSS + Atom) · comments (RSS + Atom)
blog.hu/user/{id}User activity† (RSS)

† Found only by the Platform method.

ChamberMaster ​

Discovers the RSS feeds of a ChamberMaster (GrowthZone) chamber of commerce directory. Detected by the x-source: cmdotnet… response header, so any domain is covered. The pages link none of these feeds. On a chambermaster.com or memberzone.com subdomain the feeds are spelled with http, since over https they redirect to the sign-in page.

URL PatternFeeds Generated
{site}/events/…Upcoming events† · new events† · featured events†
{site}/list/…New members† · featured members†
{site}/jobs/…New jobs†
{site}/hotdeals/…New coupons†
{site}/marketspace/…, {site}/marketplace/…New marketplace items†
{site}/news/…News releases†
{site}/MemberToMember/…New member to member deals†

† Found only by the Platform method.

PChome Online 個人新聞台 ​

Discovers RSS feeds for papers on PChome's blog host, including category feeds. Pages on the mobile host mypaper.m.pchome.com.tw get the same feeds.

URL PatternFeeds Generated
mypaper.pchome.com.tw/{user}Posts
mypaper.pchome.com.tw/{user}/category/{id}Category† · posts

† Found only by the Platform method.

PukiWiki ​

Discovers the recent changes feed of a PukiWiki wiki or a Quick Homepage Maker site. Detected by the default pukiwiki.css stylesheet, or by Quick Homepage Maker's QHMSSID session cookie, so any domain is covered. A wiki under a sub-path or on rewritten page URLs gets its feed at its own root.

URL PatternFeeds Generated
{wiki}/index.php?{Page}Recent changes (RSS)
{wiki}/?{Page}Recent changes (RSS)
{wiki}/{Page}Recent changes (RSS)

Gnuboard ​

Discovers the RSS feed of a Gnuboard 4 or 5 board. Detected by the visit cookie Gnuboard sets under the md5 of ck_visit_ip, so any domain is covered. A board under a sub-path gets its feed there.

URL PatternFeeds Generated
{site}/bbs/board.php?bo_table={board}Board†
{site}/bbs/board.php?bo_table={board}&wr_id={post}Board
{site}/{board} or {site}/{board}/{post} on Gnuboard 5Board, read from the page's g5_bo_table variable

† Found only by the Platform method.

NOTE

A board owner can turn its feed off, and Gnuboard then answers the feed URL with an HTML page, so discovery finds nothing there.

ProBoards ​

Discovers the posts feed of a ProBoards forum. A forum on a custom domain is detected by the proboards.combined script ProBoards serves from its own storage hosts.

URL PatternFeeds Generated
*.proboards.comPosts (RSS)
*.freeforums.netPosts (RSS)
*.boards.netPosts (RSS)
Any page on a custom domainPosts (RSS)

NOTE

On a ProBoards domain, a request with a browser user agent gets a proof-of-work challenge instead of the page, so the feed is built from the forum host alone. The feed answers 406 to a bare Mozilla/5.0 or an empty user agent.

The Mail Archive ​

Discovers the RSS feed of a mailing list archived on The Mail Archive (mail-archive.com). The list is named by its posting address in the first path segment.

URL PatternFeeds Generated
mail-archive.com/{list}/Mailing list
mail-archive.com/{list}/msg{n}.htmlMailing list†

† Found only by the Platform method.

Bloggang ​

Discovers RSS feeds for Bloggang blogs. A blog lives on its own subdomain, which redirects to its pages on www.bloggang.com.

URL PatternFeeds Generated
{user}.bloggang.comPosts
www.bloggang.com/mainblog.php?id={user}Posts
www.bloggang.com/viewblog.php?id={user}Posts
www.bloggang.com/viewdiary.php?id={user}Posts

SME Blog ​

Discovers the RSS feeds of blogs on SME Blog, the blog platform of the Slovak daily SME.

URL PatternFeeds Generated
blog.sme.sk/{user}Posts
blog.sme.sk/{user}/{category}/{slug}Posts
blog.sme.skSite
blog.sme.sk/t/{topic}Site

Acomics ​

Discovers RSS feeds for Acomics comics and users. A user's feed carries the new issues of the comics the user subscribes to.

URL PatternFeeds Generated
acomics.ru/~{comic}Comic issues
acomics.ru/-{user}User subscriptions†

† Found only by the Platform method.

OpenCart Journal ​

Discovers the blog feed of an OpenCart store running the Journal theme. Detected by the data-jv or data-j2v version attribute Journal prints on the <html> element, so any domain is covered. A store under a sub-path gets its feed there, read from the page's <base href>.

URL PatternFeeds Generated
Any page of a Journal 3 storeBlog† (RSS), route=journal3/blog/feed, or journal3/blog.feed on OpenCart 4
Any page of a Journal 2 storeBlog (RSS), route=journal2/blog/feed

† Found only by the Platform method.

Eklablog ​

Discovers the posts and comments feeds of an Eklablog blog. A blog on a custom domain is detected by the script it loads from connect.eklablog.com. This also covers blogs on *.fatalblog.com, *.shonenblog.com, *.kilariblog.com, *.blogy.fr and *.shojoblog.com.

URL PatternFeeds Generated
*.blogg.org, *.blogueuse.fr, *.cd.st, *.doremiblog.com, *.ek.la, *.eklablog.com, *.eklablog.fr, *.eklablog.net, *.id.st, *.jeblog.fr, *.kazeo.com, *.kif.fr, *.lo.gs, *.revolublog.com, *.zic.frPosts · comments†
Any page on a custom domainPosts · comments†

† Found only by the Platform method.

ComicFury ​

Discovers the feeds of a ComicFury webcomic.

URL PatternFeeds Generated
{comic}.thecomicseries.com, .thecomicstrip.org, .the-comic.org, .webcomic.ws or .cfw.meComic
comicfury.com/comicprofile.php?url={comic}Comic†
comicfury.com/read/{comic}Comic feed in the ComicFury reader

† Found only by the Platform method.

Haley Marketing job boards ​

Discovers the jobs feed of a job board Haley Marketing hosts for a staffing firm. Detected by the x-sasnode response header naming a haleymarketing.com node together with a link to the board's /index.smpl?arg=jb_ routes, so any domain is covered.

URL PatternFeeds Generated
Any board pageJobs

Jimdo ​

Discovers the blog feed of a Jimdo site. Detected by the x-jimdo-wid response header, so *.jimdofree.com sites and custom domains are both covered.

URL PatternFeeds Generated
Any pageBlog (RSS)

NOTE

Only sites with a blog have the feed.

YesWiki ​

Discovers the Bazar entry feeds and the recent changes feed of a YesWiki wiki. Detected by the YesWiki- session cookie. A wiki under a sub-path gets its feeds there, read from the cookie path. Form ids come only from the entries and lists the page shows.

URL PatternFeeds Generated
A page showing Bazar entries or listsEntries of each form shown · all entries · recent changes
Any other pageAll entries · recent changes

Forumotion ​

Discovers the feeds of a Forumotion forum, also branded Forumactif, Foroactivo, Forumeiros and Ahlamontada. Detected by the _userdata script every page prints, so custom domains are covered. The forum comes from the page's breadcrumb.

URL PatternFeeds Generated
{forum}/f{id}-{slug}Forum† · latest topics (RSS + Atom†)
{forum}/t{id}-{slug}The topic's forum† · latest topics (RSS + Atom†)
Any other pageLatest topics (RSS + Atom)

† Found only by the Platform method.

Noticeable ​

Discovers the feeds of a Noticeable newspage. Newspages on noticeable.news are matched by host, and a newspage on a custom domain by the assets.noticeable.news/templates/ stylesheets every template loads.

URL PatternFeeds Generated
{newspage}/labels/{label}Label† · newspage (RSS + Atom† + JSON Feed)
Any other pageNewspage (RSS + Atom† + JSON Feed)

† Found only by the Platform method.

NOTE

A label page links only the newspage feed, never its own label feed.

Legistar ​

Discovers the history feed of a Legistar legislation record or meeting, on any *.legistar.com client site. A client site on a custom domain is detected by the BIGipServerinsite.legistar.com_443 cookie Legistar's load balancer sets, or by the addthis_widget.js#username=legistarinsite script every page loads.

URL PatternFeeds Generated
{client}.legistar.com/LegislationDetail.aspx?ID={id}&GUID={guid}Legislation (RSS)
{client}.legistar.com/MeetingDetail.aspx?ID={id}&GUID={guid}Meeting (RSS)
/LegislationDetail.aspx?ID={id}&GUID={guid} on a custom domainLegislation (RSS)
/MeetingDetail.aspx?ID={id}&GUID={guid} on a custom domainMeeting (RSS)

Nethouse ​

Discovers the news and articles feeds of a Nethouse site. Custom domains are detected by the x-generator: nethouse response header.

URL PatternFeeds Generated
*.nethouse.ru, *.nethouse.meNews · articles (RSS)
Any other Nethouse pageNews · articles (RSS)

NOTE

A site with the news or articles section turned off answers that feed with 404.

Hautetfort ​

Discovers RSS and Atom feeds for blogs on *.hautetfort.com, *.blogspirit.com and *.blogspirit-business.com. Blog feeds are built on http, since blog subdomains serve no certificate for their own name.

URL PatternFeeds Generated
{blog}.{domain}Posts (RSS + Atom)
{blog}.{domain}/{category}Category (RSS) · posts
{blog}.{domain}/archives/category/{category}Category† (RSS) · posts?

† Found only by the Platform method.

? Not measured, the feed failed to load during the run.

uCoz ​

Discovers the module and forum feeds of a uCoz site. Covers sites on the uCoz domains, such as *.ucoz.ru, *.at.ua and *.narod.ru, and custom domains through the {n}{site}uCoz cookie every uCoz page sets.

URL PatternFeeds Generated
{site}/{module}/…Module (RSS) for news, publ, load, photo, blog, dir, board, stuff and forum
{site}/forum/{section}…Forum section · forum (RSS)
Any other pageNews (RSS)

NOTE

A module the site has not turned on answers 404.

dasauge ​

Discovers the RSS feed of a dasauge member profile on any of the dasauge country domains.

URL PatternFeeds Generated
dasauge.de/-{member}Profile
dasauge.de/-{member}/{page}Profile

Estranky ​

Discovers the site feeds of an Estranky site. A site serves the article feeds, the Web Slice feeds or both, depending on its template, and validation drops a set it lacks. A custom domain is detected by stylesheets or scripts loaded from the s3*.estranky.cz and s3*.estranky.sk asset hosts, or from the s3*.eoldal.hu hosts of the Hungarian eOldal brand. On a custom domain, the slice feeds take the Estranky subdomain of the page's rel="feedurl" link. An eOldal site keeps its slice feeds on its own domain, since its eoldal.hu subdomain no longer resolves.

URL PatternFeeds Generated
{site}.estranky.cz/…Posts · photos† · comments† · home page slice · photo album slice†
{site}.estranky.sk/…Posts · photos† · comments† · home page slice? · photo album slice?
Any other pagePosts · photos† · comments† · home page slice · photo album slice†

† Found only by the Platform method.

? Not measured, the feed failed to load during the run.

Color Me Shop ​

Discovers the RSS 1.0 and Atom feeds of new products in a Color Me Shop store. Shops on shop-pro.jp are matched by host, and a shop on its own domain by the colorme_PHPSESSID cookie every shop page sets.

URL PatternFeeds Generated
{shop}.shop-pro.jpProducts (RSS 1.0 + Atom)
{domain}, a shop on its own domainProducts (RSS 1.0 + Atom)

PRLog ​

Discovers the press releases feed of a PRLog pressroom.

URL PatternFeeds Generated
pressroom.prlog.org/{id}Press releases

Rakuten Blog ​

Discovers the RSS feed of a Rakuten Blog (plaza.rakuten.co.jp) blog, which Rakuten serves from api.plaza.rakuten.ne.jp.

URL PatternFeeds Generated
plaza.rakuten.co.jp/{user}/…Posts

Overblog ​

Discovers the posts feed of an Overblog blog.

URL PatternFeeds Generated
*.over-blog.com, *.over-blog.de, *.over-blog.es, *.over-blog.fr, *.over-blog.it, *.over-blog.net, *.over-blog.org, *.over.blog, *.overblog.com, *.overblog.frPosts

ExportersIndia ​

Discovers the products or services feed of an ExportersIndia business site, built by Weblink.In on the business's own domain. Detected by the template stylesheet on catalog.wlimg.com together with the page's link to /products.rss or /services.rss, so any domain is covered.

URL PatternFeeds Generated
Any page of a products siteProducts (RSS)
Any page of a services siteServices (RSS)

Wild Apricot ​

Discovers the blog and events feeds of a Wild Apricot site. Detected by the x-lb-server response header, so *.wildapricot.org sites and custom domains are both covered.

URL PatternFeeds Generated
{site}/{blog-page}Blog (RSS)
{site}/{blog-page}/{post-id}Blog? (RSS), from the post's back link
{site}/{events-page}Events (RSS), in the list and calendar views

? Not measured, the feed failed to load during the run.

NOTE

A post page links /page-{id}/RSS as its feed, which answers 404. An event page links no events page, so it gets no feed.

Jellypod ​

Discovers RSS feeds for Jellypod-hosted podcasts.

URL PatternFeeds Generated
*.jellypod.comPodcast (RSS)

Goope ​

Discovers the news feed of a Goope site, and the member news feed of a chamber of commerce site. Sites on a custom domain are detected by the QR code image served from r.goope.jp or a favicon on cdn.goope.jp.

URL PatternFeeds Generated
r.goope.jp/{site}/…News (RDF)
r.goope.jp/{site}/shokokai/member/…Member news · news (RDF)
{domain}/shokokai/member/…Member news · news (RDF)
{domain}/…News (RDF)

NOTE

A page under a t_{id} template segment gets its feeds under that segment, as the page links them.

Duck Webcomics ​

Discovers the feed of a webcomic on The Duck Webcomics.

URL PatternFeeds Generated
theduckwebcomics.com/{comic}/…Comic

is-Programmer ​

Discovers RSS feeds for is-Programmer blogs, including the comment feed of a post.

URL PatternFeeds Generated
{blog}.is-programmer.comPosts · comments · messages
{blog}.is-programmer.com/posts/{id}Post comments† · posts · comments · messages

† Found only by the Platform method.

NOTE

is-Programmer serves its blogs over http only, so the feeds are http URLs whatever the page URL's scheme.

twoday ​

Discovers RSS 1.0 feeds for blogs on *.twoday.net. A blog's skin links its posts feed as /index.rdf or /rss, and both serve the same feed.

URL PatternFeeds Generated
{blog}.twoday.netPosts
{blog}.twoday.net/topics/{topic}Topic · posts

cppblog ​

Discovers RSS feeds for cppblog blogs on www.cppblog.com and cppblog.com.

URL PatternFeeds Generated
cppblog.com/{user}Posts · comments†
cppblog.com/{user}/category/{id}.htmlCategory · posts · comments†
cppblog.com/{user}/favorite/{id}.htmlFavorites · posts · comments†

† Found only by the Platform method.

NOTE

The site's https certificate has expired, so the feeds are http://www.cppblog.com URLs whatever the page URL's scheme and host.

Reformal ​

Discovers the feedback feed of a Reformal project, on reformal.ru and its English farm idea.informer.com.

URL PatternFeeds Generated
{project}.reformal.ruFeedback (RSS)
{project}.idea.informer.comFeedback (RSS)

Bloggo ​

Discovers RSS feeds for Bloggo blogs.

URL PatternFeeds Generated
*.bloggo.nuPosts
*.bloggo.nu/{slug}Post comments · posts

podCloud ​

Discovers the RSS feed of a show hosted on podCloud.

URL PatternFeeds Generated
{show}.lepodcast.frPodcast (RSS)

PromoDJ ​

Discovers the feeds of a PromoDJ artist profile.

URL PatternFeeds Generated
promodj.com/{user}Podcast · content · blog · favorites · events
promodj.com/{user}/…Podcast · content · blog · favorites · events

NOTE

A feed the artist has never posted to answers with a redirect to the profile, which validation drops.

Shopserve ​

Discovers the news feed of a Shopserve shop. Detected by the root-relative /hpgen/HPB/ links and theme images every generated desktop page carries, so a shop on its own domain is covered.

URL PatternFeeds Generated
Any desktop pageNews (RSS)

KKTIX ​

Discovers the Atom feed of a KKTIX organizer's public events.

URL PatternFeeds Generated
{organizer}.kktix.ccEvents
{organizer}.kktix.cc/events/{event}Events†

† Found only by the Platform method.

Sportsregions ​

Discovers the news and events feeds of a Sportsregions club site. A club on its own domain is detected by the link to the platform's content report form in the footer of every club page.

URL PatternFeeds Generated
{club}.sportsregions.fr/*News · events
{custom-domain}/*News · events

Ochanoko Net ​

Discovers the RSS 1.0 feed of new products in an Ochanoko Net shop. A shop on a custom domain is detected by the cart script, /res/{template}/js/ocnk.js or /res/{template}/js/pack/ocnk-min.js.

URL PatternFeeds Generated
{shop}.ocnk.netProducts (RSS 1.0)
Any page on a custom domainProducts (RSS 1.0)

Blogia ​

Discovers the RSS feed for blogs hosted on Blogia.

URL PatternFeeds Generated
*.blogia.comPosts (RSS)

Parsiblog ​

Discovers RSS and Atom feeds for Parsiblog blogs. Parsiblog serves no HTTPS, so the feeds are always http://.

URL PatternFeeds Generated
*.parsiblog.comPosts (RSS + Atom)
*.parsiblog.irPosts (RSS + Atom), on the .com host

Blogalia ​

Discovers RDF and RSS 2.0 feeds for Blogalia blogs.

URL PatternFeeds Generated
*.blogalia.comPosts (RDF + RSS 2.0†)

† Found only by the Platform method.

Travellerspoint ​

Discovers Atom feeds for Travellerspoint travel blogs.

URL PatternFeeds Generated
*.travellerspoint.comPosts

Blogger.de ​

Discovers RSS 1.0 feeds for blogs on *.blogger.de. Every blog serves its posts at /rss.

URL PatternFeeds Generated
{blog}.blogger.dePosts

Big Cartel ​

Discovers the product feeds of a Big Cartel store. A store on its own domain is detected by the X-Frame-Options header naming my.bigcartel.com, or by its /theme_stylesheets/ stylesheet.

URL PatternFeeds Generated
*.bigcartel.comProducts
Any page on a store's own domainProducts†

† Found only by the Platform method.

NOTE

Most store themes link only /products.xml, a Google Merchant feed whose items carry no title or link, so it parses with no items. The handler emits /products.rss, which carries both.

TourTravelWorld ​

Discovers the tour packages feed of a TourTravelWorld travel site, built by Weblink.In on the agency's own domain. Detected by the template stylesheet on catalog.wlimg.com together with the page's link to /tour-packages.rss, so any domain is covered.

URL PatternFeeds Generated
Any pageTour packages (RSS)

RealEstateIndia ​

Discovers the property listings feed of a RealEstateIndia agency site, built by Weblink.In on the agency's own domain. Detected by the template stylesheet on catalog.wlimg.com together with the page's link to /property.rss, so any domain is covered.

URL PatternFeeds Generated
Any pageProperties (RSS)

PlacementIndia ​

Discovers the vacancies feed of a PlacementIndia jobs site, built by Weblink.In on the consultancy's own domain, and on a job page the feed of that one opening. Detected by the template stylesheet on catalog.wlimg.com together with the page's link to /vacancy.rss, so any domain is covered.

URL PatternFeeds Generated
Any pageVacancies (RSS)
Job pageJob opening (RSS)

GCS-web ​

Discovers the news release, SEC filing and event feeds of a company investor relations site on GCS-web. A site on the company's own domain is detected by the /sites/g/files/knoqqb{id}/ path of its assets.

URL PatternFeeds Generated
*.gcs-web.comNews releases† · SEC filings† · events†
Any page on a company's own domainNews releases† · SEC filings† · events†

† Found only by the Platform method.

Typecho ​

Discovers the feeds of a Typecho blog. Detected by a theme or plugin asset under /usr/themes/ or /usr/plugins/, which also names the site root, so a blog under a sub-path gets its own feeds.

URL PatternFeeds Generated
{site}/Posts · comments† (RSS + RSS 1.0 + Atom)
{site}/{path}Page at /feed/{path} · posts (RSS + RSS 1.0† + Atom†) · comments† (RSS + RSS 1.0 + Atom)

† Found only by the Platform method.

NOTE

A site without URL rewriting serves its feeds under /index.php/feed/, so each feed is tried in that form after /feed/. The page feed holds the posts of a category, tag, author, date or search page, or the comments of a post or page.

YM Careers ​

Discovers the job feeds of a YM Careers board that an association runs on its own domain. Detected by the x-nas-sid response header every board sends, its bot check page included.

URL PatternFeeds Generated
{board}/jobs?{search}Search at /jobs?display=rss&{search}
{board}/jobs/{filter}/{value}/…Filtered jobs at /jobs/{filter}/{value}/…?display=rss
Any other pageAll jobs at /jobs?display=rss

Edlio ​

Discovers the news and class assignment feeds of an Edlio school website. Detected by the /apps/js/common/list-pack.js script every page loads, so any domain is covered.

URL PatternFeeds Generated
{site}/apps/news/, {site}/apps/news/category/{id}News of the category the page links (RSS)
{site}/apps/classes/{id}/assignments/Assignments of the class the page links (RSS)
{site}/, any other pageNews (RSS)

Talentsoft ​

Discovers the job offer feeds of a Talentsoft career site, hosted on talent-soft.com or profils.org or on the employer's own domain. Detected by the /client/dist/talentsoft-cookies.iife.js script every page loads, so any domain is covered.

URL PatternFeeds Generated
{site}/offre-de-emploi/liste-offres.aspx?{search}, {site}/job/list-of-jobs.aspx?{search}Search feed the page links at /handlers/offerRss.ashx?{criteria} · all offers† (RSS)
{site}/, any other pageAll offers† at /handlers/offerRss.ashx?LCID={lcid}, in the language the page url or its all offers link names (RSS)

† Found only by the Platform method.

Plone ​

Discovers the search and syndication feeds of a classic Plone site. Detected by the portaltype- class every classic template prints on the body, so any domain is covered. A site under a sub-path gets its feeds there. Volto front ends print no such class and are left to generic discovery.

URL PatternFeeds Generated
{site}/@@search?{query}, {site}/search?{query}Search results for the same query at {site}/search_rss?{query} (RSS 1.0)
{site}/Site (RSS 1.0 + RSS 2.0 + Atom)
{site}/{folder}, any folder or collection pageFolder at {folder}/RSS (RSS 1.0 + RSS 2.0 + Atom)

NOTE

A site owner turns syndication on per folder, so a folder without it answers these URLs with 404. Document, news item, event, file, image and link pages serve no feed.

NetCrew CMS ​

Discovers the site updates feed of a Japanese prefecture, city or town website built on NetCrew CMS. Detected by the root /ssi/js/ and /ssi/css/ asset paths every template loads, so any domain is covered. Section pages link their own feeds, whose names are internal ids, so only the home page needs the handler.

URL PatternFeeds Generated
{site}/, {site}/index.htmlSite updates† (RDF or RSS)

† Found only by the Platform method.

Redmine ​

Discovers the Atom feeds of a Redmine install, Planio's hosted ones on plan.io included. Detected by the "Powered by Redmine" footer link, the Redmine description meta or the _redmine_session cookie, so any domain is covered. An install under a sub-path gets its feeds there. A private project redirects to the sign-in page, and an error page prints Redmine's error block, so neither gets a feed.

URL PatternFeeds Generated
{site}/projects/{project}, any other project pageProject activity, plus issues† and news? when the project menu lists them
{site}/projects/{project}/issuesProject issues
{site}/projects/{project}/newsProject news
{site}/projects/{project}/activityProject activity
{site}/projects/{project}/boards/{id}Forum messages
{site}/projects/{project}/repository/…Repository revisions
{site}/issues/{id}Issue updates
{site}/issuesIssues
{site}/newsNews
{site}/activityActivity
{site}/projectsProjects
{site}/, any other pageNews · activity

† Found only by the Platform method.

? Not measured, the feed failed to load during the run.

b2evolution ​

Discovers the feeds of a b2evolution blog, kowsarblog.ir among them. Detected by the generator meta, the core scripts and styles every page loads from the install's rsc/ directory, or the session_b2evo cookie, so any domain is covered. The blog comes from the feed links on the page, since b2evolution answers an unknown blog path with the default blog's feeds, and a 404 page gets none.

URL PatternFeeds Generated
{blog}/{post}Post comments feed the page links at ?tempskin=_rss2&disp=comments&p={id}, plus the blog feeds below
Any page that links its blog's feedsPosts at {blog}?tempskin=_rss2 and _atom · comments† at {blog}?tempskin=_rss2&disp=comments and _atom

† Found only by the Platform method.

Purot.net ​

Discovers the change feeds of a wiki on Purot.net. The page's own feeds come from the feed link the page carries, since a page that does not exist answers with the whole wiki's changes.

URL PatternFeeds Generated
{wiki}.purot.net/{page}, {wiki}.purot.net/Page changes · page discussions · page changes, discussions and likes (RSS) · recent changes
{wiki}.purot.net/profile/{user}, any other pageRecent changes (RSS)

SkyCMS ​

Discovers the feed of a page in a Polish public information bulletin built on SkyCMS. Detected by the bulletin template's /cms/public/image/default/bip_v{n}/ icon path, /clients/cms_{client}/image/default/bip/ on a branded bulletin, or the skycms_PageCounter cookie, beside the link to the bulletin's RSS channel list, so any domain is covered. SkyCMS sites outside the bulletin template serve no page feeds and are left alone.

URL PatternFeeds Generated
{site}/{id}/{slug}.htmlPage† at /rss/{id}/{slug}.html (RSS)

† Found only by the Platform method.

OPUS ​

Discovers the collection and search feeds of an OPUS 4 publication repository. Detected by the frontdoorutil.js script every layout loads, so any domain is covered. A repository under a sub-path gets its feeds there.

URL PatternFeeds Generated
{repository}/solrsearch/index/search/searchtype/collection/id/{id}Collection the page links, else {repository}/rss/index/index/searchtype/collection/id/{id} (RSS)
{repository}/solrsearch/index/search/searchtype/simple/query/{query}/…Search results the page links, else the same query and facets under {repository}/rss/index/index/ (RSS)

Tender ​

Discovers the discussion feeds of a Tender Support site, hosted on tenderapp.com or on the company's own domain. A custom domain is detected by the _tender19_session cookie or the Tender settings script every page prints. A site under /help/ gets its feeds there, and a missing page gets none.

URL PatternFeeds Generated
{site}/discussions/{category}/{discussion}Discussion comments (Atom)
{site}/, any other pageAll discussions (Atom)

AlloForum ​

Discovers the latest topics feeds of a forum on *.alloforum.com. Forum, category and subcategory pages link their feeds only as plain anchors, so the handler covers them.

URL PatternFeeds Generated
{forum}.alloforum.comLatest topics†
{forum}.alloforum.com/{slug}-c{id}-{page}.htmlCategory† · latest topics†
{forum}.alloforum.com/{slug}-c{id}-{subslug}-s{subid}-{page}.htmlSubcategory† · latest topics†

† Found only by the Platform method.

SportAdmin ​

Discovers the news feeds of a Swedish sports club website on SportAdmin. On the classic template a team page redirects to a url that no longer names the team, so the team is read from the page's link to its other layout. The new template keeps the team in the url.

URL PatternFeeds Generated
{club}.web.sportadmin.se/?SID={id}, a classic team page linking its other layoutTeam news† at /rss/?SID={id} · club news
{club}.web.sportadmin.se/?SID={id} on the new templateTeam news† at /rss/?SID={id} · club news
{club}.web.sportadmin.se/, any other pageClub news at /rss/

† Found only by the Platform method.

laget.se ​

Discovers the news feed of a sports club or team site on laget.se. The team page links the feed only through an icon with no text, and a team page without a news box links nothing, yet its feed still answers. A club on its own domain is detected by stylesheets or scripts loaded from the g-content.laget.se asset host, and serves its feed at the domain root.

URL PatternFeeds Generated
www.laget.se/{team}, www.laget.se/{team}/…News† at www.laget.se/{team}/Home/NewsRss (RSS)
Any other pageNews† at /Home/NewsRss (RSS)

† Found only by the Platform method.

Geoblog.pl ​

Discovers the trip feed of a travel blog on Geoblog.pl. The trip is read from the page's breadcrumb, since an entry URL does not name it, and a trip feed answers with an empty channel for any made-up id. A user's home page and trip list link every trip feed themselves and get nothing from the handler.

URL PatternFeeds Generated
{user}.geoblog.pl/podroz/{id}/{slug}Trip at /podroz/rss/{id}.xml (RSS)
{user}.geoblog.pl/wpis/{id}/{slug}Trip† of the entry's trip (RSS)

† Found only by the Platform method.

OpenEdition Journals ​

Discovers the feeds of an academic journal on OpenEdition Journals at journals.openedition.org/{journal}. The feeds are built from the url, since the journal pages answer a browser with a bot challenge while the feeds do not.

URL PatternFeeds Generated
journals.openedition.org/{journal}/…Documents† at {journal}/backend?format=rssdocuments · issues† at ?format=rssnumeros · reviews† at ?format=rssdocuments&type=review (RSS 1.0)

† Found only by the Platform method.

Jinbo blog ​

Discovers the feeds of a blog on Jinbonet's blog host, blog.jinbo.net/{user}. The blog name keeps the case its own pages link the feeds in, and a tag or category page that found no posts gets only the blog's feeds.

URL PatternFeeds Generated
blog.jinbo.net/{user}Posts · comments and trackbacks (RSS and Atom)
blog.jinbo.net/{user}/category/{id}Category (Atom), plus the blog feeds
blog.jinbo.net/{user}/tag/{tag}Tag (Atom), plus the blog feeds

TischtennisLive ​

Discovers the feeds of a table tennis association on {association}.tischtennislive.de. A league or group page gets the results feeds whose id its own feed link names, since a results feed answers any id.

URL PatternFeeds Generated
{association}.tischtennislive.de/?L2P={league}, a league overview linking its results feedsLeague results of the last 10 days · fixtures of the next 10 days at /Export/Tischtennis/RSS.aspx?Typ=Wett&ID={league}&Next={0|1} (RSS)
{association}.tischtennislive.de/?L3=SpielUebersicht&Gruppe={group}, a match overview linking its results feedsGroup results of the last 10 days · fixtures of the next 10 days at /Export/Tischtennis/RSS.aspx?Typ=Gruppe&ID={group}&Next={0|1} (RSS)
{association}.tischtennislive.de, any other pageNews · dates† · documents† · tournaments† (RSS)

† Found only by the Platform method.

Newswire ​

Discovers the feeds of a company newsroom on {newsroom}.newswire.com. The newsroom links its own feed, and its beat and content type pages link none.

URL PatternFeeds Generated
{newsroom}.newswire.com/browse/beat/{beat}Beat† at /browse/rss/beat/{beat} (RSS)
{newsroom}.newswire.com/browse/pr, /browse/news, /browse/socialPress releases, news† or social† wire at /browse/rss/{type} (RSS)
{newsroom}.newswire.com, any other pageNewsroom at /browse/rss (RSS)

† Found only by the Platform method.

Open Journal Systems ​

Discovers the feeds of a journal on Open Journal Systems, on any domain. Detected by the Open Journal Systems generator meta or the OJSSID session cookie. The journal's root is read from the theme stylesheet the page loads through /$$$call$$$/, so each journal of a multi-journal install gets its own feeds.

URL PatternFeeds Generated
{journal}/, {journal}/article/view/{id}, {journal}/issue/view/{id}, any other journal pageArticles · announcements (Atom + RSS 1.0† + RSS 2.0)

† Found only by the Platform method.

NOTE

The site-wide pages of a multi-journal install, under /index, belong to no journal and get no feeds. OJS 3.5 serves a non-default locale's feeds only to a client that keeps cookies, so the feeds are the journal root's, which redirect to the default locale.

Aladin blog ​

Discovers the feeds of a user blog on Aladin, blog.aladin.co.kr/{user}. A category page links only the blog feed, and its own feed is listed only on the blog's subscribe page.

URL PatternFeeds Generated
blog.aladin.co.kr/{user}, any other blog pageBlog
blog.aladin.co.kr/{user}/category/{id}Category† · blog

† Found only by the Platform method.

Basic Usage ​

typescript
import { discoverFeeds } from 'feedscout'

const feeds = await discoverFeeds('https://github.com/macieklamberski/feedsmith', {
  methods: ['platform'],
})

// [
//   { url: 'https://github.com/macieklamberski/feedsmith/releases.atom', ... },
//   { url: 'https://github.com/macieklamberski/feedsmith/commits.atom', ... },
//   { url: 'https://github.com/macieklamberski/feedsmith/tags.atom', ... },
// ]

Configuration ​

Handler Order ​

Handlers are checked in order. The first matching handler that generates feeds wins:

typescript
import { githubHandler, redditHandler, youtubeHandler } from 'feedscout/platform'

const feeds = await discoverFeeds(url, {
  methods: {
    platform: {
      handlers: [youtubeHandler, githubHandler, redditHandler],
    },
  },
})

Default Values ​

Import the default Platform options:

typescript
import { defaultPlatformOptions } from 'feedscout/platform'

Or import individual handlers:

typescript
import {
  acastHandler,
  acomicsHandler,
  aladinHandler,
  alloforumHandler,
  amebloHandler,
  applePodcastsHandler,
  arenaHandler,
  art19Handler,
  artstationHandler,
  atwikiHandler,
  atyponHandler,
  audioboomHandler,
  aushaHandler,
  b2evolutionHandler,
  bearblogHandler,
  behanceHandler,
  bigCartelHandler,
  bigcommerceHandler,
  bitchuteHandler,
  blogaliaHandler,
  bloggangHandler,
  bloggerDeHandler,
  bloggoHandler,
  blogHuHandler,
  blogiaHandler,
  blogspotHandler,
  blueskyHandler,
  bookwyrmHandler,
  bubblelifeHandler,
  buttondownHandler,
  buzzsproutHandler,
  canalblogHandler,
  canpanHandler,
  captivateHandler,
  castopodHandler,
  castosHandler,
  chambermasterHandler,
  civicplusHandler,
  cnblogsHandler,
  cocologHandler,
  colorMeShopHandler,
  comicfuryHandler,
  confluenceHandler,
  cppblogHandler,
  cratesIoHandler,
  csdnHandler,
  dailymotionHandler,
  dasaugeHandler,
  deviantartHandler,
  devtoHandler,
  diasporaHandler,
  discourseHandler,
  dokuwikiHandler,
  doubanHandler,
  dreamwidthHandler,
  drupalHandler,
  dspaceHandler,
  edlioHandler,
  eklablogHandler,
  estrankyHandler,
  exblogHandler,
  exportersIndiaHandler,
  fc2Handler,
  firesideHandler,
  firstoryHandler,
  flickrHandler,
  flipboardHandler,
  forumotionHandler,
  friendicaHandler,
  gancioHandler,
  gcsWebHandler,
  geoblogHandler,
  ghostHandler,
  giteaHandler,
  githubHandler,
  githubGistHandler,
  gitlabHandler,
  gnuboardHandler,
  goodreadsHandler,
  goopeHandler,
  habrHandler,
  hackernewsHandler,
  haleyJobsHandler,
  hashnodeHandler,
  hatenaAntennaHandler,
  hatenaBookmarkHandler,
  hatenaFotolifeHandler,
  hatenablogHandler,
  hautetfortHandler,
  hearthisHandler,
  heyWorldHandler,
  insanejournalHandler,
  instatusHandler,
  internetArchiveHandler,
  isProgrammerHandler,
  itchioHandler,
  ivooxHandler,
  jellypodHandler,
  jimdoHandler,
  jinboHandler,
  jiraHandler,
  jugemHandler,
  kickstarterHandler,
  kktixHandler,
  kohaHandler,
  lagetHandler,
  launchpadHandler,
  learnkuHandler,
  legistarHandler,
  lemmyHandler,
  letterboxdHandler,
  librivoxHandler,
  libsynHandler,
  lichessHandler,
  listedHandler,
  livedoorBlogHandler,
  livejournalHandler,
  lobstersHandler,
  mailchimpHandler,
  mastodonHandler,
  mataroaHandler,
  mediawikiHandler,
  mediumHandler,
  megaphoneHandler,
  microblogHandler,
  misskeyHandler,
  myanimelistHandler,
  naverBlogHandler,
  nebulaHandler,
  neocitiesHandler,
  netcrewHandler,
  nethouseHandler,
  newswireHandler,
  niconicoHandler,
  ningHandler,
  nodebbHandler,
  noteHandler,
  noticeableHandler,
  observableHandler,
  ocnkHandler,
  odooHandler,
  odyseeHandler,
  ojsHandler,
  omekaHandler,
  omnystudioHandler,
  opencartJournalHandler,
  openeditionHandler,
  openstatusHandler,
  opusHandler,
  overblogHandler,
  packagistHandler,
  pagecordHandler,
  paragraphHandler,
  parsiblogHandler,
  pchomeHandler,
  peertubeHandler,
  pikaHandler,
  pinboardHandler,
  pinterestHandler,
  pixelfedHandler,
  placementIndiaHandler,
  pleromaHandler,
  ploneHandler,
  plurkHandler,
  pmwikiHandler,
  podbeanHandler,
  podcloudHandler,
  podhomeHandler,
  podigeeHandler,
  podloveHandler,
  podomaticHandler,
  postachioHandler,
  posthavenHandler,
  postypeHandler,
  prlogHandler,
  proboardsHandler,
  producthuntHandler,
  promodjHandler,
  proseHandler,
  publicInboxHandler,
  purotHandler,
  pypiHandler,
  qiitaHandler,
  rakutenBlogHandler,
  realEstateIndiaHandler,
  redcircleHandler,
  redditHandler,
  redmineHandler,
  reformalHandler,
  royalroadHandler,
  rssComHandler,
  rubygemsHandler,
  sakuraBlogHandler,
  sapoBlogsHandler,
  seesaaHandler,
  sermonNetHandler,
  shinobiHandler,
  shopifyHandler,
  shopserveHandler,
  skycmsHandler,
  smeBlogHandler,
  soundcloudHandler,
  soundonHandler,
  sourceforgeHandler,
  sourcehutHandler,
  sportsregionsHandler,
  spotifyForCreatorsHandler,
  spreakerHandler,
  squarespaceHandler,
  stackExchangeHandler,
  statuspageHandler,
  steamHandler,
  substackHandler,
  sverigesRadioHandler,
  syosetuHandler,
  talentsoftHandler,
  teletypeHandler,
  tenderHandler,
  tildesHandler,
  tischtennisliveHandler,
  tistoryHandler,
  togetterHandler,
  tourTravelWorldHandler,
  transistorHandler,
  travellerspointHandler,
  tumblrHandler,
  twodayHandler,
  ucozHandler,
  v2exHandler,
  vbulletinHandler,
  velogHandler,
  viablogaHandler,
  vimeoHandler,
  weblogLolHandler,
  webnodeHandler,
  webtoonsHandler,
  weeblyHandler,
  wikidotHandler,
  wildApricotHandler,
  wordpressHandler,
  wpengineHandler,
  writeasHandler,
  xenforoHandler,
  ximalayaHandler,
  yeswikiHandler,
  youtubeHandler,
  zennHandler,
} from 'feedscout/platform'

Using Directly ​

Use the Platform discovery function directly to get URIs without validation:

typescript
import { discoverUrisFromPlatform, youtubeHandler } from 'feedscout/platform'

const uris = await discoverUrisFromPlatform(htmlContent, undefined, {
  baseUrl: 'https://www.youtube.com/@mkbhd',
  handlers: [youtubeHandler],
})

// [
//   {
//     uri: [
//       'https://www.youtube.com/feeds/videos.xml?channel_id=UCBJycsmduvYEL83R_U4JriQ',
//       'https://www.youtube.com/feeds/videos.xml?playlist_id=UUBJycsmduvYEL83R_U4JriQ',
//     ],
//     hint: { key: 'youtube:all', label: 'All uploads' },
//   },
//   {
//     uri: 'https://www.youtube.com/feeds/videos.xml?playlist_id=UULFBJycsmduvYEL83R_U4JriQ',
//     hint: { key: 'youtube:videos', label: 'Videos' },
//   },
//   {
//     uri: 'https://www.youtube.com/feeds/videos.xml?playlist_id=UUSHBJycsmduvYEL83R_U4JriQ',
//     hint: { key: 'youtube:shorts', label: 'Shorts' },
//   },
//   {
//     uri: 'https://www.youtube.com/feeds/videos.xml?playlist_id=UULVBJycsmduvYEL83R_U4JriQ',
//     hint: { key: 'youtube:live', label: 'Live streams' },
//   },
//   {
//     uri: 'https://www.youtube.com/feeds/videos.xml?playlist_id=UULPBJycsmduvYEL83R_U4JriQ',
//     hint: { key: 'youtube:popular-videos', label: 'Popular videos' },
//   },
//   {
//     uri: 'https://www.youtube.com/feeds/videos.xml?playlist_id=UUPSBJycsmduvYEL83R_U4JriQ',
//     hint: { key: 'youtube:popular-shorts', label: 'Popular shorts' },
//   },
//   {
//     uri: 'https://www.youtube.com/feeds/videos.xml?playlist_id=UUPVBJycsmduvYEL83R_U4JriQ',
//     hint: { key: 'youtube:popular-live', label: 'Popular live streams' },
//   },
//   {
//     uri: 'https://www.youtube.com/feeds/videos.xml?playlist_id=UUMOBJycsmduvYEL83R_U4JriQ',
//     hint: { key: 'youtube:member-videos', label: 'Member videos' },
//   },
//   {
//     uri: 'https://www.youtube.com/feeds/videos.xml?playlist_id=UUMSBJycsmduvYEL83R_U4JriQ',
//     hint: { key: 'youtube:member-shorts', label: 'Member shorts' },
//   },
//   {
//     uri: 'https://www.youtube.com/feeds/videos.xml?playlist_id=UUMVBJycsmduvYEL83R_U4JriQ',
//     hint: { key: 'youtube:member-live', label: 'Member live streams' },
//   },
// ]

The arguments are the page content, the response headers, the options, an optional fetchFn that is passed on to handlers, and an optional onError that receives a throw from a handler or from enrichFn. Pass undefined for content or headers you do not have.

NOTE

The YouTube handler requires HTML content for @handle, /user/, /c/, and video URLs to extract the channel ID. For /channel/UC... URLs, no content is needed.

Creating Custom Handlers ​

You can create handlers for platforms not included by default.

Handler Interface ​

A PlatformHandler has two methods and an optional regex:

typescript
type PlatformHandler = {
  match: (url: string, content?: string, headers?: Headers) => boolean
  resolve: (
    url: string,
    content?: string,
    headers?: Headers,
    fetchFn?: FetchFn,
  ) => MaybePromise<Array<DiscoverUriEntry | DiscoverRef>>
  guessExclusionRegex?: RegExp
}
MemberDescription
match(url, content?, headers?)Returns true if this handler should process the URL
resolve(url, content?, headers?, fetchFn?)Returns an array of DiscoverUriEntry objects for the given page URL. A favicon handler can also return a DiscoverRef for an icon that takes an extra request. See Enriching Platform Icons
guessExclusionRegexMatches the full URL of any user's feed on the platform's host. When the handler matches the page, the Guess method drops URLs matching it, unless the handler generated them. Set it on a platform where a path like /feed.xml can be the feed of a user named feed

Basic Example ​

A handler that appends /feed.xml to any URL on a specific domain:

typescript
import type { PlatformHandler } from 'feedscout/platform'

const myHandler: PlatformHandler = {
  match: (url) => {
    return new URL(url).hostname === 'example.com'
  },

  resolve: (url) => {
    const { origin } = new URL(url)

    return [{ uri: `${origin}/feed.xml` }]
  },
}

Using URL Patterns ​

A handler that extracts a username from the URL path:

typescript
const profileHandler: PlatformHandler = {
  match: (url) => {
    const { hostname, pathname } = new URL(url)

    return hostname === 'example.com' && pathname.startsWith('/users/')
  },

  resolve: (url) => {
    const { origin, pathname } = new URL(url)
    const match = pathname.match(/^\/users\/([^/]+)/)

    if (match?.[1]) {
      return [{ uri: `${origin}/users/${match[1]}/feed.rss` }]
    }

    return []
  },
}

Using Page Content ​

When feed URLs can only be found in the HTML, use the content parameter:

typescript
const contentHandler: PlatformHandler = {
  match: (url) => new URL(url).hostname === 'example.com',

  resolve: (url, content) => {
    if (!content) {
      return []
    }

    const match = content.match(/data-feed-url="([^"]+)"/)

    return match?.[1] ? [{ uri: match[1] }] : []
  },
}

Combining with Defaults ​

Add custom handlers alongside the built-in ones:

typescript
import { defaultPlatformOptions } from 'feedscout/platform'

const feeds = await discoverFeeds(url, {
  methods: {
    platform: {
      handlers: [myHandler, ...defaultPlatformOptions.handlers],
    },
  },
})