🏪 Official stores
Chrome & Brave
•
Firefox
An automated, web-based and minimalist reference manager that also finds code repositories.
It is not meant to replace, rather complete more standard reference managers as Zotero etc.
This browser extension allows you to do automatically store research papers you read, find a code repository and much more:
- 🏬 Automatically record papers you open, without clicking anywhere. You can then search them, tag them, comment them and link a code repository.
- 💻 Automatically find code repositories using PapersWithCode's API
- 🤝 Match pre-prints to publications using 3 different databases
- 🎬 Change a pdf's webpage title to the article's title, because who cares about that saved bookmark
1812.10889.pdf
when it could beInstaGAN Instance-aware Image-to-Image Translation.pdf
- 🎫 BibTex citation, because citing papers should not be a hassle you can copy a BibTex citation to your clipboard or export the Memory itself as a
.bib
file - 🔗 Markdown link,
[title](url)
because it's the little things that make sharing a paper easier (to be used in issues, PRs, Readme, HackMD.io etc.) - 🗂 Direct download button with a nice name including the paper's title, so that you don't have to open the pdf's webpage and then download it from your browser.
- 📄 Go back from a pdf to its abstract page. For instance: from
https://arxiv.org/pdf/1703.06907.pdf
tohttps://arxiv.org/abs/1703.06907
in a click. - 🏛️ Export your data as a
.json
file or a.bib
full BibTex export
Supported Venues • Demo • Keyboard Navigation • User Guide • Advanced features • Install from source • About preprints • Discovering code Repositories • FAQ
- Arxiv (PaperMemory will try to find if a pre-print has been published and create a corresponding
note
to the paper (see preprints)) - BioRxiv
- NeurIPS
- Open Review (ICLR etc.)
- Computer Vision Foundation (I/ECCV, CVPR etc.)
- Proceedings of Machine Learning Research (PMLR) (AISTATS, ICML, CoRL, CoLT, ALT, UAI etc.)
- Association for Computational Linguistics (ACL) (EMNLP, ACL, CoNLL, NAACL etc.)
- Proceedings of the National Academy of Sciences (PNAS)
- SciRate
- Nature (Nature, Nature Communications, Nature Machine Intelligence etc.)
- American Chemical Society (ACS)
- IOPscience
- PubMed Central
- International Joint Conferences on Artificial Intelligence (IJCAI)
- Association for Computing Machinery (ACM)
- IEEE
- Springer (books, chapters and, of course, articles)
- Add more
About finding published papers from preprints
All the data collected is stored locally on your computer and you can export it to json
it from the options page.
I'm regularly adding feature ideas in the issues. Feel free to go upvote the ones you'd like to see happen or submit your own requests.
Customize features in the menu:
Switch between Light and Dark mode
Share ideas 💡 in issues and love with stars ⭐️:)
- Keyboard navigation:
- Open the popup:
cmd/ctrl + shift + e
- Open the Memory
a
from the popup's home will open it- navigate to the bottom left button with
tab
and hitenter
- Search
- Search field is automatically focused on memory open
- Navigate to the top input with
tab
orshift + tab
- Navigate papers
tab
will iterate through papers down the listshift + tab
will go back up the list
- Edit a paper
- Press
e
to edit the paper's metadata: tags, code and note when the paper is focused (from click or keyboardtab
navigation)- Navigate through fields with
(shift+) tab
: tags and note if you're on a paper's page.
- Navigate through fields with
- Press
enter
to open a focused paper (focus an existing tab with the paper or create a new tab to the paper's pdf if it's not open already) backspace
to delete a focused paper (a confirmation will be prompted first don't worry 👮♀️)
- Press
- Close Memory or Menu
esc
closes the memory (or the menu -- not in Firefox)
- Open the popup:
- Search
- In a paper's authors, title and note.
- Split queries on spaces:
gan im
will look for: all papers whose (title OR author) contain ("gan" AND "im")
- Split queries on spaces:
- In a paper's code link
- Start the search query with
c:
to only search code links
- Start the search query with
- Paper years
- Start the search query with
y: ${year}
, optionally with,
separating requested years or starting with>
or<
to filter paper published after/before a given year (stricly)y: 20,21,22
will display papers published in2020 OR 2021 OR 2022
y: <2015
will display papers published before (strictly)2015
y: >19
will display papers published after (strictly)2019
- Start the search query with
- Paper tags
- Start the search query with
t:
to filter by tags t: gan
will look for all papers whose tag-list contains at least 1 tag containing "gan"t: gan tim
will look for all papers whose tag-list contains (at least 1 tag containing "gan") AND (at least 1 tag containing "tim")
- Start the search query with
- In a paper's authors, title and note.
- Export your memory as json file (in the extension's Menu)
In the extension's options
(right click on the icon or in the popup's menu) you will find advanced customization features:
- Auto-tagging: add tags to papers based on regexs matched on authors and titles
- Source filtering: filter out some paper sources you don't want to record papers from
- Custom title function: provide Javascript code to generate your own web page titles and pdf filenames based on a paper's attributes
- Data management: export/load your memory data and export the bibliography as a
.bib
file
- Download/clone the repo
- Go to Chrome/Brave's extension manager
- Enable developer mode
- Click on "load unpackaged extension"
- Select the downloaded folder :)
There currently exists, to my knowledge, no centralized source for matching a preprint to its subsequent published article. This makes it really hard to try and implement best practices in terms of citing published papers rather than their preprint.
My approach with PaperMemory is to try and notify you that a publication likely exists by utilizing the note
field. You will occasionally notice Accepted @ X
in a Paper's notes. This will be added automatically if you are on a known published venue's website (as Nature, PMLR or NeurIPS) but also from:
- PapersWithCode.com(https://paperswithcode.com/api/v1/docs/)
- As PaperMemory retrieves code, it also looks for a
proceeding
field in PWC's response. - If it exists and is not
null
then it is expected to look like${conf}-${year}-${month}
. - In this case a note is added to the paper:
Accepted @ ${conf} ${year} -- [paperswithcode.com]
- As PaperMemory retrieves code, it also looks for a
- CrossRef.org
- A query is sent to their api for an exact paper title match
- The response must contain an
event
field with aname
attribute. If it does not it'll be ignored. - If it does, a note is added as:
Accepted @ ${items.event.name} -- [crossref.org]
- dblp.org
- A query is sent to their api for an exact paper title match
- The oldest
hit
in the response which is not a preprint (hit.venue !== "CoRR"
) is used - If such a match is found, a note is added as:
Accepted @ ${venue} ${year} -- [dblp.org]
- In this case, the original Arxiv bibtex data is overwritten to use DBLP's
- Try for instance Domain-Adversarial Training of Neural Networks
- Note that DBLP journals may use ISO4 abbreviations
There's room for improvement here^, please contact me (an issue will do) if you want to help
PaperMemory uses the PapersWithCode API in order to discover code repositories. If the paper being added to the Memory is from Arxiv, PaperMemory will use PWC's arxiv_id
search field. Otherwise it will query per title. PaperMemory then expects exactly 1
result from the API. Any different count
in the response will make PaperMemory consider there is no match.
If a match is found, the selected repo is the official (if it exists) one with the most stars.
Here's an example return value from PWC's API
"https://paperswithcode.com/api/v1/papers/?title=climategan"
{
"count": 1,
"next": null,
"previous": null,
"results": [
{
"id": "climategan-raising-climate-change-awareness",
"arxiv_id": "2110.02871",
"nips_id": null,
"url_abs": "https://arxiv.org/abs/2110.02871v1",
"url_pdf": "https://arxiv.org/pdf/2110.02871v1.pdf",
"title": "ClimateGAN: Raising Climate Change Awareness by Generating Images of Floods",
"abstract": "...",
"authors": ["..."],
"published": "2021-10-06",
"conference": "climategan-raising-climate-change-awareness-1",
"conference_url_abs": "https://openreview.net/forum?id=EZNOb_uNpJk",
"conference_url_pdf": "https://openreview.net/pdf?id=EZNOb_uNpJk",
"proceeding": "iclr-2022-4"
}
]
}
"https://paperswithcode.com/api/v1/papers/climategan-raising-climate-change-awareness/repositories/"
{
"count": 2,
"next": null,
"previous": null,
"results": [
{
"url": "https://github.com/cc-ai/climategan",
"owner": "cc-ai",
"name": "climategan",
"description": "Code and pre-trained model for the algorithm generating visualisations of 3 climate change related events: floods, wildfires and smog. ",
"stars": 25,
"framework": "pytorch",
"is_official": true
},
{
"url": "https://github.com/cc-ai/mila-simulated-floods",
"owner": "cc-ai",
"name": "mila-simulated-floods",
"description": "",
"stars": 7,
"framework": "pytorch",
"is_official": true
}
]
}
Why does PaperMemory require access to all urls?
Because Chrome & Brave will disable an extension by default when it auto-updates with new permissions. In this case, any new addition of a paper source will require new permissions to access the data necessary to parse the paper data and will therefore disable the extension until users re-enable it.
The button to go from an abstract to its pdf does not work
In general there can be 2 reasons:
- It's a bug, it can happen, I'm sorry about this: you should raise an issue, and ideally even provide a fix in a Pull Resquest
- More likely, the pdf is behind a paywall and the standard
abstract -> pdf
path was redirected by the venue's website
How do you match Arxiv.org pre-prints to actual publications?
It's all there: preprints 😃
Contributions and ideas on how to improve the process and potentially add publication sources from titles or arxiv id
are welcome!
Where does PaperMemory store my data?
It's all stored locally in your browser's local storage. If you want to transfer data to a new browser/computer, use the export/import tools in the extension's options.
Can I access the memory full-screen?
Sure! In the extension popup's menu, there's a link at the bottom to the full-page memory. You can also just go to this url (Thanks @kaixin96!):
chrome-extension://ehchlpggdaffcncbeopdopnndhdjelbc/src/fullMemory/fullMemory.html
Can I exclude a paper source?
Yep. In the extension popup's advanced options page: right-click the extension's icon and click on `Options`. Or click on the link at the bottom of the popup menu. Or go to this url (Thanks @kaixin96!):
chrome-extension://ehchlpggdaffcncbeopdopnndhdjelbc/src/options/options.html
How can I retrieve a backup?
There is no straightforward way to do this currently, it will require a little coding:
- Open the extension's options (either right clicking its icon, or from the extension's menu, at the bottom)
- On the options page, open the Javascript Console with
cmd/ctrl + alt + i
orright click > Inspect
- Do the following in the Javascript Console:
const backups = await getStorage("weeklyBackups") console.log(Object.keys(backups)) // this shows you available backup dates const overwrite = backups["<some key from above>"] console.log(overwrite) // inspect this and make sure it is what you want setStorage("papers", overwrite) // Careful! This will overwrite the current data with the backup data
- Improve
Contributing.md
- Write many more tests! Help is wanted (it's not so hard to write unittests 😄) (see
Contributing.md
)
- Firefox
- Using Firefox? #9 🚁