SEO für Hexo

So optimieren Sie eine Hexo-Website für Suchmaschinen. Hexo erzeugt reines HTML, doch Sitemaps, robots.txt, Meta-Beschreibungen, Canonicals, strukturierte Daten und stabile Permalinks hängen von Plugins und der Konfiguration ab.

Erstveröffentlicht: 26. Juni 2026 · Zuletzt aktualisiert: 22. Aug. 2026 · Fortgeschritten
Sprachen

Hexo ist ein statischer Website-Generator auf Basis von Node.js: hexo generate kompiliert Markdown zu reinem statischem HTML, sodass Googlebot den vollständigen Inhalt beim ersten Abruf ohne JavaScript-Rendering-Warteschlange lesen kann. Das schafft gute Voraussetzungen für das Crawling, ist aber noch keine vollständige SEO-Lösung. Die meisten Standard-Themes liefern weder Sitemap und robots.txt noch beitragsspezifische Meta-Beschreibungen, Canonicals oder strukturierte Daten. Diese Funktionen kommen über _config.yml, Frontmatter-Felder, Theme-Anpassungen und Plugins hinzu. Die größten Risiken sind eine falsche url:-Angabe, datumsbasierte Standard-Permalinks, die beim Umbenennen Links brechen, sowie automatisch erzeugte dünne Kategorie- und Tag-Archive. Für Baidu beseitigt die statische Ausgabe ein echtes Crawling-Hindernis, garantiert aber weder Indexierung noch Rankings.

TL;DR — Hexo (hexo generate) erzeugt reines statisches HTML, sodass der Inhalt im ersten Byte der Antwort enthalten ist – ohne Web Rendering Service und ohne Verzögerung durch Welle 2. Das ist die Grundlage für die Crawlbarkeit, nicht fertige SEO. Standard-Themes liefern weder Sitemap und robots.txt noch beitragsspezifische Meta-Beschreibung, Canonical oder strukturierte Daten; diese ergänzen Sie über _config.yml, Frontmatter, Theme-Templates und Plugins (hexo-generator-sitemap, hexo-generator-robotstxt, hexo-generator-feed, hexo-abbrlink, hexo-indexnow). Drei Fallen sind besonders relevant: Eine falsche url:-Angabe beschädigt Canonicals, Sitemap und Feed; der datumsbasierte Standard-Permalink bindet URLs an Dateinamen, sodass Umbenennungen Links brechen; automatisch erzeugte Kategorie- und Tag-Archive schaffen dünne Duplikate. Für auf Baidu ausgerichtete Websites ist die statische Ausgabe ein echter Vorteil.

Hexos statische Ausgabe erleichtert das Crawling

hexo generate verarbeitet Markdown und Theme-Templates in einem Build-Schritt und schreibt fertige HTML-, CSS- und Asset-Dateien in einen Ordner. Für SEO ist entscheidend, wann das HTML existiert: einmalig zur Build-Zeit für alle Nutzer, nicht pro Anfrage und nicht erst im Browser. Evidence for this claim The Hexo generate command builds static files into the configured public directory. Scope: Hexo generate command. Confidence: high · Verified: Hexo: Commands

Google beschreibt für JavaScript-Seiten einen zweistufigen Prozess: In Welle 1 wird das rohe HTML abgerufen und statischer Inhalt sofort indexiert; Welle 2 ist eine nachgelagerte Chromium-Warteschlange für das Rendern ohne Benutzeroberfläche, die Sekunden bis Tage benötigen kann. Hexo-Ausgaben überspringen Welle 2 vollständig – jede Seite liegt beim ersten Abruf als rohes HTML vor. Google bezeichnet dynamisches Rendering ausdrücklich als “a workaround and not a long-term solution… use server-side rendering, static rendering, or hydration as a solution,” (Übersetzung) „eine Behelfslösung und keine langfristige Lösung; verwenden Sie serverseitiges Rendering, statisches Rendering oder Hydration.“ Hexo setzt mit statischem Rendering eine dieser drei empfohlenen Varianten um.

