Skip to content
TubePress — free, self-hosted & actively maintained
Importing content

Feed import (MRSS, RSS, CSV, JSON)

Connect external feeds and automatically pull new videos on a schedule.

Feed import (sometimes called grabbers) keeps your library growing on its own. You subscribe to a remote feed once, and TubePress checks it on a schedule, pulls in new videos and skips anything it has already seen.

It lives as a tab inside the import screen — open /admin/import and switch to Feeds (the /admin/feeds URL redirects there). Unlike a one-time file upload, a feed keeps topping your site up as the source publishes more.

What feed import does

Each source is a feed URL plus a few settings. On its schedule, TubePress fetches the feed, normalises every entry and queues the new ones; a second stage then turns those queued items into videos. You choose how the media is stored:

  • Embed — store the player link. Fast, uses no storage, and the video streams from the source.
  • Download — fetch the actual file to your storage or CDN and transcode it into your renditions.

Per source you also set the video type (straight, gay or hentai) and whether new videos are auto-published or held as drafts for review.

Supported feed formats

Four formats are supported, auto-detected by the Detect & Preview button:

FormatMappingNotes
MRSSAutomaticMedia RSS — the richest option; fields map themselves.
RSSAutomaticStandard RSS items.
CSVManualA CSV served at a URL; you map the columns.
JSONManualA JSON array served at a URL; you map the keys.
Auto vs manual. MRSS and RSS are recognised automatically. CSV and JSON are generic, so you map their columns once — see Field mapping below.

Adding a feed source

  1. Open the Feeds tab. Go to /admin/import, select Feeds, then Add Feed Source.
  2. Enter the feed URL. It must start with http:// or https://. Click Detect & Preview to auto-detect the format and preview the first entries.
  3. Name it and confirm the type. Give the source a name and check the detected format (MRSS, RSS, CSV or JSON) and the video type.
  4. Choose a mode. Embed to store player links, or Download to fetch and transcode the files.
  5. Map columns if needed. MRSS and RSS map themselves; for CSV/JSON, drag each column onto the matching field.
  6. Set the schedule and options. Pick a refresh interval, the duplicate rule, auto-publish, and how many pages to crawl.
  7. Save. Use Fetch now to pull immediately, or let the schedule run. Run queue processes any pending items on demand.

Field mapping

Feeds normalise entries onto the same canonical fields the importer uses. For MRSS/RSS this is automatic; for CSV/JSON you map your columns onto:

title
Required. Entries without a title are skipped.
video_url
A direct, downloadable file — used in Download mode.
embed_url
The player URL — used in Embed mode.
guid
A unique ID used for de-duplication.
thumbnail, description, duration, published_at, views
Optional metadata for the video.
categories, tags, performers, channels
Comma-separated names, created if missing.
One URL is enough. In Embed mode a single video_url doubles as the embed link if you have not mapped embed_url, so a minimal feed only needs a title and one URL.

Scheduling & automation

A background task named feed_import runs on the pseudo-cron roughly every 30 seconds — no system crontab needed. Each source is only fetched when its own interval has elapsed:

  • Manual only — never auto-fetched; use Fetch now.
  • Every 15 minutes, every hour, every 6 hours or every day.

The same task also drains the import queue — embed items several at a time, downloads one at a time so a big file never blocks the rest. The Max pages setting (1–50) limits how deep a single fetch crawls a paginated feed.

The cron needs traffic. The pseudo-cron only ticks when your site is visited. On a brand-new or idle site, load a page to trigger it — or wire up a real cron job for guaranteed timing (see cron & CLI).

Deduplication & filters

De-duplication is automatic and works on two levels:

  • Per source. Each item's guid is remembered, so re-fetching only queues genuinely new entries (already-seen items are counted and skipped).
  • Across your site. In Download mode the item's ID is stored on the video, so the same clip arriving from two feeds is not downloaded twice.

The On duplicate option decides what happens when an item already exists: Skip (recommended) or Update existing.

No keyword filter. Feeds have no include/exclude keyword filter — scope a feed by pointing it at a category- or tag-specific URL at the source, and use Max pages to limit depth. Clearing a source's items resets its dedup memory but never deletes videos you have already imported.

Troubleshooting feeds

  • "Could not recognise the feed format." The URL did not return valid MRSS/RSS/CSV/JSON. Open it in a browser and confirm you see the raw feed, not an HTML page.
  • Items stuck "importing." They self-recover after about 30 minutes and are retried; transient failures retry up to three times before being marked failed.
  • Failed items. Use Reprocess to requeue everything that failed for a source. Each source shows its last status and message.
  • Download mode fails. Download needs a direct video URL (not a watch page); private or internal hosts are blocked, and there is a 5 GB ceiling per file.
  • Nothing is importing. Check the schedule is not Manual only, that the source is enabled, and that your site is getting traffic to drive the cron.

Next steps

Still stuck?

Open a ticket from your dashboard and our team will help you out.

Try the live demo → Download TubePress →