Site2RSS Factory is a web-based platform that turns any website into a live RSS feed — with no coding required. Paste a URL, click detect, and you have a subscribable feed in under a minute. It also lets you combine multiple feeds into one, and render any RSS feed as a styled HTML news page.
💡
If a site doesn't offer an RSS feed, Site2RSS Factory scrapes the page and builds one for you. If it already has RSS, you can use it directly in Mashed Feeds or RSS to HTML without scraping at all.
Core Features
My Feeds — Scrape any website and generate a live RSS feed using XPath or CSS selectors. An Auto-Detect tool handles most sites automatically.
Mashed Feeds — Merge 2–10 RSS sources into one combined feed. Apply keyword filters, change sort order, and pin a featured story at the top.
RSS to HTML — Render any RSS feed as a styled HTML page using one of 5 layouts (Grid, Blog, Magazine, Cards, Minimal). Make it public and embed it anywhere.
Analytics — Track request counts, cache hit rates, and recent feed activity from the Dashboard.
The Recommended Path
1
Create a feed in My Feeds
Start by scraping a website you follow — news sites, blogs, job boards, anything. This gives you a feed URL you can subscribe to immediately.
2
Combine in Mashed Feeds
Add that feed plus any existing RSS sources into a Mashed Feed to get one unified, filtered stream.
3
Publish with RSS to HTML
Turn your Mashed Feed into a styled news page you can share publicly or embed on another site.
⚡
Start with My Feeds to establish your feed sources. Everything else — Mashed Feeds and styled HTML pages — builds on top of those.
Getting Started›Quick Start Guide
Quick Start Guide
This guide gets you from zero to a live, subscribable RSS feed in under 5 minutes.
1
Log in and go to My Feeds
From the sidebar, click 📡 My Feeds. This is where all your scraper feeds are managed.
2
Click "+ New Feed"
The create modal opens on the Basic tab. Give the feed a name and paste the URL of the page you want to scrape (e.g. a news index page or blog listing).
https://news.ycombinator.com
3
Run Auto-Detect
Switch to the Auto-Detect tab and click Detect Selectors. The system analyses the page structure and fills in the item, title, link, and date selectors automatically. This works for most standard news and blog pages.
4
Save the feed
Click Save Feed. Your feed appears in the list. Click the RSS icon to copy the feed URL:
/api/feeds?savedFeedId=5&format=rss
5
Subscribe in an RSS reader
Paste the URL into Feedly, Inoreader, NewsBlur, or any RSS reader. New items appear automatically as the source site updates.
💡
If Auto-Detect doesn't capture the right content, switch to the Selectors tab and set selectors manually. See Selectors Reference for help.
Getting Started›Plans & Pricing
Plans & Pricing
Site2RSS Factory is available in several tiers. Your current plan is shown on the Dashboard stats card and the Profile & API Key page.
Plan
Features
Free
Basic feed scraping, up to 5 saved feeds, 60 min refresh interval
Starter
Up to 25 feeds, 30 min refresh, keyword filters, Mashed Feeds
Basic
Up to 100 feeds, 15 min refresh, RSS to HTML, API access
Professional
Unlimited feeds, 5 min refresh, priority scraping, all features
Enterprise
Custom limits, dedicated support, SLA, white-label HTML pages
ℹ️
Plan limits are set by your administrator. Contact your admin to upgrade your account tier.
My Feeds›Creating a Feed
Creating a Feed
A saved feed stores all the scraping settings for a source URL so it can be regenerated consistently without repeating parameters every time.
Basic Tab Fields
Feed Name — A human-readable label shown in your feed list (e.g. "BBC Technology").
Source URL — The page to scrape. This should be a listing or index page, not a single article.
Max Items — Maximum number of articles to return per request (default 25, up to your plan limit).
Refresh Interval — How long to cache the scraped result before re-fetching (default 60 minutes).
Selectors Tab Fields
If Auto-Detect doesn't produce good results, you can set selectors manually. All fields accept both XPath and CSS selector syntax.
Item Selector — Matches each article container on the page (e.g. //article or .post-card).
Title Selector — Relative to each item — extracts the headline (e.g. .//h2).
Link Selector — Extracts the article URL (e.g. .//a/@href).
Summary Selector — Extracts the description/excerpt (e.g. .//p).
Date Selector — Extracts the publication date (e.g. .//time/@datetime).
Image Selector — Extracts the article image URL (e.g. .//img/@src).
Filters & Limits Tab
Include Keywords — Only items matching at least one keyword are included in the feed.
Exclude Keywords — Items matching any of these keywords are removed from the feed.
💡
Set a low refresh interval (15–30 min) for breaking news sites. For weekly blogs, 360+ minutes is fine and uses less server resources.
Feed URLs
Once created, every feed has two access URLs:
/api/feeds?savedFeedId={id}&format=rss ← by ID
/api/feeds/feed/{slug} ← by slug (if set)
Append &format=json to get a JSON response instead of RSS XML.
My Feeds›Auto-Detect Selectors
Auto-Detect Selectors
Auto-Detect analyses a page's HTML structure and suggests XPath selectors for items, titles, links, dates, and images — saving you from having to write selectors by hand.
How to Use It
1
Enter the source URL on the Basic tab
The source URL must be set before Auto-Detect can run — it's the page that gets analysed.
2
Switch to the Auto-Detect tab and click Detect Selectors
The system fetches the page, parses its structure, and scores candidate elements by density, repetition, and semantic markup.
3
Review the suggested selectors
The detected selectors are shown. You can edit any of them before clicking Apply Selectors to copy them into the Selectors tab.
When Auto-Detect Works Best
Standard news index pages (BBC, Reuters, TechCrunch, etc.)
Blog listing pages with repeated article card structures
Pages using semantic HTML5 elements (<article>, <h2>, <time>)
Sites that already publish RSS — Auto-Detect will detect the existing feed and suggest using it directly
When to Set Selectors Manually
Single-page applications (SPAs) that render content via JavaScript after page load
Sites with unusual or deeply-nested article structures
Pages where the auto-detected items include navigation or sidebar content
⚠️
Auto-Detect cannot run JavaScript. If a site loads its content dynamically (e.g. via React, Vue, or Angular), the scraper may only see a nearly-empty HTML skeleton. Check the source view of the page (Ctrl+U) — if the articles aren't in the raw HTML, manual scraping won't work either without a JS-rendering solution.
My Feeds›Selectors Reference
Selectors Reference
All selector fields accept both XPath and CSS selector syntax. Site2RSS Factory automatically detects which format you've used and converts CSS to XPath internally.
XPath vs CSS Selectors
Feature
XPath
CSS Selector
Syntax style
//div[@class='card']
div.card
Extract attributes
.//a/@href
Not directly
Parent traversal
./parent::div
Not supported
Text extraction
./text()
Implied
Relative selectors
.//h2 (note the dot)
h2
ℹ️
For the Item Selector, use an absolute path (e.g. //article). For all other selectors (Title, Link, etc.), use a relative path starting with ./ — these run inside each matched item.
Common Selector Patterns
Goal
XPath
CSS
All article elements
//article
article
Divs with class "post"
//div[@class='post']
div.post
H2 inside item
.//h2
h2
First anchor href
.//a/@href
a (href auto-extracted)
Time datetime attr
.//time/@datetime
time
Image src attr
.//img/@src
img
Finding Selectors with Browser DevTools
1
Right-click an article headline on the page → Inspect
The Elements panel opens and highlights the element.
2
Right-click the element in DevTools → Copy → Copy XPath
This gives you the full XPath, e.g. /html/body/main/div[2]/article[1]/h2/a.
3
Simplify the XPath
The copied XPath is often very specific. Generalise it: remove position indices and shorten the path. E.g. the above becomes //article//h2/a for the title selector.
My Feeds›Keyword Filters
Keyword Filters
Keyword filters let you narrow the items in any feed to only those that match (or exclude) specific topics. They work the same way in both My Feeds and Mashed Feeds.
Include Keywords
When set, only items whose title or summary contains at least one of the listed keywords are returned. All other items are silently dropped.
AI, machine learning, GPT, LLM, neural network
This would keep only articles mentioning AI-related topics.
Exclude Keywords
Items matching any of the listed exclude keywords are removed from the feed, regardless of include keywords.
sponsored, advertisement, promoted
How Filtering Works
Matching is case-insensitive — "AI" matches "ai", "Ai", "AI"
Matching checks both the item title and the item summary/description
Multiple keywords are separated by commas
Include filtering runs first, then exclude filtering is applied to the result
If Include Keywords is empty, all items pass through the include check
✏️
Example: Include Python, Django, Flask and Exclude job, hiring — you'd get Python framework articles but no job listings mentioning Python.
My Feeds›Feed Settings
Feed Settings
The following metadata fields let you customise how your feed appears to RSS readers and subscribers.
Metadata Fields
Custom Feed Title — Overrides the channel title in the RSS output. Defaults to the page's <title> tag if left blank.
Feed Description — The channel's subtitle/description line in the RSS output.
Feed Author — The author name attributed to items in the RSS channel.
Feed Language — ISO language code (e.g. en, fr, de). Default is en.
Feed Category — Tag applied to the channel for readers that support categorisation.
Feed Image URL — URL of a logo/image displayed by RSS readers that support channel images.
Pinned Item
When enabled, a manually created article is always injected at the top of the feed output, above all scraped items. Useful for pinning announcements or featured content.
Pinned Item Title — Headline of the injected item
Pinned Item URL — Link for the injected item
Pinned Item Summary — Description text
Mashed Feeds›Creating a Mashed Feed
Creating a Mashed Feed
A Mashed Feed merges 2–10 RSS sources into one unified feed. Items from all sources are combined and sorted together, giving you a single subscription URL that covers multiple sources.
Step-by-Step
1
Go to Mashed Feeds → New Mashed Feed
The create modal opens. Fill in a name and an optional custom slug.
2
Add source feed URLs
In the Source Feed URLs field, enter one URL per line. These can be any public RSS/Atom feeds, or the RSS URLs of your own My Feeds.
Set Total Max Items, Sort Order, and any keyword filters. See Filters & Sorting for details.
4
Save and copy the RSS URL
Click Save. Your mashed feed RSS URL is available from the feed list. It looks like:
/api/mashedfeeds/feed/my-tech-news
ℹ️
You can use a My Feed's RSS URL as a source in a Mashed Feed — this is a great way to combine scraped feeds (sites without native RSS) with traditional RSS sources.
Mashed Feeds›Filters & Sorting
Filters & Sorting
Keyword Filters
Mashed Feeds support the same keyword include/exclude system as My Feeds — applied to all items across all sources after merging. See Keyword Filters for full details.
Sort Order
Date (default) — Items from all sources are interleaved chronologically, newest first. Best for time-sensitive content like news.
Source — Items are grouped by source feed, maintaining each feed's internal order. Useful when you want to see all items from one source before moving to the next.
Total Max Items
After merging, filtering, and sorting, the feed is trimmed to this limit. For example, with 5 sources and 100 items each, you'd get 500 raw items merged — trimmed to your configured limit (default 50).
💡
Set a higher limit for feeds consumed by automated systems (scripts, apps) and a lower limit for human-read RSS subscriptions — fewer items per request means faster load times.
Mashed Feeds›Pinned Items
Pinned Items
A pinned item is a manually authored article that is always injected as the first item in the mashed feed output, regardless of date or source. It stays at the top until you disable or change it.
Use Cases
Feature an announcement or promotion at the top of a public news feed
Add a "call to action" link that always appears first in the feed
Highlight a curated article you want all subscribers to see regardless of timing
Configuration
On the Filters & Options tab, toggle Enable Pinned Item and fill in:
Pinned Title — The headline shown in RSS readers
Pinned URL — The link target when the item is clicked
Pinned Summary — The description text shown below the title
📌
The pinned item uses the current timestamp as its publication date so it sorts to the top in date-sorted feeds too. Disabling the toggle removes it from the output immediately.
RSS to HTML›Building a Template
Building a Template
The RSS to HTML builder renders any RSS feed as a styled HTML news page. A live preview updates in real-time as you adjust settings.
1
Enter a Feed URL
Paste any RSS feed URL into the Feed URL field at the top of the builder. This can be a My Feed URL, a Mashed Feed URL, or any public RSS/Atom feed.
2
Choose a layout
Select one of the 5 templates: Grid, Blog, Magazine, Cards, or Minimal. See Layout Options for details.
3
Customise colours and display options
Set the Primary Color, Background Color, and Text Color. Toggle image display, dates, descriptions, and whether links open in new tabs.
4
Click Preview
The right-hand panel renders a live preview using your current settings and the live feed data.
5
Save Template
Click Save Template, give it a name and a slug, and optionally make it public. See Publishing Publicly for details.
RSS to HTML›Layout Options
Layout Options
Five built-in layout templates are available. Each renders the same feed data with a different visual structure.
Grid — Equal-width cards in a responsive 3-column grid. Best for image-heavy feeds like photography blogs or product catalogues. Each card shows the image, headline, and a short excerpt.
Blog — Full-width list layout similar to a traditional blog index. Items stack vertically with a larger image on the left and full description on the right. Best for long-form content feeds.
Magazine — Features the first item prominently at full width, then the remaining items in a 2-column sidebar layout below. Great for news feeds where the latest story deserves extra prominence.
Cards — Compact media cards with image thumbnails and brief headlines. Similar to Grid but slightly more compact. Good for high-volume feeds with many items.
Minimal — Text-only list of headlines with dates. No images, no excerpts. Fastest-loading and most accessible option. Ideal for aggregator feeds or developer tool integration.
Advanced Options
Custom CSS — Inject additional CSS rules into the page's <style> block to override any design aspect.
Custom Header HTML — HTML injected into the page before the feed content — useful for adding a logo, banner, or nav bar.
Custom Footer HTML — HTML injected after the feed content — useful for copyright notices or contact links.
Structured Data — Adds JSON-LD Schema.org markup to the page for better SEO and rich result eligibility.
RSS to HTML›Publishing Publicly
Publishing Publicly
By default, RSS to HTML templates are private — only you can view them when logged in. Making a template public exposes it at a shareable URL with no login required.
Making a Template Public
1
Open Save Template → Basic tab
When saving or editing a template, switch to the Basic tab in the save modal.
2
Set a slug and tick "Public"
The slug becomes part of the public URL. Use lowercase letters, numbers, and hyphens only.
Page Title — Sets the <title> tag of the public page
Meta Description — The <meta name="description"> tag for search engines
Canonical URL — Sets the <link rel="canonical"> tag
Structured Data — Adds JSON-LD markup for Google rich results
Account & API›Profile & API Key
Profile & API Key
The Profile & API Key page (sidebar → 👤) shows your account information and gives you access to your API key.
Profile Information
Email — Your registered email address
Plan — Your current subscription tier
Member Since — Account creation date
Last Login — Most recent login timestamp
Your API Key
Your API key is a unique secret token used to authenticate programmatic API requests. Use the Copy button to copy it to your clipboard.
⚠️
Treat your API key like a password. Do not commit it to public repositories or share it in chat. If compromised, click Regenerate API Key to immediately invalidate the old key and generate a new one.
Using the API Key
Pass your API key as a Bearer token in the Authorization header of any API request:
Authorization: Bearer sk_your_api_key_here
Alternatively, log in via POST /api/auth/login to receive a session token — useful for short-lived integrations.
Account & API›Using the API
Using the API
The Site2RSS Factory REST API gives programmatic access to all features — feed generation, saved feed management, analytics, and more.
The Admin Panel user management tab lets administrators create, edit, and remove user accounts. Access via ⚙️ Admin Panel in the sidebar (admin accounts only).
User List
The table shows all registered users with columns for Email, Plan, Admin status, License Valid, Created date, and Last Login. Click any row's edit icon to open the edit form.
Creating a User
Use the Add User tab to create accounts without going through the registration flow. You can set the email, password, plan tier, and admin privileges directly.
Enabling / Disabling Accounts
The License Valid toggle controls whether a user can log in. Setting it to false immediately blocks access without deleting the account or its data.
⚠️
Deleting a user is permanent and cannot be undone. All their saved feeds, mashed feeds, and HTML templates will be removed from the database.
Admin Panel›Email Settings
Email Settings
The Email Settings tab configures the SMTP server used for password reset emails and system notifications. Access via ⚙️ Admin Panel → Email Settings tab.
SMTP Configuration Fields
SMTP Host — Your mail server hostname (e.g. smtp.gmail.com, smtp.sendgrid.net)
SMTP Port — Usually 587 (TLS/STARTTLS) or 465 (SSL). Avoid port 25 in cloud environments.
SMTP Username — The login username or email address for authentication
SMTP Password — The SMTP account password or app-specific password
From Name — The display name shown in outgoing emails (e.g. "Site2RSS Factory")
Testing the Configuration
After saving, use the Send Test Email button and enter any email address to verify the settings are working. A test message will be delivered within a few seconds if SMTP is configured correctly.
💡
For Gmail, use smtp.gmail.com port 587 with an App Password (not your main Google password). Enable 2FA on the Google account, then generate an App Password under Security settings.
FAQ›Common Questions
Common Questions
This usually means the selector isn't matching the right elements. Open the source of the page (Ctrl+U), look for the article structure, and compare against your selectors. Try running Auto-Detect first — if it still doesn't work, the site may be JavaScript-rendered (selectors can't work on JS-only content).
Feeds are re-scraped on-demand when requested, subject to the Update Interval setting. If someone requests your feed URL within the interval window, they get the cached version. The default interval is 60 minutes. You can change it per feed in the My Feeds settings.
Yes. Copy the RSS URL of any My Feed (from the feed list) and add it as one of the source URLs in a Mashed Feed. This is the recommended way to pull from sites without native RSS and blend them with traditional feeds.
Yes. The scraper automatically converts relative URLs to absolute URLs using the source page's domain. So /blog/post-1 scraped from https://example.com becomes https://example.com/blog/post-1 in the RSS output.
RSS 2.0 and Atom 1.0 are fully supported. Most public feed sources (BBC, Reuters, YouTube channels, Reddit, podcasts) use one of these formats. JSON Feed is not currently supported as an input format.
Yes. In the Save Template modal, tick "Public" on the Basic tab. Public templates are served at /api/rsstohtml/view/{slug} without any authentication — perfect for embedding on other websites or sharing directly.
Both describe which element to select on a page. XPath is more powerful — it can select attributes (e.g. @href), traverse parent elements, and match text nodes. CSS selectors (.class-name, #id, div > p) are simpler and more familiar to web developers. Site2RSS Factory automatically converts CSS selectors to XPath behind the scenes, so either format works in all selector fields.
Many sites publish their RSS URL in the page's <head> as a <link rel="alternate" type="application/rss+xml"> tag. Run Auto-Detect on the URL — it checks for native RSS feeds and will suggest them automatically if found. Common paths to try manually: /feed, /rss, /feed.xml, /atom.xml.
A low cache hit rate means requests are arriving after the cache has expired, forcing a re-scrape each time. Increase the Refresh Interval on your feeds (My Feeds → Basic tab) so the cached result stays valid longer. For feeds with low traffic, a 2–6 hour interval is usually fine.