# Obrazki OG w Hugo

Jeden partial w nagłówku: auto-OG albo adres podpisany podczas builda.

## Gdzie to wpiąć

Hugo nie wykonuje żądań HTTP przy budowaniu w sposób, na którym da się polegać — a z tym modułem nie musi. Partial albo kieruje endpoint auto-OG na permalink strony, bez żadnego sekretu, albo podpisuje adres szablonu wbudowaną funkcją `crypto.HMAC`. Obrazek powstaje przy pierwszej wizycie crawlera.

`layouts/partials/head.html`

```go-html-template
{{/*
  hugo.toml:
    [module]
      [[module.imports]]
        path = "github.com/dziulatex/shareglint-hugo"
    [params.shareglint]
      account = "acc_..."

  Build: HUGO_SHAREGLINT_SIGNING_SECRET=sign_... hugo
*/}}

{{ if .IsPage }}
  {{/* A blog-og card signed during the build with crypto.HMAC. */}}
  {{ partial "shareglint/og-image.html" (dict
       "page" .
       "template" "blog-og"
       "fields" (dict "title" .Title "author" .Params.author "site" site.Title)
       "alt" .Title) }}
{{ else }}
  {{/* Auto-OG: /u/acc_....png?url=<permalink> - no secret needed. */}}
  {{ partial "shareglint/og-image.html" . }}
{{ end }}
```

## Pułapka

`getenv` w Hugo czyta tylko zmienne zaczynające się od `HUGO_`, więc sekret musi się nazywać `HUGO_SHAREGLINT_SIGNING_SECRET` — ustaw go w CI, nigdy w `hugo.toml`. Bez niego build wypisze ostrzeżenie i użyje adresu auto-OG.

## Ile to kosztuje

Sto obrazków miesięcznie za darmo, potem $9 za dwa tysiące. Ten sam wpis wyrenderowany drugi raz zwraca istniejący adres i nie zużywa limitu — więc przebudowanie strony nic nie kosztuje.
