Ghost Blog als statische HTML exportieren – ohne Node
Ghost Blog als statische HTML exportieren, ohne Node, wget oder lokale Ghost-Installation: JSON-Export vs. Browser-Crawl und was offline nicht geht.
Website Downloader 9 Min. Lesezeit
Im Ghost-Admin gibt es keinen Button, mit dem Sie Ihren Ghost Blog als statische HTML exportieren können. Der eingebaute Export ist eine JSON-Datei mit Ihren Beiträgen und Einstellungen. Sie ist für den Import in eine andere Ghost-Installation gedacht, nicht zum Lesen. Für eine durchklickbare Kopie gibt es zwei Wege. Sie können Entwickler-Tools wie gssg oder wget auf den Blog ansetzen, oder Sie lassen die veröffentlichte Website direkt aus dem Browser crawlen und erhalten jeden Beitrag, jede Tag-Seite, jedes Bild und jedes Stylesheet in einer einzigen ZIP-Datei. Auf Ghost(Pro), wo Ghost nicht lokal bei Ihnen läuft, ist der Browser-Crawl der einzige Weg, für den Sie nichts installieren müssen.
Hat Ghost einen eingebauten HTML-Export?
Nein. Unter Settings → Advanced → Import/Export (die genaue Bezeichnung des Menüs hat sich zwischen Ghost-Versionen geändert) bietet Ghost einen Inhaltsexport an. Das ist eine einzelne .json-Datei mit Beiträgen, Seiten, Tags, Autoren und Website-Einstellungen. An anderer Stelle im Admin können Sie Ihr aktives Theme als ZIP und Ihre Mitglieder als CSV-Datei herunterladen.
Alle drei sind nützlich, aber keiner davon ist eine Website. Öffnen Sie die JSON-Datei, sehen Sie Rohdaten; die Beitragstexte stecken als Markup in Textfeldern. Das Theme-ZIP enthält Handlebars-Templates, die Ghost zum Rendern braucht. Nichts, was Ghost exportiert, öffnet sich im Browser als funktionierender Blog – und genau deshalb suchen viele nach einer statischen Kopie.
Ghost-JSON-Export oder HTML-Kopie: Was brauchen Sie?
Beide erfüllen unterschiedliche Aufgaben, und für ein ernsthaftes Backup brauchen Sie meist beides.
| Ghost-JSON-Export | Statische HTML-Kopie | |
|---|---|---|
| Was es ist | Ihre Inhalte als strukturierte Daten | Die gerenderte Website: HTML, CSS, JS, Bilder, Schriften |
| Öffnet im Browser | Nein | Ja, offline |
| Enthält Bilder | Nein, nur deren URLs | Ja, die Bilder auf den öffentlichen Seiten |
| Enthält das Aussehen Ihres Themes | Nein | Ja, genau wie veröffentlicht |
| In Ghost wieder importierbar | Ja | Nein |
| Enthält Inhalte nur für Mitglieder | Ja, den vollständigen Beitragstext | Nur, was ein nicht angemeldeter Besucher sieht |
| Auf einem Static Host hostbar | Nein | Ja |
Faustregel: Umzug in eine andere Ghost-Installation? Nehmen Sie den JSON-Export, dazu die Bilder und die Mitglieder-CSV. Sie möchten ein lesbares Archiv, eine eingefrorene Website auf GitHub Pages oder Netlify oder einen Nachweis, wie der Blog aussah? Dann brauchen Sie die HTML-Kopie. Sie verlassen Ghost(Pro) endgültig? Nehmen Sie beides. Das JSON bewahrt Ihre Texte strukturiert für die nächste Plattform, die HTML-Kopie hält den Blog mit Bildern und Design lesbar.
Ein Detail übersehen viele: Der JSON-Export enthält keine Bilder. Beiträge verweisen auf Pfade wie /content/images/2023/05/foto.jpg auf Ihrem Ghost-Server. Ghost(Pro) hat keinen Dateimanager, mit dem Sie diesen Ordner herunterladen könnten. Wenn Sie die Originalbilder brauchen, fragen Sie also den Ghost-Support, bevor Sie kündigen. Eine statische HTML-Kopie sammelt die Bilder, die auf Ihren öffentlichen Seiten erscheinen, beim Crawl mit ein.
So können Sie Ihren Ghost Blog als statische HTML exportieren – im Browser, ohne Installation
Dieser Weg eignet sich für Ghost(Pro)-Nutzer und alle, die weder Node.js noch Python noch eine lokale Ghost-Kopie auf dem Rechner haben möchten. Außerdem umgehen Sie das weiter unten beschriebene localhost-Problem: Der Crawl läuft gegen Ihre echte öffentliche Domain, daher zeigt von vornherein keine URL auf localhost.
- Öffnen Sie den Blog zuerst in einem privaten Fenster. So sehen Sie genau, was ein anonymer Besucher sieht. Was einen Login erfordert, landet auch nicht in der Kopie.
- Geben Sie die Adresse Ihres Blogs ein, zum Beispiel
https://ihrblog.de, und zwar in das Download-Feld auf der Startseite von Website Downloader, und starten Sie den Download. - Verfolgen Sie den Fortschritt. Der Crawl folgt den Links von der Startseite zu Beiträgen, Seiten, Tag-Archiven, Autorenseiten und paginierten Listen wie
/page/2/. Ein Live-Zähler zeigt, wie viele Seiten bereits gefunden wurden. Sie können den Tab schließen, denn Ihr Computer muss während des Crawls nicht eingeschaltet bleiben. - Laden Sie die ZIP-Datei herunter, entpacken Sie sie und öffnen Sie
index.html. Klicken Sie zur Kontrolle durch einige Beiträge, eine Tag-Seite und die zweite Seite des Startseiten-Feeds.
Wie viele Seiten hat Ihr Ghost Blog? Zählen Sie mehr als nur Ihre Beiträge. Jeder Tag bekommt eine Archivseite, jeder Autor ebenfalls, und lange Listen werden auf nummerierte Seiten verteilt. Ein Blog mit 60 Beiträgen, 15 Tags und paginierten Archiven kann leicht über 100 Seiten kommen. Der kostenlose Plan deckt bis zu 100 Unterseiten ab, ganz ohne Konto. Ein einmaliger Single-Site-Download umfasst bis zu 5.000 Unterseiten und hält das Archiv 30 Tage bereit. Details finden Sie auf der Preisseite.
Ist Ihr Ghost Blog bereits offline, etwa weil ein Ghost(Pro)-Abo ausgelaufen ist, lässt sich die Live-Website nicht mehr crawlen. Der Wayback-Machine-Downloader kann sie aus Aufnahmen des Internet Archive wiederherstellen, sofern das Archiv sie erfasst hat. Wie das geht, zeigt unsere Anleitung Website aus der Wayback Machine wiederherstellen.
Entwickler-Tools: gssg, Buster und wget --mirror – und wo sie scheitern
Die meisten Anleitungen zu diesem Thema setzen voraus, dass Ghost auf Ihrem eigenen Rechner läuft und Sie sich im Terminal wohlfühlen. Empfohlen werden dort diese Tools:
- gssg (ghost-static-site-generator) ist ein Node-Paket, das
wgetumhüllt. Sie richten es auf eine laufende Ghost-Instanz, meisthttp://localhost:2368, und es schreibt einen statischen Ordner. Über Optionen lässt sich die lokale Adresse durch Ihre Produktionsdomain ersetzen. Das funktioniert, setzt aber Node, wget und eine lokale Ghost-Installation voraus, die Ihren Live-Inhalten entspricht. - Buster ist ein älteres Python-Tool nach demselben Prinzip. Es wird nicht mehr gepflegt, und seine eigene Demo-Website zeigte das klassische Symptom: Links, die weiterhin auf localhost verweisen.
- ghost-static und ähnliche kleine Projekte bezeichnen sich selbst als nicht mehr gepflegt. Betrachten Sie sie als Ausgangspunkt zum Lesen von Code, nicht als Werkzeug für Ihr einziges Archiv.
- Reines wget ist die zuverlässigste der skriptbasierten Optionen und braucht keinen Ghost-spezifischen Wrapper:
wget --mirror --convert-links --adjust-extension --page-requisites --no-parent https://ihrblog.de/
Damit lässt sich Ihre Live-Website auf Ghost(Pro) direkt crawlen, Sie müssen wget aber installieren, richtig einstellen und die Ausgabe anschließend bereinigen.
Die übliche Antwort im Ghost-Forum – das Frontend mit Eleventy oder einem anderen Static-Site-Generator neu aufzubauen, der aus der Content API liest und auf Netlify deployt – ist eine gute Langzeitlösung, wenn Sie weiter veröffentlichen möchten. Es ist allerdings ein Neubau mit neuem Theme, keine Kopie Ihrer bestehenden Website. Einen Vergleich von Kommandozeilen-Tools und Browser-Lösung finden Sie im Artikel HTTrack-Alternative: Website Downloader online ohne Installation.
Warum zeigen Links oder Bilder nach dem statischen Export auf localhost?
Eine Ghost-Instanz schreibt ihre konfigurierte URL in absolute Links. Bei einer lokalen Installation lautet diese URL http://localhost:2368, und sie landet in Canonical-Tags, Open-Graph-Bildern, srcset-Attributen, der Sitemap und dem RSS-Feed. Crawlen Sie diese Instanz, verweist jede dieser Angaben auf Ihren eigenen Computer. Auf Ihrem Laptop sieht die Website gut aus, weil Ghost dort läuft. Nach dem Deployment sind Bilder und Links für alle anderen kaputt.
Die zweite Falle sind Query-Strings an Assets. Ghost-Themes laden Dateien wie /assets/built/screen.css?v=3f2a1c. Je nach Einstellungen speichert wget diese Datei mit dem ?v=…-Teil im Dateinamen. Ein Static Host sucht dann nach screen.css, findet nichts und liefert die Seite ohne Styles aus. Dasselbe kann mit Theme-JavaScript und Schriften passieren.
Ein Check vor dem Deployment, der fünf Minuten dauert
- Durchsuchen Sie den Ordner nach localhost. Unter macOS oder Linux führen Sie im entpackten Ordner
grep -rl "localhost" .aus. Unter Windows nutzen Sie die Funktion „In Dateien suchen“ eines Texteditors. Jeder Treffer ist ein Link, der nicht funktionieren wird. - Achten Sie auf seltsame Dateinamen mit
?,%3Foder@im Ordnerassets. Sie deuten auf das Query-String-Problem hin. - Testen Sie offline. Schalten Sie das WLAN aus und öffnen Sie
index.html. Fehlende Styles oder Bilder zeigen Ihnen, welche Verweise noch vom Netz abhängen. - Prüfen Sie drei Seitentypen: einen langen Beitrag mit Bildern, ein Tag-Archiv und
/page/2/. Dort zeigen sich Lücken am häufigsten.
Fehlt etwas, geht unsere Anleitung Heruntergeladene Website ohne Bilder und CSS? Die Lösung die Ursachen der Reihe nach durch.
Was eine statische Ghost-Kopie nicht kann: Mitglieder-Beiträge, Portal, Suche und Kommentare
Ghost ist mehr als eine Sammlung von Seiten. Mehrere Funktionen hängen vom Ghost-Server und seinen APIs ab, und eine statische Kopie – egal welcher Art, egal mit welchem Tool – kann sie nicht am Laufen halten:
- Beiträge nur für Mitglieder und kostenpflichtige Beiträge. Ein nicht angemeldeter Besucher sieht die Vorschau und die Aufforderung zum Abonnieren, nicht den ganzen Beitrag. Ein Crawler sieht dasselbe, die Kopie enthält also nur den Anreißer. Der vollständige Text dieser Beiträge steckt in Ihrem JSON-Export.
- Portal. Das Pop-up für Registrierung und Anmeldung sowie die Kontoseite brauchen das Mitglieder-Backend von Ghost. In der Kopie sind die Buttons eventuell noch zu sehen, tun aber nichts.
- Newsletter-Anmeldeformulare senden an Ghost und schlagen ohne Ghost fehl.
- Suche. Die Ghost-Suche fragt die Content API live ab. Offline kommt keine Antwort.
- Native Kommentare werden von Ghost geladen und erfordern ein angemeldetes Mitglied. Kommentar-Widgets von Drittanbietern brauchen den Server ihres Anbieters.
Für ein Archiv ist das meist in Ordnung: Texte, Bilder und Design sind das, was Sie behalten möchten. Soll die Website weiterhin Abonnenten sammeln, ersetzen Sie das Anmeldeformular durch ein Embed eines Newsletter-Dienstes oder verlinken Sie dorthin, wo Ihre Liste jetzt liegt.
Kann ich einen exportierten Ghost Blog auf GitHub Pages, Netlify oder S3 hosten?
Ja. Eine statische Ghost-Kopie besteht aus einfachen Dateien, die jeder Static Host ausliefern kann:
- GitHub Pages: Entpacken Sie die ZIP-Datei in ein Repository, pushen Sie es, aktivieren Sie Pages für den Branch und tragen Sie Ihre eigene Domain in den Einstellungen ein. Führen Sie vorher die localhost-Suche von oben durch, denn GitHub liefert aus, was im Repository liegt.
- Netlify: Ziehen Sie den entpackten Ordner auf den Deploy-Bereich. So sehen Sie am schnellsten eine eingefrorene Ghost-Website live unter einer Test-URL.
- Amazon S3: Laden Sie die Dateien in einen Bucket, aktivieren Sie Static Website Hosting mit
index.htmlals Indexdokument und schalten Sie ein CDN davor, wenn Sie HTTPS auf Ihrer eigenen Domain möchten.
Ghost(Pro) verlassen und ein lesbares Archiv behalten
Die Reihenfolge ist wichtig, denn nach Ende des Abos gibt es nichts mehr zu crawlen:
- Exportieren Sie im Ghost-Admin die JSON-Inhaltsdatei, die Mitglieder-CSV und das Theme-ZIP.
- Fragen Sie den Ghost-Support nach Ihren Originalbildern, falls Sie sie in voller Auflösung brauchen.
- Erstellen Sie die statische HTML-Kopie, solange der Blog noch live ist, und prüfen Sie sie mit den Schritten oben.
- Stellen Sie die Kopie auf den neuen Host und testen Sie sie unter einer temporären URL.
- Richten Sie Ihre Domain auf den neuen Host aus und kündigen Sie erst dann Ghost(Pro).
Dasselbe Prinzip – einfrieren, dann hosten – funktioniert auch für andere Plattformen. Betreiben Sie zusätzlich eine WordPress-Website, lesen Sie WordPress als HTML exportieren.
FAQ
Enthält der Ghost-JSON-Export Bilder?
Nein. Er enthält Ihre Texte, Tags, Autoren und Einstellungen und verweist auf Bilder nur über deren URLs auf Ihrem Ghost-Server. Eine statische HTML-Kopie enthält dagegen die Bilder, die auf Ihren öffentlichen Seiten angezeigt werden. Für die Originaldateien von Ghost(Pro) wenden Sie sich an den Ghost-Support.
Kann ich einen Ghost(Pro)-Blog exportieren, ohne Ghost lokal zu installieren?
Ja. Crawlen Sie die öffentliche Live-Website, entweder mit einem browserbasierten Tool wie Website Downloader oder mit wget, das Sie auf Ihre echte Domain richten. Weil der Crawl Ihre Produktions-URL verwendet, tritt das localhost-Problem lokaler Exporte gar nicht erst auf.
Sind Beiträge nur für Mitglieder oder kostenpflichtige Beiträge in der statischen Kopie enthalten?
Nur der öffentliche Teil. Ein Crawler sieht, was ein nicht angemeldeter Besucher sieht, also die Vorschau und die Abo-Aufforderung. Seiten hinter einem Login werden nicht heruntergeladen. Ihr JSON-Export enthält den vollständigen Text dieser Beiträge.
Funktionieren Ghost-Suche, Kommentare und Newsletter-Anmeldung in einer statischen Kopie?
Nein. Suche, Portal, Anmeldeformulare und Kommentare hängen alle vom Ghost-Server und seinen APIs ab. Die Seiten drumherum werden weiterhin angezeigt, aber diese Funktionen reagieren nicht mehr. In den FAQ lesen Sie allgemein, was Offline-Kopien können und was nicht.
Wie halte ich das Archiv aktuell, wenn ich weiter veröffentliche?
Eine statische Kopie ist eine Momentaufnahme. Starten Sie nach jeder Reihe neuer Beiträge einen frischen Download, oder monatlich, wenn Sie häufig veröffentlichen, und ersetzen Sie die alte Kopie auf Ihrem Static Host. Wenn Sie eine statische Website möchten, die sich selbst aktualisiert, passt ein Setup aus Content API und Static-Site-Generator besser als wiederholte Momentaufnahmen.
- Ghost Blog als statische HTML exportieren
- Ghost
- statisches HTML
- Website-Backup
- Website-Umzug