karlicoss / promnesia

Another piece of your extended mind
https://beepb00p.xyz/promnesia.html
MIT License
1.73k stars 74 forks source link
browser-history extended-mind memex memory mind personal-knowledge-database pkm

+OPTIONS: num:nil

Quick links: [[#motivation][Motivation]] | [[file:doc/GUIDE.org#extension-features][Feature guide]] | [[#demos][Demos]] | [[#how-does-it-work][How does it work?]] | [[#install][Install]] | [[#try-it-out][Try it out & Setup]] | [[#glossary][Glossary]] | [[file:doc/GUIDE.org#FAQ][FAQ]] | [[#support][Support]] | [[file:doc/TROUBLESHOOTING.org][Troubleshooting guide]] | [[file:doc/DEVELOPMENT.org][Developer's guide]]

Promnesia is a browser extension for [[https://chrome.google.com/webstore/detail/promnesia/kdmegllpofldcpaclldkopnnjjljoiio][Chrome]]/[[https://addons.mozilla.org/en-US/firefox/addon/promnesia][Firefox]] (including Firefox for Android!) which serves as a web surfing copilot, enhancing your browsing history and web exploration experience.

TLDR: it lets you explore your browsing history in context: where you encountered it, in chat, on Twitter, on Reddit, or just in one of the text files on your computer. This is unlike most modern browsers, where you can only see when you visited the link.

It allows you to answer different questions about the current web page:

+html:

See [[file:doc/GUIDE.org#extension-features][feature guide]] for more information.

You can jump straight to the [[#demos][Demos]] and [[#install][Install]] sections if you're already overexcited.

Then this tool is for you.

+html:

See [[file:doc/GUIDE.org#extension-features][feature guide]] if you're wondering how something specific here works.

You might also want to skim through the [[https://github.com/karlicoss/promnesia#glossary][glossary]] if you want to understand deeper what information Promnesia is extracting.

** Data sources Promnesia ships with some builtin sources. It supports:

See [[https://github.com/karlicoss/promnesia/blob/master/doc/SOURCES.org][SOURCES]] for more information.

** Data flow

Here's a diagram, which would hopefully help to understand how data flows through Promnesia.

See HPI [[https://github.com/karlicoss/HPI/blob/master/doc/SETUP.org#data-flow][section on data flow]] for more information on HPI modules and data flow.

Also check out my [[https://beepb00p.xyz/myinfra.html#promnesia][infrastructure map]], which is more detailed!

: ┌─────────────────────────────────┐ ┌────────────────────────────┐ ┌─────────────────┐ : │ 💾 HPI sources │ │ 💾 plaintext files │ │ other sources │ : │ (twitter, reddit, pocket, etc.) │ │ (org-mode, markdown, etc.) │ │ (user-defined) │ : └─────────────────────────────────┘ └────────────────────────────┘ └─────────────────┘ : ⇘⇘ ⇓⇓ ⇙⇙ : ⇘⇘ ⇓⇓ ⇙⇙ : ┌──────────────────────────────┐ : │ 🔄 promnesia indexer │ : | (runs regularly) │ : └──────────────────────────────┘ : ⇓⇓ : ┌──────────────────────────────┐ : │ 💾 visits database │ : │ (promnesia.sqlite) │ : └──────────────────────────────┘ : ⇓⇓ : ┌──────────────────────────────┐ : │ 🔗 promnesia server │ : | (always running) | : └──────────────────────────────┘ : ⇣⇣ : ┌─────────────────────────────────┐ : ┌───────────────────────┤ 🌐 web browser ├────────────────────┐ : │ 💾 browser bookmarks ⇒ (promnesia extension) ⇐ 💾 browser history | : └───────────────────────┴─────────────────────────────────┴────────────────────┘

https://en.wikipedia.org/wiki/List_of_Unicode_characters#Box_Drawing

TODO would be really nice to have links here.. but not sure how without svg...

The easiest way to try this mode is to run =promnesia demo= command, it can give you a sense of what Promnesia is doing with zero configuration.

  1. [[#install][Install]] the extension and the server (PIP package), in case you haven't already

  2. Run ~promnesia demo https://github.com/karlicoss/exobrain~

    This clones the repository, ([[https://github.com/karlicoss/exobrain][my personal wiki]] in this case), extracts the URLs, and runs on the port =13131= (default, can be specified via =--port=)

    You can also use a path on your local filesystem (e.g. directory with text files), or a website URL.

  3. After that, visit https://www.reddit.com

    If you press the extension icon, you will see the pages from my blog where I link to posts on Reddit.

TODO Frontend -- mention what settings are possible?

TODO possibly reuse JS config stub?

In code ([[file:src/promnesia/common.py][python]], [[file:extension/src/common.js][JS]]), visits are reprented as =class Visit= (and =class DbVisit=).

Visits have the following fields:

Digression: now that you have an idea what is a Visit, you can understand few more things about Promnesia:

Now let's consider some concrete examples of different kinds of Visits:

Note: this terminology is not set is stone, so if someone feels there are words that describe these concepts better, I'm open to suggestions!

TODO glossary for canonical??

I don't need money, but I understand it's often easier to give away than time, so here are some of projects that I donate to: