Marquee
Turns one item in a media library into Plex-style rows of other items in that same library. Built for self-hosted media servers.
IN: "The Sopranos"
OUT:
Shows like The Sopranos Gomorrah, Boardwalk Empire, The Wire, ZeroZeroZero
More from Tim Van Patten Game of Thrones, Black Mirror, Boardwalk Empire
More with Edie Falco Nurse Jackie, Oz
Shot by Alik Sakharov Game of Thrones, House of Cards
Two halves, both required
A retriever decides what goes in the rows, by joining your library on shared cast, crew and franchise and by embedding similarity. A small fine-tuned model decides which rows are worth showing, their order, and what to call them.
The model never sees item ids — it answers with index references into candidates it was handed, so it cannot invent a title that isn't in your library.
pip install marquee-ai
Model weights: KernelMedia/marquee-ai
Quickstart
# the model (needs ollama)
ollama create marquee-4b -f Modelfile
# metadata -- free TMDB key from themoviedb.org/settings/api
echo 'TMDB_API_KEY=your_key' >> .env
marquee harvest --out tmdb_full.jsonl # ~55 min, ~120k titles
# join it to your server's library
marquee ingest --server library.jsonl --catalog tmdb_full.jsonl \
--out lib.jsonl --mode requestable
# serve
marquee serve --library lib.jsonl --model marquee-4b --port 8080
Your server exports one JSON object per line — only tmdb_id and media_type are
required:
{"id": "myserver-04471", "tmdb_id": 335984, "media_type": "movie"}
Anything missing from the harvest is fetched from TMDB on demand at ingest, so coverage is complete however you filtered.
API
POST /recommend {"seed_id": "myserver-04471", "row_size": 20}
GET /search?q=Scorsese # matches titles AND people
GET /person?name=Roger%20Deakins
GET /health
DELETE /cache # after a library rescan
/search and /person are pure index lookups — no model call, effectively instant.
Only /recommend uses the GPU.
Items carry an owned flag, so a UI can offer a Request button on anything not on the
server. Ambiguous titles return 409 with the candidates rather than guessing —
Godzilla matches three films. Narrow with year and media_type, or write
"Top Gun (1986)" directly.
Use it as a library
The HTTP API is optional. If your server is Python, skip it:
from marquee import Library
from marquee.contract import messages, parse, repair, expand_rows
lib = Library.load("lib.jsonl")
lib.build_embeddings(cache=Path("lib.emb.npz")) # once at startup
request = lib.build_request(seed_id, semantic_k=14, row_size=20)
raw = call_your_llm(messages(request)) # any OpenAI-compatible endpoint
rows = expand_rows(repair(parse(raw), request), request, 20)
Requirements
| VRAM | ~3.5 GB (Q4_K_M). Runs on a 4 GB card, or CPU. |
| RAM | ~2.2 GB for a 120k-title catalog |
| Latency | ~1 s per request on an RTX 3060; cached responses are instant |
Full setup and troubleshooting: SETUP.md
Data
You harvest TMDB yourself with your own free key; no catalog is distributed. TMDB is free for non-commercial use and requires attribution — commercial use needs a written agreement with them.
This product uses the TMDB API but is not endorsed or certified by TMDB.
Licence
Apache-2.0.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file marquee_ai-1.0.0.tar.gz.
File metadata
- Download URL: marquee_ai-1.0.0.tar.gz
- Upload date:
- Size: 31.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.11.15
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0bc32a41415fc447516bb776a92453281753034e9c2c7feb930cd72314900f16
|
|
| MD5 |
3e09d6e706be69102d5bb0d1a8e60b02
|
|
| BLAKE2b-256 |
f80b3347adc75d0fd877b6792a5253883839630c81e95d154d9dd3ffb5c9d2ea
|
File details
Details for the file marquee_ai-1.0.0-py3-none-any.whl.
File metadata
- Download URL: marquee_ai-1.0.0-py3-none-any.whl
- Upload date:
- Size: 33.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.11.15
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b4cec0bcee7f45796b174e6d1510a90c653fe4ac13bdaf4df6c8eeb0a85d9356
|
|
| MD5 |
646a553261f1f6fbaa81c0776bef82eb
|
|
| BLAKE2b-256 |
006bef84ac2dcbf19203d8fa68c340c217fcb2b8479e32b026cfb85a8da9de01
|