Search, save, and manage your Shiori bookmarks. Mark links as read, delete them, save from clipboard, and track unread count in the menu bar.
Search, save, and manage your Shiori bookmarks directly from Raycast.
https:// if missing.⌘N inside Search Links to save whatever URL is on your clipboard.⌘R. Changes update the loaded list in place. A link leaves the current view when its new read status no longer matches the selected filter.shk_). See the API docs for details.| Command | Description | Mode |
|---|---|---|
| Search Links | Browse and manage saved links | View |
| Save Link | Save a URL to Shiori | No View |
| Save Current Tab | Save the active browser tab | No View |
| Unread Links | Unread count in menu bar | Menu Bar |
| Shortcut | Action |
|---|---|
↵ | Open link in browser |
⌘C | Copy URL |
⇧⌘C | Copy AI summary |
⌘R | Toggle read / unread |
⇧⌘D | Toggle detail panel |
⌘N | Save link from clipboard |
⌃X | Delete link |
Mention @shiori-sh in Raycast AI to use the same API key as the commands:
favorite), tag name/ID, and saved-since (since) filters.Search tools return one page (default 100 links, configurable from 1 to 100), the matching total, hasMore, and nextOffset. To continue, pass nextOffset as offset with the same query/topic and filters. A page is not necessarily the complete result set. since accepts an ISO 8601 timestamp or a duration such as 1h, 7d, 2w, 1m, or 1y. Starred-only results use the server's starred-date ordering.
The list deduplicates overlapping pages. Offset pagination is not a snapshot: adding, removing, or changing bookmarks while scrolling can shift results. Read-status changes, edits, and deletions keep the loaded pages visible after saving. Use Refresh Links to restart from the first page and re-run full-text search after editing a title or summary. Search/filter changes cancel the previous request and clear its results. A later-page failure keeps already loaded links visible and offers refresh; an API failure is shown separately from an empty library.
Requests time out after 30 seconds and are not automatically retried. If a save fails or times out, check your Shiori library before retrying because the server may already have saved it. For authentication failures, update the key in extension preferences; never paste it into AI Chat. Shiori documents limits of 60 API requests and 30 link creations per minute per key.
npm ci
npm test
npm run typecheck
npm run lint
npm run build
Tests replace Raycast preferences and all HTTP requests with fixtures; no real bookmarks are written. They cover pagination past 100, short/empty/malformed pages, supported filters, confirmation, duplicate saves, safe errors, cancellation, stale responses, and list recovery. The suggested AI evals in ai.yaml include mocked results, including the save example; running the tools interactively without those mocks will access your account.
The implementation follows the hosted Shiori API reference, including GET /api/links and POST /api/links. This extension is for shiori.sh, not the unrelated self-hosted Go Shiori project. The tests establish client behavior against documented response fixtures; they do not establish live server acceptance or verify the private hosted server implementation.
Browse, filter, and manage your saved Shiori links
Save a URL to your Shiori library
Save the currently open browser tab to Shiori
Show unread Shiori link count in the menu bar
Link type to match public API (remove favicon_url, add 7 new fields: deleted_at, hn_url, file_type, file_mime_type, notion_page_id, author, discoverable_feed_url)link object in create, update, and delete response types