Contains both spile (the recommender) and the node for communicating content to other spile's & other rss feed consumers.
To run:
pip3 install -r requirements.txt
rm spile.db
Careful!
GLOBAL_AUTH_TOKEN=zaza python3 main.py
You can test the database creation with
python3 tests.py
withmeaning uses a similar data structure to nostr: there is only one, the event.
{
"events": [
{
"id": "uuid",
"title?": "Title",
"author": "name of creator (username, twitter handle, pubkey)",
"content": "Markdown of main content, number if type resonance",
"summary?": "AI or human generated summary of content",
"link?": "url to external website, or id (or identifier) of event if type feedback, recommends, resonance, archive, done",
"type": "see, read, watch, do, answer, _feedback, recommends _resonance, _archive, _done)",
"created_at": 1679940469,
},
]
}
Types tell the front-end how to display events, _
types are not displayed, but add metadata to other events
see
for short tweet-like information or direct messages that are of no other type (nostr kind:1)
read
for longform articles (from RSS, nostr kind:30023)
watch
for videos
do
for executable tasks
answer
for direct messages / mails that ask questions
_feedback
internal text-based feedback to the algorithm, can be exposed as a quote tweet, by sending a secand "recommends" event
recommends
quote tweet with a link to the original event, a quote as content, and the author as the recommender
_resonance
content must be integer between 0 - 100, user generated by how meaningful an event was.
_archive
archives the event if content 1, unarchives if content 0 (exposed on db query, not exposed to spile)
_done
marks messages as done for events of type "do", if 1. Undo if 0
There will be more types over time, especially ones that extend do
.
Clients SHOULD display only the latest event if author, type and identifier match.