# SEO i kontrakt pluginów

## Podział odpowiedzialności

Szablon definiuje treść, semantyczny HTML i wygląd. GrowSite odpowiada za dostęp do pluginów, publiczne dane, zapisy formularzy i dokument HTML. Nie dodawaj własnego skryptu wysyłania komentarzy, drugiej obsługi formularza ani ręcznego `head` do sekcji Loom.

| Funkcja | Identyfikator | Warunki |
| --- | --- | --- |
| Blog | `blog` | Plugin w workspace i obsługa bloga w szablonie |
| Komentarze | `comments` | Blog, aktywne Komentarze i zgoda we wpisie |
| Formularz kontaktowy | `contact-form` | Plugin i aktywna instancja danej witryny |
| Podstawowe SEO | `seo.core` | Wbudowane w GrowSite |
| SEO Pro | `seo-pro` | Uprawnienie workspace do funkcji Pro |

## Podstawowe SEO

W panelu ustaw tytuł i opis strony, obraz udostępniania oraz indeksowanie. Bez ręcznego tytułu GrowSite tworzy go z tytułu podstrony i nazwy witryny. Domyślny opis powstaje z treści albo konfiguracji witryny. Dla pewnego rezultatu na ważnych stronach wpisz własny opis.

Pola danych SEO strony obejmują `title`, `description`, `og_image`, `canonical`, `index`. Nie są to automatycznie pola `section.settings`: nie twórz ustawienia Loom o nazwie `seo_title`, oczekując zmiany metadanych. Backend generuje title, opis, canonical, roboty i metadane udostępniania, a renderer umieszcza je w dokumencie. Canonical musi należeć do właściwej domeny witryny. Draft nie powinien być indeksowany.

## SEO Pro

SEO Pro udostępnia funkcje `seo.advanced`, `seo.audit`, `seo.redirects`, `seo.monitor`. Dostęp ustala backend na podstawie pluginu workspace. Szablon nie aktywuje ich przez schema i nie powinien ukrywać całej treści, gdy Pro jest wyłączone. Podstawowe SEO działa nadal. Wyniki audytu i ustawienia przekierowań obsługuj w panelu, nie w plikach Loom.

## Blog oraz formularze

Dla artykułu GrowSite wykorzystuje SEO wpisu, ustala canonical z `?post=slug` i typ udostępniania `article`. Prawidłowe role stron opisuje [Blog](/pl/blog/). Tytuł artykułu powinien być głównym nagłówkiem; nie dodawaj drugiego H1 do sekcji otaczającej gotowy komponent.

Formularz kontaktowy osadzaj przez `gs-form` albo element formularza na płótnie. ID należy do konkretnej witryny; obca lub nieaktywna instancja nie może działać. Pełne pola i żądanie opisuje [Formularz](/pl/forms/).

## Kontrola końcowa

Sprawdź źródło wyrenderowanego dokumentu: jeden tytuł, poprawny opis, właściwa domena canonical i brak indeksowania draftu. Sprawdź ALT obrazów i logiczne H1/H2. Testuj pluginy włączone oraz wyłączone. SEO Pro nie może być warunkiem działania zwykłych linków, tekstu, formularza ani menu. Nie umieszczaj prywatnych kluczy API w assets lub ustawieniach paczki.
