Some checks failed
Dev Deployment (Zero Downtime) / deploy-dev (push) Failing after 10m3s
Added rate limiting to APIs, cleaned up docs, implemented fallback logic for reviews without text, and added comprehensive n8n guide.
3.8 KiB
3.8 KiB
Automatisierung: Gelesene Bücher (Hardcover → Directus)
Diese Anleitung erklärt, wie du n8n einrichtest, damit Bücher, die du auf Hardcover als "Read" markierst, automatisch in deinem Directus CMS landen.
Ziel
- Quelle: Hardcover (Status: Read)
- Ziel: Directus (Collection:
book_reviews) - Verhalten:
- Buch wird automatisch angelegt.
- Status wird auf
draftgesetzt (damit du optional eine Bewertung/Review schreiben kannst). - Wenn du keine Review schreiben willst, kannst du den Status im n8n Workflow direkt auf
publishedsetzen.
Voraussetzungen
- n8n Instanz (self-hosted oder Cloud).
- Directus URL & Token (Admin oder Token mit Schreibrechten auf
book_reviews). - Hardcover Account (GraphQL API Zugriff).
Schritt-für-Schritt Einrichtung
1. Directus Collection book_reviews vorbereiten
Stelle sicher, dass deine Collection in Directus folgende Felder hat (nullable = optional):
status(String:draft,published,archived)book_title(String, required)book_author(String, required)book_image(String, URL)rating(Integer, nullable, 1-5)hardcover_id(String, unique, um Duplikate zu vermeiden)finished_at(Date, wann du es gelesen hast)review(Text/Markdown, nullable - DEINE Meinung)
2. n8n Workflow erstellen
Erstelle einen neuen Workflow in n8n.
Node 1: Trigger (Zeitgesteuert)
- Typ:
Schedule Trigger - Intervall: Alle 60 Minuten (oder wie oft du willst).
Node 2: Hardcover API Abfrage
- Typ:
GraphQL(oderHTTP RequestPOST anhttps://api.hardcover.app/graphql) - Query:
query { me { books_read(limit: 5, order_by: {finished_at: desc}) { finished_at book { id title contributions { author { name } } images { url } } } } - Auth: Bearer Token (Dein Hardcover API Key).
Node 3: Auf neue Bücher prüfen
- Typ:
Function/Code - Logik: Vergleiche die
idvon Hardcover mit denhardcover_ids, die schon in Directus sind (du musst vorher eine Directus Abfrage machen, um existierende IDs zu holen). - Ziel: Filtere Bücher heraus, die schon importiert wurden.
Node 4: Buch in Directus anlegen
- Typ:
Directus(oderHTTP RequestPOST an dein Directus) - Resource:
Items->book_reviews->Create - Mapping:
book_title:{{ $json.book.title }}book_author:{{ $json.book.contributions[0].author.name }}book_image:{{ $json.book.images[0].url }}hardcover_id:{{ $json.book.id }}finished_at:{{ $json.finished_at }}status:draft(oderpublishedwenn du es sofort live haben willst)rating:null(das füllst du dann manuell in Directus aus!)review:null(das schreibst du dann manuell in Directus!)
3. Workflow aktivieren
- Teste den Workflow einmal manuell.
- Aktiviere ihn ("Active" Switch oben rechts).
Workflow: Bewertung schreiben (Optional)
- Das Buch erscheint automatisch in Directus als
draft. - Du bekommst (optional) eine Benachrichtigung (via n8n -> Email/Discord/Telegram).
- Du loggst dich in Directus ein.
- Du öffnest das Buch.
- Möchtest du bewerten?
- Ja: Gib
rating(1-5) undreviewText ein. Setze Status aufpublished. - Nein, nur auflisten: Lass
ratingleer. Setze Status aufpublished.
- Ja: Gib
Frontend Logik (Code Anpassung)
Der Code im Frontend (ReadBooks.tsx) ist bereits so gebaut, dass er:
- Bücher anzeigt, die
status: publishedhaben. - Wenn
ratingvorhanden ist, werden Sterne angezeigt. - Wenn
reviewvorhanden ist, wird der Text angezeigt. - Wenn beides fehlt, wird das Buch einfach nur als "Gelesen" aufgelistet (Cover + Titel + Autor).