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.

UglyFeed logo

Self-host UglyFeed

v0.0.52

AI-powered RSS feed aggregator with LLM rewriting

AlphaOpen SourceAGPL-3.0
Updated7 hours ago
LanguagePython
Setup difficultyModerate
Stars
323
Ports
8001 (HTTP server for serving the generated XML feed), 8501 (Streamlit web UI)
Docker
fabriziosalmi/uglyfeed
Install with Docker
UglyFeed screenshot 1

What is UglyFeed?

UglyFeed is an open-source RSS feed orchestrator that fetches content from multiple RSS feeds, uses semantic similarity to deduplicate articles, and leverages large language models (OpenAI, Groq, Ollama, Anthropic, Google Gemini) to rewrite and enhance the aggregated content. It outputs a clean RSS XML feed that can be served via a built-in HTTP server, deployed to GitHub/GitLab Pages as a free CDN, or consumed directly. The project includes a Streamlit web UI for configuration and monitoring, supports scheduled automated runs via GitHub Actions or a built-in scheduler, and offers content moderation and text-to-speech features. It runs as a Docker container, via Docker Compose, as a pip package, or directly with Streamlit.

Should you self-host UglyFeed?

UglyFeed scores 44/100 on selfhost.directory (how scoring works) and ranks #52 of 85 in Feed Reader. It has 323 GitHub stars.

It shipped 1 stable release in the past year. The latest, v0.0.52, came out on 5 October 2026.

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

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 UglyFeed vs RSSHub side by side.

Features

  • Automated scheduling
  • Content Evaluation
  • Content moderation
  • Feed Translation
  • GitHub Actions Integration
  • GitHub/GitLab Deployment
  • HTTP Server for XML Feed
  • LLM Content Rewriting
  • Multi-language Support
  • Pip Package
  • RSS Feed Retrieval
  • RSS XML Generation
  • Semantic Deduplication
  • Streamlit Web UI
  • Text-to-Speech

UglyFeed README

How to install UglyFeed

Install UglyFeed with Docker

Docker, LLM API key, RSS feed URLs

docker run -p 8001:8001 -p 8501:8501 -v /path/to/local/feeds.txt:/app/input/feeds.txt -v /path/to/local/config.yaml:/app/config.yaml fabriziosalmi/uglyfeed:latest

Requires Docker, feeds.txt and config.yaml mounted as volumes

UglyFeed releases & version history

FAQ

Can UglyFeed rewrite content in multiple languages?

Yes, UglyFeed's language models can process and rewrite content in various languages depending on the selected API capabilities.

How do I control the number and age of items in the feed?

Use max_items and max_age_days settings in config.yaml to limit items included in the RSS feed.

What scheduling capabilities does UglyFeed offer?

UglyFeed offers flexible scheduling options with configurable intervals for automatic feed fetching and processing.

Can UglyFeed deploy to GitHub or GitLab?

Yes, deployment settings in config.yaml allow configuring GitHub and GitLab integrations for automatic publishing.

How does UglyFeed serve the XML feed?

UglyFeed uses a custom HTTP server to serve the XML feed with correct content type and cache headers.

What LLM APIs does UglyFeed support?

UglyFeed supports OpenAI, Groq, Ollama, Anthropic, and Google Gemini APIs.

What preprocessing steps does UglyFeed perform?

UglyFeed can remove HTML tags, convert to lowercase, remove punctuation, apply lemmatization, and use stemming, all configurable.

How does UglyFeed fetch RSS feeds?

UglyFeed reads URLs from a specified file and uses the feedparser library to fetch and parse the content.

What is UglyFeed?

UglyFeed is a minimalistic RSS feed aggregator that fetches and processes content from multiple RSS feeds and uses LLMs to rewrite and enhance the content.

More in RSS

Rate this project

Click to rate — no account needed.

0 comments

Posting as guest
Loading comments…