ZotShelf is a Zotero 7 plugin that displays EPUB book covers in a visual grid layout, similar to a bookshelf. Browse your EPUB collection visually, filter by collections, and open books directly with a click.
- Visual Grid Layout: Browse your EPUB books as a collection of covers rather than text entries
- Collection Integration: Filter by existing Zotero collections
- Cover Extraction: Automatically extracts cover images from EPUB files
- Caching System: Optimized performance through smart caching
- Responsive Design: Adjusts grid layout based on available space
- Direct Reading: Click on a cover to open the EPUB in Zotero's reader
- Seamless Integration: Uses Zotero's native authentication and styling
- Modern Architecture: Built specifically for Zotero 7 using WebExtension framework
- Zotero 7.0.0 or later
- Any operating system that supports Zotero 7 (Windows, macOS, Linux)
- Download the latest release (.xpi file) from the releases page
- Open Zotero 7
- Go to Tools → Add-ons
- Click the gear icon and select "Install Add-on From File..."
- Select the downloaded .xpi file
- Restart Zotero when prompted
- Clone this repository
- Create a zip file of all the files (not the containing folder)
- Rename the zip file to
zotshelf.xpi
- Follow steps 2-6 from the release installation
After installation, you can access ZotShelf in two ways:
- Click on the "Shelf" button in the Zotero toolbar
- Use the View menu and select "Shelf View"
- The shelf view displays all EPUB items in your library as book covers in a grid
- If an EPUB doesn't have a cover image, a placeholder will be shown with the title
- Use the collection dropdown in the top-right corner of the shelf view to filter EPUBs by collection
- The dropdown preserves Zotero's collection hierarchy for easy navigation
- Simply click on any cover to open the EPUB in Zotero's built-in reader
- Click the "Refresh" button to reload your EPUB library and update the view
- This is useful if you've added new EPUBs or modified your collections
- Click the "Close" button to return to Zotero's standard view
ZotShelf extracts covers from EPUBs using the following process:
- Opens the EPUB file as a ZIP archive using JSZip
- Locates the OPF file by parsing the container.xml
- Parses the OPF file to find the cover image using multiple strategies:
- Looking for meta elements with a "cover" name
- Searching for items with IDs containing "cover"
- Checking for properties containing "cover-image"
- Extracts and encodes the image as base64 for display
- Caches the result to avoid repeated extraction
To optimize performance, ZotShelf implements a caching system:
- Extracted covers are stored in Zotero's preferences system
- Each cache entry includes a timestamp
- Entries expire after 7 days by default
- The cache is loaded on startup and saved after modifications
Some EPUBs might not contain cover images or use non-standard methods for storing them. The plugin will display placeholders in these cases.
Make sure you've restarted Zotero after installation. Also confirm that you're running Zotero 7.0.0 or later.
The plugin caches cover images, but initial extraction can be slow for very large libraries. Try filtering by collection if you have many EPUBs.
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature
) - Commit your changes (
git commit -m 'Add some amazing feature'
) - Push to the branch (
git push origin feature/amazing-feature
) - Open a Pull Request
- Inspired by the Android app "ZotShelf"
- Built for Zotero 7 using modern WebExtension architecture