Import generic RSS feeds into profile feeds #27

Closed
opened 2026-09-28 16:55:00 +00:00 by Michael Westergaard · 1 comment
Owner

Goal

Let a user add a public RSS 2.0 feed URL and have its newly published items appear in their FediProfile feed and reach ActivityPub followers. This is source import, not RSS account login or reverse synchronization.

Acceptance

  • Validate/discover an RSS feed, show its title and original URL, and let the user enable, disable, or remove it. Do not label an arbitrary feed as owner-verified.
  • Normalize channel/item title, link, GUID, publication date, description/content, author, and available enclosure metadata into the source contract. Prefer stable GUID identity; define a safe fallback when absent. Preserve attribution and link to the original.
  • Poll conditionally where supported, respect source failures and rate limits, limit initial backfill, and never duplicate a post on repeated or reordered responses. Pin behavior for changed and vanished items according to #25/#26 lifecycle policy.
  • Unit tests use representative RSS fixtures (including missing GUID/date, HTML content, enclosures, edits, and malformed XML); real HTTP/database checks run only in manual integration.

Depends on #25 and #26. Follow the RSS 2.0 specification: https://www.rssboard.org/rss-specification

## Goal Let a user add a public RSS 2.0 feed URL and have its newly published items appear in their FediProfile feed and reach ActivityPub followers. This is source import, not RSS account login or reverse synchronization. ## Acceptance - Validate/discover an RSS feed, show its title and original URL, and let the user enable, disable, or remove it. Do not label an arbitrary feed as owner-verified. - Normalize channel/item title, link, GUID, publication date, description/content, author, and available enclosure metadata into the source contract. Prefer stable GUID identity; define a safe fallback when absent. Preserve attribution and link to the original. - Poll conditionally where supported, respect source failures and rate limits, limit initial backfill, and never duplicate a post on repeated or reordered responses. Pin behavior for changed and vanished items according to #25/#26 lifecycle policy. - Unit tests use representative RSS fixtures (including missing GUID/date, HTML content, enclosures, edits, and malformed XML); real HTTP/database checks run only in manual integration. Depends on #25 and #26. Follow the RSS 2.0 specification: https://www.rssboard.org/rss-specification
Author
Owner

Implemented RSS 2.0 import in c9c21d8: secure feed validation, normalized entries and enclosures, stable deduplication, conditional polling, bounded backfill, per-profile feed caps, configurable polling, and rate-limit handling. Updated the compatibility matrix and account-add guidance. Unit and interoperability tests pass; Forgejo CI run 1123 and manual integration run 1124 passed. SQLite repository contract tests passed locally as well.

Implemented RSS 2.0 import in `c9c21d8`: secure feed validation, normalized entries and enclosures, stable deduplication, conditional polling, bounded backfill, per-profile feed caps, configurable polling, and rate-limit handling. Updated the compatibility matrix and account-add guidance. Unit and interoperability tests pass; Forgejo CI run 1123 and manual integration run 1124 passed. SQLite repository contract tests passed locally as well.
Sign in to join this conversation.
No labels
No milestone
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
klafbang/fediprofile#27
No description provided.