Skip to main content

UglyFeed UglyFeed

UglyFeed is a simple application designed to retrieve, aggregate, filter, rewrite, evaluate and serve content (RSS feeds) written by a large language model. This repository provides the code, the documentation, a FAQ, a troubleshooting guide, and some optional scripts to evaluate the generated content.

GitHub last commit GitHub Issues or Pull Requests Pylint CodeQL Docker Pulls PyPI - Downloads Docker Image Version

Features

  • 📡 Retrieve RSS feeds
  • 🧮 Aggregate feeds items by similarity
  • ✨ Rewrite content using LLM API
  • 💾 Save rewritten feeds to JSON files
  • 🔁 Convert JSON to valid RSS feed
  • 🌐 Serve XML feed via HTTP server
  • 🌎 Deploy XML feed to GitHub or GitLab
  • 📈 Evaluate generated content
  • 🖥️ Web UI based on Streamlit
  • 📰 RSS test feeds available
  • 🤖 Same codebase for all releases
  • 🛑 Simple post-filter moderation
  • ➡️ Translate feeds into your own language
  • 📝 Tons of prompts ready to use

Get it now

Quick start

Prerequisites

  • 🌎 Internet connection
  • 🐳 Docker
  • ✨ LLM API
  • 📲 RSS reader

Supported API and models

  • OpenAI API (gpt-3.5-turbo, gpt-4, gpt-4o)
  • Ollama API (all models like llama3, phi3, qwen2)
  • Groq API (llama3-8b-8192, llama3-70b-8192, gemma-7b-it, mixtral-8x7b-32768)
  • Anthropic API (claude-3-haiku-20240307, claude-3-sonnet-20240229, claude-3-opus-20240229)
  • Google Gemini API (Free tier: gemini-2.0-flash, gemini-2.0-flash-lite, gemini-1.5-flash, gemini-1.5-flash-8b, gemma-3, gemma-3n)

You can use your own models by running a compatible OpenAI LLM server. You must change the OpenAI API url parameter.

Running the Container

To start the UglyFeed app, use the following docker run command:

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

Configure the application

In the Configuration page (or by manually editing the config.yaml file) you will find all configuration options. You must change at least the source feeds you want to aggregate, the LLM API and model to use to rewrite the aggregated feeds. You can then retrieve the final uglyfeed.xml feed in many ways:

  • local filesystem
  • download from web UI
  • HTTP server url
  • HTTPS GitHub CDN url

You can easily extend it to send it to cms, notification or messaging systems.

Execute the application scripts

Execute all scripts in the Run scripts page easily by clicking on the button Run main.py, llm_processor.py, json2rss.py sequentially. You can check for logs, errors and informational messages.

Serve the final rewritten XML feed via HTTP

Once all scripts completed go to the View and Serve XML page where you can view and download the generated XML feed. If you start the HTTP server you can access to the XML url at http://container_ip:8001/uglyfeed.xml

Deploy the final rewritten XML feed to GitHub/GitLab

Once all scripts completed go to the Deploy page where you can push the final rewritten XML file to the configured GitHub/GitLab repository, the public XML URL to use by RSS readers is returned for each enabled platform.

Documentation

Please refer to the extended documentation to better understand how to get the best from this application.

Use cases

The project can be easily customized to fit several use cases:

  • Smart Content Curation: Create bespoke newsfeeds tailored to niche interests, blending articles from diverse sources into a captivating, engaging narrative.
  • Dynamic Blog Generation: Automate blog post creation by rewriting and enhancing existing articles, optimizing them for readability and SEO.
  • Interactive Educational Tools: Develop AI-driven study aids that summarize and rephrase academic papers or textbooks, making complex topics more accessible and fun.
  • Personalized Reading Experiences: Craft custom reading lists that adapt to user preferences, offering fresh perspectives on favorite topics.
  • Brand Monitoring: Aggregate and summarize brand mentions across the web, providing concise, actionable insights for marketing teams.
  • Multilingual Content Delivery: Automatically translate and rewrite content from international sources, broadening the scope of accessible information.
  • Enhanced RSS Feeds: Offer enriched RSS feeds that summarize, evaluate, and filter content, providing users with high-quality, relevant updates.
  • Creative Writing Assistance: Assist writers by generating rewritten drafts of their work, helping overcome writer's block and sparking new ideas.
  • Content Repurposing: Transform long-form content into shorter, more digestible formats like infographics, slideshows, and social media snippets.
  • Fake News Detection Datasets: Generate datasets by rewriting news articles for use in training models to recognize and combat fake news.

