trulytilted/mixerbee

By trulytilted

Updated about 2 months ago

Smart playlist and collection builder for Emby and Jellyfin. Self-hosted, browser-based UI.

Image
Languages & frameworks
Web servers
Content management system
1

10K+

trulytilted/mixerbee repository overview

MixerBee

MixerBee is a self-hosted web app designed to build and manage smart playlists and collections for Emby and Jellyfin media servers.

Whether you want to interleave episodes from multiple TV shows, create themed movie blocks with complex filters, mix both or automate your playlist management with a scheduling engine, Mixerbee can probably handle it.

This release introduces an overhaul of the AI engine, transitioning to a 100% local Vector Database to enable semantic mood searching, along with strict actor/director/writer/producer, genre and additional filtering.

Introducing Semantic AI

Utilizing a local ChromaDB instance running the all-MiniLM-L6-v2 embedding model, MixerBee mathematically maps abstract concepts and moods directly to the plot summaries of your library.

Because the vectorization happens entirely locally, your library metadata is never sent to the cloud for embedding.

The Dual-Mode AI Builder

The MixerBee AI reads your prompt and dynamically decides between two UI modes:

1. Dynamic Rule Blocks (Metadata-Driven) If you ask for concrete rules (e.g., "Give me 5 Action movies from the 1980s" or "Sci-Fi movies starring Harrison Ford"), the AI builds a standard block. The UI remains fully open, allowing you to manually tweak the dropdowns, sliders, and checkboxes before building.

2. Curated AI Blocks (Mood Driven) If you ask for an abstract feeling (e.g., "A gritty, neon-soaked cyberpunk aesthetic" or "Cozy rainy day movies"), standard dropdowns aren't enough. The AI searches your local generated vector database, picks media, and builds a curated list.

  • What to expect: Manual filters disappear. You will see an AI badge, a custom generated title (e.g., Cozy Rainy Day), and a "View Selected Items" button to preview the exact media the AI chose.

Prompting Tips: The vector database loves adjectives. Instead of just saying "scary," you can use terms like "dread-inducing, atmospheric, suspenseful and other mood adjectives." You can also mix and match. ("Give me 3 episodes of Fallout, followed by a block of movies with a high-octane vibe.")

Explicit Actor & Director Filtering

Previously, searching for a person in the Movie Block acted as a broad catch-all (returning movies where a director might have just had a minor cameo).

  • Updated find_movies to pass the PersonTypes parameter to the Emby API for strict role intersection.
  • Added a new role selection dropdown ([Any Role | Actor | Director | Writer | Producer]) to the frontend Movie Block UI for finer filtering.
  • Expanded the AI schema to explicitly extract movie_directors and movie_actors from your prompts so AI blocks map perfectly to these strict roles.

Under the Hood & UX Improvements

  • Two-Agent RAG Pipeline: * Agent 1 (Researcher): Analyzes your prompt to determine if it requires strict rules or semantic searching. If a "mood/vibe" is detected, it queries the local ChromaDB.
    • Agent 2 (Builder): Ingests the Researcher's context and maps it to MixerBee's schema.

Features

  • Live Synchronization: Support for server webhooks to trigger playlist rebuilds immediately after you finish an episode or add new media.
  • Automated Scheduler: Create playlists on a daily or weekly cadence
  • Native Collections: Generate static server Collections (BoxSets) instead of standard playlists.
  • AI-Powered Creation: Optional natural language playlist building via Google Gemini API.
  • Preset System: Save, export, and import your favorite block configurations as text codes.

Quick Start (Docker)

MixerBee requires a persistent volume mounted to /config to store its databases and environment settings.

Docker CLI:

docker run -d \
  --name mixerbee \
  -p 9000:9000 \
  -v $PWD/mixerbee_config:/config \
  --restart unless-stopped \
  trulytilted/mixerbee:latest

Docker Compose:

services:
  mixerbee:
    image: trulytilted/mixerbee:latest
    container_name: mixerbee
    ports:
      - "9000:9000"
    volumes:
      - ./mixerbee_config:/config
    restart: unless-stopped
    tty: true

After starting the container, visit: http://:9000

To enable AI features, provide a GEMINI_API_KEY via the web settings UI or your .env file.


To keep your playlists perfectly synced as you watch content, it is highly recommended to configure the Webhooks plugin in your media server. Point it to:

http://<mixerbee-ip>:9000/api/webhook

MixerBee will automatically process these events to produce non-disruptive playlist updates.


Documentation and Support

For full setup guides, screenshots, and advanced configuration details, please visit the official repository: https://github.com/tophers/MixerBee

Tag summary

Content type

Image

Digest

sha256:73c4f7936

Size

527.3 MB

Last updated

about 2 months ago

docker pull trulytilted/mixerbee