Libiry extracts and manages book metadata from various sources and formats. All field names are configurable.
| Field | EPUB | CBZ | Other | |
|---|---|---|---|---|
| cover | Cover image in EPUB | First image | URL in Markdown | |
| booktitle | OPF (dc:title) | ComicInfo.xml | Markdown | |
| author | OPF (dc:creator) | ComicInfo.xml | Markdown | |
| author_sort | OPF (opf:file-as) | Markdown | Markdown | |
| isbn | OPF (dc:identifier) | Markdown | Markdown | |
| rating | calibre:rating meta | ComicInfo.xml | Markdown | |
| publisher | OPF (dc:publisher) | ComicInfo.xml | Markdown | |
| publication date | OPF (dc:date) | year from ComicInfo.xml | Markdown | |
| language | OPF (dc:language) | ComicInfo.xml (LanguageISO) | Markdown | |
| pages | rendition:page-count or calibre:pages | ComicInfo.xml (PageCount) | Markdown | |
| tags | OPF (dc:subject) | (Tags) | Markdown | |
| series | calibre:series meta | ComicInfo.xml (Series) | Markdown | |
| series index | calibre:series_index | ComicInfo.xml (Number) | Markdown | |
| translator | OPF (dc:contributor role=trl) | ComicInfo.xml | Markdown | |
| illustrator | OPF (dc:contributor role=ill) | ComicInfo.xml (Penciller) | Markdown | |
| description | OPF (dc:description) | ComicInfo.xml (Summary) | Markdown | |
| notes | calibre:user_notes | ComicInfo.xml (Notes) | Markdown |
- rendition:page-count is an EPUB 3 standard meta element
- calibre:pages is a Calibre specific extension. It is only available if you create a custom column “pages” in Calibre
- MOBI, AZW and AZW3 are all Amazon Kindle formats. All metadata is stored in a sidecar for these formats, because they don’t support direct metadata editing
- ComicInfo.xml is a standard comic metadata format that is used in CBZ files
- CBR works with a protected RAR-format, so all metadata is stored in a sidecar
- When “Store metadata in sidecar” is True, the metadata for EPUB, PDF and CBZ are also maintained in sidecar files
- Please note that any HTML characters will be removed from field values before writing to sidecars, as are intermediate quotes
- Cover: a cover image URL or path should be placed here
- Language is a free format field, but is intended to have a language code in it
- ISBN: an ISBN-10 or ISBN-13 code is expected here
- Rating: Like Calibre, Libiry uses 0-10. It shows 0-5, though (automatic conversion)
Metadata extraction
EPUB Files
Metadata is read from the OPF file inside the EPUB:
<metadata>
<dc:title>The Book Title</dc:title>
<dc:creator>Author Name</dc:creator>
<dc:subject>fiction</dc:subject>
<dc:identifier>978-1234567890</dc:identifier>
</metadata>PDF files
Metadata is read from the PDF’s document information dictionary:
- Title → booktitle
- Author → author
- Subject → description
- Keywords → tags (comma-separated)
MOBI/AZW Files
Basic metadata is extracted using the mobi library:
- Title → booktitle
- Author → author
- Tags → from OPF sidecar file
Comic files (CBR/CBZ)
Metadata is read from ComicInfo.xml:
<ComicInfo>
<Title>Comic Title</Title>
<Writer>Author Name</Writer>
<Genre>Action, Adventure</Genre>
</ComicInfo>Markdown files
---
cover: https://covers.openlibrary.org/b/id/11405920-M.jpg
booktitle: The Handmaid's Tale
author: Margaret Atwood
isbn: 9780385490818
rating: 5.0
language: en
tags:
- distopian
- scifi
path: Scifi/Atwood
size: 751.5 KB
type: epub
---
# The Handmaid's Tale - Uses YAML frontmatter (Obsidian-compatible)
- Numbers are parsed as integers
- Filename derived from book title
- Content section below frontmatter (optional)
- Compatible with Libiry for viewing
The Libiry BookSpineScanner can creates the following extra fields if you wish so:
| Field | Description |
|---|---|
| size | Book file size |
| type | Book type |
| path | Original file name, including folder path. Backslashes in the path name are changed into forward slashes |
| book created | Creation date of the book - for tracking your reading habits |
| book modified | Modified date of the book - for tracking your reading habits |
| scan_confidence: high (4%) | scan_source_api: openlibrary | scan_source: “20260531_102438 spaink.jpg” | scan_date: 2026-08-30T13:36:53.887Z
Libiry2Go creates the following extra fields:
| Field | Description |
|---|---|
| size | Book file size |
| type | Book type |
| path | Original file name, including folder path. Backslashes in the path name are changed into forward slashes |
| book created | Creation date of the book - for tracking your reading habits |
| book modified | Modified date of the book - for tracking your reading habits |
Tag management
Reading tags
Tags are read from (in priority order):
- The sidecar file (if it exists)
- The embedded metadata in the e-book
Writing tags
Tags are written to:
- EPUB: Embedded dc:subject elements
- CBZ: ComicInfo.xml
- Markdown: YAML frontmatter
- Other book formats: In sidecar file
Tag format
Tags are stored as:
- Comma-separated string in some formats
- Multiple dc:subject elements in EPUB/OPF
- Multi-line tags in sidecars. Arrays for tags are also supported (
tags: [fiction, fantasy]).
In markdown:
tags:
- fiction
- fantasy
- read2026Nested tags work too:
tags:
- books/fantasy
- status/readCover handling
Cover sources (priority order)
- Embedded cover - Extracted from e-book file
- Cover field - URL or path in metadata
- Online lookup:
- Open Library (by ISBN or title+author)
- Google Books (by ISBN or title+author)
- Europeana (European books)
- Other book databases
Cover display
- Thumbnails are cached in an SQLite database
- Cache is cleared on startup for fresh covers
- Fallback display shows author + title text
Cover field formats
# URL
cover: https://example.com/cover.jpg
# Local path
cover: ./covers/book.jpg
# Obsidian syntax
cover: [[cover.jpg]]
cover: ![[cover.jpg]]Duplicate detection
Is done using:
ISBN matching
Exact match on ISBN-10 or ISBN-13
Title + author matching
Normalization process:
- Convert to lowercase
- Remove articles: “the”, “a”, “an”, “de”, “het”, “een”
- Remove author suffixes: “jr”, “sr”, “phd”
- Sort author name parts alphabetically
- Compare normalized strings
Example:
- “The Handmaid’s Tale” by “Margaret Atwood”
- “Handmaid’s Tale” by “Atwood, Margaret”
- Both normalize to the same value → detected as duplicate
Field name customization
Map Libiry fields to your existing metadata:
# For Obsidian
Field name booktitle: title
Field name tags: tags
# For custom setups
Field name booktitle: book_title
Field name author: writerThis ensures compatibility with:
- Goodreads exports
- Obsidian plugins (Book Search, Booksidian)
- Custom database schemas
Cover extraction priority
- Embedded cover in e-book metadata
- First image for comics (CBR/CBZ)
- First page thumbnail for PDFs
- Cover field in markdown files
- Online lookup from Open Library, Google Books, Europeana
Performance notes
- For large PDFs it may take longer to extract covers
- Comics with many images are processed efficiently (only the first image)
- Cache files speed up processing