UglyFeed

fabriziosalmiAGPL-3.0活跃维护

用大语言模型抓取、聚合、过滤并重写 RSS 订阅源,再对外提供内容服务,适合做新闻聚合与内容改写实验。

Retrieve, aggregate, filter, evaluate, rewrite and serve RSS feeds using Large Language Models for fun, research and learning purposes

v0.0.52发布于 2026-10-05 12:59 UTC324star21fork同步于 2026-11-11 05:57 UTC

怎么上手

由 README 提炼,执行前请确认
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
硬件要求按 README 说明

README 未说明本地显存或 GPU 要求;需联网并依赖外部 LLM API(OpenAI、Ollama、Groq、Anthropic、Gemini),也可指向自建 OpenAI 兼容服务

有 Docker 镜像
下载:源码 zip·GitHub Releases(安装包)本站不镜像安装包

项目说明

由 README 自动翻译提炼

用大模型抓取、聚合、改写并发布 RSS 源,把多个订阅合成一份定制化信息流

用大语言模型抓取、聚合、过滤并重写 RSS 订阅源,再对外提供内容服务,适合做新闻聚合与内容改写实验。

核心能力

  • 按相似度聚合多个 RSS 源的文章条目
  • 调用 LLM API 改写内容并保存为 JSON
  • 将 JSON 转回合法 RSS 并通过 HTTP 服务发布
  • 支持推送到 GitHub 或 GitLab 作为公开订阅地址
  • 内置 Streamlit Web UI 与内容评估脚本

容易踩的坑

运行前必须修改 config.yaml 中的源 RSS 和 LLM API/模型,否则无法改写;需自行准备 LLM API 密钥或本地 Ollama 服务;HTTP 服务默认监听 8001 端口,Web UI 为 8501,需同时映射

内容由模型根据 README 生成,可能不完整或不准确,以官方文档为准。看原文 README

最近发版

5 个版本v0.0.52
  1. v0.0.52Release 0.0.52最新正式版2026-10-05 · 2026-10-05 12:59 UTC

    What's Changed

    New Contributors

    Full Changelog: https://github.com/fabriziosalmi/UglyFeed/compare/v0.0.51...v0.0.52

  2. v0.0.512025-07-12 · 2025-07-12 19:57 UTC
    查看更新说明

    What's Changed

    Full Changelog: https://github.com/fabriziosalmi/UglyFeed/compare/v0.0.50...v0.0.51

  3. v0.0.502025-06-16 · 2025-06-16 20:08 UTC
    查看更新说明
  4. v0.0.492025-06-16 · 2025-06-16 20:05 UTC
    查看更新说明

    What's Changed

    New Contributors

    Full Changelog: https://github.com/fabriziosalmi/UglyFeed/compare/v0.0.48...v0.0.49

  5. v0.0.48Release 0.0.482024-07-06 · 2024-07-06 10:35 UTC
    查看更新说明

    Changes in this Release

    • pylint and PEP8 improvements

用户点评

登录用户的真实使用记录,可按版本和硬件筛选
共 0 条

    还没有人点评。第一个说出真实体验的人最有价值。

    README 原文

    未翻译

    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.