A Chrome extension that turns any IMDb, Letterboxd, Goodreads, MyAnimeList, or Google Search page
into a one-click save to your personal watchlist, reading list, and bookmark shelf.
Quick start Β· Features Β· Sources Β· Bookmarks Β· Keep sync Β· Install Β· FAQ
| What it does | Reads title metadata from supported pages and saves a clean formatted entry to your local shelf with one click |
| Also works as | A lightweight bookmark manager: save the current tab or paste any URL and click it later to reopen |
| Where data lives | Locally in Chrome storage on your device. Optional sync to your own Google Keep notes |
| Who it is for | Anyone building a watchlist, reading list, anime list, or link collection without copy-pasting or tab-hoarding |
| Setup time | ~2 minutes to load the extension. ~5 minutes to link Keep notes if you want sync |
| Cost | Free and open source. No accounts, no API keys, no cloud backend |
- Why KeepShelf exists
- Quick start
- How it works
- Features
- Supported sources
- Tabs, links, and notes
- Output format
- Install from GitHub
- Usage guide
- Google Keep sync
- Privacy and data
- Permissions explained
- Development
- FAQ
- Troubleshooting
- Contributing
- License
- GitHub repo metadata
Someone sends ten movie and book recommendations. The usual workflow looks like this:
- Google the title
- Copy the name, year, and rating by hand
- Switch to Google Keep or a notes app
- Paste one formatted line
- Repeat nine more times
That takes minutes per title. KeepShelf reduces it to open popup β Save page β done.
You stay on the page you are already on. KeepShelf reads the knowledge panel or page metadata, formats a single clean line, stores it locally, and (if you enable it) pushes that line into the right Google Keep checklist in the background.
No copy-pasting. No tab juggling. No spreadsheet middleman.
Fastest path: download the latest ZIP from the Releases page, extract it, then load it unpacked in Chrome. Done in under two minutes with no tools needed.
Want to build from source instead? See Install from GitHub.
Once the extension is loaded:
- Pin KeepShelf to your Chrome toolbar.
- Open a movie on IMDb, an anime on MyAnimeList, a book on Goodreads, or search anything on Google.
- Click the KeepShelf icon in your toolbar, then click Save page.
- Your item appears in the shelf instantly.
Want automatic Keep sync? Jump to Google Keep sync.
flowchart LR
browse[Open a supported page] --> popup[Click KeepShelf in toolbar]
popup --> save[Click Save page]
save --> parse[Parse title metadata]
parse --> format[Format one clean line]
format --> shelf[Store in local shelf]
shelf --> keep{Keep sync on?}
keep -->|Yes| append[Append to matching Keep list]
keep -->|No| done[Done]
append --> done
Step by step
- Detect: KeepShelf runs on supported pages and reads title, year, runtime or seasons, author, and ratings.
- Parse: metadata is extracted from page JSON-LD, knowledge panels, or DOM.
- Save: click Save page in the popup. Duplicates are detected and skipped automatically.
- Sync: if Keep sync is enabled, the formatted line is appended to the matching Google Keep checklist in the background.
Open the KeepShelf popup on any supported page and click Save page. KeepShelf parses the title, year, runtime, rating, and author automatically. No typing required.
Supported media types:
| Type | What gets captured |
|---|---|
| Movies | Title, year, runtime, IMDb or Letterboxd rating |
| Series | Title, year, latest season count, IMDb rating |
| Anime | Title, year, episode count, MAL score |
| Books | Title, author, published year, Goodreads or BookFilter rating |
Every saved item becomes a single readable line:
The Dark Knight (2008) | 2h 32m | IMDb 9.0
Dark (2017) | S03 | IMDb 8.7
One Piece (1999) | MAL 8.73 (A)
The Alchemist (Paulo Coelho) | 1988 | GR 3.92
Ratings are labeled by source: IMDb, LB (Letterboxd), MAL (MyAnimeList), GR (Goodreads), BF (BookFilter). Anime entries are marked with (A).
The popup has three independent tabs:
| Tab | Stores |
|---|---|
| Media | Movies, series, and anime (filterable by type) |
| Books | Books from any source |
| Tabs | Saved tabs, links, and notes (see below) |
The Tabs shelf tab works like a personal bookmark manager:
- Save this tab: saves the current browser tab with its title and URL
- Paste a URL: type or paste any URL to save it as a link
- Write a note: type any text to save it as a quick note
- Click to open: clicking a saved tab or link reopens it in a new tab
- Copy all: exports every visible item as plain text, one line each
- Copy selected: select items with checkboxes, then copy just those
Saving the same title, URL, or note twice shows a "Already saved" message and skips the duplicate locally and in Keep.
Link your own Google Keep checklists. Every new save can auto-append to the matching note:
- Media (movies, series, anime) go to your Media note
- Books go to your Books note
- Tabs, links, and notes go to your Tabs note
- No Google Cloud project or OAuth app required
- Works with a personal
@gmail.comaccount - Duplicate lines are skipped automatically
Everything stays on your device unless you turn on Keep sync. No analytics. No external APIs. No third-party data collection.
| Source | Page type | Captures |
|---|---|---|
| Google Search | Knowledge panel on search results | Movies, series, anime, books |
| IMDb | Title pages (/title/ttβ¦) |
Movies and TV with IMDb rating |
| Letterboxd | Film pages (/film/β¦) |
Title, year, runtime, LB rating |
| MyAnimeList | Anime pages (/anime/β¦) |
Title, year, episode count, MAL score |
| Goodreads | Book pages (/book/show/β¦) |
Title, author, year, GR rating |
| BookFilter | Book pages (/books/β¦) |
Title, author, year, BF rating |
| Series Graph | Show pages (/show/β¦) |
Series with season count and IMDb rating |
Google Search
- For anime, include the word
animein your query so the panel is classified correctly. - If a book save is missing the author, scroll the knowledge panel down to load more details, then save again.
IMDb, Letterboxd, MAL, Goodreads
- Wait for the full page to load before clicking Save page.
- Use the canonical title page URL, not a list, review, or profile URL.
The Tabs shelf is a lightweight bookmark manager built into KeepShelf. Switch to the Tabs tab in the popup to use it.
Click Save tab in the toolbar to bookmark the page you are on right now. The title and URL are saved automatically.
Paste any URL into the input box and click Save. The hostname becomes the title and the URL is stored for later.
Type any text (not a URL) into the input box and click Save. It is stored as a note.
Click the title or URL of any saved tab or link in the list. It opens in a new tab, exactly like clicking a bookmark.
Select items with checkboxes and use Copy selected or the delete button, same as the Media and Books tabs.
Every saved item becomes one line. These are real examples of the format KeepShelf produces:
The Shawshank Redemption (1994) | 2h 22m | IMDb 9.3
Inception (2010) | 2h 28m | LB 4.23
The Dark Knight (2008) | 2h 32m | IMDb 9.0
Dark (2017) | S03 | IMDb 8.7
Breaking Bad (2008) | S05 | IMDb 9.5
Daredevil (2015) | S03 | IMDb 8.6
One Piece (1999) | MAL 8.73 (A)
Death Note (2006) | 37 eps | MAL 8.62 (A)
Attack on Titan (2013) | MAL 9.0 (A)
The Kite Runner (Khaled Hosseini) | 2003 | GR 4.36
The Alchemist (Paulo Coelho) | 1988 | BF 3.78
A Game of Thrones (George R. R. Martin) | 1996
GitHub | https://github.com
YouTube | https://www.youtube.com/watch?v=dQw4w9WgXcQ
Use Copy all in the popup to export your entire shelf as plain text, ready to paste anywhere.
There are two ways to install KeepShelf. Choose the one that suits you.
- Go to the Releases page.
- Download
KeepShelf-vX.X.X.zipfrom the Assets section. - Extract the ZIP to a permanent folder on your computer (do not delete it after loading).
- Open
chrome://extensionsin Chrome. - Enable Developer mode (toggle in the top-right corner).
- Click Load unpacked and select the extracted folder.
- Pin KeepShelf to your Chrome toolbar.
No Node.js, Git, or terminal required.
Use this if you want to modify the code or always stay on the latest commit.
Requirements:
- Google Chrome or any Chromium browser (Edge, Brave, Arc, Vivaldi)
- Node.js 18 or newer
- Git
# 1. Clone the repo
git clone https://github.com/thefznkhan/KeepShelf.git
cd KeepShelf
# 2. Install dev dependencies (esbuild, TypeScript, jsdom)
npm install
# 3. Generate extension icons from icons/icon.png (requires Python + Pillow)
node scripts/generate-icons.mjs
# 4. Build the extension into dist/
npm run buildLoad into Chrome:
- Go to
chrome://extensions - Enable Developer mode (toggle, top right)
- Click Load unpacked
- Select the cloned
KeepShelffolder (the folder that containsmanifest.json) - Pin KeepShelf to your toolbar
npm install # only needed if dependencies changed
npm run build # rebuild dist/Then click Reload on the KeepShelf card at chrome://extensions.
- Open a supported page: Google Search (with a knowledge panel), IMDb, Letterboxd, MyAnimeList, Goodreads, BookFilter, or Series Graph.
- Click the KeepShelf icon in your Chrome toolbar.
- Click Save page (or Save book on the Books tab).
- The item appears in your shelf with its formatted line.
- Click the KeepShelf icon in your toolbar.
- Switch to the Tabs tab.
- Click Save this tab to bookmark the current page, or paste a URL and click Save.
- Click any saved tab or link in the list to open it.
- Click the KeepShelf icon to open the popup.
- Use the filter chips (All / Movies / Series / Anime) to narrow the view.
- Select items with checkboxes, then Copy selected, or click Copy all.
- Delete selected items with the trash icon, or use Clear all (Keep notes are never affected).
- Open Settings (gear icon in the popup header).
- Paste the full Keep note URL for each section (Media, Books, Tabs).
- Enable the toggle next to each section you want synced.
- Click Save for each section.
- Click Test to verify the connection while signed into Keep in Chrome.
KeepShelf can append each saved line directly into Google Keep checklist notes. This works with a personal Google account. No OAuth app or Google Cloud project required.
In Google Keep, create checklist notes (enable Show checkboxes):
| Note | Used for |
|---|---|
| Media watchlist | Movies, series, and anime |
| Books list | Books from any source |
| Tabs list | Saved tabs, links, and notes |
You can use fewer notes: paste the same URL in multiple sections if you prefer one list.
Open each note and copy the complete URL from your browser address bar:
https://keep.google.com/#LIST/your-long-list-id-here
The list ID is typically 40+ characters. If Settings shows URL looks incomplete, the link was truncated. Paste the full URL again directly from the address bar.
- Open KeepShelf Settings
- Paste the URL into the matching field (Media, Books, or Tabs)
- Enable the toggle
- Click Save
- Click Test to verify. A test line will be added to the note.
| Step | Behavior |
|---|---|
| Local save | Item is stored in KeepShelf first, always |
| Routing | Movies/series/anime go to Media note; books to Books note; tabs/links/notes to Tabs note |
| Background sync | Keep opens in a hidden background tab; you stay on your current page |
| Duplicate skip | Identical lines are not added twice |
| Failure | If append fails, the line is copied to your clipboard |
Google Keep only persists list items entered through trusted browser input. KeepShelf briefly uses Chrome's debugger API to deliver that trusted keystroke so your lines survive after you close the note.
You may see a short banner: "KeepShelf started debugging this browser". It disappears when sync finishes. This is expected and required for reliable Keep persistence.
| Data | Where it lives |
|---|---|
| Saved shelf items | chrome.storage.local (your device only) |
| Keep settings (URLs, toggles) | chrome.storage.local (your device only) |
| Keep list content | Your Google Keep account (only when sync is enabled) |
KeepShelf does not send your data to any external server. Keep sync communicates only with keep.google.com inside your existing signed-in browser session.
Uninstalling the extension removes all local shelf data. Your Google Keep notes are never modified or deleted by KeepShelf except to append new lines.
| Permission | Why it is needed |
|---|---|
storage |
Save your shelf items and settings locally |
tabs |
Read the current tab URL/title for tab-save; find or open Keep note tabs for sync |
scripting |
Run the Keep append script inside your Keep tab |
debugger |
Send trusted text input so Keep persists list items reliably |
google.com |
Parse Google Search knowledge panels |
imdb.com |
Parse IMDb title pages |
seriesgraph.com |
Parse Series Graph show pages |
goodreads.com |
Parse Goodreads book pages |
book-filter.com |
Parse BookFilter book pages |
myanimelist.net |
Parse MyAnimeList anime pages |
letterboxd.com |
Parse Letterboxd film pages |
keep.google.com |
Append lines to your linked Keep notes |
| Command | Purpose |
|---|---|
npm run build |
Compile TypeScript into dist/ |
npm run watch |
Rebuild on every file save |
npm test |
Run parser and format tests |
npx tsc --noEmit |
Type-check without building |
For the full developer guide, including local setup, icon generation, adding a new parser source, and publishing a release, see DEVELOPER.md.
Does KeepShelf work without Google Keep?
Yes. The local shelf works completely independently. Keep sync is optional and off by default.
Can I use a single Keep note for everything?
Yes. Paste the same Keep URL into the Media, Books, and Tabs fields. All saves will go to one note.
Why does Letterboxd show a different number than IMDb?
Letterboxd uses a community score on a roughly 5-point scale (LB 4.23). IMDb uses a 10-point scale (IMDb 8.8). KeepShelf labels the source so you can tell them apart at a glance.
Will my shelf survive an extension update?
Yes, as long as you reload the extension rather than removing and reinstalling it. Removing the extension clears chrome.storage.local.
Does this work on Firefox?
KeepShelf is built for Chromium Manifest V3. Firefox would need a separate port.
Is there a Chrome Web Store listing?
Not yet. Download the latest release ZIP from the Releases page and load it unpacked. No Node.js or Git required.
Can I save a page that is not in the supported list?
Use the Tabs shelf: click Save this tab to bookmark the current URL regardless of the site. You can click it later to reopen the page.
Why did my Keep line disappear after closing the note?
This happens when text is inserted without trusted browser input. Reload the extension at chrome://extensions and try saving again. The debugger-based input method will re-run.
| Problem | What to try |
|---|---|
| "Nothing detected on this page" | Check that the URL is in the supported list and the page has fully loaded |
| Letterboxd or MAL save fails | Use the canonical title page (/film/slug/ or /anime/id/slug), not a review or list URL |
| Keep line vanishes after closing the note | Reload the extension; trusted input via the debugger API is needed for Keep to persist |
| "URL looks incomplete" in Settings | Paste the full #LIST/β¦ URL directly from your browser address bar |
| Book saved without author (Google) | Scroll the Google knowledge panel to trigger the author field to load, then save again |
| Keep Test fails | Make sure you are signed into Google in Chrome and the list note URL is a checklist note |
| Extension icon still shows old version | Reload at chrome://extensions, or restart Chrome |
Changes not showing after git pull |
Run npm run build, then click Reload at chrome://extensions |
| "Already saved" on first save | The same title was saved in a previous session, so it is already on your shelf |
Issues and pull requests are welcome.
- Fork the repository
- Create a branch:
git checkout -b feature/my-change - Make your changes and add tests for any new parser logic
- Run
npm testto confirm nothing regressed - Open a pull request with a clear description of what changed and why
For new site parsers, please include at least one saved HTML fixture and a corresponding test file.
MIT. Free to use, modify, and distribute.



