SkipDBSkipDB

Open data

Every segment in SkipDB is published as open data under ODbL 1.0. The data contains no user information — only timestamps, titles, and community vote counts.

What's in the dump

A single JSON file with every segment at every status (approved, pending, rejected), plus vote counts and the title name and media type. No accounts, no emails, no IP addresses — timestamps plus an opaque submitter ID for moderation continuity.

The dump is regenerated daily and published to GitHub Releases, so it's available even if this site goes down.

{
  "license": "ODbL 1.0",
  "generated_at": "2026-01-01T03:00:00.000Z",
  "count": 12345,
  "segments": [
    {
      "imdb_id": "tt0903747",
      "title": "Breaking Bad",
      "media_type": "series",
      "season": 1, "episode": 1,
      "segment_type": "intro",
      "status": "approved",
      "submitted_by": "usr_abc123",
      "start_ms": 61000, "end_ms": 91000,
      "start_sec": 61,   "end_sec": 91,
      "votes_up": 12, "votes_down": 0, "score": 12
    },
    ...
  ]
}

The data is never locked away

The code is AGPL-3.0 and the data is ODbL 1.0. Both licenses guarantee that neither can be quietly made proprietary. The daily dump to GitHub Releases means a permanent, independently-hosted copy of the data exists outside of any single server.

If this instance ever disappears, anyone can download the last dump and stand up a new one with the full history intact.

Host a read-only mirror

A read-only mirror serves the full API and browse UI but disables login and submissions. Zero DB writes, low resource usage. Good for redundancy or regional proximity.

  1. Fork the repo and deploy to Vercel, Railway, or Fly.io
  2. Point DATABASE_URL at a Postgres instance seeded from the dump (see below)
  3. Set NEXT_PUBLIC_READ_ONLY=true — this disables login, submissions, and votes in both the UI and the API
  4. Optionally set DUMP_URL to the GitHub Releases URL so /api/dump redirects there instead of hitting your DB
# .env on your mirror
DATABASE_URL=postgresql://...
NEXT_PUBLIC_READ_ONLY=true
DUMP_URL=https://github.com/SkipDB-TV/skipdb/releases/download/data-latest/skipdb-dump.json
NEXT_PUBLIC_DUMP_URL=https://github.com/SkipDB-TV/skipdb/releases/download/data-latest/skipdb-dump.json

Host a full fork

A full fork accepts submissions and votes independently. Use this if you want to take over as the primary instance or run a community for a specific region or content type.

  1. Fork the repo
  2. Set up a Postgres database (Supabase free tier, Neon, or self-hosted)
  3. Run migrations: pnpm db:migrate
  4. Import the dump: pnpm db:import
  5. Rebuild resolved segments: pnpm db:resolve
  6. Deploy and set your env vars (see .env.example)
# Seed a fresh database from the public dump
pnpm db:migrate
pnpm db:import https://github.com/SkipDB-TV/skipdb/releases/download/data-latest/skipdb-dump.json
pnpm db:resolve

# Then run the app
pnpm build && pnpm start

The API is compatible with SkipDB clients. Set NEXT_PUBLIC_API_URL and NEXT_PUBLIC_BASE_URL to your domain so all links and SEO point to the right place.