Contribution

Feel free to open issues or submit pull requests. Any contributions are welcome!

Others projects

If You like my projects, you may also like these ones:

  • caddy-waf Caddy WAF (Regex Rules, IP and DNS filtering, Rate Limiting, GeoIP, Tor, Anomaly Detection)
  • patterns Automated OWASP CRS and Bad Bot Detection for Nginx, Apache, Traefik and HaProxy
  • blacklists Hourly updated domains blacklist 🚫
  • proxmox-vm-autoscale Automatically scale virtual machines resources on Proxmox hosts
  • proxmox-lxc-autoscale Automatically scale LXC containers resources on Proxmox hosts
  • DevGPT Code togheter, right now! GPT powered code assistant to build project in minutes
  • websites-monitor Websites monitoring via GitHub Actions (expiration, security, performances, privacy, SEO)
  • caddy-mib Track and ban client IPs generating repetitive errors on Caddy
  • zonecontrol Cloudflare Zones Settings Automation using GitHub Actions
  • lws linux (containers) web services
  • cf-box cf-box is a set of Python tools to play with API and multiple Cloudflare accounts.
  • limits Automated rate limits implementation for web servers
  • dnscontrol-actions Automate DNS updates and rollbacks across multiple providers using DNSControl and GitHub Actions
  • proxmox-lxc-autoscale-ml Automatically scale the LXC containers resources on Proxmox hosts with AI
  • csv-anonymizer CSV fuzzer/anonymizer
  • iamnotacoder AI code generation and improvement

Disclaimer

It is crucial to acknowledge the potential misuse of AI language models by this tool. The use of adversarial prompts and models can easily lead to the creation of misleading content. This application should not be used with the intent to deceive or mislead others. Be a responsible user and prioritize ethical practices when utilizing language models and AI technologies.

License

This project is licensed under the AGPL3 License.

Metadata

Release files for uglypy 0.0.52

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for uglypy 0.0.52
File Size Uploaded
uglypy-0.0.52.tar.gz 18.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for uglypy 0.0.52
File Interpreter ABI Platform
uglypy-0.0.52-py3-none-any.whl Python 3 none any Details

Total release size: 35.6 kB

Release files / uglypy-0.0.52.tar.gz

Download URL uglypy-0.0.52.tar.gz
Size 18.0 kB
Tags Source
SHA-256 checksum
How to use checksums
9941bab4be383b451c1157657a8c8f44de66f3dabc830cfbd856df07d1161fde
BLAKE2b-256 checksum
How to use checksums
c56d1e87a396651320978773cd62be695de4e3582d054a159f48a49c3bb6c24c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.10.21

Release files / uglypy-0.0.52-py3-none-any.whl

Download URL uglypy-0.0.52-py3-none-any.whl
Size 17.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
b5d6980a41b026b080c51659520b2c47fa00fa7fad7206397103f80b463a545a
BLAKE2b-256 checksum
How to use checksums
17ee91683a0fce0b36641e1e486bc3629e910948eb9091429c349f43b05b9b91
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.10.21

Release history Release notifications | RSS feed

This release

0.0.52 This release

2 release files

0.0.51

2 release files

0.0.50

2 release files

0.0.46

2 release files

0.0.45

2 release files

0.0.37

2 release files

0.0.36

2 release files

0.0.35

2 release files

0.0.34

2 release files

0.0.32

2 release files

0.0.31

2 release files

0.0.30

2 release files

0.0.29

2 release files

0.0.28

2 release files

0.0.27

2 release files

0.0.25

2 release files

0.0.21

2 release files

0.0.20

2 release files

0.0.19

2 release files

0.0.18

2 release files

0.0.17

2 release files

0.0.16

2 release files

0.0.15

2 release files

0.0.14

2 release files

0.0.13

2 release files

0.0.12

2 release files

0.0.11

2 release files

0.0.10

2 release files

0.0.9

2 release files

0.0.3

2 release files

0.0.2

2 release files

0.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page