TL;DR
FAQPage w JSON-LD może dać rozwijane pytania w wynikach Google, ale od 2023/2024 Google mocno ograniczył, kto dostaje FAQ rich results (głównie autorytatywne / rządowe / zdrowotne w wielu rynkach; reguły się zmieniają). Nawet bez snippeta FAQ na stronie nadal pomaga UX, featured snippets i E-E-A-T. Ten przewodnik skupia się tylko na FAQ (uzupełnienie ogólnego JSON-LD): kiedy schema ma sens, jak uniknąć mismatch content↔markup, jak wdrożyć w Next.js i jak testować w Rich Results Test / GSC. Organization, BlogPosting i BreadcrumbList, w osobnym artykule o Schema.org.
Dla kogo
- Firm usługowych z sekcją FAQ na ofercie, landingu lub blogu
- Developerów Next.js dodających structured data do markdowna
- SEO, którzy widzieli FAQ w SERP konkurencji i chcą checklistę zgodności
- Zespołów po utracie FAQ rich results (nie panikować, treść zostaje)
- Autorów, którzy mają FAQ w HTML, ale bez JSON-LD (lub odwrotnie)
Fraza (SEO)
faqpage json-ld, schema faq rich results 2026, faqpage nextjs, faq structured data google, rich results test faq, faq seo strona firmowa
Co to jest FAQPage (i czym nie jest)
FAQPage to typ Schema.org opisujący stronę z listą pytań i odpowiedzi. W JSON-LD:
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "Ile trwa wdrożenie strony firmowej?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Typowy zakres to 4–8 tygodni od briefu do produkcji, zależnie od liczby locale i integracji."
}
}
]
}| To jest | To nie jest |
|---|---|
| Markup widocznego FAQ na stronie | Sposób na upchnięcie keywordów niewidocznych dla usera |
| Uzupełnienie QAPage (pytania użytkowników) | Zamiennik Organization / LocalBusiness |
| Potencjalny rich result (gdy Google uzna) | Gwarancja pozycji #1 |
QAPage ≠ FAQPage: QA to wątki Q&A (Stack Overflow style). Na stronie firmowej prawie zawsze chcesz FAQPage.
Kiedy Google pokazuje (lub nie) FAQ rich results
Polityka Google ewoluuje. Stan praktyczny na 2026:
- Rich results FAQ są ograniczone, wiele zwykłych stron komercyjnych nie dostaje snippeta mimo poprawnego JSON-LD
- Nadal warto mieć FAQ + schema, bo: UX, długie odpowiedzi pod featured snippet, spójność z People Also Ask
- Google wymaga, by treść w markup odzwierciedlała treść widoczną
- Treści medyczne / YMYL mają osobne, surowsze zasady
Wniosek biznesowy: buduj FAQ pod użytkownika i sprzedaż (zastrzeżenia, proces, cena „od”), a rich result traktuj jako bonus, nie KPI nr 1.
Zasady zgodności, pułapki
- Każde pytanie z JSON-LD musi być na stronie (HTML), accordion OK, byle w DOM po SSR
- Odpowiedź w schema ≈ odpowiedź widoczna (nie skrót vs esej)
- Bez reklam i „kup teraz” jako jedynej treści odpowiedzi
- Bez FAQ o innej stronie (pytania muszą dotyczyć tej URL)
- Unikaj duplicate FAQ skopiowanego 1:1 na 20 landingów, thin + spam signal
- Nie mieszaj Review i FAQ w jeden mylący blok
- Język = locale strony (
inLanguage/ treść PL na/pl)
| Błąd | Skutek |
|---|---|
| Schema FAQ, brak sekcji w UI | Odrzucenie / ręczna ocena jakości |
| 40 pytań keyword stuffing | Ignorowanie markupu |
| Client-only FAQ (pusty HTML) | Google nie widzi treści |
| FAQ tylko jako obrazek | Brak tekstu do snippeta |
Gdzie FAQ ma sens na stronie usługowej
| URL | Cel FAQ |
|---|---|
| Oferta / usługi | Cena „od”, czas, co w scope, hosting |
| Landing Ads | Zastrzeżenia zgodne z reklamą |
| Case study | Metodyka, stack, ograniczenia |
| Blog przewodnik | Podsumowanie + CTA |
| Kontakt | SLA odpowiedzi, co przygotować do briefu |
3–7 pytań wysokiej jakości bije 25 ogólników.
Implementacja w Next.js App Router
1. FAQ w markdownzie bloga
Jeśli pipeline (jak w DevStudio.it) wykrywa sekcję ## FAQ i generuje JSON-LD, trzymaj pytania jako ### Pytanie + akapit odpowiedzi. Spójność parsera = zero driftu między HTML a schema.
2. Ręczne script na stronie oferty
// components/FaqJsonLd.tsx
type FaqItem = { question: string; answer: string };
export function FaqJsonLd({ items }: { items: FaqItem[] }) {
const jsonLd = {
'@context': 'https://schema.org',
'@type': 'FAQPage',
mainEntity: items.map((item) => ({
'@type': 'Question',
name: item.question,
acceptedAnswer: {
'@type': 'Answer',
text: item.answer,
},
})),
};
return (
<script
type="application/ld+json"
dangerouslySetInnerHTML={{ __html: JSON.stringify(jsonLd) }}
/>
);
}3. Widoczny accordion (SSR)
export function FaqSection({ items }: { items: FaqItem[] }) {
return (
<section aria-labelledby="faq-heading">
<h2 id="faq-heading">FAQ</h2>
<div>
{items.map((item) => (
<details key={item.question}>
<summary>{item.question}</summary>
<p>{item.answer}</p>
</details>
))}
</div>
<FaqJsonLd items={items} />
</section>
);
}details/summary jest dostępne i indeksowalne bez JS. Unikaj FAQ ładowanego wyłącznie po useEffect z API, chyba że treść jest też w RSC.
4. Dane z CMS / bazy
Jeśli FAQ oferty żyje w Branchly, serwuj te same rekordy do UI i do JSON-LD w Server Component, jedno źródło prawdy. Hosting z SSR na DevStudioIT Cloud gwarantuje, że pierwsza odpowiedź HTML zawiera pytania.
Testowanie
- Rich Results Test, wklej URL lub kod
- GSC → Enhancements / rich result reports (jeśli dostępne dla property)
- View Source / „View crawled page”, czy FAQ jest w HTML
- Po zmianie: czekaj na re-crawl; brak snippeta ≠ błąd schema
Walidacja Schema.org ≠ gwarancja wyświetlenia w Google.
FAQ a inne typy na tej samej stronie
Możesz mieć na jednym URL:
Organization/WebSite(layout)BreadcrumbListFAQPageServicelubBlogPosting
Używaj @graph albo osobnych <script type="application/ld+json">. Nie pakuj FAQ do Article jako jedynego typu, jeśli strona to oferta usług.
Checklista publikacji FAQ
- 3–7 realnych pytań klientów (z calli / maili)
- Odpowiedzi konkretne, bez lania wody
- Sekcja widoczna w HTML (SSR)
- JSON-LD 1:1 z widokiem
- Locale zgodne z URL
- Rich Results Test bez błędów krytycznych
- CTA po FAQ →
#formularz-kontakt - Po 30 dniach: GSC + czy snippet się pojawił (bonus)
FAQ
Czy bez rich result schema FAQ jest bezużyteczna?
Nie. Porządkuje treść, wspiera snippet klasyczny / PAA i spójność dla asystentów. Rich result to opcjonalna warstwa.
Ile znaków powinna mieć odpowiedź?
Wystarczająco, by domknąć pytanie (zwykle 2–5 zdań). Esej przenieś do artykułu i linkuj.
Czy mogę dodać FAQPage na każdej podstronie?
Tylko jeśli FAQ jest unikalne i na temat. Kopiowanie tego samego bloku wszędzie wygląda jak spam.
FAQ w modalu po kliknięciu, OK?
Ryzykowne, jeśli treść nie jest w początkowym HTML. Preferuj SSR accordion.
CTA
Chcesz wdrożyć FAQ + JSON-LD na ofercie i blogu Next.js, ze SSR i testami rich results?
- Umów wdrożenie FAQ schema, treść, JSON-LD, DevStudioIT Cloud, Branchly
O autorze
Budujemy szybkie strony WWW, aplikacje web/mobile, chatboty AI i hosting — z naciskiem na SEO i konwersję.
Przydatne linki
Od teorii do produkcji — Branchly, hosting i realizacje.
