selfhost.directory

The index of self-hostable projects — ranked, categorized and served with live updates.
Own your data and stop giving it to big tech.

mkfd logo

Self-host mkfd

1.0.0

Feed generation toolkit turning web sources into RSS

BetaOpen SourceMIT
Updatedlast year
LanguageTypescript
Setup difficultyModerate
Stars
284
Port
5000 (HTTP web interface and API)
Docker
tbosk/mkfd
Install with Docker
mkfd GUI showing feed management interface

What is mkfd?

mkfd lets you create RSS feeds from sources that don't provide them natively — websites, email inboxes (IMAP), APIs, and other web content. It ships a React-based web interface for defining and managing feeds. Features include CSS-selector scraping, multi-page drill chains, Playwright-powered advanced scraping with optional Chrome extensions, IMAP email monitoring for Gmail, Yahoo and Outlook, a feed preview pane, parallel item processing, Flaresolverr support for Cloudflare-protected sites, and a selector suggestion helper. The service listens on port 5000 and needs three generated secrets (PASSKEY, COOKIE_SECRET, ENCRYPTION_KEY) for auth and encryption. You can run it with Docker, Docker Compose, or locally on Bun; email handling uses a separate Node.js process with adjustable memory. Licensed MIT and actively developed.

Should you self-host mkfd?

mkfd scores 46/100 on selfhost.directory (how scoring works) and ranks #47 of 85 in Feed Reader. It has 284 GitHub stars.

There was no stable release in the past 12 months, so check the repository's recent activity before you rely on it.

Setup is moderate: expect some configuration beyond a single command. An official Docker image is available. It is MIT-licensed and written mostly in Typescript.

Its closest alternative on selfhost.directory is RSSHub (85/100, 46 703 stars). It scores higher overall, so compare the two before you pick. See mkfd vs RSSHub side by side.

Features

  • Advanced scraping with Playwright
  • Chrome extensions support
  • Date parser with format overrides
  • Drill chains for multi-page extraction
  • Email feeds via IMAP
  • Feed preview pane
  • Flaresolverr integration
  • HTML stripper
  • Nested link follower / drilldown
  • Parallel iterators
  • RSS Feed Generation
  • Selector suggestion engine
  • Source URL wrapper for relative links
  • Web scraping with CSS selectors

mkfd README

How to install mkfd

Install mkfd with Docker

Environment variables
PASSKEY, COOKIE_SECRET, ENCRYPTION_KEY, SSL, PORT, SERVER_URL, CHROME_EXTENSIONS_PATH, NODE_OPTIONS

docker pull tbosk/mkfd:latest docker run -p 5000:5000 -v /local/mount/path:/app/configs -e PASSKEY="$PASSKEY" -e COOKIE_SECRET="$COOKIE_SECRET" -e ENCRYPTION_KEY="$ENCRYPTION_KEY" -e SSL=false tbosk/mkfd:latest

Requires three generated secrets (PASSKEY, COOKIE_SECRET, ENCRYPTION_KEY)

How to configure mkfd

  • CHROME_EXTENSIONS_PATH/app/extensionsPath to Chrome extensions directory for advanced scraping

    Path to Chrome extensions directory for advanced scraping

  • COOKIE_SECRETRandom string used to sign cookies; must be at least 32 characters

    Random string used to sign cookies; must be at least 32 characters

  • ENCRYPTION_KEYRandom string used to encrypt sensitive data like IMAP passwords and proxy auth

    Random string used to encrypt sensitive data like IMAP passwords and proxy auth

  • NODE_OPTIONSOverride default 4GB memory allocation for IMAP processes

    Override default 4GB memory allocation for IMAP processes

    values: --max-old-space-size=8192

  • PASSKEYUnique identifier used to authenticate requests to the Mkfd API

    Unique identifier used to authenticate requests to the Mkfd API

  • PORT5000Server port

    Server port

  • SERVER_URLhttp://localhost:5000Public URL used in feed atom:link canonical references

    Public URL used in feed atom:link canonical references

  • SSLfalseEnable SSL (true/false)

    Enable SSL (true/false)

    values: true/false

More in Web Scraping

Rate this project

Click to rate — no account needed.

0 comments

Posting as guest
Loading comments…