Artikel

Hugo SEO — konfiguration af den hurtigste statiske site generator

Hugo er den hurtigste statiske site generator — et site med 10.000 sider bygger på sekunder. Godt SEO-fundament med native sitemap-generering og meta tag-support via templates, men kræver Go-templating-kendskab.

Betonvej der forsvinder i horisonten — abstrakt metafor for skala og hastighed

Hugo er den hurtigste statiske site generator målt på build-tid. Et site med 10.000 sider bygger typisk på under 10 sekunder. Det skyldes at Hugo er skrevet i Go — et kompileret sprog — frem for JavaScript/Node.js som Astro og Next.js. For sites med meget stort sideantal er build-hastighed en reel praktisk forskel.

Native SEO-features

Hugo har et solidt SEO-fundament ud-af-boksen:

Sitemap genereres automatisk på /sitemap.xml. Konfigurer prioritet og opdateringsfrekvens i Hugo’s config.toml:

[sitemap]
  changefreq = "monthly"
  priority = 0.5
  filename = "sitemap.xml"

Canonical URLs er tilgængelige via .Permalink-variablen. I base-templates:

<link rel="canonical" href="{{ .Permalink }}" />

OpenGraph og Twitter Card implementeres i layouts/partials/head.html med Hugos template-syntax. Mange Hugo-temaer inkluderer dette allerede.

Meta tags i Hugo templates

Hugo bruger Go’s html/template-pakke. En typisk meta-sektion i layouts/_default/baseof.html:

<head>
  <title>{{ .Title }} | {{ .Site.Title }}</title>
  <meta name="description" content="{{ .Description | default .Summary }}" />
  <link rel="canonical" href="{{ .Permalink }}" />
  {{ if .Params.noindex }}<meta name="robots" content="noindex" />{{ end }}
</head>

Frontmatter-parametre (noindex, description, custom schema) er tilgængelige via .Params i alle templates.

Structured data

Hugo har ingen built-in structured data-generator. Implementer JSON-LD i templates med Go’s jsonify-funktion:

{{ $schema := dict "@context" "https://schema.org" "@type" "Article"
   "headline" .Title "datePublished" .Date.Format "2006-01-02" }}
<script type="application/ld+json">{{ $schema | jsonify }}</script>

Multilinguel support

Hugo’s multilinguelle support er native og stærk. Konfigurér sprogsider i config/_default/languages.toml og Hugo genererer automatisk hreflang-relationer i <head> når templates inkluderer .Translations. Det er mere integreret end tilsvarende i Astro og Next.js.

Performance og deployment

Hugo’s build-hastighed er reelt differentierende ved store siteantal. Node.js-baserede frameworks som Astro og Next.js begynder at vise build-tider på adskillige minutter ved 5.000+ sider — Hugo håndterer det samme på under 30 sekunder. I praksis betyder det kortere CI/CD-pipelines og billigere build-infrastruktur.

Hugo outputter ren statisk HTML og kan deployes til enhver statisk hosting: Cloudflare Pages, Netlify, GitHub Pages. Der er ingen runtime-afhængighed — serveren behøver ikke køre Node.js eller andet. Det giver simpel infrastruktur og nul server-side fejlpunkter.

Hvornår Hugo ikke er det rigtige valg

Hugo er ikke det rigtige valg når teamet primært kender JavaScript og ikke Go-templates. Indlæringskurven for Hugo’s template-system er stejlere end Astro’s HTML-nære syntaks eller Next.js’s React-model. For teams der allerede arbejder i JavaScript er Astro det naturlige valg for ren statisk output — Hugo’s build-hastighedsfordel er kun relevant ved meget høje sideantal.

Hugo har heller ingen native JavaScript-komponent-model. Interaktive elementer (søgning, filtrering, dynamiske formularer) implementeres via separate JavaScript-bundles der integreres med templates. Det er muligt men tungere end i Astro eller Next.js.

Robots.txt og SEO-konfiguration

Hugo genererer ingen robots.txt automatisk — den skal oprettes som template i layouts/robots.txt. Derefter aktiveres den i config.toml med enableRobotsTXT = true. Hugos native sitemap-generering ekskluderer ikke sider automatisk baseret på frontmatter — sider der skal holdes ude af sitemap markeres med sitemap: false i frontmatter.

Andre artikler i samme emne

Ofte stillede spørgsmål

Hvornår er Hugo det bedste valg over Astro?
Hugo er det bedste valg primært på build-performance ved meget store sites: 10.000+ sider. Astro og Next.js (Node.js-baserede) bliver langsomme at bygge ved høje sideantal. Hugo's Go-baserede build-engine håndterer store sites trivielt. For sites under 1.000 sider er build-tid sjældent en praktisk begrænsning, og Astro's bedre developer experience og JavaScript-integration er typisk vigtigere.
Har Hugo built-in SEO-support?
Hugo har native sitemap-generering (aktiveres med `sitemap: true` i config), canonical URL-support via `.Permalink` og built-in support for OpenGraph og Twitter Card via skabelonvariabler. Hugo Themes (themes.gohugo.io) inkluderer de fleste SEO-head-elementer. Men Hugo har ingen equivalent til Astro's SEO-integrationer — alt skal implementeres i Go-templates.
Hvad er Hugo's begrænsning for SEO sammenlignet med Astro?
Hugos primære begrænsning er Go-templating-sproget som har en stejlere indlæringskurve end Astros HTML-nære syntaks. JavaScript-komponent-integration er sværere — Hugo er primært Go-templates og Markdown, ikke et JavaScript-framework. For teams der allerede kender Go eller ønsker minimal JavaScript er det en styrke. For teams med JavaScript-baggrund er Astro eller Next.js mere naturlige.
Understøtter Hugo multiple sprog og hreflang?
Ja — Hugo har native multilinguel support via `config/_default/languages.toml`. Hvert sprog konfigureres med eget indholdsdirectory og URL-prefix. Hugo genererer automatisk `hreflang`-tags i `<head>` for alle sprogsider når du bruger `.Translations`-variablen i templates. Det er en af Hugos stærkere SEO-features til internationale sites.
Hvad er de hyppigste SEO-fejl i Hugo-sites?
De hyppigste SEO-fejl i Hugo: (1) Manglende canonical tags — Hugos basiskonfiguration inkluderer ikke automatisk canonical og skal implementeres i base template. (2) Sitemap der inkluderer alle output formats inkl. JSON og RSS — ekskluder via sitemap: false i frontmatter. (3) Manglende hreflang på flersprogede sites — Hugo har built-in i18n men hreflang-tags kræver eksplicit template-kode. (4) Manglende robots.txt — Hugo genererer ingen robots.txt automatisk og den skal oprettes som template i /layouts/robots.txt.

Placering i ordbogen