Willkommen zu PersonaSearch – einer modernen, leichtgewichtigen Web-App für präzise Buch‑ und Filmsuche mit KI‑Assistenz.
Bibliotheks‑ und Katalogdaten wie die von OpenLibrary sind über Jahre gereift und zeichnen sich durch ihre hohe Genauigkeit und verlässliche Kuratierung aus. Gleichzeitig verstecken sich hinter diesen Katalogen häufig mächtige, aber selten genutzte Experten‑Suchfunktionen, die vielen Nutzenden schwer zugänglich sind. PersonaSearch verbindet beides: Wir vertrauen auf die belastbare Exaktheit der Kataloge – und setzen KI nur dort ein, wo sie echten Mehrwert schafft, nämlich beim Übersetzen natürlicher Sprache in die passenden, strukturierten Suchanfragen. So bleibt die Ergebnisqualität hoch, während die Nutzung spürbar einfacher wird.
- App: rstockm.github.io/personasearch
- Dokumentation: rstockm.github.io/personasearch/docs.html
- KI‑gestützte Analyse natürlichsprachiger Suchanfragen (z. B. „neueste deutsche Fantasy‑Romane“) → strukturierte Suche
- Tabs für Sucheinstiege: Titel, Autor, Genre, Erweitert, Film
- Relevanz‑ oder Datumssortierung, je nach Anfrage
- Ergebnis‑Tabellen mit Cover‑Vorschau (Bücher) bzw. Bewertung/Typ (Filme/Serien)
- Robuste Fehlerbehandlung mit Retry‑Logik
- Statisches Frontend (GitHub Pages):
index.html,css/style.css,js/app.js - Externe Datenquellen:
- Bücher: OpenLibrary Search API
- Filme/Serien: TMDB Search API
- KI‑Parsing: OpenRouter (Claude 3.5 Sonnet)
- Serverseitiger Sicherheits‑Proxy (LAMP/PHP) für API‑Secrets:
lamp/openrouter_proxy.php- Route 1 (POST): Weiterleitung an OpenRouter
- Route 2 (GET): Weiterleitung an
TMDB /search/multi
personasearch/
├─ index.html # App UI
├─ docs.html # Projekt-Dokumentation (HTML)
├─ css/style.css
├─ js/app.js # App-Logik (Frontend)
└─ lamp/ # LAMP-Proxy (nur Serverdeployment)
├─ openrouter_proxy.php # PHP-Proxy für OpenRouter & TMDB
├─ .htaccess # Sicherheit/CORS/Env
└─ secret.sample.ini # Beispiel für Secret-Datei (nicht produktiv nutzen)
- Die App ist rein statisch und kann ohne Build‑Schritt auf GitHub Pages gehostet werden.
- Interne Links sind auf den Pages‑Pfad ausgerichtet:
- Logo/Start:
https://rstockm.github.io/personasearch/ - Dokumentation:
https://rstockm.github.io/personasearch/docs.html
- Logo/Start:
- Der System‑Prompt für die KI befindet sich in
js/app.js(Konstanten‑String).
- Im Frontend werden keine Secrets ausgeliefert.
- OpenRouter‑ und TMDB‑Zugriffe laufen über den PHP‑Proxy, der die Keys serverseitig hält.
- In
js/app.jsist die TMDB‑Suche bereits auf den Proxy geroutet, ebenso das KI‑Parsing.
Dateien unter lamp/ auf Ihren LAMP‑Server deployen. Es gibt drei Optionen, den Key zu setzen (in dieser Reihenfolge geprüft):
- Environment‑Variable (z. B. via
.htaccessSetEnv):<IfModule mod_env.c> SetEnv OPENROUTER_API_KEY "sk-or-..." SetEnv TMDB_API_KEY "TMDB_BEARER_OR_V4_TOKEN" </IfModule>
- Cloudron‑Pfad (persistenter Speicher):
/app/data/secret.ini - Lokale Datei neben dem Skript:
lamp/secret.ini(nur zu Testzwecken, nicht ins Repo!)
Beispiel‑INI (lamp/secret.sample.ini):
OPENROUTER_API_KEY=sk-or-REPLACE_ME
TMDB_API_KEY=REPLACE_ME_TMDB_BEARER_OR_V4_TOKENDer Proxy sendet CORS‑Header und muss die exakte Origin der GitHub‑Pages‑Seite erlauben:
Access-Control-Allow-Origin: https://rstockm.github.io
Access-Control-Allow-Methods: POST, GET, OPTIONS
Access-Control-Allow-Headers: Content-TypeFalls lokale Tests nötig sind, können zusätzlich http://localhost:8000 und http://127.0.0.1:8000 erlaubt werden.
- OpenRouter (POST):
- URL:
https://<Ihre-Domain>/openrouter_proxy.php - Body (Beispiel):
{ "model": "anthropic/claude-3.5-sonnet", "messages": [ { "role": "system", "content": "..." }, { "role": "user", "content": "..." } ] }
- URL:
- TMDB (GET, whitelisted:
search/multi):- URL:
https://<Ihre-Domain>/openrouter_proxy.php?service=tmdb&query=<Suchbegriff>&language=de-DE&page=1&include_adult=false
- URL:
# Im Projektverzeichnis
python3 -m http.server 8000
# Browser: http://localhost:8000Hinweis: Für KI‑Parsing und TMDB‑Suche muss der Proxy korrekt konfiguriert sein (CORS & Keys), sonst schlägt die Anfrage im Browser fehl.
- Branch
main, Pfad/ - Live‑URL: https://rstockm.github.io/personasearch/
lamp/auf den Server deployen- Keys per
SetEnvoder/app/data/secret.inisetzen - CORS‑Origin exakt auf
https://rstockm.github.iokonfigurieren - Optional: weitere TMDB‑Endpunkte whitelisten (derzeit nur
search/multi)
- Frontend: HTML, CSS (Bootstrap 5), JavaScript
- KI: OpenRouter (Claude 3.5 Sonnet)
- Bücher: OpenLibrary
- Filme/Serien: TMDB
- Bitte keine echten Secrets in das öffentliche Repository committen.
- Der Proxy ist minimal gehalten und erlaubt gezielt nur die benötigten Endpunkte. Erweiterungen sollten bewusst und mit Whitelist erfolgen.
Mockup für eine Suche die Persona-basiert konzipiert ist, unterstützt durch ein LLM