TBosak
/
mkfd
RSS feed builder created with Bun🥖 and Hono🔥- builds from webpages and/or REST API calls
🏃 Running locally
🍞 Bun installation Visit bun.sh for more info
curl https://bun.sh/install | bash
📦 To install dependencies
bun install
🚀 To run
bun run index.ts --passkey=your_passkey_here --cookieSecret=your_cookie_secret_here
➡️ Access the GUI at http://localhost:5000/
🐳 Running with Docker
🏠 Locally
docker build -t mkfd .
docker run -p 5000:5000 -v /local/mount/path:/configs -e PASSKEY=your_passkey -e COOKIE_SECRET=your_cookie_secret mkfd
📥 From Docker Hub
docker pull tbosk/mkfd:latest
docker run -p 5000:5000 -v /local/mount/path:/configs -e PASSKEY=your_passkey -e COOKIE_SECRET=your_cookie_secret tbosk/mkfd:latest
🔧 To Do
- Locally testing subscriptions to feeds
- Add all possible RSS fields to models
- Add option for parallel iterators
- Add form validation
- Add selector suggestion engine
- Add feed preview pane
- Store/compare feed data to enable timestamping feed items
- Create dockerfile
- Create Helm chart files
- Create GUI
-
Utilities
- HTML stripper
- Source URL wrapper for relative links
- Amass contributors
Mkfd is a zero-code RSS feed builder created with Bun and Hono, featuring an intuitive front-end that simplifies the entire feed creation process. Instead of manually writing scripts, you just open the interface, input a target URL along with CSS selectors, and Mkfd exports a YAML configuration file. Mkfd then uses that YAML to periodically build and update your feed. In this post, I'll show a high-level overview on how to use Mkfd’s user interface and show you how quickly you can start generating feeds from any webpage or REST API — without writing a single line of code.
🏃 Running locally
🍞 Bun installation Visit bun.sh for more info
curl https://bun.sh/install | bash
📦 To install dependencies
bun install
🚀 To run
bun run index.ts --passkey=your_passkey_here --cookieSecret=your_cookie_secret_here
➡️ Access the GUI at http://localhost:5000/
🐳 Running with Docker
🏠 Locally
docker build -t mkfd .
docker run -p 5000:5000 -v /local/mount/path:/configs -e PASSKEY=your_passkey -e COOKIE_SECRET=your_cookie_secret mkfd
📥 From Docker Hub
docker pull tbosk/mkfd:latest
docker run -p 5000:5000 -v /local/mount/path:/configs -e PASSKEY=your_passkey -e COOKIE_SECRET=your_cookie_secret tbosk/mkfd:latest
🧭 Navigating the Mkfd UI
Open http://localhost:5000 after running Mkfd. You’ll see a form that lets you input:
- The Target URL of the webpage or API you want to convert into a feed.
- A Schedule (in minutes) for how often Mkfd should re-scrape and rebuild the feed.
Mkfd provides a user-friendly interface (with SelectorGadget integration for figuring out the correct selectors) that lets you pinpoint elements on the webpage:
-
Article Container Selector – Identify the main wrapper for each item, e.g.,
.article
orli.post-item
. - Title, Link, Date Selectors – Extract the specific data fields for your feed.
- Additional Fields – You can also include a description, author, or enclosures (such as audio, videos, or images).
The Aforementioned UI:
Note: If accessing remotely from outside localhost, the passkey used on deployment is needed to enter the UI but not to consume the feeds.
🗂️ Generating the YAML Configuration
After you specify your selectors and scheduling details, just hit Submit. Mkfd will create a YAML configuration file with a unique GUID — this file contains:
- URL – The page or API endpoint you’re scraping.
- Selectors – The custom CSS selectors for titles, links, dates, etc.
- Schedule – The periodic interval (in minutes) for Mkfd to update your feed.
This YAML file lives within the project directory and serves as the master instruction set for the feed builder.
⚙️ How Mkfd Builds and Serves the Feed
Once your YAML is set up, Mkfd executes a periodic job to:
- Scrape the Specified URL – Using your CSS selectors to retrieve the latest content.
- Generate an RSS Feed – Formatting the scraped data into a valid feed structure.
- Expose the Feed – Mkfd will automatically serve the feed from an endpoint for the end user to consume.
💡 Tips and Tricks
- Selector Fine-Tuning: If your feed items aren’t showing as expected, double-check your CSS selectors.
- Multiple Feeds: You can create multiple feeds for different websites or data sources. Each feed is built using its own web worker.
- Scheduling Intervals: Avoid overly frequent scrapes (e.g., every minute) to reduce server load and potential IP blocking. A common interval is 15 minutes to 1 hour.
- Version Control Your YAML: If you’re setting up multiple feeds or complex data extractions, keep your YAML in version control for easy rollback or iteration.
✅ Conclusion
Mkfd offers a straightforward, no-code solution for generating custom RSS feeds out of any webpage or REST API.
- Scrape Data using simple CSS selectors—no coding required.
- Generate a YAML file that captures your scraping logic and schedule.
- Automatically Build and Serve the feed on a configurable schedule.
Whether you’re a seasoned developer or just need a simple feed builder, Mkfd’s browser-based UI, integrated selector tools, and one-click YAML generation make it easy to convert the web into feeds you control — all without writing a single line of code.
Happy Building! Check out the GitHub repo for more details and/or to contribute to Mkfd’s development.
Top comments (0)