Hardcover.app skill for tracking books you're reading, reading goal, and finding books you'd love to read
Query reading lists and book data from Hardcover.app via GraphQL API. Triggers when user mentions Hardcover, asks about their reading list/library, wants book progress, searches for books/authors/series, or references "currently reading", "want to read", or "books I've read". Also use for syncing reading data to other systems (Obsidian, etc.) or tracking reading goals.
技能说明
name: hardcover description: Query reading lists and book data from Hardcover.app via GraphQL API. Triggers when user mentions Hardcover, asks about their reading list/library, wants book progress, searches for books/authors/series, or references "currently reading", "want to read", or "books I've read". Also use for syncing reading data to other systems (Obsidian, etc.) or tracking reading goals. homepage: https://hardcover.app metadata: { "openclaw": { "emoji": "📚", "requires": { "env": ["HARDCOVER_API_TOKEN"] }, }, }
Hardcover GraphQL API
Query your reading library, book metadata, and search Hardcover's catalog.
Configuration
- Env variable:
HARDCOVER_API_TOKENfrom https://hardcover.app/settings - Endpoint:
https://api.hardcover.app/v1/graphql - Rate limit: 60 req/min, 30s timeout, max 3 query depth
Authentication
All queries require Authorization: Bearer {token} header (token from settings, add Bearer prefix):
curl -X POST https://api.hardcover.app/v1/graphql \
-H "Authorization: Bearer $HARDCOVER_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"query": "query { me { id username } }"}'
Workflow
-
Get user ID first — most queries need it:
query { me { id username } } -
Query by status — use
status_idfilter:1= Want to Read2= Currently Reading3= Read4= Paused5= Did Not Finish
-
Paginate large results — use
limit/offset, adddistinct_on: book_id
Common Queries
Currently Reading with Progress
query {
me {
user_books(where: { status_id: { _eq: 2 } }) {
user_book_reads { progress_pages }
book {
title
pages
image { url }
contributions { author { name } }
}
}
}
}
Library by Status
query ($userId: Int!, $status: Int!) {
user_books(
where: { user_id: { _eq: $userId }, status_id: { _eq: $status } }
limit: 25
offset: 0
distinct_on: book_id
) {
book {
id
title
pages
image { url }
contributions { author { name } }
}
}
}
Search Books/Authors/Series
query ($q: String!, $type: String!) {
search(query: $q, query_type: $type, per_page: 10, page: 1) {
results
}
}
query_type: Book, Author, Series, Character, List, Publisher, User
Book Details by Title
query {
editions(where: { title: { _eq: "Oathbringer" } }) {
title
pages
isbn_13
edition_format
publisher { name }
book {
slug
contributions { author { name } }
}
}
}
Limitations
- Read-only (no mutations yet)
- No text search operators (
_like,_ilike,_regex) - Access limited to: your data, public data, followed users' data
- Tokens expire after 1 year
Entity Reference
For detailed field documentation on Books, Editions, Authors, Series, User Books, Activities, Lists, Goals, and other entities, see references/entities.md.
Response Codes
| Code | Meaning |
|---|---|
| 200 | Success |
| 401 | Invalid/expired token |
| 429 | Rate limited |
如何使用「Hardcover.app skill for tracking books you're reading, reading goal, and finding books you'd love to read」?
- 打开小龙虾AI(Web 或 iOS App)
- 点击上方「立即使用」按钮,或在对话框中输入任务描述
- 小龙虾AI 会自动匹配并调用「Hardcover.app skill for tracking books you're reading, reading goal, and finding books you'd love to read」技能完成任务
- 结果即时呈现,支持继续对话优化