forked from omnivore-app/omnivore
-
Notifications
You must be signed in to change notification settings - Fork 20
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Draft] Add Discover Feature #3
Open
Podginator
wants to merge
40
commits into
main
Choose a base branch
from
discover
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Omnivore discover feeds
…ing for faulty RSS Feeds
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
omnivore-discover
What is this?
One of my biggest problems is actually discoverability of articles. I have my five sites, and my link aggregators like Reddit. This is a bubble, and I miss a lot this way.
So I wanted to see if I could create something that would enable discoverability from Omnivore.
I had a few goals when creating Omnivore Discover.
Features
Automatic Categorisation
A while ago I worked a proof of concept for automatically adding user tags to an article. I ultimately still need to work on that further, but the basics for it worked well.
I wanted to take the learnings from this and use it to add automatic categorisation of stories.
I created a few topics, and added some descriptions to them. I generate an Embedding from this using OpenAIs embedding. These can be seen below.
When ingesting articles (see Ingesting Articles) we use their title and small description to create an Embedding. We can then use Cosine Similarity to identify which category this story should be a part of.
This is of course not 100% accurate, but it does a good enough job at categorising articles.
Social Features
Discord Integration.
I created Omnivore Discover, and added it to the Omnivore WebApp.
I wanted to also add some social features to this. We have a fantastic community within the Omnivore Discord. I have found a lot of interesting reads in the #recommendations channel.
I wanted to be able to take these recommendations, and expose them to the Omnivore Community.
We do this using a Discord Bot. In order to moderate these recommendations a moderator must add an emoji (🦥) to the story.
This then gets ingested in the same way as the other stories. Meaning that it is also categorised. It also gets added to the Community Picks tab.
Popularity
There is also a popularity feed. This provides a score based on recent saves, weighting more heavily for newer articles. This allows us to have a popular tab, which shows in order the most popular stories on Omnivore Right now according to the community
Ingesting Articles
I ensured that articles could come from multiple locations. This is why I chose an RXJS Poller.
This project also started from the automatic labelling project. So that too was an important part of the decision to enable ingestion from multiple plages. Including a PubSub queue.
I wanted one of the main sources of the articles to be RSS Feeds.
I did this because I thought that some of this functionality might, in the future, be extendable to other RSS Feeds.
I have chose 3 article sources for now, Wired, ArsTechnica, and The Atlantic.
Technologies
Below is a list of the technologies that were used to design this feature. This repository represents the RXJS side.
Running
Creation of the PubSub Topic and Subscription is external to this app.