Self-hosted · sits on top of your own Jellyfin

Your library,
put back in order.

jellystructure watches a Jellyfin library and does the part nobody enjoys — matching the right title, the right poster, the right episode number, the right subtitle — so what you press play on actually looks right.

What it actually does

The tedious half of running a media library, automated.

Jellyfin still does all the streaming — jellystructure just keeps what's behind it accurate, and stays out of the way once it is.

Matching that locks in place

Finds the right movie or show, pulls artwork and cast & crew, and remembers any correction you make — a re-scan never quietly overwrites it.

Episode numbers that hold up

Works out season and episode numbers even when the filename doesn't say, and repairs the ones that drift out of sync over time.

Skip intro, skip credits

Detects the intro and end-credits span in every episode of a season and publishes it back to Jellyfin, so any client can skip it.

Files the way people expect

Multi-episode files, several audio tracks, several subtitle languages — shown the way a person would describe them, not the way the filesystem stores them.

Plugs into the rest of the stack

Talks to Radarr, Sonarr, Bazarr and Seerr, so requests, downloads and subtitles land in the same well-kept library automatically.

A proper admin panel

A dashboard for the whole library — search, filters, drift warnings, and a raw editing surface for the rare case automation gets it wrong.

How the pieces fit

Three layers, each doing one job.

Layer 1 · streaming

Jellyfin

Stores and streams the media. Untouched — jellystructure never replaces it, only tidies what it shows.

Layer 2 · this project

jellystructure

Continuously scans the library, fixes metadata and artwork, and detects segments — running quietly in the background.

Layer 3 · what you watch on

Ravilo

The TV and phone app your household actually opens. More about Ravilo →