Die Einträge der Buchhandlungen sind verrauscht. Das Python-Backend von Hiki macht daraus einen Katalog, den Leser filtern und durchsuchen können.
Jeden Tag startet Google Cloud Scheduler die Scraper von Hiki. Sie basieren auf aiohttp, mit Rate Limiting und exponentiellem Backoff, und erfassen Produktdaten aus mehreren Buchhandlungen: Namen, Preise, Rabatte, Bestandsstatus und Bilder. Die Änderungserkennung markiert Neuheiten, Preissenkungen und Bestandsänderungen, sodass Leser kein Update verpassen.
Ein roher Produktname aus einer Buchhandlung ist oft verrauscht und uneinheitlich. Die Anreicherungs-Pipeline von Hiki orchestriert mehrere APIs, um den Manga dahinter zu finden. AniList ist die Hauptquelle für Bewertungen, Genres, Tags, Inhaltsangabe und Coverbilder. Shikimori übersetzt Titel für Produktnamen in kyrillischer Schrift, und Jikan und Kitsu dienen als Fallback für Sonderfälle. Die Pipeline erzeugt Titelvarianten, verarbeitet kyrillische wie lateinische Schrift und löst selbst stark verstümmelte Namen zu ihren kanonischen Manga-Einträgen auf. Buchhandlungen führen keine Genres, daher macht erst dieser Schritt Hiki filterbar: Die 21 Genres und 100+ Tags, nach denen Leser filtern, stammen von AniList.
Die API ist FastAPI mit asynchronem MongoDB über den Motor-Treiber. MongoDB speichert den Katalog als flexible Dokumente mit zusammengesetzten Indizes. Das Next.js-Frontend liest aus dieser API und rendert den Katalog in jeder unterstützten Sprache.
Das Backend läuft auf Google Cloud Run, neben dem Frontend, und Cloud Build deployt es bei jedem Push auf main. Davor sitzt Cloud Armor mit Geo-Beschränkungen und einer Allowlist für Crawler.