Skip to main content

Shoko

@magistr/shokov2026.10.25.10· MIT· 1d agoBEHAVIORS
01README

Shoko anime metadata server API — series, episodes, files, and metadata.

Model:

  • @magistr/shoko — wraps the Shoko Server REST v3 API. Authenticate for a long-lived API key, then read server status, dashboard stats, series, episodes, files, import folders, and queue state, and trigger maintenance actions (run import, rescan a folder, remove missing files, discover available actions from the live OpenAPI spec).

The API key is marked sensitive so it is stored via the vault rather than persisted in cleartext, and the status/action-discovery endpoints work without authentication.

02Release Notes

2026.10.25.10

  • Repo-wide republish; no functional change.
03Behaviors1
@magistr/shokov2026.10.25.10extensions/models/shoko.ts
fn authenticate(user: string, pass: string, device?: string)
Exchange username/password for a long-lived apikey. Stash the returned key in your vault and put it in the model's globalArgs.apiKey afterward.
ArgumentTypeDescription
userstring
passstring
device?string
fn status()
Get server init status (no auth required)
fn dashboard()
Fetch dashboard stats (series count, file size on disk, queue health, etc.)
fn list-series(page?: number, pageSize?: number, startsWith?: string)
List series (paginated). Returns a single page; use page+pageSize to walk.
ArgumentTypeDescription
page?number
pageSize?number
startsWith?stringFilter to series whose name starts with this letter
fn search-series(query: string, limit?: number, fuzzy?: boolean)
Search series by name (server-side fuzzy match)
ArgumentTypeDescription
querystring
limit?number
fuzzy?boolean
fn find-unrecognized-files(page?: number, pageSize?: number)
List files Shoko hasn't been able to match to AniDB (manual link queue)
ArgumentTypeDescription
page?number
pageSize?number
fn find-missing-episodes(page?: number, pageSize?: number, collecting?: boolean, scope?: enum)
Series with missing episodes (not yet downloaded). Returns series-level summary; for per-episode detail, set scope='episodes'.
ArgumentTypeDescription
page?number
pageSize?number
collecting?booleanOnly series the user has marked 'collecting'
scope?enum
fn find-duplicate-files(page?: number, pageSize?: number, scope?: enum)
Episodes (or series) with multiple physical files. scope='series' is the summary; scope='episodes' for per-episode detail.
ArgumentTypeDescription
page?number
pageSize?number
scope?enum
fn list-import-folders()
Show all configured import folders
fn queue-status()
Show queue depth + state across the (general, hasher, image) queues
fn list-actions()
List action endpoints by parsing the live OpenAPI spec at /swagger/v3/swagger.json (Shoko has no list endpoint — this discovers them from the spec).
fn run-action(action: string)
Trigger a Shoko action by name (use list-actions to enumerate). E.g. action='RunImport' scans import folders, 'UpdateAllAniDBInfo' refreshes metadata, 'SyncMyList' syncs AniDB MyList.
ArgumentTypeDescription
actionstringAction name (e.g., RunImport, UpdateAllAniDBInfo, ImportNewFiles, RecreateAllGroups)
fn remove-missing-files(removeFromMyList?: boolean)
Purge DB entries for files that no longer exist on disk. Use after deleting/renaming folders so Shoko's metadata catches up. Set removeFromMyList=true to also remove the AniDB MyList entry for each missing file.
ArgumentTypeDescription
removeFromMyList?boolean
fn rescan-folder(importFolderId: number)
Rescan a single import folder by ID. Triggers Shoko to walk the folder, hash new files, and queue AniDB lookups.
ArgumentTypeDescription
importFolderIdnumber

Resources

status(infinite)— Server init status (does not require auth)
dashboard(infinite)— Dashboard stats (series count, missing episodes, etc.)
series(infinite)— Series listing or single series detail
files(infinite)— File listing (recognized, unrecognized, manually-linked, etc.)
episodes(infinite)— Episode listing (e.g., missing episodes per release management)
queue(infinite)— Queue overview (general, hasher, image, AniDB)
importFolders(infinite)— Configured import folders
actions(infinite)— Available action endpoints (Action/* in API)
task(infinite)— Result of a triggered action
auth(infinite)— Result of authenticate (apikey is sensitive — store in vault)
04Previous Versions15
2026.10.15.9MIT

2026.10.15.9

Changed

  • Repo-wide maintenance release: version bump to republish the current source. No schema change.
2026.10.15.8MIT

2026.10.15.8

Changed

  • Repo-wide maintenance release: version bump to republish the current source. No schema change.
2026.10.15.6MIT

2026.10.15.6

Changed

  • Repo-wide maintenance release: version bump to republish the current source. No schema change.
2026.10.15.5MIT

2026.10.15.5

Changed

  • Repo-wide maintenance release: version bump to republish the current source. No schema change.
2026.10.15.4MIT

2026.10.15.4

Changed

  • Repo-wide maintenance release: version bump to republish the current source. No schema change.
2026.10.15.3MIT

2026.10.15.3

Changed

  • Repo-wide maintenance release: version bump to republish the current source. No schema change.
2026.10.15.2MIT

2026.10.15.2

Changed

  • Repo-wide maintenance release: version bump to republish the current source. No schema change.
2026.10.15.1MIT

2026.10.15.1

Changed

  • Repo-wide maintenance release: version bump to republish the current source. No schema change.
2026.10.14.2MIT(was none)

2026.10.14.2

Changed

  • Repo-wide maintenance release: version bump to republish the current source. No schema change.

Modified 1 behaviors

2026.09.19.2

2026.09.19.2

Changed

  • Repo-wide maintenance release: version bump to republish the current source. No schema change.
2026.09.17.1

2026.09.17.1

Changed

  • Repo-wide maintenance release: version bump to republish the current source. No schema change.
2026.08.19.1
2026.07.16.2

Release 2026.07.16.2 — align model versions with manifests

Maintenance release across the @magistr extensions. For most packages this carries no functional change: the only edit is the model's version: field, brought back in line with its manifest version so the published model type version and the package version no longer drift.

Functional changes in this release are limited to:

  • anime-cron: normalizeTitle now strips a ": subtitle" suffix and a trailing parenthesized year before comparison, fixing dedup false-misses where the torrent title carries a subtitle or year that the AniList romaji does not.

  • arckit: first publish. Standalone ArcKit port — a 12-phase architecture governance state machine with 65 bundled templates, driven by a bundled skill.

Also tracks three extensions (kaiten, observability-agent, music-library) that previously existed only as untracked working-tree directories, recovered from stashes.

Added 1, removed 1 behaviors

2026.06.05.1
2026.05.25.1

Merge pull request #5 from umag/extensions/jscad-stl-pair

extensions: add 15 more @magistr extensions + auto-discover CI

05Stats
A
100 / 100
Downloads
34
Archive size
10.0 KB
  • Has README or module doc2/2earned
  • README has a code example1/1earned
  • README is substantive1/1earned
  • Most symbols documented1/1earned
  • No slow types (deprecated)1/1earned
  • Dependencies pass trust audit2/2earned
  • Docs keep secrets in a vault1/1earned
  • Has description1/1earned
  • Platform support declared (or universal)2/2earned
  • License2/2earned
  • Verified public repository2/2earned
06Platforms
07Labels