2025-09-04 15:21:07 +01:00
2025-09-04 15:21:07 +01:00
2025-09-04 15:21:07 +01:00
2025-09-04 15:21:07 +01:00
2025-09-04 14:18:18 +00:00
2025-09-04 15:21:07 +01:00

PodX - Offline Podcast + Docs Unified Search (Docker)

Quick start

unzip homelab-podx.zip && cd homelab-podx
docker compose up -d --build
# Open the UI:
#   http://<your-host>:8088

Paste links to podcasts/video (YouTube, Rumble, direct MP3). Worker downloads with yt-dlp, transcribes locally with faster-whisper large-v3, stores media under library/, subtitles and transcripts under transcripts/, and indexes everything (plus your PDFs/EPUBs/Kiwix) in a single Meilisearch index: library.

Ingest PDFs

MEILI_URL=http://localhost:7700 MEILI_KEY=devkey ./ingest/ingest_pdfs.sh /path/to/*.pdf

Ingest EPUBs

pip install ebooklib beautifulsoup4 lxml requests
MEILI_URL=http://localhost:7700 MEILI_KEY=devkey ./ingest/ingest_epub.py /path/to/*.epub

Ingest Kiwix ZIM

Install zim-tools: apt-get install zim-tools or brew install zimtools

MEILI_URL=http://localhost:7700 MEILI_KEY=devkey ./ingest/ingest_kiwix.sh /path/to/wikipedia_en.zim

Optional: set Meilisearch settings

curl -X PATCH "http://localhost:7700/indexes/library/settings"  -H "Authorization: Bearer devkey" -H "Content-Type: application/json"  -d '{"searchableAttributes":["title","text","meta.book_author","meta.uploader","meta.chapter"],
      "displayedAttributes":["type","title","source","date","_formatted","meta"],
      "sortableAttributes":["date","type"],
      "filterableAttributes":["type"]}'

Plex

Point Plex libraries at library/. Video podcasts will show .srt/.vtt subtitles automatically if basenames match.

Notes

  • Accuracy-first: model large-v3 (English + Czech). Change via WHISPER_MODEL env var in docker-compose.yml if desired.
  • Everything runs offline; no cloud calls.
Description
No description provided
Readme MIT 1.1 MiB
Languages
Python 76%
Shell 23.1%
Dockerfile 0.9%