Appearance
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:
- Reads schedules where
next_try <= now. - Fetches the feed, parses entries, deduplicates against previous
stats. - Creates a draft post per new entry with the configured
accountsas targets. - Updates
statsand bumpsnext_tryby 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.