Skip to content

RSS Schedules

Schedule fields

typescript
{
  id: number,
  team_id: number,
  url: string,                // feed URL (required)
  accounts: string,           // comma-separated target account IDs
  title: string | null,
  desc: string | null,
  start_date: number,         // unix
  end_date: number,           // unix
  time_post: number,          // post time (unix or hour-of-day)
  next_try: number,           // unix; next poll attempt
  data: string | null,        // JSON: per-feed parsing options
  stats: string | null,       // JSON: aggregated counters
  status: number,
  created: number,
  changed: number,
}

Polling

The poller runs as a worker job. On each tick:

  1. Reads schedules where next_try <= now.
  2. Fetches the feed, parses entries, deduplicates against previous stats.
  3. Creates a draft post per new entry with the configured accounts as targets.
  4. Updates stats and bumps next_try by the poll interval.

Manual triggering via POST /:id/fetch runs the same logic immediately.

Mapping

The data JSON carries per-feed parsing options — typically the field names to use as the post body, image URL, and link. Tweak it if the feed uses non-standard field names.