Daraus ergeben sich zwei weitere Vorteile:

  • Standardmäßig crawlbare Links. Hexo-Templates erzeugen normale <a href>-Links im statischen HTML und erfüllen damit Googles Anforderung an echte, crawlbare URLs. Eine per JavaScript erzeugte Navigation muss nicht gesondert berücksichtigt werden.
  • Geringe Crawling-Kosten. Von einem CDN ausgelieferte statische Dateien verursachen praktisch keine serverseitige Verarbeitung pro Anfrage. Googlebot kann daher mit der zulässigen Rate crawlen, ohne den Server zu überlasten. Gary Illyes formulierte es so: “if you are making expensive database calls, that’s going to cost the server a lot” (Übersetzung) „Aufwendige Datenbankabfragen belasten den Server stark.“ Hexo führt solche Abfragen nicht aus.

Der Vorbehalt: Kein renderblockierender Aufwand für Crawler bedeutet nicht, dass es auch für Nutzer keine Blockaden gibt. JavaScript und CSS des Themes beeinflussen weiterhin die Core Web Vitals.

Zuerst _config.yml konfigurieren – url: ist entscheidend

Legen Sie diese globalen Schlüssel vor der ersten Bereitstellung fest:

url: https://yourdomain.com       # must match your live domain, with https://
permalink: :title/                # or :year/:month/:day/:title/ (the default)
title: Site Title
description: Global meta description fallback
author: Your Name
language: en
meta_generator: false             # removes the <meta name="generator" content="Hexo"> tag
  • url: ist die folgenreichste Einstellung. Sie definiert die Basis-URL, die Themes und Generatoren für Canonicals, Feeds, Sitemaps und Paginierung verwenden können. Ein falscher Wert kann sich in all diesen Ausgaben fortsetzen. Evidence for this claim Hexo's url configuration supplies the website URL used by themes and generators. Scope: Exact downstream fields depend on the installed theme and plugins. Confidence: high · Verified: Hexo: Configuration
  • permalink: – das Standardmuster :year/:month/:day/:title/ erzeugt datumsbasierte URLs, die mit der Zeit veraltet wirken und den Slug an den Dateinamen binden. Schlankere Varianten sind /:title/ oder /:category/:title/.
  • meta_generator: false entfernt Hexos Generator-Fingerabdruck aus <head>.
  • Bereitstellung in einem Unterverzeichnis? url: allein reicht nicht. Setzen Sie auch root: auf den Unterverzeichnispfad, etwa root: /blog/. url_for erzeugt root-relative Links, während full_url_for den vollständigen Wert von url: voranstellt. Ein falsches root: lässt interne Links, Feeds und Sitemap-Einträge auf die Domainwurzel statt auf den tatsächlichen Pfad zeigen.
  • Priorität der Konfiguration: Die _config.yml der Website legt url/root/permalink fest. Die Konfiguration eines Themes ergänzt Anzeige- und Template-Einstellungen, überschreibt aber nicht die URL-Struktur der Website. Ein Theme kann eine falsche url:-Angabe nicht korrigieren. Die Theme-Datei kann etwa _config.<theme>.yml heißen.
  • Test im abgesicherten Modus? hexo server --safe beziehungsweise hexo --safe deaktiviert alle Plugins und Skripte. Der betrachteten Ausgabe fehlen daher Sitemap, robots.txt und die Tags von SEO-Plugins. Prüfen Sie SEO-Ausgaben nicht in dieser Vorschau, sondern führen Sie zuerst ein normales hexo generate aus.

SEO-Steuerung im Frontmatter und ihre Lücken

Auf diese nativen Hexo-Felder können Sie sich verlassen:

---
title: "Article Title for the <title> tag"
date: 2024-01-15
updated: 2024-06-01
tags: [tag1, tag2]
categories: [Category]
permalink: /custom-url/           # overrides the global pattern for this post
published: true
sitemap: false                    # exclude this post from sitemap.xml
---

