sdxc-feed

Parse RSS 2.0 and Atom 1.0 feeds into one normalized shape with conditional fetching and autodiscovery.

5|Updated Feb 2, 2026
One-click install
npx skills add https://github.com/sergiodxa/monorepo --skill sdxc-feed-sergiodxa
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: sdxc-feed
Source: https://github.com/sergiodxa/monorepo/tree/main/.agents/skills/sdxc-feed
Command: npx skills add https://github.com/sergiodxa/monorepo --skill sdxc-feed-sergiodxa

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill requires @sdxc/feed, @sdxc/result.

What problem does it solve? Applications that consume syndicated content must handle both RSS 2.0 and Atom 1.0 formats, poll feeds without re-downloading unchanged content, and locate feed URLs when users only provide a site URL. This Skill normalizes both formats into one shape and handles conditional fetching and feed discovery. ## Core Features & Use Cases - Format-sniffing parsing: Feed.parse and Feed.fromXML detect RSS or Atom from the root element and return one normalized shape with format, title, siteUrl, feedUrl, updatedAt, and items. - Conditional fetching: Feed.fetch sends stored If-None-Match/If-Modified-Since validators and reports HTTP 304 without parsing, so pollers skip unchanged feeds. - Feed autodiscovery: Feed.discover follows <link rel="alternate"> tags to find the feeds a site advertises when a user pastes a plain site URL. - Use Case: A subscription list is polled on a schedule; stored ETag and Last-Modified validators are sent each cycle, 304 responses are skipped, and new items from mixed RSS and Atom sources are stored in one table. ## Quick Start Use the sdxc-feed skill to parse a feed URL, poll it with stored ETag validators, and discover feeds behind a pasted site URL.

Frequently Asked Questions about sdxc-feed

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I parse RSS and Atom feeds with one API?▼

Use Feed.parse with the raw XML string; it sniffs the root element to detect RSS 2.0 or Atom 1.0 and returns one normalized shape with format, title, siteUrl, feedUrl, updatedAt, and items. Every entry point returns a Result, so check isFailure before reading data.

How to poll a feed without re-downloading unchanged content?▼

Call Feed.fetch with the etag and lastModified values stored from the previous response. It sends If-None-Match and If-Modified-Since headers, and on a 304 the result's notModified flag is true with no parsing performed.

How do I find a feed URL when a user pastes a website URL?▼

Use Feed.discover, which follows the page's link rel="alternate" tags to the feeds it advertises. It accepts only application/rss+xml and application/atom+xml types, excluding text/xml and application/xml used by sitemaps and stylesheets.

Does feed parsing depend on the HTTP Content-Type header?▼

No. Format is sniffed from the document's root element, never from Content-Type, and Feed.fetch accepts any content type since feeds are often served as text/xml or application/octet-stream. RSS 1.0 (RDF) is reported by name via FeedFormatError.

What are the limitations of the normalized feed shape?▼

The normalized shape is deliberately lossy and omits format-specific vocabulary. For RSS-specific or Atom-specific fields, use the underlying @sdxc/rss or @sdxc/atom parsers directly. Content is also not sanitized, so escaping HTML belongs to the renderer.