From ester
Searches the Estonian library catalog ESTER (ester.ee) to find books, check availability, and locate them in specific library branches. USE WHEN user asks to find a book in Estonian libraries, check if a book is available, find where to pick up a library book, search ESTER, or mentions Estonian library branches like Kalamaja, Keskraamatukogu, Tartu, etc.
How this skill is triggered — by the user, by Claude, or both
Slash command
/ester:esterThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Search the Estonian unified library catalog (ESTER) to find books and check their availability at specific branches. No public API — uses curl + HTML parsing.
Search the Estonian unified library catalog (ESTER) to find books and check their availability at specific branches. No public API — uses curl + HTML parsing.
Parser scripts are in this skill directory (relative to SKILL.md).
curl -s "https://www.ester.ee/search~S1*est/X?searchtype=X&searcharg=QUERY&searchscope=SCOPE&SORT=DZ&extended=0&SUBMIT=OTSI" \
| python3 SKILL_DIR/parse_search.py
Replace QUERY with URL-encoded search terms (ä=%C3%A4, ö=%C3%B6, ü=%C3%BC, õ=%C3%B5, spaces=+).
Search types (replace X in both URL path and searchtype=):
| Code | Field |
|---|---|
X | Keyword (all fields) — default |
i | ISBN/ISSN |
Use keyword (X) for title and author queries too — it handles them well. Do not use searchtype=t (title) or searchtype=a (author): ESTER returns a browse-heading index page for those, not a results list, and the parser will report 0 results even when matches exist.
searchscope values:
| Scope | Library |
|---|---|
| 1 | All libraries (default) |
| 7 | Eesti Rahvusraamatukogu (National Library) |
| 8 | Tallinna Raamatukogud / TlnRK (all Tallinn public library branches) |
| 15 | TLÜ Akadeemiline Raamatukogu |
| 55 | Tartu Linnaraamatukogu |
| 58 | Tartu Ülikooli raamatukogud |
Output: JSON with total count and results array of {id, title}. If an ISBN search redirects directly to a record page, output includes "direct_record": true.
Pagination: 50 results per page. Add &startnum=51 for page 2.
Step 1 — Fetch the record page and check for truncation:
curl -s "https://www.ester.ee/record=b{RECORD_ID}~S1*est" \
| python3 SKILL_DIR/parse_record.py
Step 2 — If output contains "truncated": true, fetch the full holdings using the full_holdings_url from the output:
curl -s "FULL_HOLDINGS_URL" \
| python3 SKILL_DIR/parse_record.py
The record page only shows the first 10 holdings. Always check for truncation — popular books often have 30-50+ copies across branches.
Output: JSON with title, author, published, isbn, holdings array of {location, call_number, status, notes}, and optionally truncated/full_holdings_url.
Status values:
KOHAL — available on shelfTÄHTAEG DD.MM.YY — checked out, due dateTÖÖTLUSES — being processed, not yet availableKOHALKASUTUS — in-library use onlyARHIIVEKSEMPLAR — archive copyEI LAENUTATA — non-circulatingREMONDI AJAKS PAKITUD — packed away during renovation+N JÄRJEKORRAS — N people in queue (appended to due date)For each book, show:
https://www.ester.ee/record=b{RECORD_ID}~S1*estFor multiple books, show a summary table of availability per branch.
| User says | ESTER location contains |
|---|---|
| Kalamaja | TlnRK Kalamaja |
| Keskraamatukogu / main | TlnRK Keskraamatukogu |
| Südalinn / city center | TlnRK Südalinna |
| Liivalaia | TlnRK Liivalaia |
| Pelgulinn / Pelguranna | TlnRK Pelguranna |
| Nõmme | TlnRK Nõmme |
| Mustamäe | TlnRK Mustamäe |
| Õismäe | TlnRK Väike-Õismäe |
| Pirita | TlnRK Pirita |
| Kadriorg | TlnRK Kadrioru |
| Pääsküla | TlnRK Pääsküla |
Children's sections are listed separately with "lastekirjandus" suffix. Children's books have call numbers starting with L-.
For info not in ESTER (age group, description, price, series), use WebSearch for the book title + author with allowed_domains: ["rahvaraamat.ee", "apollo.ee"]. Use title + author, not ISBN — ISBN search is unreliable on these stores.
searchtype=X) is forgiving with word order — use it for all freetext queries.searchscope filters search results but the record/holdings page always shows ALL libraries' copies. Filter the holdings JSON by location to show only relevant branches.npx claudepluginhub taivop/marketplace --plugin esterSearches Korean library books, retrieves book details, finds holding libraries, and checks availability via Data4Library API through a proxy.
Queries New Zealand public library catalogues, branch locations, hours, and book availability via a lightweight CLI. Use when finding books in major NZ library networks or checking branch copy status.
Searches Calibre library by meaning using LanceDB for hybrid keyword+vector search over metadata. Supports full-text RAG retrieval from ebook contents.