SkipMe.db is a Jellyfin media segment provider that downloads crowd-sourced intro, credits, recap, preview, and commercial timestamps from the SkipMe.db API and exposes them through Jellyfin's media segments API.
The plugin stores synced timestamps locally, lets you disable synced segments by library, series, season, or movie, and can share locally saved Intro Skipper timestamps back to SkipMe.db.
- Jellyfin 10.11.5 or newer compatible 10.11 builds
- .NET 9 runtime support on the Jellyfin host
- Network access from Jellyfin to:
https://db.skipme.workers.devhttps://api.tvmaze.comwhen sharing show timestamps that need missing external IDs resolved
- Download the latest
SkipMe.db-plugin-*.zipfrom the project releases. - Extract
SkipMe.Db.Plugin.dll. - Copy the DLL into Jellyfin's plugin directory, for example:
- Linux:
/var/lib/jellyfin/plugins/SkipMe.db/ - Windows:
%ProgramData%\Jellyfin\Server\plugins\SkipMe.db\
- Linux:
- Restart Jellyfin.
- Confirm that
SkipMe.dbappears under Dashboard -> Plugins.
The plugin adds a scheduled task named Sync SkipMe.db Segment Database in the
Intro Skipper task category.
To populate the local segment database immediately:
- Go to Dashboard -> Scheduled Tasks.
- Run
Sync SkipMe.db Segment Database. - After a successful sync, the plugin queues Jellyfin's media segment scan so Jellyfin can pick up the new timestamps.
By default, the sync task runs weekly on Sunday at 1:00 AM.
Jellyfin controls media segment providers per library.
- Navigate to Dashboard -> Libraries -> Libraries.
- Open the desired library menu (
...) -> Manage library. - Scroll to
Media segment providers. - Enable
SkipMe.dband adjust provider priority as needed.
Inside the plugin settings page, the Sync tab lets you suppress synced
SkipMe.db data for individual series, seasons, or movies. Disabled items remain
in the local database, but the plugin does not surface them to Jellyfin.
Specials seasons, season 0, are disabled by default. Enable a specials season explicitly in the plugin settings if you want those timestamps to appear.
Open Dashboard -> Plugins -> SkipMe.db.
Synctab: choose which synced SkipMe.db segments Jellyfin can use.Sharetab: choose which local Intro Skipper timestamps to upload to SkipMe.db.- Filter box: search large libraries before changing toggles or sharing.
Save Settings: persists the current Sync tab enable/disable choices.Share Enabled Items: submits the currently enabled Share tab items.
Library-level provider disabling in Jellyfin is respected by the settings page:
libraries where SkipMe.db is disabled as a media segment provider are hidden
from the plugin item list.
The Share tab reads timestamps from Intro Skipper's local database at
introskipper/introskipper.db under Jellyfin's data directory.
Sharing behavior:
- Only items enabled in the Share tab are submitted.
- Existing local share history is used to avoid re-submitting the same timestamp within a one second tolerance.
- Segment editor entries are preferred over auto-detected timestamps when both exist for the same item and segment type.
- Movies require duration plus at least one supported provider ID: TMDb, IMDb, TVDB, or AniList.
- Shows use season, episode, duration, and available provider IDs. If series IDs are missing, the plugin may query TVMaze to fill in TVDB or IMDb IDs.
After a share finishes, the settings page reports how many segments were shared and how many were skipped because they were already shared, missing metadata, or had no local Intro Skipper timestamps.
Prerequisites:
- .NET SDK 9.x
- Node.js 22.x
- npm
Build the plugin:
npm ci --prefix web
dotnet restore SkipMe.Db.Plugin.sln
dotnet build SkipMe.Db.Plugin.sln --configuration Release --no-restoreThe web settings UI is built automatically during the .NET build and embedded in the plugin assembly. The release DLL is written to:
SkipMe.Db.Plugin/bin/Release/net9.0/SkipMe.Db.Plugin.dll
For front-end-only development:
cd web
npm ci
npm run devThis project is licensed under the GPL-3.0-only license. See LICENSE and
NOTICE for details.