Was im nativen Frontmatter nicht enthalten ist und Theme-Unterstützung oder eine Template-Anpassung benötigt:

  • description (Meta-Beschreibung) – die meisten Themes geben sie ohne Anpassung nicht aus.
  • keywords (beitragsspezifische Keyword-Metadaten) – ohnehin weitgehend nutzlos; Google ignoriert <meta name="keywords"> seit 2009. Verwenden Sie keywords zur Organisation, nicht als Ranking-Hebel.
  • canonical (Canonical-URL überschreiben) – abhängig vom Theme.

Halten Sie das Feld updated: bei jeder Überarbeitung aktuell; davon hängt die Aktualitätsangabe in der Sitemap ab.

Unverzichtbare Plugins

Sitemap – hexo-generator-sitemap (offiziell):

npm install hexo-generator-sitemap --save
sitemap:
  path:
    - sitemap.xml
  tags: true
  categories: true

Das Plugin liest lastmod aus dem Feld updated jedes Beitrags und greift ersatzweise auf date zurück. Das ist wichtig, weil Bing warnt, lastmod “should reflect the true last modification time of the page content, not the sitemap file itself.” (Übersetzung) „sollte den tatsächlichen letzten Änderungszeitpunkt des Seiteninhalts und nicht den der Sitemap-Datei wiedergeben.“ Reichen Sie die nach hexo generate erzeugte sitemap.xml in der Google Search Console und den Bing Webmaster Tools ein. Beachten Sie auch Bings Warnung: “Do not submit a static sitemap and forget it. New pages won’t get picked up” (Übersetzung) „Reichen Sie eine statische Sitemap nicht nur einmal ein und lassen Sie das Thema danach nicht ruhen; neue Seiten werden sonst nicht erfasst.“ Für Hexo bedeutet das, nach jedem neuen Beitrag erneut bereitzustellen und einzureichen oder IndexNow zu verwenden.

robots.txt — hexo-generator-robotstxt:

npm install hexo-generator-robotstxt --save
robotstxt:
  useragent: "*"
  allow:
    - /
  disallow:
    - /private/
  sitemap: https://yourdomain.com/sitemap.xml

Ohne dieses Plugin erzeugt Hexo keine robots.txt und Crawler erhalten darin keinen Hinweis auf die Sitemap.

RSS – hexo-generator-feed: relevant für Aggregatoren und die Eignung für Google News; John Mueller verwendet auf seiner eigenen statischen Website ebenfalls einen RSS-Feed.

IndexNow – hexo-indexnow: Bing empfiehlt, Sitemaps mit IndexNow zu kombinieren, um einzelne URLs in Echtzeit zu übermitteln. Legen Sie die erzeugte Schlüsseldatei in source/ ab, damit sie als yourdomain.com/<key>.txt bereitgestellt wird. Das gilt für Bing, Yandex und weitere Dienste, nicht für Google, das IndexNow nicht für allgemeine Seiten nutzt.

Der Standard-Permalink verursacht zwei SEO-Probleme: Beim Umbenennen der Markdown-Datei ändert sich die URL, weil der Slug aus dem Dateinamen stammt, und nicht lateinische Titel wie chinesische Schrift oder Emojis erzeugen unleserliche URLs. hexo-abbrlink trennt die URL vom Dateinamen, indem es einen stabilen Hash in das Frontmatter schreibt:

npm install hexo-abbrlink --save
permalink: posts/:abbrlink/
abbrlink:
  alg: crc32    # crc16 or crc32
  rep: hex      # dec or hex

Sie erhalten eine URL wie /posts/3a9c2b1d/, die Umbenennungen, Kategorieänderungen und Datumsanpassungen übersteht. Die Grundregel bleibt: Ändern Sie eine veröffentlichte URL niemals ohne 301-Weiterleitung. Eine Umbenennung ohne Weiterleitung vernichtet Linksignale und bereits aufgebaute Ranking-Signale.

