Files

87 lines
3.6 KiB
Bash

MEILI_URL=http://127.0.0.1:7700
MEILI_MASTER_KEY=change-me-now
MEILI_INDEX=jellyfin_scenes
HYBRID_SEMANTIC_RATIO=0.80
MODEL_ID=google/siglip2-base-patch16-224
DEVICE=cuda
DATA_DIR=./data
BATCH_SIZE=8
OLLAMA_URL=http://127.0.0.1:11434
CAPTION_GENERAL_MODEL=huihui_ai/qwen3-vl-abliterated:4b-instruct-q4_K_M
CAPTION_SPECIALIST_MODEL=hf.co/GitMylo/nsfwcaption-qwen3-vl-8b-gguf:Q4_K_M
# Hard override: send every frame to the specialist captioner and skip the router.
CAPTION_FORCE_SPECIALIST=false
CAPTION_TIMEOUT_SECONDS=180
CAPTION_MAX_TOKENS=120
# Optional text-only synthesis of stored Trickplay captions into an AI
# visual overview. Never writes to Jellyfin without an explicit CLI --apply.
# Leave empty to use the general caption model (may be a VL model).
OVERVIEW_MODEL=
# Optional text-only model for adult/mature visual overviews. If empty the
# general OVERVIEW_MODEL is used with a different specialist prompt.
OVERVIEW_SPECIALIST_MODEL=
# Editable text-only summary instructions: created on first use under ./data/.
# These are separate from the image-captioning prompts above.
OVERVIEW_PROMPT_FILE=./data/overview_prompt.txt
OVERVIEW_SPECIALIST_PROMPT_FILE=./data/overview_prompt_specialist.txt
OVERVIEW_TIMEOUT_SECONDS=240
# Overview prompts stay inside this context (default 4096); retry smaller on overflow.
OVERVIEW_NUM_CTX=4096
# Cap evidence size before Ollama tokenization (default 6000 characters).
OVERVIEW_EVIDENCE_CHARS=6000
# Push new caption metadata to Meilisearch in small incremental batches.
CAPTION_MEILI_BATCH_SIZE=500
# Caption adjacent Trickplay frames as chronological windows rather than one
# Ollama request per frame. Up to three frames are combined in-memory.
CAPTION_WINDOW_SECONDS=30
CAPTION_WINDOW_MAX_FRAMES=3
# Specialist windows sample up to six available frames, without changing general captions.
CAPTION_SPECIALIST_WINDOW_MAX_FRAMES=6
CAPTION_PROMPT_FILE=./data/caption_prompt.txt
CAPTION_SPECIALIST_PROMPT_FILE=./data/caption_prompt_specialist.txt
CAPTION_ROUTER_ENABLED=true
CAPTION_ROUTER_MODEL=Falconsai/nsfw_image_detection
CAPTION_ROUTER_DEVICE=cuda
CAPTION_ROUTER_BATCH_SIZE=32
CAPTION_ROUTER_THRESHOLD=0.50
CAPTION_ROUTER_CONTEXT_SECONDS=6
# Jellyfin ingestion
JELLYFIN_URL=http://127.0.0.1:8096
# Docker Compose uses this only from inside the scene-search container.
# Leave blank to use http://host.docker.internal:8096.
JELLYFIN_DOCKER_URL=
JELLYFIN_API_KEY=
# Preferred: comma-separated list of libraries to index by default.
JELLYFIN_LIBRARIES=
# Optional libraries to leave out, including when --all-libraries is used.
JELLYFIN_EXCLUDE_LIBRARIES=
# Backward-compatible single-library setting. Used only when JELLYFIN_LIBRARIES is empty.
JELLYFIN_LIBRARY=
JELLYFIN_TRICKPLAY_WIDTH=320
JELLYFIN_FALLBACK_INTERVAL_SECONDS=10
JELLYFIN_TIMEOUT_SECONDS=60
# Ordinary Jellyfin tags are passed to the captioner as context hints.
JELLYFIN_TAG_CONTEXT=true
# Optional comma-separated tags that should always use the specialist captioner.
JELLYFIN_SPECIALIST_TAGS=
# Reserved control tags. Add these directly to a Jellyfin item when needed.
JELLYFIN_FORCE_SPECIALIST_TAG=scene-search:specialist
JELLYFIN_FORCE_GENERAL_TAG=scene-search:general
JELLYFIN_SKIP_TAG=scene-search:skip
# HTTP API / standalone web dashboard.
# Docker Compose overrides SCENE_API_HOST to 0.0.0.0 and publishes this port.
SCENE_API_HOST=127.0.0.1
SCENE_API_PORT=8097
# Strongly recommended when Docker exposes the dashboard/API on the LAN.
# Protected API calls accept Authorization: Bearer <key> or X-Scene-Search-Key.
# The web dashboard stores the key only in the browser's local storage.
SCENE_API_KEY=