{"id":16271751,"url":"https://github.com/m0wer/rssfilter","last_synced_at":"2025-03-16T13:31:12.268Z","repository":{"id":225486052,"uuid":"766085949","full_name":"m0wer/rssfilter","owner":"m0wer","description":"Filter your current RSS feeds with AI customized recommendations.","archived":false,"fork":false,"pushed_at":"2024-09-28T09:52:19.000Z","size":202,"stargazers_count":31,"open_issues_count":12,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-16T02:47:10.031Z","etag":null,"topics":["ai","llm","recommendation-system","rss"],"latest_commit_sha":null,"homepage":"https://rssfilter.sgn.space/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/m0wer.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-03-02T09:52:07.000Z","updated_at":"2025-03-12T16:41:16.000Z","dependencies_parsed_at":"2024-06-07T06:34:15.663Z","dependency_job_id":"64d1843c-ca52-4705-a9cb-7907fe96c5d4","html_url":"https://github.com/m0wer/rssfilter","commit_stats":null,"previous_names":["m0wer/rssfilter"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/m0wer%2Frssfilter","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/m0wer%2Frssfilter/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/m0wer%2Frssfilter/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/m0wer%2Frssfilter/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/m0wer","download_url":"https://codeload.github.com/m0wer/rssfilter/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243875106,"owners_count":20361947,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai","llm","recommendation-system","rss"],"created_at":"2024-10-10T18:14:40.327Z","updated_at":"2025-03-16T13:31:11.940Z","avatar_url":"https://github.com/m0wer.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![build](https://github.com/m0wer/rssfilter/actions/workflows/docker.yaml/badge.svg)](https://github.com/m0wer/rssfilter/actions/workflows/docker.yaml)\n[![pre-commit](https://github.com/m0wer/rssfilter/actions/workflows/pre-commit.yaml/badge.svg)](https://github.com/m0wer/rssfilter/actions/workflows/pre-commit.yaml)\n[![build](https://github.com/m0wer/rssfilter/actions/workflows/test.yaml/badge.svg)](https://github.com/m0wer/rssfilter/actions/workflows/test.yaml)\n[![build](https://github.com/m0wer/rssfilter/actions/workflows/monitor.yaml/badge.svg)](https://github.com/m0wer/rssfilter/actions/workflows/monitor.yaml)\n\n\n# RSS filter\n\nRSS feeds recommendation system based on user read articles. Replaces the feed\nURLs with the backend URL and uses the backend to filter out unwanted items\nand track user read articles. Uses LLM embeddings and machine learning to\nrecommend similar articles.\n\nThis is a simple RSS filter that filters out unwanted items from an RSS feed.\nIt is written in Python and uses the `feedparser` library to parse the feed.\n\nIt works by tracking the users read articles, computing their embeddings,\nclusyering them, and then recommending similar articles from the feed.\nIt also includes random articles from the feed to allow for discovery of new\ntopics. This starts working only after a user has read a few articles (10 by\ndefault).\n\nEmbedding models allow for a new era of recommendation systems, where a large\nuser base is not required, since recommendations are based on the content of\nthe articles, not on other users behavior.\n\n\n## Self-hosting\n\nYou can self-host this project by running the following command:\n\n```shell\ncp .env.example .env\ndocker-compose -f docker-compose.yml up\n```\n\nIf you don't have or want to use the GPU, first run:\n\n```shell\nsed -i 's/^.*devices:.*$/#\u0026/' docker-compose.yaml\n```\n\nTest it with:\n\n```shell\ncurl -X 'GET' \\\n  'http://localhost/api/v1/feed/1/https%3A%2F%2Fnews.ycombinator.com%2Frss' \\\n  -H 'accept: application/json'\n```\n\nTo use the self-hosted frontend, you should change `apiBaseUrl` in\n`frontend/static/app.js` to match the backend URL.\n\n## Development\n\n### Backend\n\n#### Dependencies\n\nTo install the required libraries, run the following command in the backend or frontend:\n\n```shell\npip install -r requirements.txt\n```\n\n#### Running the backend\n\n```shell\ncd backend\npython -m uvicorn app.main:app --reload --log-level debug --port 8000\n```\n\n## Contributing\n\nThere are some hooks in `.pre-commit-config.yaml` to ensure:\n- `pip-compile` is up-to-date with added dependencies\n- code is well formatted and linted with `ruff` and `black`.\n\nYou can install these hooks with `pre-commit install` and run them on demand by `pre-commit run --all-files`.\n\n## Contact\n\nIf you have any questions, feel free to contact me at\nm0wer at autistici dot org.\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fm0wer%2Frssfilter","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fm0wer%2Frssfilter","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fm0wer%2Frssfilter/lists"}