Zwei weitere Permalink-Fallen sollten Sie vor der Wahl eines Musters kennen:

  • Verwenden Sie nicht das Token :id. Laut Hexo bleiben Beitrags-IDs nach dem Zurücksetzen des Datenbank-Caches nicht dauerhaft erhalten. Enthält Ihr Permalink-Muster :id, kann ein Cache-Neuaufbau unbemerkt alle Beitrags-URLs ändern. Nutzen Sie :title, :abbrlink oder ein anderes stabiles Token.
  • trailing_index und trailing_html sind getrennte Schalter. Hexos Einstellung pretty_urls steuert beide unabhängig: Einer entfernt ein abschließendes index.html aus erzeugten Links, der andere fügt einen abschließenden Schrägstrich hinzu. Stimmen diese Werte nicht mit dem URL-Verhalten des Hosters überein – einige leiten /post zu /post/ weiter, andere nicht –, können interne Links, Canonicals und Sitemap-Einträge von der tatsächlich ausgelieferten URL abweichen.

SEO-Konfiguration des NexT-Themes

NexT ist das am häufigsten verwendete Hexo-Theme und wird in _config.next.yml konfiguriert:

canonical: true                 # builds canonical from url: + page path

webmaster_tools:
  google: VERIFICATION_STRING
  bing: VERIFICATION_STRING
  baidu: VERIFICATION_STRING

open_graph:
  enable: true
  twitter_card: summary_large_image

Die Meta-Beschreibungs-Lücke in NexT: NexT erzeugt aus description: im Frontmatter nicht automatisch ein beitragsspezifisches <meta name="description">. Passen Sie das Head-Template so an, dass es von page.description auf die Website-Beschreibung zurückfällt. Dies ist das häufigste SEO-Versäumnis bei NexT. canonical: true sowie Open Graph und Twitter Cards werden hingegen nach Aktivierung unterstützt.

Bei anderen Themes erstellen oder bearbeiten Sie meist ein Head-Partial, das og:title, og:description, og:image, og:url und twitter:card ausgibt. Die Unterstützung unterscheidet sich je nach Theme erheblich.

Legen Sie die Zuständigkeit für jedes Tag fest. Die integrierte Open-Graph- und Canonical-Unterstützung eines Themes und ein Komplett-Plugin wie hexo-seo können dieselben Tags ausgeben. Sind beide aktiv, entstehen doppelte oder widersprüchliche <meta>-Tags, Canonicals oder JSON-LD-Blöcke in demselben <head>. Bestimmen Sie pro Tag-Kategorie genau eine zuständige Ebene – Theme oder Plugin – und deaktivieren Sie die entsprechende Funktion der anderen Ebene.

Kategorie- und Tag-Seiten: die Duplicate-Content-Falle

Hexo erzeugt für jede Kategorie und jedes Tag automatisch eine Archivseite mit Beitragsauszügen, die auch in den Beiträgen selbst erscheinen. Im großen Maßstab entstehen so Hunderte dünne Seiten, die um dieselben Suchanfragen konkurrieren und Crawling-Aufmerksamkeit verteilen. Ihre Optionen:

  1. sitemap: false pro Archiv, was im großen Maßstab unpraktisch ist.
  2. noindex auf Theme-Ebene in den Kategorie- und Tag-Archiv-Templates.
  3. Nur dann indexieren, wenn eine Kategorie ein echter, kuratierter Themen-Hub mit eigenem Wert ist.
  4. Ein selbstreferenzielles Canonical auf jeder paginierten Archivseite; Seite 2 verweist auf sich selbst und nicht auf Seite 1.

Ein Vorbehalt zu Option 2: Dauerhaftes noindex kann dazu führen, dass Google den Links auf der Seite nicht mehr folgt. Beiträge, die nur über solche Tags verlinkt sind, werden dann womöglich seltener gecrawlt. Stellen Sie sicher, dass sie auch anderweitig erreichbar sind.

Ihr Routeninventar ist größer als source/. Kategorie-, Tag-, Archiv- und Paginierungsseiten stammen nicht aus Markdown-Dateien, sondern werden von Hexos Generator-API erzeugt. Themes und Plugins können eigene Generatoren registrieren. Dadurch kann die crawlbare URL-Oberfläche unbemerkt über den Inhalt von source/ hinauswachsen. Führen Sie nach der Installation oder Aktualisierung eines Themes oder Plugins hexo generate aus und vergleichen Sie die Routenliste in public/.

Strukturierte Daten und JSON-LD

Hexo fügt standardmäßig keine strukturierten Daten ein. Ergänzen Sie entweder einen BlogPosting-JSON-LD-Block im Beitrags-Template des Themes mit headline, datePublished, dateModified, author, publisher und url, oder verwenden Sie ein Komplett-Plugin wie hexo-seo, das Breadcrumb-, Website- und Artikel-Schema erzeugt.

Core Web Vitals

Statische Ausgaben sind schnell, doch Themes können diesen Vorteil zunichtemachen. NexT und viele andere Themes bündeln große JavaScript-, CSS- und Icon-Font-Bibliotheken; Font Awesome verursacht häufig LCP- und Renderblockierungsprobleme. Prüfen Sie mit Lighthouse und verwenden Sie anschließend hexo-all-minifier zur Komprimierung beim Build, hexo-lazyload-image sowie defer oder async für Drittanbieter-Skripte.

Baidu für Websites mit chinesischem Publikum

Baidus Crawler verarbeitet JavaScript nur eingeschränkt; Hexos statisches HTML beseitigt daher ein Hindernis für die Auffindbarkeit. Fügen Sie in NexT baidu_site_verification hinzu, erzeugen Sie mit hexo-generator-baidu-sitemap eine Sitemap im Baidu-Format und übermitteln Sie URLs aktiv mit hexo-submit-urls-to-search-engine. GitHub Pages ist in Festlandchina blockiert; verwenden Sie für Baidu-Traffic Gitee Pages, Cloudflare oder ein chinesisches CDN.

Betrachten Sie dies als Crawlbarkeitsvorteil, nicht als Garantie. Statisches HTML belegt nicht, dass Baidu Ihre Seiten findet, indexiert oder rankt. Prüfen Sie Crawling-Aktivität und Indexierungsstatus direkt in Baidu Ziyuan, statt Sichtbarkeit aus der statischen Ausgabe abzuleiten.

Bereitstellung auf GitHub Pages: SEO-Fallen

  • Setzen Sie url: vor der ersten Bereitstellung auf die Live-Adresse mit https://.
  • Legen Sie für eigene Domains eine CNAME-Datei in source/ ab, damit sie bei hexo deploy nicht zurückgesetzt wird.
  • Erzwingen Sie nach der DNS-Aktualisierung HTTPS unter Repository Settings → Pages.
  • Bevorzugen Sie einen GitHub-Actions-Workflow gegenüber hexo-deployer-git, um CNAME-Probleme zu vermeiden.

Hexo, Hugo, Jekyll und Astro im SEO-Vergleich

Alle vier liefern reines statisches HTML; die Grundlage für die Indexierbarkeit ist identisch. Hexo hat auf Framework-Ebene keinen SEO-Nachteil. Die Unterschiede sind operativ: Hugo baut große Websites deutlich schneller und enthält eine Sitemap; Jekyll ist der Standard für GitHub Pages; Astro liefert dank Islands standardmäßig kein JavaScript aus. Hexos Vorteil ist das umfangreiche npm-Plugin-Ökosystem und die große chinesischsprachige Community. Die Inhaltsqualität entscheidet, nicht der Generator. Mueller sagte zum Wechsel des Generators: “Will your site’s SEO suddenly explode? No. Also No.” (Übersetzung) „Wird die SEO Ihrer Website plötzlich explodieren? Nein. Ebenfalls nein.“

Eine Übersicht und weitere Generatoren finden Sie unter statische Website-Generatoren; den größeren Rendering-Kontext behandelt JavaScript SEO.

Add an expert note

Pin an expert quote

New person? Create their unclaimed profile at /admin/experts/ → Pin a quote first.